BiLSTM+CRF是2018年在英语NER任务上表现最好的模型,学它也有十多天了,之前只是了解个大概,然后忙于学其它东西,结果泛学让我有种什么都没学到的感觉,涉及到内部的还是一无所知,所以今天认真看了它的公式,理解得更深刻了一些。 结构简图如下:
2.png
流程
首先输入单词,单词经过look-up层(通过CBOW、skip-gram或者是Glove等模型构造出look-up table,再将字映射为向量),变成了字向量,再经过BiLSTM层后得到包含上下文信息的向量h,h是上文信息向量h-before和下文信息向量h-after的拼接。再经过一个dropout层后,将h的维度映射为维度为标签个数的向量。再经过一个CRF层后输出得分最高的标签序列,就是我们要求的序列。
公式
假设输入句子如下图(括号中的元素为句中的字):
对应的标签如下:
我们定义X -> y得到的分数公式如下图:
A的解释如下:
6.pngP的解释如下:
我们的目标就是输入X对应正确的序列y的概率最大,用似然函数表示如下:
8.png
公式的解释和预测如下图:
我的理解
11.JPG 12.JPG补充:
这里的最大化负对数似然估计并不像平常看到的那种像交叉熵损失一样的对数似然,这是因为我们用的不单单是softmax函数,我们用了CRF,导致损失函数发生了变化,若是用普通的softmax函数,那么损失函数还是平常看到的那样。
再补充:
刚刚看了学习视频,突发奇想,想把整个句子的标签当作一整个标签来进行训练和反向传播,然后细想了一下发现CRF干的不就是这个事儿嘛!score算的就是整个句子标签序列的得分,而概率算的也正是在句子确定的情况下,标签序列出现的概率,通过最大化正确标签序列出现的概率来训练模型。我之前以为就是一个字一个字地进行训练和反向传播呢,这种思想适用的是BiLSTM后直接连接softmax函数,不适用于BiLSTM+CRF。
网友评论