【问题标题】:Forward and forward-backward algorithms in CRFCRF 中的前向和前向后向算法
【发布时间】:2019-03-05 18:49:24
【问题描述】:

在关于 CRF 的论文(如 thisthis)中,作者都​​提到了前向后向算法,但 GitHub 中的实现(或 PyTorch 中的基本实现 tutorial)似乎只使用前向算法用于计算要使用 SGD 优化的负对数似然。

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

【问题讨论】:

    标签: algorithm github forward crf log-likelihood


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      来自关于 BiLSTM 的维基百科:

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

      【讨论】:

      • 我认为这个答案存在误解。问题是关于计算边际概率的前后向算法,而不是关于向前和向后工作的 LSTM。
      猜你喜欢
      • 2021-05-13
      • 2014-03-11
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 2019-12-24
      • 2015-08-19
      相关资源
      最近更新 更多