条件随机场(CRF)原理小结(2)

条件随机场(CRF)原理小结(2)

  • 6. 线性链CRF的3个基本问题
    • 6.1 问题1:概率计算问题
      • 6.1.1 前向-后向算法
      • 6.1.2 概率计算
      • 6.1.3 期望值的计算
    • 6.2 问题2:学习问题
      • 6.2.1 改进的迭代尺度法
      • 6.2.2 梯度下降法
    • 6.3 问题3:预测问题
      • 维特比算法描述
  • 模型评价
  • 完整代码地址
  • 参考

本博客中使用到的完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~

CRF系列文章:

条件随机场(CRF)原理小结(1)
条件随机场(CRF)原理小结(2)
BiLSTM-CRF实现中文命名实体识别(NER)


6. 线性链CRF的3个基本问题

6.1 问题1:概率计算问题

给定CRF: P ( Y ∣ X ) P(Y|X) P(YX)以及输入系列 x x x 和输出序列 y y y,计算条件概率:

P ( Y i = y i ∣ x ) P(Y_i=y_i|x) P(Yi=yix) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) P(Y_{i-1}=y_{i-1},Y_i=y_i|x) P(Yi1=yi1,Yi=yix)以及相应的数学期望问题

6.1.1 前向-后向算法

(1)定义前向向量 α i ( y i ∣ x ) \alpha_i(y_i|x) αi(yix)表示在位置 i i i 的标记是 y i y_i yi 并且从 1 → i 1\rightarrow i 1i的前部分标记序列的 非规范化概率,那么有如下递推:

α i T ( y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) [ M i ( y i − 1 , y i ∣ x ) ] ,    i = 1 , 2 , . . . , n + 1 \alpha_i^{T}(y_i|x)=\alpha_{i-1}^{T}(y_{i-1}|x)[M_i(y_{i-1},y_i|x)],\;i=1,2,...,n+1 αiT(yix)=αi1T(yi1x)[Mi(yi1,yix)],i=1,2,...,n+1

