【自然语言处理】条件随机场【Ⅳ】条件随机场学习问题

有任何的书写错误、排版错误、概念错误等,希望大家包含指正。

部分推导和定义相关的佐证资料比较少,供参考。讨论的过程中我会加入自己的理解,难免存在错误,欢迎大家讨论。

在阅读本篇之前建议先学习:
隐马尔可夫模型系列
最大熵马尔可夫模型

由于字数限制,分成五篇博客。
【自然语言处理】条件随机场【Ⅰ】马尔可夫随机场
【自然语言处理】条件随机场【Ⅱ】条件随机场概述
【自然语言处理】条件随机场【Ⅲ】条件随机场估计问题
【自然语言处理】条件随机场【Ⅳ】条件随机场学习问题
【自然语言处理】条件随机场【Ⅴ】条件随机场解码问题

3.7. 学习问题

已知训练数据集,由此可知经验概率分布 P ~ ( X , Y ) \tilde P(X,Y) P~(X,Y)。可以通过极大化训练数据的对数似然函数来求模型参数。训练数据的对数似然函数为
L ( w ) = L P ~ ( P w ) = log ⁡ ∏ x , y P w ( y ∣ x ) P w ( x , y ) = ∑ x , y P ~ ( x , y ) log ⁡ P w ( y ∣ x ) L(w) = L_{\tilde P}(P_w) = \log \prod_{x,y} P_w(y\mid x)^{P_w(x,y)} = \sum_{x,y} \tilde P(x,y) \log P_w(y\mid x) L(w)=LP~(Pw)=logx,yPw(yx)Pw(x,y)=x,yP~(x,y)logPw(yx)
P w P_w Pw 是一个由式 ( 6 ) (6) (6) 和式 ( 7 ) (7) (7) 给出的条件随机场模型时,对数似然函数为
L ( w ) = ∑ x , y P ~ ( x , y ) log ⁡ P w ( y ∣ x ) = ∑ x , y [ P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) − P ~ ( x , y ) log ⁡ Z w ( x ) ] = ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) − ∑ x P ~ ( x ) log ⁡ Z w ( x ) = ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) − ∑ x P ~ ( x ) log ⁡ ∑ y exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) \begin{align} L(w) &= \sum_{x,y} \tilde P(x,y) \log P_w(y\mid x)\notag \\ &= \sum_{x,y} \left[ \tilde P(x,y) \sum_{k=1}^K w_kf_k(y,x) - \tilde P(x,y)\log Z_w(x) \right] \notag \\ &= \sum_{x,y} \tilde P(x,y) \sum_{k=1}^K w_kf_k(y,x) -\sum_{x}\tilde P(x)\log Z_w(x)\notag \\ &= \sum_{x,y} \tilde P(x,y) \sum_{k=1}^K w_kf_k(y,x) -\sum_{x}\tilde P(x)\log \sum_y \exp \left( \sum_{k=1}^K w_kf_k(y, x) \right) \tag{16} \end{align} L(w)=x,yP~(x,y)logPw(yx)=x,y[P~(x,y)k=1Kwkfk(y,x)P~(x,y)logZw(x)]=x,yP~(x,y)k=1Kwkfk(y,x)xP~(x)logZw(x)=x,yP~(x,y)k=1Kwkfk(y,x)xP~(x)logyexp(k=1Kwkfk(y,x))(16)
另外, L ( w ) L(w) L(w) 还可以等价写成全部样本条件概率乘积的对数形式
L ( w ) = log ⁡ ∏ d = 1 D P w ( y ( d ) ∣ x ( d ) ) = ∑ d = 1 D log ⁡ P w ( y ( d ) ∣ x ( d ) ) = ∑ d = 1 D log ⁡ exp ⁡ ( ∑ k = 1 K w k f k ( y ( d ) , x ( d ) ) ) Z w ( x ( d ) ) = ∑ a = 1 D ∑ k = 1 K w k f k ( y ( d ) , x ( d ) ) − ∑ d = 1 D log ⁡ Z w ( x ( d ) ) \begin{align} L(w) &= \log \prod_{d=1}^D P_w(y^{(d)}\mid x^{(d)} ) \notag\\ &= \sum_{d=1}^D \log P_w(y^{(d)}\mid x^{(d)}) \notag \\ &= \sum_{d=1}^D \log \frac{\exp \left(\sum\limits_{k=1}^K w_k f_k(y^{(d)}, x^{(d)})\right)}{Z_w(x^{(d)})} \notag \\ &= \sum_{a=1}^D \sum_{k=1}^K w_kf_k(y^{(d)},x^{(d)}) - \sum_{d=1}^D \log Z_w(x^{(d)})\tag{17} \end{align} L(w)=logd=1DPw(y(d)x(d))=d=1DlogPw(y(d)x(d))=d=1DlogZw(x(d))exp(k=1Kwkfk(y(d),x(d)))=a=1Dk=1Kwkfk(y(d),x(d))d=1DlogZw(x(d))(17)
在最大熵马尔可夫模型中我们讨论过 log ⁡ ∏ x , y P w ( y ∣ x ) P w ( x , y ) = log ⁡ ∏ d = 1 D P w ( y ( d ) ∣ x ( d ) ) \log \prod\limits_{x,y} P_w(y\mid x)^{P_w(x,y)}=\log \prod\limits_{d=1}^D P_w(y^{(d)}\mid x^{(d)}) logx,yPw(yx)Pw(x,y)=logd=1DPw(y(d)x(d))。因此,训练式 ( 16 ) (16) (16) 和式 ( 17 ) (17) (17) 是等价的。

