词法分析之Bi-LSTM-CRF框架

词法分析是NLP的一项重要的基础技术,包括分词、词性标注、实体识别等,其主要算法结构为基于Bi-LSTM-CRF算法体系,下面对Bi-LSTM-CRF算法体系进行介绍。

引言

首先抛开深层的技术原因,来从宏观上看一下为什么LSTM(Bi-LSTM)后接CRF效果会好。
首先引用一篇英文文献关于这个问题的介绍:

For sequence labeling (or general structured prediction) tasks, it is beneficial to consider the corelations between labels in neighborhoods and jointly decode the best chain of labels for a given input sentence. For example, in POS tagging an adjective is more likely to be followed by a noun than a verb, and in NER with standard BIO2 annotation I-ORG cannot follow I-PER. Therefore, we model label sequence jointly using a conditional random field (CRF), instead of decoding each label independently

End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF

总结起来就是,用CRF是为获取全局最优的输出序列,相当于对lstm信息的再利用

另外,引用知乎用户“穆文”的回答,从网络结构上来讲,Bi-LSTM-CRF套用的还是CRF这个大框架,只不过把LSTM在每个 t 时刻在第 i 个tag上的输出,看作是CRF特征函数里的“点函数”(只与当前位置有关的特征函数),然后“边函数”(与前后位置有关的特征函数)还是用CRF自带的。这样就将线性链CRF里原始的 wf 这种形式的特征函数(线性)变成LSTM的输出 f1 (非线性),这就在原始CRF中引入了非线性,可以更好的拟合数据。

Bi-LSTM-CRF算法体系架构图

《词法分析之Bi-LSTM-CRF框架》

双向LSTM(Bi-LSTM)

双向LSTM的架构如下图所示:
《词法分析之Bi-LSTM-CRF框架》

与传统LSTM不同,双向LSTM同时考虑了过去的特征(通过前向过程提取)和未来的特征(通过后向过程提取)。看起来虽然很复杂,但是简单考虑一下,所谓的后向过程相当于将原始序列逆向输入到LSTM中。所以从这个角度来看,双向LSTM相当于两个LSTM,一个正向输入序列,一个反向输入序列,再将两者的输出结合起来作为最终的结果。

学习过程

Bi-LSTM layer的输出维度是tag size,这就相当于是每个词 wi 映射到tag的发射概率值,设Bi-LSTM的输出矩阵为 P ,其中 Pi,j 代表词 wi 映射到 tagj 的非归一化概率。对于CRF来说,我们假定存在一个转移矩阵 A ,则 Ai,j 代表 tagi 转移到 tagj 的转移概率。

对于输入序列 X 对应的输出tag序列 y ,定义分数为:

s(X,y)=i=0nAyi,yi+1+i=0nPi,yi

对输入序列 X 所对应的每个输出tag序列 y 计算这个分数,选择出分数最大的一个作为最终的输出tag序列。

可以看出优化目标为 maxs(X,y) ,优化方法为动态优化算法,细节见 Conditional random fields: Probabilistic
models for segmenting and labeling sequence
data.

参考

Bidirectional LSTM-CRF Models for Sequence Tagging

点赞