其中 i = 0 i=0 i=0 时有: α 0 ( y 0 ∣ x ) = { 1 , y 0 = s t a r t 0 , o h t e r s \alpha_0(y_0|x)=\begin{cases}1,&y_0=start\\0,&ohters\end{cases} α0(y0x)={ 1,0,y0=startohters

还可表示为:

α i T ( x ) = α i − 1 T ( x ) M i ( x ) \alpha_i^T(x)=\alpha_{i-1}^T(x) M_i(x) αiT(x)=αi1T(x)Mi(x)

由于 y i y_i yi的可能取值有 m m m种,所以 α i ( x ) \alpha_i(x) αi(x)是个 m m m 维的列向量

α i ( x ) = [ α i ( y i = 1 ∣ x ) α i ( y i = 2 ∣ x ) . . . α i ( y = m ∣ x ) ] \alpha_i(x)=\begin{bmatrix}\begin{aligned}&\alpha_i(y_i=1|x)\\&\alpha_i(y_i=2|x)\\&\qquad...\\&\alpha_i(y=m|x)\end{aligned}\end{bmatrix} αi(x)=αi(yi=1x)αi(yi=2x)...αi(y=mx)

【注意】:这里要特别强调一下前面几个式子的维度,以帮助大家去理解这几个式子,否则会和我一开始一样,没理解透彻,会影响后面概率计算的公式的理解。

在递推式: α i T ( y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) [ M i ( y i − 1 , y i ∣ x ) ] \alpha_i^{T}(y_i|x)=\alpha_{i-1}^{T}(y_{i-1}|x)[M_i(y_{i-1},y_i|x)] αiT(yix)=αi1T(yi1x)[Mi(yi1,yix)]中,此时位置 i i i 是标记 y i y_i yi,则可将 y i y_i yi看作是确定的,但注意 y i − 1 y_{i-1} yi1到底是哪个状态我们是不知道的,所以这里要对所有 y i − 1 y_{i-1} yi1的情况考虑进来,类似于HMM中求前向递推式一样,所以这里 α i − 1 T ( y i − 1 ∣ x ) \alpha_{i-1}^{T}(y_{i-1}|x) αi1T(yi1x)维度是1xm,而矩阵 [ M i ( y i − 1 , y i ∣ x ) ] [M_i(y_{i-1},y_i|x)] [Mi(yi1,yix)]的维度是mx1,所里这里的 α i T ( y i ∣ x ) \alpha_i^{T}(y_i|x) αiT(yix)是个标量(内积的结果),注意不要被这里的转置符迷惑了。

在递推式 α i T ( x ) = α i − 1 T ( x ) M i ( x ) \alpha_i^T(x)=\alpha_{i-1}^T(x) M_i(x) αiT(x)=αi1T(x)Mi(x)中,其实就是前面那种 y i y_i yi确定的情况的推广,即此时考虑 y i y_i yi的各种状态,所以此时 α i − 1 T ( x ) \alpha_{i-1}^T(x) αi1T(x) 的维度是1xm,矩阵 M i ( x ) M_i(x) Mi(x)的维度是mxm,而 α i T ( x ) \alpha_i^T(x) αiT(x)的维度是1xm。

(2)同样,定义后向向量 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)表示在位置 i i i 的标记是 y i y_i yi 并且从 i + 1 → n i+1\rightarrow n i+1n的后部分标记序列的 非规范化概率,那么有如下递推:

β i ( y i ∣ x ) = [ M i + 1 ( y i , y i + 1 ∣ x ) ] β i + 1 ( y i + 1 ∣ x ) ,    i = 0 , 1 , . . . , n \beta_i(y_i|x)=[M_{i+1}(y_{i},y_{i+1}|x)]\beta_{i+1}(y_{i+1}|x),\;i=0,1,...,n βi(yix)=[Mi+1(yi,yi+1x)]βi+1(yi+1x),i=0,1,...,n

其中 i = n + 1 i=n+1 i=n+1 时有: β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 = s t o p 0 , o h t e r s \beta_{n+1}(y_{n+1}|x)=\begin{cases}1,&y_{n+1}=stop\\0,&ohters\end{cases} βn+1(yn+1x)={ 1,0,yn+1=stopohters

还可表示为:

β i ( x ) = M i + 1 ( x ) β i + 1 ( x ) \beta_i(x)= M_{i+1}(x)\beta_{i+1}(x) βi(x)=Mi+1(x)βi+1(x)

由于 y i y_i yi的可能取值有 m m m种,所以 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)也是个 m m m 维的列向量

β i ( x ) = [ β i ( y i = 1 ∣ x ) β i ( y i = 2 ∣ x ) . . . β i ( y = m ∣ x ) ] \beta_i(x)=\begin{bmatrix}\begin{aligned}&\beta_i(y_i=1|x)\\&\beta_i(y_i=2|x)\\&\qquad...\\&\beta_i(y=m|x)\end{aligned}\end{bmatrix} βi(x)=βi(yi=1x)βi(yi=2x)...βi(y=mx)

同样在这里继续说明一下维度问题,以帮助进一步理解和消化:

在递推式: β i ( y i ∣ x ) = [ M i + 1 ( y i , y i + 1 ∣ x ) ] β i + 1 ( y i + 1 ∣ x ) \beta_i(y_i|x)=[M_{i+1}(y_{i},y_{i+1}|x)]\beta_{i+1}(y_{i+1}|x) βi(yix)=[Mi+1(yi,yi+1x)]βi+1(yi+1x)中,此时位置 i i i 是标记 y i y_i yi,则可将 y i y_i yi看作是确定的,但注意 y i + 1 y_{i+1} yi+1到底是哪个状态我们是不知道的,所以这里要对所有 y i + 1 y_{i+1} yi+1的情况考虑进来,类似于HMM中求后向递推式一样,所以这里矩阵 [ M i + 1 ( y i , y i + 1 ∣ x ) ] [M_{i+1}(y_{i},y_{i+1}|x)] [Mi+1(yi,yi+1x)]的维度是1xm,而 β i + 1 ( y i + 1 ∣ x ) \beta_{i+1}(y_{i+1}|x) βi+1(yi+1x)维度是mx1,所里这里的 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)是个标量(内积的结果),注意不要被这里的转置符迷惑了。