3.7.1. 梯度下降法

考虑式 ( 16 ) (16) (16),梯度下降法需要极小化 f ( w ) = − L ( P w ) f(w) = -L(P_w) f(w)=L(Pw)
f ( w ) = − L ( P w ) = ∑ x P ~ ( x ) log ⁡ ∑ y exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) \begin{align} f(w) &= -L(P_w)\notag \\ &= \sum_{x}\tilde P(x)\log \sum_y \exp \left( \sum_{k=1}^K w_kf_k(y, x) \right) - \sum_{x,y} \tilde P(x,y) \sum_{k=1}^K w_kf_k(y,x) \notag \end{align} f(w)=L(Pw)=xP~(x)logyexp(k=1Kwkfk(y,x))x,yP~(x,y)k=1Kwkfk(y,x)

f ( w ) f(w) f(w) 关于 w k w_k wk 的偏导为
∂ f ( w ) ∂ w k = ∑ x P ~ ( x ) ∂ log ⁡ ∑ y exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) ∂ w k − ∑ x , y P ~ ( x , y ) f k ( y , x ) = ∑ x P ~ ( x ) 1 log ⁡ ∑ y exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) ∂ ∑ y exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) ∂ w k − ∑ x , y P ~ ( x , y ) f k ( y , x ) = ∑ x P ~ ( x ) 1 Z w ( x ) ∑ y exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) f k ( y , x ) − ∑ x , y P ~ ( x , y ) f k ( y , x ) = ∑ x P ~ ( x ) ∑ y exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) Z w ( x ) f k ( y , x ) − ∑ x , y P ~ ( x , y ) f k ( y , x ) = ∑ x , y P ~ ( x ) exp ⁡ ( ∑ k = 1 K w k f k ( y , x ) ) Z w ( x ) f k ( y , x ) − ∑ x , y P ~ ( x , y ) f k ( y , x ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f k ( y , x ) − ∑ x , y P ~ ( x , y ) f k ( y , x ) \begin{align} \frac{\partial f(w)}{\partial w_k} &= \sum_{x} \tilde P(x) \frac{\partial \log \sum\limits_y \exp \left( \sum\limits_{k=1}^K w_kf_k(y, x) \right)}{\partial w_k} - \sum_{x,y}\tilde P(x,y)f_k(y, x) \notag\\ &= \sum_x \tilde P(x) \frac{1}{\log \sum\limits_y \exp \left( \sum\limits_{k=1}^K w_kf_k(y, x) \right)} \frac{\partial \sum\limits_y \exp \left( \sum\limits_{k=1}^K w_kf_k(y, x) \right)}{\partial w_k} - \sum_{x,y}\tilde P(x,y)f_k(y, x) \notag\\ &= \sum_x \tilde P(x) \frac{1}{Z_w(x)} \sum_y \exp \left( \sum\limits_{k=1}^K w_kf_k(y, x) \right) f_k(y, x) - \sum_{x,y}\tilde P(x,y)f_k(y, x) \notag\\ &= \sum_x \tilde P(x) \sum_y \frac{\exp\left( \sum\limits_{k=1}^K w_kf_k(y, x) \right) }{Z_w(x)}f_k(y, x) - \sum_{x,y}\tilde P(x,y)f_k(y, x) \notag\\ &= \sum_{x,y} \tilde P(x) \frac{\exp\left( \sum\limits_{k=1}^K w_kf_k(y, x) \right) }{Z_w(x)}f_k(y, x) - \sum_{x,y}\tilde P(x,y)f_k(y, x) \notag\\ &= \sum_{x,y} \tilde P(x) P_w(y\mid x)f_k(y, x) - \sum_{x,y}\tilde P(x,y)f_k(y, x) \notag\\ \end{align} wkf(w)=xP~(x)wklogyexp(k=1Kwkfk(y,x))x,yP~(x,y)fk(y,x)=xP~(x)logyexp(k=1Kwkfk(y,x))1wkyexp(k=1Kwkfk(y,x))x,yP~(x,y)fk(y,x)=xP~(x)Zw(x)1yexp(k=1Kwkfk(y,x))fk(y,x)x,yP~(x,y)fk(y,x)=xP~(x)yZw(x)exp(k=1Kwkfk(y,x))fk(y,x)x,yP~(x,y)fk(y,x)=x,yP~(x)Zw(x)exp(k=1Kwkfk(y,x))fk(y,x)x,yP~(x,y)fk(y,x)=x,yP~(x)Pw(yx)fk(y,x)x,yP~(x,y)fk(y,x)
利用偏导数,采用梯度下降法迭代求解最优 w w w

3.7.2. 改进的迭代尺度法

改进的迭代尺度法通过迭代的方法不断优化对数似然函数改变量的下界,达到极大化对数似然函数的目的。假设模型的当前参数向量为 w = ( w 1 , w 2 , … , w K ) T w=(w_1, w_2,… ,w_K)^T w=(w1,w2,,wK)T,向量的增量为 δ = ( δ 1 , δ 2 , … , δ K ) T \delta = (\delta_1,\delta_2,\dots, \delta_K)^T δ=(δ1,δ2,,δK)T,更新参数向量为 w + δ = ( w 1 + δ 1 , w 2 + δ 2 , … , w K + δ K ) T w+\delta = (w_1+\delta_1,w_2+\delta_2, \dots, w_K+\delta_K)^T w+δ=(w1+δ1,w2+δ2,,wK+δK)T

转移特征 t i t_i ti 的迭代更新方程为
E P ~ [ t i ] = d e f ∑ x , y P ~ ( x , y ) ∑ t = 1 T + 1 t i ( y t − 1 , y t , x , t ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ t = 1 T + 1 t i ( y t − 1 , y t , x , t ) exp ⁡ ( δ i f # ( x , y ) ) ,      i = 1 , 2 , … , K 1 \begin{align} E_{\tilde P} [t_i] &\overset{\rm def}{=} \sum_{x,y} \tilde P(x,y)\sum_{t=1}^{T+1} t_i (y_{t-1},y_t, x, t)\notag\\ &= \sum_{x,y}\tilde P(x) P(y\mid x) \sum_{t=1}^{T+1} t_i (y_{t-1},y_t, x, t) \exp(\delta_i f^\#(x,y)),\space\space\space\space i=1,2,\dots, K_1 \tag{18} \end{align} EP~[ti]=defx,yP~(x,y)t=1T+1ti(yt1,yt,x,t)=x,yP~(x)P(yx)t=1T+1ti(yt1,yt,x,t)exp(δif#(x,y)),    i=1,2,,K1(18)
状态特征 s j s_j sj 的迭代更新方程为
E P ~ [ s j ] = d e f ∑ x , y P ~ ( x , y ) ∑ t = 1 T + 1 s j ( y t , x , t ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ t = 1 T s j ( y t , x , t ) exp ⁡ ( δ K 1 + j f # ( x , y ) ) ,      j = 1 , 2 , … , K 2 \begin{align} E_{\tilde P} [s_j] &\overset{\rm def}{=} \sum_{x,y} \tilde P(x,y)\sum_{t=1}^{T+1} s_j (y_t, x, t)\notag\\ &= \sum_{x,y}\tilde P(x) P(y\mid x) \sum_{t=1}^{T} s_j (y_t, x, t) \exp(\delta_{K_1+j} f^\#(x,y)),\space\space\space\space j=1,2,\dots, K_2 \tag{19} \end{align} EP~[sj]=defx,yP~(x,y)t=1T+1sj(yt,x,t)=x,yP~(x)P(yx)t=1Tsj(yt,x,t)exp(δK1+jf#(x,y)),    j=1,2,,K2(19)
其中 f # ( x , y ) f^\#(x,y) f#(x,y) 是在数据 ( x , y ) (x,y) (x,y) 中出现所有特征数的总和
f # ( x , y ) = ∑ k f k ( y , x ) = ∑ k = 1 K ∑ t = 1 T + 1 f k ( y t − 1 , y t , x , t ) f^\#(x,y) = \sum_k f_k(y,x) = \sum_{k=1}^K \sum_{t=1}^{T+1} f_k(y_{t-1},y_t, x, t) f#(x,y)=kfk(y,x)=k=1Kt=1T+1fk(yt1,yt,x,t)
类似于最大熵模型中的 IIS 算法,往往不能保证每个样本的 f # ( x , y ) f^\#(x,y) f#(x,y) 都相等。为了处理这个问题,定义松弛特征
s ( x , y ) = S − ∑ t = 1 T + 1 ∑ k = 1 K f k ( y t − 1 , y t , x , t ) s(x,y) = S - \sum_{t = 1}^{T+1} \sum_{k=1}^K f_k(y_{t-1},y_t, x, t) s(x,y)=St=1T+1k=1Kfk(yt1,yt,x,t)
其中 S S S 是一个常数。选择足够大的常数 S S S 使得对训练数据集的所有数据 ( x , y ) (x,y) (x,y) s ( x , y ) ≥ 0 s(x,y)\ge 0 s(x,y)0 成立。这时特征总数可取 S S S

( 18 ) (18) (18) 重新写为
∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ t = 1 T + 1 t i ( y t − 1 , y t , x , t ) exp ⁡ ( δ i S ) = E P ~ [ t i ] \sum_{x,y}\tilde P(x) P(y\mid x) \sum_{t=1}^{T+1} t_i (y_{t-1},y_t, x, t) \exp(\delta_i S) =E_{\tilde P} [t_i] x,yP~(x)P(yx)t=1T+1ti(yt1,yt,x,t)exp(δiS)=EP~[ti]
解方程得
δ i = 1 S log ⁡ E P ~ [ t i ] E P [ t i ] \delta_i = \frac{1}{S} \log \frac{E_{\tilde P}[t_i]}{E_P[t_i]} δi=S1logEP[ti]EP~[ti]
其中 E P ~ [ t i ] E_{\tilde P}[t_i] EP~[ti] 可以根据训练集直接计算出来, E P ( t i ) E_{P}(t_i) EP(ti) 可以表示为
E P ( t i ) = ∑ x P ~ ( x ) ∑ t = 1 T + 1 ∑ j , k t i ( y t − 1 = q j , y t = q k , x , t ) α t − 1 ( j ) M t ( y t − 1 = q j , y t = q k ∣ x ) β t ( k ) Z ( x ) E_P(t_i) = \sum\limits_{x}\tilde{P}(x)\sum\limits_{t=1}^{T+1} \sum\limits_{j,k}t_i(y_{t-1}=q_j,y_t=q_k,x, t) \frac{\alpha_{t-1}(j)M_t(y_{t-1}=q_j,y_t=q_k\mid x)\beta_t(k)}{ Z(x)} EP(ti)=xP~(x)t=1T+1j,kti(yt1=qj,yt=qk,x,t)Z(x)αt1(j)Mt(yt1=qj,yt=qkx)βt(k)
对于式 ( 19 ) (19) (19) 可以类似地得到
∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ t = 1 T s j ( y t , x , t ) exp ⁡ ( δ K 1 + j S ) = E P ~ [ s j ] \sum_{x,y}\tilde P(x) P(y\mid x) \sum_{t=1}^{T} s_j (y_t, x, t) \exp(\delta_{K_1+j} S) =E_{\tilde P} [s_j] x,yP~(x)P(yx)t=1Tsj(yt,x,t)exp(δK1+jS)=EP~[sj]
解方程得
δ K 1 + j = 1 S log ⁡ E P ~ [ s j ] E P [ s j ] \delta_{K_1+j} = \frac{1}{S}\log \frac{E_{\tilde P}[s_j]}{E_P[s_j]} δK1+j=S1logEP[sj]EP~[sj]
其中 E P ( s j ) E_P(s_j) EP(sj) 可以表示为
E P ( s j ) = ∑ x P ~ ( x ) ∑ t = 1 T ∑ i s j ( y t = q i , x , t ) α t ( i ) β t ( i ) Z ( x ) E_P(s_j) = \sum_x \tilde P(x) \sum_{t=1}^T \sum_{i} s_j(y_t = q_i, x, t)\frac{\alpha_t(i)\beta_t(i)}{Z(x)} EP(sj)=xP~(x)t=1Tisj(yt=qi,x,t)Z(x)αt(i)βt(i)
以上配合迭代过程称为算法 S S S。在算法 S S S 中需要使常数 S S S 取足够大,这样一来,每步迭代的增量向量过小,算法收敛会变慢。算法 T T T 试图解决这个问题。算法 T T T 对每个观测序列 x x x 计算其特征总数最大值 T ( x ) T(x) T(x)
T ( x ) = max ⁡ y T ( x , y ) T(x) = \max_y T(x,y) T(x)=ymaxT(x,y)
利用前向后向递推公式,可以计算出 T ( x ) T(x) T(x),记 T ( x ) = T T(x)=\mathcal T T(x)=T。关于转移特征参数的更新方程可以写成:
E P ~ [ t i ] = ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ t = 1 T + 1 t i ( y t − 1 , y t , x , t ) exp ⁡ ( δ i T ( x ) ) = ∑ x P ~ ( x ) ∑ y P ( y ∣ x ) ∑ t = 1 T + 1 t i ( y t − 1 , y t , x , t ) exp ⁡ ( δ i T ( x ) ) = ∑ x P ~ ( x ) a i , T exp ⁡ ( δ i T ) = ∑ t = 0 T m a x a i , T u i T \begin{align} E_{\tilde P}[t_i] &= \sum_{x,y}\tilde P(x) P(y\mid x)\sum_{t=1}^{T+1}t_i(y_{t-1},y_t,x,t) \exp(\delta_i T(x))\notag \\ &= \sum_x \tilde P(x) \sum_y P(y\mid x) \sum_{t=1}^{T+1} t_i(y_{t-1},y_t, x, t)\exp(\delta_i T(x)) \notag\\ &= \sum_x \tilde P(x)a_{i,\mathcal T} \exp(\delta_i \mathcal T) \notag \\ &= \sum_{t=0}^{T_{\rm max}} a_{i,\mathcal T} u_i^\mathcal T\tag{20} \end{align} EP~[ti]=x,yP~(x)P(yx)t=1T+1ti(yt1,yt,x,t)exp(δiT(x))=xP~(x)yP(yx)t=1T+1ti(yt1,yt,x,t)exp(δiT(x))=xP~(x)ai,Texp(δiT)=t=0Tmaxai,TuiT(20)
其中, a i , T a_{i,\mathcal T} ai,T 是特征 t i t_i ti 的期望 ∑ y P ( y ∣ x ) ∑ t = 1 T + 1 t i ( y t − 1 , y t , x , t ) \sum\limits_y P(y\mid x) \sum\limits_{t=1}^{T+1} t_i(y_{t-1},y_t, x, t) yP(yx)t=1T+1ti(yt1,yt,x,t) δ i \delta_i δi 记为 log ⁡ u i \log u_i logui u i u_i ui 是多项式方程 ( 20 ) (20) (20) 唯一的实根,可以通过牛顿法等方法求得多项式的根,从而求得 δ i \delta_i δi

同样,关于状态特征的参数更新方程可以写成
E P ~ [ s j ] = ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ t = 1 T + 1 s j ( y t − 1 , y t , x , t ) exp ⁡ ( δ K 1 + j T ( x ) ) = ∑ x P ~ ( x ) ∑ y P ( y ∣ x ) ∑ t = 1 T + 1 s j ( y t − 1 , y t , x , t ) exp ⁡ ( δ K 1 + j T ( x ) ) = ∑ x P ~ ( x ) b j , T exp ⁡ ( δ K 1 + j T ) = ∑ t = 0 T m a x b j , T v j T \begin{align} E_{\tilde P}[s_j] &= \sum_{x,y}\tilde P(x) P(y\mid x)\sum_{t=1}^{T+1}s_j(y_{t-1},y_t,x,t) \exp(\delta_{K_1+j} T(x))\notag \\ &= \sum_x \tilde P(x) \sum_y P(y\mid x) \sum_{t=1}^{T+1} s_j(y_{t-1},y_t, x, t)\exp(\delta_{K_1+j} T(x)) \notag\\ &= \sum_x \tilde P(x)b_{j,\mathcal T} \exp(\delta_{K_1+j} \mathcal T) \notag \\ &= \sum_{t=0}^{T_{\rm max}} b_{j,\mathcal T} v_j^\mathcal T\tag{21} \end{align} EP~[sj]=x,yP~(x)P(yx)t=1T+1sj(yt1,yt,x,t)exp(δK1+jT(x))=xP~(x)yP(yx)t=1T+1sj(yt1,yt,x,t)exp(δK1+jT(x))=xP~(x)bj,Texp(δK1+jT)=t=0Tmaxbj,TvjT(21)
其中, b j , T b_{j,\mathcal T} bj,T 是特征 s j s_j sj 的期望 ∑ y P ( y ∣ x ) ∑ t = 1 T + 1 s j ( y t − 1 , y t , x , t ) \sum\limits_y P(y\mid x) \sum\limits_{t=1}^{T+1} s_j(y_{t-1},y_t, x, t) yP(yx)t=1T+1sj(yt1,yt,x,t) δ K 1 + j \delta_{K_1+j} δK1+j 记为 log ⁡ v j \log v_j logvj v j v_j vj 是多项式方程 ( 21 ) (21) (21) 唯一的实根,可以通过牛顿法等方法求得多项式的根,从而求得 δ K 1 + j \delta_{K_1+j} δK1+j

算法 S S S 和算法 T T T 都是提供了求解增量向量 δ \delta δ 的方法,两种算法的具体迭代过程是一致的。简单描述为,对 w k w_k wk k = 1 , 2 , … , K k=1,2,\dots, K k=1,2,,K 设置初始值 0 0 0;利用算法 S S S 或算法 T T T 求解出 δ k \delta_k δk,更新 w k w_k wk w k + δ k w_k+\delta_k wk+δk,直至所有 w k w_k wk 都收敛。

你可能感兴趣的:(【机器学习】,【自然语言处理】,自然语言处理,算法,人工智能,概率论)