【自然语言处理】条件随机场【Ⅴ】条件随机场解码问题

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

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

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

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

3.8. 解码问题

解码时,对于给定的输入序列 x x x​,求出条件概率 P ( y ∣ x ) P(y\mid x) P(yx) 最大的输出序列 y ∗ y^* y,即
y ∗ = max ⁡ y ( P w ( y ∣ x ) ) y^* = \max_y (P_w(y\mid x)) y=ymax(Pw(yx))
由于只需要比较相同观测序列 x x x 下,条件概率的大小,所以等价于比较非规范化概率的大小,即
y ∗ = max ⁡ y ( w ⋅ F ( y , x ) ) (22) y^* = \max_y (w·F(y, x)) \tag{22} y=ymax(wF(y,x))(22)
其中,
w = ( w 1 , w 2 , … , w K ) T F ( y , x ) = ( f 1 ( y , x ) , f 2 ( y , x ) , … , f K ( y , x ) ) T f k ( y , x ) = ∑ t = 1 T f k ( y t − 1 , y t , x , t ) ,      k = 1 , 2 , … , K \begin{align} w &= (w_1,w_2,\dots, w_K)^T \notag\\ F(y,x) &= (f_1(y,x),f_2(y,x),\dots, f_K(y,x))^T \notag\\ f_k(y,x) &= \sum_{t=1}^T f_k(y_{t-1},y_t, x, t), \space\space\space\space k=1,2,\dots, K \notag \end{align} wF(y,x)fk(y,x)=(w1,w2,,wK)T=(f1(y,x),f2(y,x),,fK(y,x))T=t=1Tfk(yt1,yt,x,t),    k=1,2,,K
对于目标 ( 22 ) (22) (22) 可以采用动态规划的方法,更具体的来说,采用维特比算法。由于在隐马尔科夫模型和最大熵马尔可夫模型中多次详细介绍了维特比算法,这里不展开讲解。

定义 δ t ( i ) \delta_{t}(i) δt(i)
δ t ( i ) = max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) + ∑ k = 1 K w k f k ( y t − 1 = q j , y t = q i , x , t ) ] ,      i = 1 , 2 , … , N (23) \delta_t(i) = \max_{1\le j\le N} [\delta_{t-1}(j) + \sum_{k=1}^Kw_kf_k(y_{t-1}=q_j, y_t=q_i, x, t)], \space\space\space\space i=1,2,\dots, N \tag{23} δt(i)=1jNmax[δt1(j)+k=1Kwkfk(yt1=qj,yt=qi,x,t)],    i=1,2,,N(23)
定义 ψ t ( i ) \psi_t(i) ψt(i) 用于回溯最优路径:
ψ t ( i ) = a r g max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) + ∑ k = 1 K w k f k ( y t − 1 = q j , y t = q i , x , t ) ] ,      i = 1 , 2 , … , N (24) \psi_t(i) = {\rm arg}\max_{1\le j\le N} [\delta_{t-1}(j) + \sum_{k=1}^Kw_kf_k(y_{t-1}=q_j, y_t=q_i, x, t)], \space\space\space\space i=1,2,\dots, N \tag{24} ψt(i)=arg1jNmax[δt1(j)+k=1Kwkfk(yt1=qj,yt=qi,x,t)],    i=1,2,,N(24)
算法流程大致如下:

输入:  模型的  K  个特征函数  f k  和对应的  K  个权重  w k , 观测序列  x = ( x 1 , x 2 , … , x T ) ; 过程: \begin{array}{ll} \textbf{输入:}&\space模型的\space K \space 个特征函数\space f_k \space和对应的\space K \space 个权重\space w_k,观测序列 \space x=(x_1,x_2,\dots, x_T);\\ \textbf{过程:} \end{array} 输入:过程: 模型的 K 个特征函数 fk 和对应的 K 个权重 wk,观测序列 x=(x1,x2,,xT);

