条件随机场(CRF)
序列标注:指的是给定输入序列,给序列中每个Token进行标注标签的过程。对序列进行标注,实际上是对序列中每个Token进行标签预测,可以直接视作简单的多分类问题。但是序列标注不仅仅需要对单个Token进行分类预测,同时相邻Token直接有关联关系。
而CRF是一种用于序列标注的判别式概率模型,它能够考虑整个序列的上下文信息,而不是仅仅对单个Token进行分类。CRF模型通过转移概率矩阵𝐏来建模相邻标签之间的依赖关系。
Score计算
根据CRF模型,计算给定输入序列和标签序列的得分。除了发射概率外,还需要考虑转移概率和序列开始或结束的额外概率。 同时引入了一个掩码矩阵𝑚𝑎𝑠𝑘𝑚𝑎𝑠𝑘,将多个序列打包为一个Batch时填充的值忽略,使得ScoreScore计算仅包含有效的Token。
Normalizer计算
Normalizer是所有可能输出序列的Score的对数指数和(Log-Sum-Exp)
Viterbi算法
在完成前向训练部分后,使用Viterbi算法进行解码,与计算Normalizer类似,使用动态规划求解所有可能的预测序列得分。不同的是在解码时同时需要将第𝑖𝑖个Token对应的score取值最大的标签保存,供后续使用Viterbi算法求解最优预测序列使用。
CRF层
将Score计算、Normalizer计算和Viterbi算法整合为一个CRF层,作为神经网络模型的一部分。处理输入序列的Padding问题,确保CRF层仅对有效Token进行计算。
BiLSTM+CRF模型
设计一个双向LSTM+CRF的模型来进行命名实体识别任务的训练。
BiLSTM:捕获输入序列的前后文信息,提高特征提取能力。
CRF:利用CRF层建模标签之间的依赖关系,提高序列标注的准确性。