随机场:由若干个子集组成的一个整体,而每个子集都按照某个分布随机赋予一个值,这个场就叫随机场。
马尔科夫随机场:随机场中某一位置的赋值仅与其相邻位置的赋值有关,和与其不相邻位置的赋值无关。
CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下的输出。
BiLSTM-CRF在NER上的实践总结
使用基于字的BILSTM-CRF,可以用如Bakeoff-3评测采用的BIO表注集
常用的网络结构是双向LSTM后接一个softmax层,输出各个label的概率,然后再接一个CRF层。
- 句子中的每一个单元都代表着字或词嵌入构成的向量,在输入模型训练之前,设置Dropout缓解过拟合
- 字或词向量作为BILSTM-CRF模型的输入,双向LSTM层用来自动提取句子特征。
- 双向LSTM接受句子的每个字的embedding序列作为输入,将正向LSTM的隐层输出
和反向LSTM输出的隐层输出
进行拼接
=[
;
],得到完整的隐状态序列;在经过设置的Dropout后,再介入一个线性层,将隐状态映射为k维(k是标签集的标签数)。线性层的输出
为提取的句子特征,可以理解为将字
分类到第j个标签的打分值。
- 如果在线性层后接一层softmax层,就变成了对各个字进行k分类了。但是这样没有考虑连续字标注的合理性(无法利用前面标注过的信息),所以需要CRF层来进行标注。
- CRF层用来进行句子级的序列标注。CRF层的参数是一个(k+2) *(k+2)的矩阵A,Aij表示的是从第i个标签到第j个标签的转移得分,所以在一个位置进行标注的时候就可以利用前面标注过的标签。加2 是因为要为句子首部添加一个起始状态以及为句子尾部添加一个终止状态。如果一个长度等于句子长度的标签序列y=(y1,y2,y2,.......yn),模型对于句子x的标签打分等于y的打分公式:
- 可以看出整个序列的打分等于各位置的打分之和,而且每个位置的打分由两部分得到:LSTM输出的
以及CRF的转移矩阵A决定。
softmax层的输出是相互独立的,虽然BiLSTM学习到了上下文的信息,但是输出信息互不影响,没有CRF的话只是在每一步挑选一个最大概率的label输出。这样会有问题:虽然每次的输出都是最大概率的label,但我们并不能保证每次预测都是正确的。而CRF中有转移特征,它会考虑输出label的顺序性。或者更准确的说,CRF层可以为最后预测的标签添加一些约束来保证预测的标签是合法的。在训练的过程中,这些约束可以通过CRF层自动学习到。
公式化表示条件随机场
在给定的观测序列X时,某个待定标记序列Y的概率可以定义为:
(
,
,x,i)是转移概率,
(
,x,i)是状态概率,表示观测序列在位置i的标记概率
算法理论参考
CRF中的约束就是CRF的特征函数。特征函数接收四个参数:
- 句子(标注词性的句子)
- 句子s中的第i个单词
- 序列标注给第i个单词标注的词性
- 序列标注给第i-1个单词标注的词性
特征函数的输出是0或1,0表示评分不符合这个特征,1表示要评分的标注序列符合这个特征
为了构建一个条件随机场,首先要定义一个特征函数集。每个特征函数都以整个句子s,当前位置i,位置i-1的标签作为输入,然后为每一个特征函数赋予一个权重,然后针对每一个标注序列,对这些特征函数加权求和。