1 : 初始化 δ 1 ( i ) = ∑ k = 1 K w k f k ( y 0 = q s t a r t , y 1 = q i , x , t ) } ,          i = 1 , 2 , . . . N ψ 1 ( i ) = q s t a r t ,          i = 1 , 2 , . . . N 2 : 递推。对  t = 2 , 3 , … , T δ t ( i ) = max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) + ∑ k = 1 K w k f k ( y t − 1 = q j , y t = q i , x , t ) ] ,      i = 1 , 2 , … , N ψ t ( i ) = a r g max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) + ∑ k = 1 K w k f k ( y t − 1 = q j , y t = q i , x , t ) ] ,      i = 1 , 2 , … , N 3 : 终止 D ∗ = max ⁡ y ( w ⋅ F ( y , x ) ) = max ⁡ 1 ≤ i ≤ N [ δ T ( i ) ] y T ∗ = a r g max ⁡ 1 ≤ i ≤ N [ δ T ( i ) ] 4 : 最优路径回溯。对  t = T − 1 , T − 2 , … , 1 y t ∗ = ψ t + 1 ( y t + 1 ∗ ) 求得最优路径  y ∗ = ( y 1 ∗ , s 2 ∗ , … , y T ∗ ) \begin{array}{rl} 1:& 初始化\\ \\ &\begin{array}{c} \delta_{1}(i) = \sum\limits_{k=1}^Kw_kf_k(y_{0} =q_{\rm start},y_{1} = q_i,x,t)\},\;\;\;\; i=1,2,...N \\ \psi_{1}(i) = q_{\rm start},\;\;\;\; i=1,2,...N \\ \end{array}\\\\ 2:& 递推。对 \space t=2,3,\dots, T\\ \\ &\begin{array}{c} \delta_t(i) = \max\limits_{1\le j\le N} [\delta_{t-1}(j) + \sum\limits_{k=1}^Kw_kf_k(y_{t-1}=q_j, y_t=q_i, x, t)], \space\space\space\space i=1,2,\dots, N \\ \psi_t(i) = {\rm arg}\max\limits_{1\le j\le N} [\delta_{t-1}(j) + \sum\limits_{k=1}^Kw_kf_k(y_{t-1}=q_j, y_t=q_i, x, t)], \space\space\space\space i=1,2,\dots, N \\ \end{array}\\\\ 3:& 终止\\ \\ &\begin{array}{c} D^* = \max\limits_y(w·F(y,x)) = \max \limits_{1\le i\le N} [\delta_T(i)] \\ y_T^* = {\rm arg}\max \limits_{1\le i\le N} [\delta_T(i)] \end{array}\\\\ 4:& 最优路径回溯。对 \space t=T-1,T-2,\dots,1\\ \\ &\begin{array}{c} & y_t^* = \psi_{t+1}(y_{t+1}^*) \end{array}\\\\ & 求得最优路径\space y^* = (y_1^*,s_2^*,\dots, y_T^*) \end{array} 1:2:3:4:初始化δ1(i)=k=1Kwkfk(y0=qstart,y1=qi,x,t)},i=1,2,...Nψ1(i)=qstart,i=1,2,...N递推。对 t=2,3,,Tδt(i)=1jNmax[δt1(j)+k=1Kwkfk(yt1=qj,yt=qi,x,t)],    i=1,2,,Nψt(i)=arg1jNmax[δt1(j)+k=1Kwkfk(yt1=qj,yt=qi,x,t)],    i=1,2,,N终止D=ymax(wF(y,x))=1iNmax[δT(i)]yT=arg1iNmax[δT(i)]最优路径回溯。对 t=T1,T2,,1yt=ψt+1(yt+1)求得最优路径 y=(y1,s2,,yT)

输出:  最优路径  y ∗ = ( y 1 ∗ , y 2 ∗ , … , y T ∗ ) \begin{array}{l} \textbf{输出:}\space 最优路径 \space y^* = (y_1^*,y_2^*,\dots, y_T^*) &&&&&&&&&&&&&&&&&&&&& \end{array} 输出: 最优路径 y=(y1,y2,,yT)

算法 1    维特比算法