在递推式 β i ( x ) = M i + 1 ( x ) β i + 1 ( x ) \beta_i(x)= M_{i+1}(x)\beta_{i+1}(x) βi(x)=Mi+1(x)βi+1(x)中,其实就是前面那种 y i y_i yi确定的情况的推广,即此时考虑 y i y_i yi的各种状态,所以此时矩阵 M i + 1 ( x ) M_{i+1}(x) Mi+1(x)的维度是mxm, β i + 1 ( x ) \beta_{i+1}(x) βi+1(x)的维度是mx1,而 β i ( x ) \beta_i(x) βi(x)的维度是mx1。

6.1.2 概率计算

P ( Y i = y i ∣ x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P(Y_i=y_i|x) = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)} P(Yi=yix)=Z(x)αiT(yix)βi(yix)

继续强调维度问题:因为 y i y_i yi可看作是确定的,所以 α i T ( y i ∣ x ) \alpha_i^T(y_i|x) αiT(yix) β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)都是标量哦~ Z ( x ) Z(x) Z(x)自然是序列的各种排列组合的所有情况的非规范化概率之和,在此式子中起到规范化因子的作用。

P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P(Y_{i-1}=y_{i-1},Y_i=y_i|x)=\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} P(Yi1=yi1,Yi=yix)=Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)

继续强调维度问题:因为 y i y_i yi y i − 1 y_{i-1} yi1都可看作是确定的,所以 α i − 1 T ( y i − 1 ∣ x ) \alpha_{i-1}^T(y_{i-1}|x) αi1T(yi1x) β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)都是标量, M i ( y i − 1 , y i ∣ x ) M_i(y_{i-1},y_i|x) Mi(yi1,yix)是矩阵元素,自然肯定是标量~

其中, Z ( x ) Z(x) Z(x)还可表示为:

Z ( x ) = α n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( y ∣ x ) Z(x)=\alpha_n^T(x)\cdot \mathbf{1} = \mathbf{1}^T \cdot \beta_1(y|x) Z(x)=αnT(x)1=1Tβ1(yx)

继续不厌其烦的强调维度: α n T ( x ) \alpha_n^T(x) αnT(x)的维度是1xm, β 1 ( y ∣ x ) \beta_1(y|x) β1(yx)的维度是mx1,而 1 \mathbf{1} 1 是维度为mx1的列向量~

6.1.3 期望值的计算

特征函数 f k f_k fk关于条件分布 P ( Y ∣ X ) P(Y|X) P(YX)的数学期望是:

E P ( Y ∣ X ) [ f k ] = ∑ y P ( y ∣ x ) f k ( y , x ) = ∑ y P ( y ∣ x ) ∑ i = 1 n + 1 f k ( y i − 1 , y i , x , i ) = ∑ i = 1 n + 1 ∑ y i − 1 , y i P ( y i − 1 , y i ∣ x )   f k ( y i − 1 , y i , x , i ) = ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i )   α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i )   α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ⋅ 1 k = 1 , 2 , . . . , K \begin{aligned}E_{P(Y|X)}[f_k]&=\sum\limits_y P(y|x) f_k(y,x)\\&=\sum\limits_y P(y|x) \sum\limits_{i=1}^{n+1} f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} P(y_{i-1},y_i|x) \,f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} f_k(y_{i-1},y_i,x,i)\,\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}\\&=\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} f_k(y_{i-1},y_i,x,i)\,\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{\alpha_n^T(x)\cdot \mathbf{1} }\\&\quad k=1,2,...,K\end{aligned} EP(YX)[fk]=yP(yx)fk(y,x)=yP(yx)i=1n+1fk(yi1,yi,x,i)=i=1n+1yi1,yiP(yi1,yix)fk(yi1,yi,x,i)=i=1n+1yi1,yifk(yi1,yi,x,i)Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)=i=1n+1yi1,yifk(yi1,yi,x,i)αnT(x)1αi1T(yi1x)Mi(yi1,yix)βi(yix)k=1,2,...,K

