深入了解LSTM-CRF模型

全面探索LSTM-CRF模型的内涵

使用PyTorch代码

在快速发展的自然语言处理领域,Transformers模型已经成为主导模型,在包括词性标注、实体识别和分块等广泛的序列建模任务中展示出了卓越的性能。在Transformers时代之前,条件随机场(CRF)是序列建模的首选工具,尤其是线性链CRF,它将序列建模为有向图,而CRF更一般地可用于任意图。

本文将分为以下几个部分:

  1. 介绍
  2. 发射分数和转移分数
  3. 损失函数
  4. 通过前向算法高效估计分区函数
  5. 维特比算法
  6. 完整的LSTM-CRF代码
  7. 缺点和结论

介绍

本文中CRFs的实现基于这篇优秀的教程。请注意,这不是最高效的实现,也缺乏批处理能力,但相对简单易读,并且因为本教程的目的是理解CRFs的内部工作方式,所以非常适合我们。

发射和转移分数

在序列标记问题中,我们处理一系列输入数据元素,例如句子中的单词,其中每个元素对应于特定的标签或类别。主要目标是正确地给每个单独元素分配适当的标签。在CRF-LSTM模型中,我们可以将其分为两个关键组成部分:发射和转移概率。注意我们实际上将在对数空间中处理分数,而不是概率,以保持数值稳定性。

  1. 发射分数与观察到给定数据元素的特定标签的可能性相关。例如,在命名实体识别的上下文中,序列中的每个单词都与三个标签之一相关联:实体的开头(B),实体的中间词(I)或不属于任何实体的词(O)。发射概率量化了特定单词与特定标签相关联的概率。在数学上表示为P(y_i | x_i),其中y_i表示标签,x_i表示…