gpt4 book ai didi

python - 线性链 CRF 分类器使用哪个激活函数?

转载 作者:太空宇宙 更新时间:2023-11-03 20:17:11 27 4
gpt4 key购买 nike

我有一个序列标记模型,可以预测输入序列中每个单词的标记(本质上称为实体识别)。模型结构:Embeddings层→BiLSTM→CRF

因此,本质上,BiLSTM 基于标记嵌入学习特征的非线性组合,并使用它们在每个时间步输出每个可能标签的非标准化分数。然后,CRF 分类器学习如何在给定此信息的情况下选择最佳标签序列。

我的CRF是keras_contrib crf的一个实例,它实现了线性链CRF(与tensorflow.contrib.crf一样)。因此,它考虑从一个标签到下一个标签的标签转换概率,但不会最大化全局标签序列(一般 CRF 会这样做)。

默认激活函数是“线性”。我的问题是,为什么它是线性的,其他激活会产生什么差异?

也就是说,它是线性的,因为它的决策本质上被简化为预测给定标签 y-1 的标签 yt 的可能性 sub>(这可能被定义为线性回归问题)?或者由于其他原因它是线性的,例如让用户能够灵活地在任何他们喜欢的地方应用 CRF 并自己选择最合适的激活函数?

对于我的问题,我实际上应该使用 softmax 激活吗?我已经有了一个具有相似但不同结构的单独模型:Embeddings → BiLSTM → Dense with softmax。因此,如果我要在线性链 CRF 中使用 softmax 激活(即在我在本文开头提到的嵌入层 → BiLSTM → CRF 中),听起来它几乎与那个单独的模型相同,除了能够使用从 yt-1yt 的转移概率。

最佳答案

当使用 Embeddings → BiLSTM → Dense + softmax 时,您隐含地假设标签的可能性在给定 RNN 状态的情况下是条件独立的。这可能会导致标签偏差问题。标签上的分布总和必须为 1。无法表示模型不确定特定标签是否会对此进行独立预测。

在 CRF 中,除了对隐藏状态进行评分之外,还可以使用 CRF 学习的转换分数来解决此问题。标签的分数可以是任意实数。如果模型不确定某个标签,则所有分数都可能很低(因为它们不必加起来等于一),并且来自相邻标签的预测可能有助于通过转换分数选择要选择的标签。标签的可能性不是在序列上分解的,而是使用动态编程算法针对整个标签序列进行计算。

如果您使用范围有限的激活函数,则会限制可以分配给标签的分数,并且 CRF 可能效率不高。如果您认为在 RNN 之后需要非线性,您可以添加一个带有您选择的激活的密集层,然后进行线性投影。

关于python - 线性链 CRF 分类器使用哪个激活函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58377983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com