下面通过一个具体的例子说明维特比算法。依然以上面提到的一个例子为例,有一标注问题:输入观测序列为 X = ( X 1 , X 2 , X 3 ) X=(X_1,X_2,X_3) X=(X1,X2,X3),输出状态序列为 Y = ( Y 1 , Y 2 , Y 3 ) Y=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3) Y 1 Y_1 Y1 Y 2 Y_2 Y2 Y 3 Y_3 Y3 取值于 { 1 , 2 } \{1,2\} { 1,2}。只表明特征值为 1 1 1 的条件,取值为 0 0 0 的条件忽略,则有
t 1 ( y 1 = 1 , y 2 = 2 , x , 2 ) , λ 1 = 1 t 2 ( y 2 = 1 , y 3 = 2 , x , 3 ) , λ 2 = 1 t 3 ( y 1 = 1 , y 2 = 1 , x , 2 ) , λ 3 = 0.6 t 4 ( y 2 = 2 , y 3 = 1 , x , 3 ) , λ 4 = 1 t 5 ( y 1 = 2 , y 2 = 1 , x , 2 ) , λ 5 = 1 t 6 ( y 2 = 2 , y 3 = 2 , x , 3 ) , λ 6 = 0.2 s 1 ( y 1 = 1 , x , 1 ) , μ 1 = 1 s 2 ( y 1 = 2 , x , 1 ) , μ 2 = 0.5 s 3 ( y 2 = 2 , x , 2 ) , μ 3 = 0.5 s 4 ( y 2 = 1 , x , 2 ) , μ 4 = 0.8 s 5 ( y 3 = 1 , x , 3 ) , μ 5 = 0.8 s 6 ( y 3 = 2 , x , 3 ) , μ 6 = 0.5 \begin{array}{l} t_1(y_1=1,y_2=2,x, 2),& \lambda_1=1 \\ t_2(y_2=1,y_3=2,x, 3),& \lambda_2=1 \\ t_3(y_1=1,y_2=1,x, 2),& \lambda_3=0.6 \\ t_4(y_2=2,y_3=1,x, 3),& \lambda_4=1 \\ t_5(y_1=2,y_2=1,x, 2),& \lambda_5=1 \\ t_6(y_2=2,y_3=2,x, 3),& \lambda_6=0.2 \\\\ s_1(y_1=1,x,1), & \mu_1=1 \\ s_2(y_1=2,x,1), & \mu_2=0.5 \\ s_3(y_2=2,x,2), & \mu_3=0.5 \\ s_4(y_2=1,x,2), & \mu_4=0.8 \\ s_5(y_3=1,x,3), & \mu_5=0.8 \\ s_6(y_3=2,x,3), & \mu_6=0.5 \\ \end{array} t1(y1=1,y2=2,x,2),t2(y2=1,y3=2,x,3),t3(y1=1,y2=1,x,2),t4(y2=2,y3=1,x,3),t5(y1=2,y2=1,x,2),t6(y2=2,y3=2,x,3),s1(y1=1,x,1),s2(y1=2,x,1),s3(y2=2,x,2),s4(y2=1,x,2),s5(y3=1,x,3),s6(y3=2,x,3),λ1=1λ2=1λ3=0.6λ4=1λ5=1λ6=0.2μ1=1μ2=0.5μ3=0.5μ4=0.8μ5=0.8μ6=0.5
利用维特比算法求解给定的观测 x x x 对应的最优路径(状态序列):

初始化
δ 1 ( 1 ) = μ 1 = 1 ψ 1 ( 1 ) = q s t a r t δ 1 ( 2 ) = μ 2 = 0.5 ψ 1 ( 2 ) = q s t a r t \begin{array}{l} \delta_1(1) = \mu_1=1 &\psi_1(1) = q_{\rm start}\\ \delta_1(2) = \mu_2=0.5 &\psi_1(2) = q_{\rm start}\\ \end{array} δ1(1)=μ1=1δ1(2)=μ2=0.5ψ1(1)=qstartψ1(2)=qstart
递推
δ 2 ( 1 ) = max ⁡ { δ 1 ( 1 ) + λ 3 + μ 4 ,    δ 1 ( 2 ) + λ 5 + μ 4 } = max ⁡ { 1 + 0.6 + 0.8 , 0.5 + 1 + 0.8 } = 2.4 ψ 2 ( 1 ) = 1 δ 2 ( 2 ) = max ⁡ { δ 1 ( 1 ) + λ 1 + μ 2 ,    δ 1 ( 2 ) + μ 3 } = max ⁡ { 1 + 1 + 0.5 , 0.5 + 0.5 } = 2.5 ψ 2 ( 2 ) = 1 \begin{array}{l} \delta_2(1) = \max\{\delta_1(1)+\lambda_3+\mu_4,\;\delta_1(2)+\lambda_5+\mu_4\}=\max\{1+0.6+0.8, 0.5+1+0.8\}=2.4 &\psi_2(1) = 1\\ \delta_2(2) = \max\{\delta_1(1)+\lambda_1+\mu_2,\;\delta_1(2)+\mu_3\}=\max\{1+1+0.5, 0.5+0.5\}=2.5 &\psi_2(2) = 1\\ \end{array} δ2(1)=max{ δ1(1)+λ3+μ4,δ1(2)+λ5+μ4}=max{ 1+0.6+0.8,0.5+1+0.8}=2.4δ2(2)=max{ δ1(1)+λ1+μ2,δ1(2)+μ3}=max{ 1+1+0.5,0.5+0.5}=2.5ψ2(1)=1ψ2(2)=1

