双向循环神经网络
BiRNN,包括BiLSTM、BiGRU等。
BiRNN通常先采用正向与反向两个循环神经网络。
正向负责从前到后计算,反向负责从后向前计算。
将两个网络的输出采用一定方式(直接相加、拼接等)叠加,BiRNN即可在任意时刻获取前后的信息,能够比单向RNN具有更强表达。
首先训练每个单词的词向量。
然后将处理为单词索引的句子输入。
经过Embedding层转化为对应的特征张量(bs,len,dim),传入BiLSTM层。
该层叠加正反两个RNN,计算序列输出张量(bs,len,hidden)。
张量通过SoftMax层得到输出概率(bs,len,1)。
最后通过此概率与利用BIOES等方式标注的标签来计算交叉熵损失,并将之反向传播回网络,从而更新参数。
使用BiRNN可避免人工构造大量特征,也可以获得更好的非线性表达效果。
但预测序列可能出现B-B的形式。
在CRF中,通过构造特征学习到的转移特征函数
f
k
(
y
t
,
y
t
−
1
,
x
t
)
f_k(y_t,y_{t-1},x_t)
fk(yt,yt−1,xt)包含前后两个时刻的标注信息,而直接使用BiLSTM相当于只有状态特征
s
k
(
y
t
,
x
t
)
s_k(y_t,x_t)
sk(yt,xt),即预测的前后两个标注是相互独立的。
为解决此问题,可将两模型结合。
双向循环神经网络+条件随机场模型
先采用BiLSTM计算特征,然后用CRF学习转移函数和状态函数。
CRF层替换了SoftMax层。
SoftMax层计算每个字词的独立概率输出,而CRF层采用极大似然估来计算负对数似然概率(-logP)。
由于负对数似然概率与交叉熵损失本质上是一样的,因此直接采用网络参数迭代与更新即可完成训练。
在模型预测时,CRF层采用Viterbi算法进行解码输出。
BiLSTM+CRF既有BiLSTM自动构建输入数据特征与双向表达的优点,又具有CRF模型能够充分学习到标注之间信息的优点。