【发布时间】:2020-02-11 03:35:21
【问题描述】:
我有一个序列标记模型,它可以为输入序列中的每个单词预测一个标记(本质上是命名实体识别)。模型结构:Embeddings layer → BiLSTM → CRF
所以本质上,BiLSTM 基于令牌嵌入学习特征的非线性组合,并使用这些在每个时间步为每个可能的标签输出非标准化分数。然后 CRF 分类器学习如何在给定此信息的情况下选择最佳标签序列。
我的 CRF 是 keras_contrib crf 的一个实例,它实现了一个线性链 CRF(就像 tensorflow.contrib.crf 一样)。因此,它考虑了从一个标签到下一个标签的标签转换概率,但不会最大化全局标签序列(一般 CRF 会这样做)。
默认激活函数是“线性”。我的问题是,为什么它是线性的,其他激活会产生什么不同?
也就是说,它是线性的吗,因为它的决策基本上被简化为预测标签 yt 给定标签 y-1 的可能性sub> (这可能是一个线性回归问题)?还是由于其他原因它是线性的,例如让用户灵活地在任何他们喜欢的地方应用 CRF 并自己选择最合适的激活函数?
对于我的问题,我真的应该使用 softmax 激活吗?我已经有一个具有相似但不同结构的单独模型:Embeddings → BiLSTM → Dense with softmax。因此,如果我在线性链 CRF 中使用 softmax 激活(即在本文开头提到的嵌入层 → BiLSTM → CRF),听起来它几乎与那个单独的模型相同,除了能够使用从 yt-1 到 yt 的转换概率。
【问题讨论】:
标签: python tensorflow keras neural-network crf