条件随机场CRF(三)

上篇博文介绍了CRF的标记序列的概率计算,本片博文专注于CRF的参数学习问题和序列解码问题。

CRF模型参数学习思路

在CRF模型参数学习问题中,我们给定训练数据集XXX和对应的标记序列YYY,KKK个特征函数fk(x,y)f_k(x,y)fk​(x,y),需要学习CRF的模型参数wkw_kwk​和条件概率Pw(yx)P_w(y|x)Pw​(y∣x)其中条件概率Pw(yx)P_w(y|x)Pw​(y∣x)和模型参数wkw_kwk​满足一下关系:
Pw(yx)=P(yx)=1Zw(x)expk=1Kwkfk(x,y)=expk=1Kwkfk(x,y)yexpk=1Kwkfk(x,y) P_w(y|x) = P(y|x) = \frac{1}{Z_w(x)}exp\sum\limits_{k=1}^Kw_kf_k(x,y) = \frac{exp\sum\limits_{k=1}^Kw_kf_k(x,y)}{\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(x,y)} Pw​(y∣x)=P(y∣x)=Zw​(x)1​expk=1∑K​wk​fk​(x,y)=y∑​expk=1∑K​wk​fk​(x,y)expk=1∑K​wk​fk​(x,y)​
所以我们的目标就是求出所有的模型参数wkw_kwk​,这样条件概率Pw(yx)P_w(y|x)Pw​(y∣x)可以从上式计算出来。求解这个问题有很多思路,比如梯度下降法,牛顿法,拟牛顿法,下面我们只简要介绍用梯度下降法的求解思路。

CRF模型参数学习之梯度下降法求解

在使用梯度下降法求解模型参数之前,我们需要定义我们的优化函数,一般极大化条件分布Pw(yx)P_w(y|x)Pw​(y∣x)的对数似然函数如下:
  L(w)=logx,yPw(yx)P(x,y)=x,yP(x,y)logPw(yx)   L(w)= log\prod_{x,y}P_w(y|x)^{\overline{P}(x,y)} = \sum\limits_{x,y}\overline{P}(x,y)logP_w(y|x)   L(w)=logx,y∏​Pw​(y∣x)P(x,y)=x,y∑​P(x,y)logPw​(y∣x) 其中,P(x,y)\overline{P}(x,y)P(x,y)为经验分布,可以从先验知识和训练集样本中得到,为了使用梯度下降法,我们现在极小化f(w)=L(Pw)f(w) = -L(P_w)f(w)=−L(Pw​),具体求解如下:
  f(w)=x,yP(x,y)logPw(yx)=x,yP(x,y)logZw(x)x,yP(x,y)k=1Kwkfk(x,y)=xP(x)logZw(x)x,yP(x,y)k=1Kwkfk(x,y)=xP(x)logyexpk=1Kwkfk(x,y)x,yP(x,y)k=1Kwkfk(x,y)   \begin{aligned}f(w) & = -\sum\limits_{x,y}\overline{P}(x,y)logP_w(y|x) \\ &= \sum\limits_{x,y}\overline{P}(x,y)logZ_w(x) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \\& = \sum\limits_{x}\overline{P}(x)logZ_w(x) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \\& = \sum\limits_{x}\overline{P}(x)log\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(x,y) - \sum\limits_{x,y}\overline{P}(x,y)\sum\limits_{k=1}^Kw_kf_k(x,y) \end{aligned}   f(w)​=−x,y∑​P(x,y)logPw​(y∣x)=x,y∑​P(x,y)logZw​(x)−x,y∑​P(x,y)k=1∑K​wk​fk​(x,y)=x∑​P(x)logZw​(x)−x,y∑​P(x,y)k=1∑K​wk​fk​(x,y)=x∑​P(x)logy∑​expk=1∑K​wk​fk​(x,y)−x,y∑​P(x,y)k=1∑K​wk​fk​(x,y)​ 
 对www求导可以得到:
  f(w)w=x,yP(x)Pw(yx)f(x,y)x,yP(x,y)f(x,y)   \frac{\partial f(w)}{\partial w} = \sum\limits_{x,y}\overline{P}(x)P_w(y|x)f(x,y) - \sum\limits_{x,y}\overline{P}(x,y)f(x,y)   ∂w∂f(w)​=x,y∑​P(x)Pw​(y∣x)f(x,y)−x,y∑​P(x,y)f(x,y) 
 有了www的导数表达式,就可以用梯度下降法来迭代求解最优的www了,以上就是CRF模型参数学习之梯度下降法求解思路总结。

CRF模型维特比算法解码思路

CRF的标记序列解码问题,是指给定条件随机场的条件概率P(yx)P(y|x)P(y∣x)和一个观测序列xxx,要求出满足P(yx)P(y|x)P(y∣x)最大的序列yyy。维特比算法本身是一个动态规划算法,利用了两个局部状态和对应的递推公式,从局部递推到整体,进而得解。对于具体不同的问题,仅仅是这两个局部状态的定义和对应的递推公式不同而已。
对于我们CRF中的维特比算法,我们的第一个局部状态定义为δi(l)\delta_i(l)δi​(l),表示在位置iii标记lll各个可能取值(1,2...m)(1,2...m)(1,2...m)对应的非规范化概率的最大值。之所以用非规范化概率是因为规范化因子Z(x)Z(x)Z(x)不影响最大值的比较。根据δi(l)δ_i(l)δi​(l)的定义,我们递推在位置i+1i+1i+1标记lll的表达式为:
δi+1(l)=max1jm{δi(j)+k=1Kwkfk(yi=j,yi+1=l,x,i)}  ,l=1,2,...m \delta_{i+1}(l) = \max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\;, l=1,2,...m δi+1​(l)=1≤j≤mmax​{δi​(j)+k=1∑K​wk​fk​(yi​=j,yi+1​=l,x,i)},l=1,2,...m
此外,我们需要用另一个局部状态Ψi+1(l)\Psi_{i+1}(l)Ψi+1​(l)来记录使δi+1(l)\delta_{i+1}(l)δi+1​(l)达到最大的位置iii的标记取值,这个值用来最终回溯最优解,Ψi+1(l)\Psi_{i+1}(l)Ψi+1​(l)的递推表达式为:
Ψi+1(l)=arg  max1jm{δi(j)+k=1Kwkfk(yi=j,yi+1=l,x,i)}  ,l=1,2,...m \Psi_{i+1}(l) = arg\;\max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\; ,l=1,2,...m Ψi+1​(l)=arg1≤j≤mmax​{δi​(j)+k=1∑K​wk​fk​(yi​=j,yi+1​=l,x,i)},l=1,2,...m
以上就是CRF的序列解码的基本思想,总结来说,CRF的三个基本问题:标记序列的概率计算–前向后向算法,参数学习问题–梯度下降法,序列解码问题–维特比算法,其中前向后向算法和维特比算法有着异曲同工之妙,都是基于动态规划的思想。这里所述CRF的三个基本问题其实在BI-LSTM-CRF中都有涉及,在训练的过程中涉及到参数的学习,计算总路径得分就用到了类似于前向后向的算法思想,值得注意的是,BI-LSTM-CRF中并不涉及到特征函数和权重,只需要学习到一个状态转移矩阵即可,但所用思想都是一样的。

条件随机场CRF(三)条件随机场CRF(三) 谈笑风生... 发布了25 篇原创文章 · 获赞 2 · 访问量 1273 私信 关注
上一篇:https原理是什么


下一篇:一位成都测评大师的忠告:不了解亚马逊测评的!别想在这上面赚钱!