假设经验分布 P ~ ( X ) \tilde{P}(X) P~(X),因为在CRF数据模型中 x x x为已知,所以 P ( X ) = P ~ ( X ) P(X)=\tilde{P}(X) P(X)=P~(X),则有:联合概率分布 P ( X , Y ) = P ( Y ∣ X ) P ~ ( X ) P(X,Y)=P(Y|X)\tilde{P}(X) P(X,Y)=P(YX)P~(X),所以特征函数 f k f_k fk关于联合分布 P ( X , Y ) P(X,Y) P(X,Y)的数学期望是:

E P ( X , Y ) [ f k ] = ∑ x , y P ( x , y ) f k ( y , x ) = ∑ x P ~ ( x ) ∑ y P ( y ∣ x ) ∑ i = 1 n + 1 f k ( y i − 1 , y i , x , i ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 , y i P ( y i − 1 , y i ∣ x )   f k ( y i − 1 , y i , x , i ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i )   α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i )   α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ⋅ 1 = ∑ x P ~ ( x )   E P ( Y ∣ X ) [ f k ] k = 1 , 2 , . . . , K \begin{aligned}E_{P(X,Y)}[f_k]&=\sum\limits_{x,y} P(x,y) f_k(y,x)\\&=\sum\limits_{x} \tilde{P}(x) \sum\limits_{y} P(y|x) \sum\limits_{i=1}^{n+1} f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{x} \tilde{P}(x) \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} P(y_{i-1},y_i|x) \,f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{x} \tilde{P}(x)\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} f_k(y_{i-1},y_i,x,i)\,\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}\\&=\sum\limits_{x} \tilde{P}(x)\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} f_k(y_{i-1},y_i,x,i)\,\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{\alpha_n^T(x)\cdot \mathbf{1}}\\&=\sum\limits_{x} \tilde{P}(x)\,E_{P(Y|X)}[f_k]\\&\quad k=1,2,...,K\end{aligned} EP(X,Y)[fk]=x,yP(x,y)fk(y,x)=xP~(x)yP(yx)i=1n+1fk(yi1,yi,x,i)=xP~(x)i=1n+1yi1,yiP(yi1,yix)fk(yi1,yi,x,i)=xP~(x)i=1n+1yi1,yifk(yi1,yi,x,i)Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)=xP~(x)i=1n+1yi1,yifk(yi1,yi,x,i)αnT(x)1αi1T(yi1x)Mi(yi1,yix)βi(yix)=xP~(x)EP(YX)[fk]k=1,2,...,K

6.2 问题2:学习问题

CRF实际上是定义在时序数据上的对数线性模型,其学习方法有极大似然估计(Maximum Likelihood Estimation,MLE)和正则化的极大似然估计。优化算法有改进的迭代尺度法IIS梯度下降法以及拟牛顿法

给定训练集,可以确定联合分布的经验分布 P ~ ( X , Y ) \tilde{P}(X,Y) P~(X,Y)和边缘分布的经验分布 P ~ ( X ) \tilde{P}(X) P~(X),可通过极大化训练数据的对数似然函数来求解模型参数。训练数据的对数似然函数为:
L ( w ) = L P ~ ( P w ) = ∏ x , y P w ( x , y ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) \begin{aligned}L(w)&=L_{\tilde{P}}(P_w)=\prod\limits_{x,y} P_w(x,y)^{\tilde{P}(x,y)}\\&=\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x)\end{aligned} L(w)=LP~(Pw)=x,yPw(x,y)P~(x,y)=x,yP~(x,y)logPw(yx)

6.2.1 改进的迭代尺度法