δ 3 ( 1 ) = max ⁡ { δ 2 ( 1 ) + μ 5 ,    δ 2 ( 2 ) + λ 4 + μ 5 } = max ⁡ { 2.4 + 0.8 , 2.5 + 1 + 0.8 } = 4.3 ψ 3 ( 1 ) = 2 δ 3 ( 2 ) = max ⁡ { δ 2 ( 1 ) + λ 2 + μ 6 ,    δ 2 ( 2 ) + λ 6 + μ 6 } = max ⁡ { 2.4 + 1 + 0.5 , 2.5 + 0.2 + 0.5 } = 3.9 ψ 3 ( 2 ) = 1 \begin{array}{l} \delta_3(1) = \max\{\delta_2(1)+\mu_5,\;\delta_2(2)+\lambda_4+\mu_5\}=\max\{2.4+0.8, 2.5+1+0.8\}=4.3 &\psi_3(1) = 2\\ \delta_3(2) = \max\{\delta_2(1)+\lambda_2+\mu_6,\;\delta_2(2)+\lambda_6+\mu_6\}=\max\{2.4+1+0.5, 2.5+0.2+0.5\}=3.9 &\psi_3(2) = 1\\ \end{array} δ3(1)=max{ δ2(1)+μ5,δ2(2)+λ4+μ5}=max{ 2.4+0.8,2.5+1+0.8}=4.3δ3(2)=max{ δ2(1)+λ2+μ6,δ2(2)+λ6+μ6}=max{ 2.4+1+0.5,2.5+0.2+0.5}=3.9ψ3(1)=2ψ3(2)=1

最终得到 y 3 ∗ = 1 y_3^*=1 y3=1,回溯可得
y 2 ∗ = ψ 3 ( 1 ) = 2 y 1 ∗ = ψ 2 ( 2 ) = 1 y_2^* =\psi_3(1)=2 \\ y_1^* = \psi_2(2) = 1\\ y2=ψ3(1)=2y1=ψ2(2)=1
故最优路径为 ( 1 , 2 , 1 ) (1,2,1) (1,2,1)

遗留问题:

  1. 关于前向向量与后向向量的形式化定义,我无法确定形式正确。
  2. 李航书中 P ( Y i = y i ∣ x ) P(Y_i=y_i\mid 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\mid x) P(Yi1=yi1,Yi=yix) 关于前向后向向量的定义,即式 ( 11.32 ) (11.32) (11.32) ( 11.33 ) (11.33) (11.33),我认为二者是错误的。
  3. 李航书中算法 T T T 的式 ( 11.47 ) (11.47) (11.47) 的具体推导,以及推导中符号的详细定义。

REF

[1]《统计学习方法(第二版)》李航著

[2]《机器学习》周志华著

[3]《百面机器学习》诸葛越等著

[4] Lafferty J, McCallum A, Pereira F C N. Conditional random fields: Probabilistic models for segmenting and labeling sequence data[J]. 2001.

[5] 条件随机场CRF(二) 前向后向算法评估标记序列概率 - 博客园

[6] 条件随机场CRF(三) 模型学习与维特比算法解码 - 博客园

[7] 机器学习-条件随机场 - 哔哩哔哩

[8] 中文命名实体识别_03_动态规划之美_HMM&CRF中的前向/后向算法推导 - 知乎

[9] Random field - Wikipedia

猜你喜欢

转载自blog.csdn.net/weixin_46221946/article/details/128580411