CRF--SimpleNote

Motivation

NER标注输出不仅仅是简单的分类,而是具有一定关联规律的标注输出。CRF正是输出这种结构化结果的一种算法。

结合HMM(状态转移和状态释放)和最大熵模型(log linear model建模特征函数,寻找最优的条件概率),在MEMM的基础上,建立隐变量X的概率无向图解决了MEMM的局部归一化问题。

CRF loss in Deep Learning

loss的优化目标是使得模型输出的最优路径和groud truth路径尽量接近。即,最大化最优路径概率。

最优路径概率定义为,

在CRF loss中,Pi通过两组变量求得,Emission Score和Transition Score(传统CRF中的特征函数)。

Emission Score:对应神经网络输出的hidden state。可视为每一步输出标签的分类概率分布预测,每一步输出维度为[#tags, 1]。

Transition Score:对应CRF层中定义的状态转移权重矩阵。保存在CRF layer中,[#tags, #tags]

两者在深度模型中都是作为权重变量来优化学习的。

深度模型中的优化目标实际实现为:

分子计算可以简单计算发现,就是当前路径的Emission Score和Transition Score沿路径之和。计算难点在于分母,可以通过递归实现其多分支结构计算。

递归过程:

维护两个记录列表:obs和 previousprevious存储了之前步骤的结果,obs代表当前状态可能的输出选择。

以step 0到step 1为例:

扩展到#tags维度,沿着1轴,和transition matrix同维度

对score的每一列取指数,求和,在取对数,得到新的previous

递归计算,直到达到最后一个时间步。

求得分母

最佳路径导出Viterbi

动态规划算法,过程类似loss中求分母的部分,但是状态转移方程(动态规划)不同。

同样以step 0到step 1为例:

扩展到#tags维度,沿着1轴,和transition matrix同维度

previous保存的累计最优得分状态变化为:

然后保存这一轮状态转移中,不同step 0状态下对应的最优得分,以及最优得分对应的step 1最优状态。即,保存两个列表,在下一次转移时,将最优得分和对应的最优状态append到结果中。

根据最后一步的最优得分,回溯重构出最优路径。

对比MEMM

虽然CRF在MEMM的基础上,建立隐变量X的概率无向图解决了MEMM的局部归一化问题。但是,并不是说MEMM的结果就一定崩塌。

MEMM的一个明显的特点是实现简单、速度快,因为它只需要每一步单独执行softmax,所以MEMM是完全可以并行的,速度跟直接逐步Softmax基本一样。

它的每一步计算,不需要整个序列的信息计算分母,而是依赖于上一步的状态。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!