最大熵模型的参数学习中,我们也使用了改进的迭代尺度法(Improved Iterative Scaling,IIS),IIS的基本想法是:假设模型当前的参数向量是 w = ( w 1 , w 2 , . . . , w n ) T w=(w_1,w_2,...,w_n)^T w=(w1,w2,...,wn)T,则希望找到一个新的参数向量 w + δ = ( w 1 + δ 1 , w 2 + δ 2 , . . . , w n + δ n ) T w+\delta=(w_1+\delta_1,w_2+\delta_2,...,w_n+\delta_n)^T w+δ=(w1+δ1,w2+δ2,...,wn+δn)T,使得模型的对数似然数值增大。如果能有这样的一种参数向量更新方法: w → w + δ w\rightarrow w+\delta ww+δ,那么重复使用此方法更新参数向量,则对数似然值就会越来越大,直至找到最大值。

解决方法就是找到对数似然函数的一个下届函数 B ( δ ∣ w ) B(\delta|w) B(δw),即有:
L ( w + δ ) − L ( w ) ⩾ B ( δ ∣ w ) L(w+\delta)-L(w)\geqslant B(\delta|w) L(w+δ)L(w)B(δw)
通过对 B ( δ ∣ w ) B(\delta|w) B(δw)的极大化来得到对应的 δ \delta δ的值(使得偏导 ∂ B ( δ ∣ w ) ∂ δ = 0 \frac{\partial B(\delta|w)}{\partial \delta}=0 δB(δw)=0求得 δ \delta δ的表达式,然后可使用牛顿迭代法求得 δ ∗ \delta^* δ),此时的 δ \delta δ使得下届提高,那么对数似然函数也会提高,那么就可以使用: w → w + δ w\rightarrow w+\delta ww+δ 来更新参数向量,进而来迭代求解得到 使得对数似然函数达到最大值的 w ∗ w^* w,以及最优模型 P w ∗ ( y ∣ x ) P_w^*(y|x) Pw(yx)

6.2.2 梯度下降法

我们的目标是极大化条件分布 P w ( y ∣ x ) P_w(y|x) Pw(yx)的对数似然函数:

L ( w ) = ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) L(w)=\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x) L(w)=x,yP~(x,y)logPw(yx)

将其转化为常见的极小化问题: f ( w ) = − L ( w ) = − ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) f(w)=-L(w)=-\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x) f(w)=L(w)=x,yP~(x,y)logPw(yx),则可以使用梯度下降法。而由3.2节内容知:

P w ( y ∣ x ) = 1 Z w ( x ) exp ⁡ ∑ k = 1 K w k f k ( y , x ) P_w(y|x)=\frac{1}{Z_w(x)}\exp \sum\limits_{k=1}^K w_kf_k(y,x) Pw(yx)=Zw(x)1expk=1Kwkfk(y,x)

Z w ( x ) = ∑ y exp ⁡ ∑ k = 1 K w k f k ( y , x ) Z_w(x)=\sum\limits_{y}\exp \sum\limits_{k=1}^K w_kf_k(y,x) Zw(x)=yexpk=1Kwkfk(y,x)

所以:

f ( w ) = − ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) = − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( 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 ( y , x ) + ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) l o g Z w ( x ) = − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) + ∑ x P ~ ( x ) l o g Z w ( x ) = − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) + ∑ x P ~ ( x ) l o g ∑ y exp ⁡ ∑ k = 1 K w k f k ( y , x ) \begin{aligned}f(w)&=-\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x,y}\tilde{P}(x,y)logZ_w(x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x}\tilde{P}(x)\sum\limits_{y}{P_w}(y|x)logZ_w(x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x}\tilde{P}(x)logZ_w(x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x}\tilde{P}(x)log\sum\limits_{y}\exp \sum\limits_{k=1}^K w_kf_k(y,x)\end{aligned} f(w)=x,yP~(x,y)logPw(yx)=x,yP~(x,y)k=1Kwkfk(y,x)+x,yP~(x,y)logZw(x)=x,yP~(x,y)k=1Kwkfk(y,x)+xP~(x)yPw(yx)logZw(x)=x,yP~(x,y)k=1Kwkfk(y,x)+xP~(x)logZw(x)=x,yP~(x,y)k=1Kwkfk(y,x)+xP~(x)logyexpk=1Kwkfk(y,x)

