1

在关于 CRF(like thisthis)的论文中,作者都​​提到了 forward-backward 算法,但 GitHub 中的实现(或 PyTorch教程中的基本实现)似乎只使用 forward 算法来计算负对数似然为用 SGD 优化。

如果我想在 BiLSTM 特征上训练 NER,并且我将进行的唯一查询类型就像“给定一个句子,找到命名实体”,我需要前向后向算法吗?或者更一般地说,这两种算法有什么区别,什么时候使用哪一种?

4

2 回答 2

2

我认为在 PyTorch 教程中只使用前向算法的原因是为了计算分区函数,只需要前向或后向传递。不过,需要前向后向算法来计算边际概率。

于 2018-09-30T17:23:08.860 回答
0

BiLSTM 为您提供更多上下文和可能更好的结果。考虑以下示例:

  1. 泰迪熊是熊形状的毛绒玩具。
  2. 泰迪·罗斯福是美国第 26 任总统。

在第一种情况下,“泰迪”不是 NE,但在第二种情况下,“泰迪”是 NE。BiLSTM 会更好地注意到这一点,因为它不仅可以查看过去的状态,还可以查看未来的状态(即“熊”和“罗斯福”)。

来自关于 BiLSTM 的维基百科:

“训练的一般程序如下:对于前向传递,先传递前向状态和后向状态,然后传递输出神经元。对于后向传递,先传递输出神经元,然后传递前向状态和后向状态。在前向传递之后并完成后向传递,更新权重”

于 2018-09-30T16:31:09.687 回答