概率图模型(3)--条件随机场(3)

转:https://www.cnblogs.com/pinard/p/7068574.html

本文我们关注于linear-CRF的第二个问题与第三个问题的求解。第二个问题是模型参数学习的问题,第三个问题是维特比算法解码的问题。

linear-CRF模型参数学习思路

在linear-CRF模型参数学习问题中,我们给定训练数据集 X 和对应的标记序列 Y,K 个特征函数 f k ( x , y ) f_k(x,y) fk(x,y) ,需要学习linear-CRF的模型参数 w k w_k wk 和条件概率 P w ( y ∣ x ) P_w(y|x) Pw(yx) ,其中条件概率 P w ( y ∣ x ) P_w(y|x) Pw(yx) 和模型参数 w k w_k wk 满足一下关系:

P w ( y ∣ x ) = P ( y ∣ x ) = 1 Z w ( x ) e x p ∑ k = 1 K w k f k ( x , y ) = e x p ∑ k = 1 K w k f k ( x , y ) ∑ y e x p ∑ k = 1 K w k f k ( 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(yx)=P(yx)=Zw(x)1expk=1Kwkfk(x,y)=yexpk=1Kwkfk(x,y)expk=1Kwkfk(x,y)

所以我们的目标就是求出所有的模型参数 w k w_k wk ,这样条件概率 P w ( y ∣ x ) P_w(y|x) Pw(yx) 可以从上式计算出来。

求解这个问题有很多思路,比如梯度下降法,牛顿法,拟牛顿法。同时,这个模型中 P w ( y ∣ x ) P_w(y|x) Pw(yx) 的表达式和最大熵模型原理小结中的模型一样,也可以使用最大熵模型中使用的改进的迭代尺度法(improved iterative scaling, IIS)来求解。下面我们只简要介绍用梯度下降法的求解思路。

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

在使用梯度下降法求解模型参数之前,我们需要定义我们的优化函数,一般极大化条件分布 P w ( y ∣ x ) P_w(y|x) Pw(yx) 的对数似然函数如下:

L ( w ) = l o g ∏ x , y P w ( y ∣ x ) P ‾ ( x , y ) = ∑ x , y P ‾ ( x , y ) l o g P w ( y ∣ x ) 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,yPw(yx)P(x,y)=x,yP(x,y)logPw(yx)

其中 P ‾ ( x , y ) \overline{P}(x,y) P(x,y) 为经验分布,可以从先验知识和训练集样本中得到,这点和最大熵模型类似。为了使用梯度下降法,我们现在极小化 f ( w ) = − L ( P w ) f(w) = -L(P_w) f(w)=L(Pw) 如下:

f ( w ) = − ∑ x , y P ‾ ( x , y ) l o g P w ( y ∣ x ) = ∑ x , y P ‾ ( x , y ) l o g Z w ( x ) − ∑ x , y P ‾ ( x , y ) ∑ k = 1 K w k f k ( x , y ) = ∑ x P ‾ ( x ) l o g Z w ( x ) − ∑ x , y P ‾ ( x , y ) ∑ k = 1 K w k f k ( x , y ) = ∑ x P ‾ ( x ) l o g ∑ y e x p ∑ k = 1 K w k f k ( x , y ) − ∑ x , y P ‾ ( x , y ) ∑ k = 1 K w k f k ( 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,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)

对 w 求导可以得到:

∂ f ( w ) ∂ w = ∑ x , y P ‾ ( x ) P w ( y ∣ x ) f ( x , y ) − ∑ x , y P ‾ ( 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) wf(w)=x,yP(x)Pw(yx)f(x,y)x,yP(x,y)f(x,y)

有了 w 的导数表达书,就可以用梯度下降法来迭代求解最优的 w 了。注意在迭代过程中,每次更新 w 后,需要同步更新 P w ( y ∣ x ) P_w(y|x) Pw(yx) ,以用于下一次迭代的梯度计算。

梯度下降法的过程这里就不累述了,如果不熟悉梯度下降算法过程建议阅读之前写的梯度下降(Gradient Descent)小结。以上就是linear-CRF模型参数学习之梯度下降法求解思路总结。

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

现在我们来看linear-CRF的第三个问题:解码。在这个问题中,给定条件随机场的条件概率 P ( y ∣ x ) P(y|x) P(yx) 和一个观测序列 x ,要求出满足 P ( y ∣ x ) P(y|x) P(yx) 最大的序列 y。

这个解码算法最常用的还是和HMM解码类似的维特比算法。到目前为止,我已经在三个地方讲到了维特比算法,第一个是文本挖掘的分词原理中用于中文分词,第二个是隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列中用于HMM解码。第三个就是这一篇了。

维特比算法本身是一个动态规划算法,利用了两个局部状态和对应的递推公式,从局部递推到整体,进而得解。对于具体不同的问题,仅仅是这两个局部状态的定义和对应的递推公式不同而已。由于在之前已详述维特比算法,这里就是做一个简略的流程描述。

对于我们linear-CRF中的维特比算法,我们的第一个局部状态定义为 δ i ( l ) \delta_i(l) δi(l) ,表示在位置 i 标记 l l l 各个可能取值(1,2…m)对应的非规范化概率的最大值。之所以用非规范化概率是,规范化因子 Z ( x ) Z(x) Z(x) 不影响最大值的比较。根据 δ i ( l ) \delta_i(l) δi(l) 的定义,我们递推在位置 i+1 标记ll的表达式为:

δ i + 1 ( l ) = max ⁡ 1 ≤ j ≤ m { δ i ( j ) + ∑ k = 1 K w k f k ( y i = j , y i + 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)=1jmmax{δi(j)+k=1Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m

和HMM的维特比算法类似,我们需要用另一个局部状态 Ψ i + 1 ( l ) \Psi_{i+1}(l) Ψi+1(l) 来记录使 δ i + 1 ( l ) \delta_{i+1}(l) δi+1(l) 达到最大的位置 i 的标记取值,这个值用来最终回溯最优解, Ψ i + 1 ( l ) \Psi_{i+1}(l) Ψi+1(l) 的递推表达式为:

Ψ i + 1 ( l ) = a r g    max ⁡ 1 ≤ j ≤ m { δ i ( j ) + ∑ k = 1 K w k f k ( y i = j , y i + 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)=arg1jmmax{δi(j)+k=1Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m

linear-CRF模型维特比算法流程

现在我们总结下 linear-CRF模型维特比算法流程:

输入:模型的 K 个特征函数,和对应的K个权重。观测序列 x = ( x 1 , x 2 , . . . x n ) x=(x_1,x_2,...x_n) x=(x1,x2,...xn) ,可能的标记个数m

输出:最优标记序列 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . y n ∗ ) y^* =(y_1^*,y_2^*,...y_n^*) y=(y1,y2,...yn)

  1. 初始化:

δ 1 ( l ) = ∑ k = 1 K w k f k ( y 0 = s t a r t , y 1 = l , x , i ) }    , l = 1 , 2 , . . . m \delta_{1}(l) = \sum\limits_{k=1}^Kw_kf_k(y_{0} =start,y_{1} = l,x,i)\}\;, l=1,2,...m δ1(l)=k=1Kwkfk(y0=start,y1=l,x,i)},l=1,2,...m

Ψ 1 ( l ) = s t a r t    , l = 1 , 2 , . . . m \Psi_{1}(l) = start\;, l=1,2,...m Ψ1(l)=start,l=1,2,...m

  1. 对于 i = 1 , 2... n − 1 i=1,2...n-1 i=1,2...n1 ,进行递推:

δ i + 1 ( l ) = max ⁡ 1 ≤ j ≤ m { δ i ( j ) + ∑ k = 1 K w k f k ( y i = j , y i + 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)=1jmmax{δi(j)+k=1Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m

Ψ i + 1 ( l ) = a r g    max ⁡ 1 ≤ j ≤ m { δ i ( j ) + ∑ k = 1 K w k f k ( y i = j , y i + 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)=arg1jmmax{δi(j)+k=1Kwkfk(yi=j,yi+1=l,x,i)},l=1,2,...m

  1. 终止:

y n ∗ = a r g    max ⁡ 1 ≤ j ≤ m δ n ( j ) y_n^* = arg\;\max_{1 \leq j \leq m}\delta_n(j) yn=arg1jmmaxδn(j)

4)回溯:

y i ∗ = Ψ i + 1 ( y i + 1 ∗ )    , i = n − 1 , n − 2 , . . . 1 y_i^* = \Psi_{i+1}(y_{i+1}^*)\;, i=n-1,n-2,...1 yi=Ψi+1(yi+1),i=n1,n2,...1

最终得到最优标记序列 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . y n ∗ ) y^* =(y_1^*,y_2^*,...y_n^*) y=(y1,y2,...yn)

linear-CRF vs HMM

linear-CRF模型和HMM模型有很多相似之处,尤其是其三个典型问题非常类似,除了模型参数学习的问题求解方法不同以外,概率估计问题和解码问题使用的算法思想基本也是相同的。同时,两者都可以用于序列模型,因此都广泛用于自然语言处理的各个方面。

现在来看看两者的不同点。最大的不同点是linear-CRF模型是判别模型,而HMM是生成模型,即linear-CRF模型要优化求解的是条件概率 P ( y ∣ x ) P(y|x) P(yx) ,则HMM要求解的是联合分布 P ( y ∣ x ) P(y|x) P(yx) 。第二,linear-CRF是利用最大熵模型的思路去建立条件概率模型,对于观测序列并没有做马尔科夫假设。而HMM是在对观测序列做了马尔科夫假设的前提下建立联合分布的模型。

最后想说的是,只有linear-CRF模型和HMM模型才是可以比较讨论的。但是linear-CRF是CRF的一个特例,CRF本身是一个可以适用于很复杂条件概率的模型,因此理论上CRF的使用范围要比HMM广泛的多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值