对参数向量 w w w的第k个分量 w k w_k wk求偏导可以得到:

∂ f ( w ) ∂ w k = − ∑ x , y P ~ ( x , y ) f k ( y , x ) + ∑ x , y P ~ ( x ) P w ( y ∣ x ) f k ( y , x ) \begin{aligned}\frac{\partial f(w)}{\partial w_k}&=-\sum\limits_{x,y}\tilde{P}(x,y) f_k(y,x)+\sum\limits_{x,y}\tilde{P}(x)P_w(y|x)f_k(y,x)\end{aligned} wkf(w)=x,yP~(x,y)fk(y,x)+x,yP~(x)Pw(yx)fk(y,x)

有了 w w w的导数表达式,就可以用梯度下降法来迭代求解最优的 w ∗ w^* w了。

【注意】在迭代过程中,每次更新 w w w后,需要同步更新 P w ∗ ( x , y ) P_w^*(x,y) Pw(x,y),以用于下一次迭代的梯度计算。

进一步看一下 ∂ f ( w ) ∂ w k \frac{\partial f(w)}{\partial w_k} wkf(w)的结果还有特别的发现哦~:

∂ f ( w ) ∂ w k = − ∑ x , y P ~ ( x , y ) f k ( y , x ) + ∑ x , y P ~ ( x ) P w ( y ∣ x ) f k ( y , x ) = − E P ~ ( x , y ) [ f k ( y , x ) ] + E P ( x , y ) f k ( y , x ) \begin{aligned}\frac{\partial f(w)}{\partial w_k}&=-\sum\limits_{x,y}\tilde{P}(x,y) f_k(y,x)+\sum\limits_{x,y}\tilde{P}(x)P_w(y|x)f_k(y,x)\\&=-E_{\tilde{P}(x,y) }[f_k(y,x)]+E_{P(x,y)}f_k(y,x)\end{aligned} wkf(w)=x,yP~(x,y)fk(y,x)+x,yP~(x)Pw(yx)fk(y,x)=EP~(x,y)[fk(y,x)]+EP(x,y)fk(y,x)

当令上式等于0求解参数 w k w_k wk时,等于0时上式也表明了 “特征函数 f ( x , y ) f(x,y) f(x,y)关于经验分布 P ~ ( X , Y ) \tilde{P}(X,Y) P~(X,Y)的期望值 E P ~ ( f ) E_{\tilde{P}}(f) EP~(f),等于特征函数 f ( x , y ) f(x,y) f(x,y)关于模型 P ( Y ∣ X ) P(Y|X) P(YX)与经验分布 P ~ ( X ) \tilde{P}(X) P~(X)的期望值 E P ( f ) E_P(f) EP(f),而这正是 最大熵原理

6.3 问题3:预测问题

CRF的预测问题是给定CRF P ( Y ∣ X ) P(Y|X) P(YX)和输入序列 x x x(观测序列),求条件概率最大的输出序列 y ∗ y^* y(标记序列),即对观测序列进行标注

y ∗ = arg ⁡ max ⁡ y P w ( y ∣ x ) y^*=\arg \max\limits_y P_w(y|x) y=argymaxPw(yx)

由3.2节可知

P w ( y ∣ x ) = exp ⁡ ( w ⋅ F ( y , x ) ) Z w ( x ) P_w(y|x)=\frac{\exp(w\cdot F(y,x))}{Z_w(x)} Pw(yx)=Zw(x)exp(wF(y,x))

所以:

y ∗ = arg ⁡ max ⁡ y P w ( y ∣ x ) = arg ⁡ max ⁡ y exp ⁡ ( w ⋅ F ( y , x ) ) Z w ( x ) = arg ⁡ max ⁡ y exp ⁡ ( w ⋅ F ( y , x ) ) = arg ⁡ max ⁡ y ( w ⋅ F ( y , x ) ) = arg ⁡ max ⁡ y ∑ i = 1 n ( w ⋅ F i ( y i − 1 , y i , x ) ) \begin{aligned}y^*&=\arg \max\limits_y P_w(y|x)\\&=\arg \max\limits_y \frac{\exp(w\cdot F(y,x))}{Z_w(x)}\\&=\arg \max\limits_y {\exp(w\cdot F(y,x))}\\&=\arg \max\limits_y {(w\cdot F(y,x))}\\&=\arg \max\limits_y {\sum\limits_{i=1}^n (w\cdot F_i(y_{i-1},y_i,x))}\end{aligned} y=argymaxPw(yx)=argymaxZw(x)exp(wF(y,x))=argymaxexp(wF(y,x))=argymax(wF(y,x))=argymaxi=1n(wFi(yi1,yi,x))

其中 F i ( y i − 1 , y i , x ) = ( f 1 ( y i − 1 , y i , x , i ) ,    f 2 ( y i − 1 , y i , x , i ) , . . . , f K ( y i − 1 , y i , x , i ) ) T F_i(y_{i-1},y_i,x)=(f_1(y_{i-1},y_i,x,i),\;f_2(y_{i-1},y_i,x,i),...,f_K(y_{i-1},y_i,x,i))^T Fi(yi1,yi,x)=(f1(yi1,yi,x,i),f2(yi1,yi,x,i),...,fK(yi1,yi,x,i))T局部特征向量。计算过程中,也仅需计算非规划范概率,如此计算效率也得到了提高。

假设到位置 i i i的最大非规范概率为 δ i ( l ) \delta_{i}(l) δi(l) l l l表示位置 i i i 的标记,可取m种不同的值,即 l = 1 , 2 , . . . , m l=1,2,...,m l=1,2,...,m,则有递推式:

δ i ( l ) = max ⁡ 1 ⩽ j ⩽ m { δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } ,    l = 1 , 2 , . . . , m \delta_i(l)=\max\limits_{1\leqslant j\leqslant m}\{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)\},\;l=1,2,...,m δi(l)=1jmmax{ δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,...,m

设最大非规范概率为 δ i ( l ) \delta_{i}(l) δi(l)对应的位置 i i i的前一个标记为 ψ i ( j ) \psi_i(j) ψi(j),则有:

ψ i ( l ) = arg ⁡ max ⁡ 1 ⩽ j ⩽ m { δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } ,    l = 1 , 2 , . . . , m \psi_i(l)=\arg \max\limits_{1\leqslant j\leqslant m}\{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)\},\;l=1,2,...,m ψi(l)=arg1jmmax{ δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,...,m

则到达序列终点即 i = n i=n i=n时,这时就可得到非规范化概率的最大值:

max ⁡ y ( w ⋅ F ( y , x ) ) = max ⁡ 1 ⩽ j ⩽ m { δ n ( j ) \max\limits_y {(w\cdot F(y,x))} = \max\limits_{1\leqslant j\leqslant m}\{\delta_{n}(j) ymax(wF(y,x))=1jmmax{ δn(j)

非规范化概率取得最大值所经过的序列组成最优路径,最优路径的终点即为:

y n ∗ = arg ⁡ max ⁡ 1 ⩽ j ⩽ m { δ n ( j ) y^*_n=\arg \max\limits_{1\leqslant j\leqslant m}\{\delta_{n}(j) yn=arg1jmmax{ δn(j)

由终点往回开始back tracking,即可得到当前节点的前一节点:

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

如此便可求得最优路径 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y n ∗ ) y^*=(y_1^*,y_2^*,...,y_n^*) y=(y1,y2,...,yn)

维特比算法描述

条件随机场(CRF)原理小结(2)_第1张图片

模型评价

优点
条件随机场模型既具有判别式模型的优点,又具有生成式模型考虑到上下文标记间的转移概率,以序列化形式进行全局参数优化和解码的特点,解决了其他判别式模型(如最大熵马尔科夫模型)难以避免的标记偏见问题。

缺点
模型训练时收敛速度比较慢。

应用
词性标注、分词、命名实体识别等。

完整代码地址

完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~

最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~

参考

[1] 统计学习方法(第2版) 李航

你可能感兴趣的:(NLP,MachineLearning,机器学习,NLP)