本文为阅读李航的《统计学习方法》和周志华的西瓜书后,对HMM与CRF的学习笔记,方便日后可回顾完此文即可在面试中回答诸如“简单介绍下CRF”,“HMM是如何训练的”等问题.
隐马尔可夫模型-HMM
模型定义
3个重点:图结构、变量的依赖性假设、参数化(基本符号与三要素)
HMM的图结构如下:
HMM的假设:
-
齐次马尔可夫性假设:隐藏的马尔可夫链在任意时刻的状态只依赖于其前一时刻的状态,与其他时刻的状态和观测无关.
-
观测独立性假设:任意时刻的观测仅依赖于该时刻的马尔可夫链的状态,与其他状态以及观测无关.
设 Y = ( y 1 , y 2 , . . . , y T ) Y=(y_1,y_2,...,y_T) Y=(y1,y2,...,yT)是长度为 T T T 的状态序列, X = ( x 1 , x 2 , . . . , x T ) X=(x_1,x_2,...,x_T) X=(x1,x2,...,xT) 是对应的观测序列.
设 Q Q Q为状态变量的所有取值的集合,即 y i ∈ Q = { q 1 , q 2 , . . . , q N } y_i \in Q=\{q_1,q_2,...,q_N\} yi∈Q={q1,q2,...,qN}, N N N是状态的取值个数.
设 V V V为观测变量的所有取值的集合,即 x i ∈ V = { v 1 , v 2 , . . . , v M } x_i \in V=\{v_1,v_2,...,v_M\} xi∈V={v1,v2,...,vM}, M M M是观测的取值个数.
HMM的三要素 A , B , π A,B,\pi A,B,π,可记为三元组 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π).
1、矩阵 A N × N A_{N \times N} AN×N为状态转移概率矩阵,其中的元素 a i j a_{ij} aij表示在任意时刻 t t t从状态值 q i q_i qi转移到状态值 q j q_j qj的概率.
2、 π \pi π为初始状态 y 1 y_1 y1的分布, π i = P ( y 1 = q i ) , 1 ≤ i ≤ N \pi_i=P(y_1=q_i), \quad 1 \leq i \leq N πi=P(y1=qi),1≤i≤N
3、矩阵 B N × M B_{N \times M} BN×M为输出观测概率矩阵,每一行是一个概率分布,其中 b i j = P ( x t = v j ∣ y t = q i ) , 1 ≤ i ≤ N , 1 ≤ j ≤ M b_{ij}=P(x_t=v_j|y_t=q_i),1 \leq i \leq N,1 \leq j \leq M bij=P(xt=vj∣yt=qi),1≤i≤N,1≤j≤M,表示在任意时刻 t t t ,若状态值为 q i q_i qi,则得到观测值 v j v_j vj的概率.
注:
1、 A A A 与 π \pi π 一起用于对状态变量 Y Y Y 构成的马尔可夫链进行建模(即上图中的 y t y_t yt和向右的箭头);
2、 B B B 用于对条件分布 b i ( x t ) = P ( x t ∣ y t = q i ) , 1 ≤ i ≤ N b_i(x_t) = P(x_t|y_t=q_i),1 \leq i \leq N bi(xt)=P(xt∣yt=qi),1≤i≤N 进行建模(即上图中的 x t , y t x_t,y_t xt,yt 和向下的箭头).
训练方法
实际应用时常使用无监督的训练方法——Baum-Welch算法,这是EM算法在HMM模型中的具体应用.
1、前向概率和后向概率
(1)给定隐马尔可夫模型 λ \lambda λ,定义到时刻 t t t 部分观测序列为 ( x 1 , x 2 , . . . , x t ) (x_1,x_2,...,x_t) (x1,x2,...,xt)且在时刻 t t t 的状态 y t = q i y_t=q_i yt=qi的概率为前向概率,记作:
α t ( i ) = P ( x 1 , x 2 , . . . x t , y t = q i ∣ λ ) (1) \alpha_t(i)=P(x_1, x_2, ...x_t,y_t=q_i | \lambda) \tag1 αt(i)=P(x1,x2,...xt,yt=qi∣λ)(1)
(2)给定隐马尔可夫模型 λ \lambda λ,定义在时刻 t t t 的状态 y t = q i y_t=q_i yt=qi 的条件下,从 t + 1 t+1 t+1 到 T T T 的部分观测序列为 { x t + 1 , x t + 2 , . . . , x T } \{x_{t+1},x_{t+2},...,x_T\} {xt+1,xt+2,...,xT} 的概率为后向概率,记作:
β t ( i ) = P ( x t + 1 , x t + 2 , . . . , x T ∣ y t = q i , λ ) (2) \beta_t(i)=P(x_{t+1},x_{t+2},...,x_T | y_t=q_i , \lambda) \tag2 βt(i)=P(xt+1,xt+2,...,xT∣yt=qi,λ)(2)
由上述定义可知:
P ( y t = q i , X ∣ λ ) = α t ( i ) β t ( i ) (3) P(y_t=q_i,X|\lambda)=\alpha_t(i)\beta_t(i) \tag3 P(yt=qi,X∣λ)=αt(i)βt(i)(3)
并且:
P ( y t = q i , y t + 1 = q j , X ∣ λ ) = α t ( i ) a i j b j ( x t + 1 ) β t + 1 ( j ) (4) P(y_t=q_i,y_{t+1}=q_j,X|\lambda)=\alpha_t(i)a_{ij}b_j(x_{t+1})\beta_{t+1}(j) \tag4 P(yt=qi,yt+1=qj,X∣λ)=αt(i)aijbj(xt+1)βt+1(j)(4)
注: a i j a_{ij} aij 和 b j ( x t + 1 ) b_j(x_{t+1}) bj(xt+1)的含义见《模型定义》一节
2、单个状态概率和两个状态概率
(1)给定模型 λ \lambda λ 和观测 X X X ,在时刻 t t t 处于状态 q i q_i qi 的概率记为:
γ t ( i ) = P ( y t = q i ∣ X , λ ) (5) \gamma_t(i)=P(y_t=q_i|X,\lambda) \tag5 γt(i)=P(yt=qi∣X,λ)(5)
代入式子 ( 3 ) (3) (3)有,
γ t ( i ) = P ( y t = q i , X ∣ λ ) P ( X ∣ λ ) = P ( y t = q i , X ∣ λ ) ∑ j = 1 N P ( y t = q j , X ∣ λ ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( j ) β t ( j ) (6) \gamma_t(i)=\frac{P(y_t=q_i,X|\lambda)}{P(X|\lambda)}=\frac{P(y_t=q_i,X|\lambda)}{\sum_{j=1}^{N}P(y_t=q_j,X|\lambda)}=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^{N}\alpha_t(j)\beta_t(j)} \tag6 γt(i)=P(X∣λ)P(yt=qi,X∣λ)=∑j=1NP(yt=qj,X∣λ)P(yt=qi,X∣λ)=∑j=1Nαt(j)βt(j)αt(i)βt(i)(6)
(2)给定模型 λ \lambda λ 和观测 X X X ,在时刻 t t t 处于状态 q i q_i qi 且在时刻 t + 1 t+1 t+1 处于状态 q j q_j qj的概率记为:
ξ t ( i , j ) = P ( y t = q i , y t + 1 = q j ∣ X , λ ) (7) \xi_t(i,j)=P(y_t=q_i,y_{t+1}=q_j|X,\lambda) \tag7 ξt(i,j)=P(yt=qi,yt+1=qj∣X,λ)(7)
带入式子 ( 4 ) (4) (4)有,
ξ t ( i , j ) = P ( y t = q i , y t + 1 = q j , X ∣ λ ) P ( X ∣ λ ) = P ( y t = q i , y t + 1 = q j , X ∣ λ ) ∑ i = 1 N ∑ j = 1 N P ( y t = q i , y t + 1 = q j , X ∣ λ ) = α t ( i ) a i j b j ( x t + 1 ) β t + 1 ( j ) ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( x t + 1 ) β t + 1 ( j ) (8) \begin{aligned} \xi_t(i,j)&=\frac{P(y_t=q_i,y_{t+1}=q_j,X|\lambda)}{P(X|\lambda)}\\ &=\frac{P(y_t=q_i,y_{t+1}=q_j,X|\lambda)}{\sum_{i=1}^{N}\sum_{j=1}^{N}P(y_t=q_i,y_{t+1}=q_j,X|\lambda)} \\ &=\frac{\alpha_t(i)a_{ij}b_j(x_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_t(i)a_{ij}b_j(x_{t+1})\beta_{t+1}(j)} \tag8 \end{aligned} ξt(i,j)=P(X∣λ)P(yt=qi,yt+1=qj,X∣λ)=∑i=1N∑j=1NP(yt=qi,yt+1=qj,X∣λ)P(yt=qi,yt+1=qj,X∣λ)=∑i=1N∑j=1Nαt(i)aijbj(xt+1)βt+1(j)αt(i)aijbj(xt+1)βt+1(j)(8)
3、Baum-Welch算法运行过程
输入:观测数据 X = ( x 1 , x 2 , . . . , x T ) X=(x_1,x_2,...,x_T) X=(x1,x2,...,xT)
输出:HMM参数 λ \lambda λ
(1)初始化
对 n = 0 n=0 n=0,选取 a i j ( 0 ) a_{ij}^{(0)} aij(0), b j ( k ) ( 0 ) b_j(k)^{(0)} bj(k)(0), π i ( 0 ) \pi_i^{(0)} πi(0),得到模型 λ ( 0 ) = ( A ( 0 ) , B ( 0 ) , π ( 0 ) ) \lambda^{(0)}=(A^{(0)},B^{(0)},\pi^{(0)}) λ(0)=(A(0),B(0),π(0)).
(2)递推,对 n = 1 , 2 , . . . , n=1,2,..., n=1,2,...,
a i j n + 1 = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) (9) a_{ij}^{n+1}=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)} \tag9 aijn+1=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)(9)
b j ( k ) ( n + 1 ) = ∑ t = 1 , x t = v k T γ t ( j ) ∑ t = 1 T γ t ( j ) (10) b_j(k)^{(n+1)}=\frac{\sum_{t=1,x_t=v_k}^{T}\gamma_t(j)}{\sum_{t=1}^{T}\gamma_t(j)} \tag{10} bj(k)(n+1)=∑t=1Tγt(j)∑t=1,xt=vkTγt(j)(10)
π i ( n + 1 ) = γ 1 ( i ) (11) \pi_i^{(n+1)}=\gamma_1(i)\tag{11} πi(n+1)=γ1(i)(11)
式子 ( 9 ) , ( 10 ) , ( 11 ) (9),(10),(11) (9),(10),(11)的等号右端使用观测 X X X 和第 n n n 步的模型 λ ( n ) = ( A ( n ) , B ( n ) , π ( n ) ) \lambda^{(n)}=(A^{(n)},B^{(n)},\pi^{(n)}) λ(n)=(A(n),B(n),π(n)) 来计算
(3)终止,得到 λ ( 0 ) = ( A ( n + 1 ) , B ( n + 1 ) , π ( n + 1 ) ) \lambda^{(0)}=(A^{(n+1)},B^{(n+1)},\pi^{(n+1)}) λ(0)=(A(n+1),B(n+1),π(n+1)).
预测方法
预测指的是给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π) 和观测序列 X = ( x 1 , x 2 , . . . , x T ) X=(x_1,x_2,...,x_T) X=(x1,x2,...,xT),求最有可能的状态序列 Y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y T ∗ ) Y^*=(y_1^*,y_2^*,...,y_T^*) Y∗=(y1∗,y2∗,...,yT∗) 使得条件概率 P ( Y ∣ X ) P(Y|X) P(Y∣X) 最大化.
一般情况下使用维特比算法来进行预测. 维特比算法中,将一个状态序列 ( y 1 , y 2 , . . . , y T ) (y_1,y_2,...,y_T) (y1,y2,...,yT) 称为一个路径,部分路径指的是状态序列的子串,即其中的状态在时间上是连续的,如 ( y 1 , y 2 , y 3 ) (y_1,y_2,y_3) (y1,y2,y3)是一个部分路径. 一个路径中的状态变量有不同取值,对应了不同的路径概率.
维特比算法使用动态规划来求解HMM的预测问题,即用动态规划求概率最大的路径(最优路径). 和 DP 解决很多问题的过程类似,维特比算法先找到最优子结构性质,并定义了一个数组用于递推,另一个数组用于记录辅助信息,经过初始化、递推后得到最优路径的概率,但最后还需要回溯才能得到具体的最优解.
HMM预测问题的最优子结构性质体现在,最优路径的部分路径也是最优的,否则,将一条更优的部分路径替换掉原来的部分路径,则能得到一条更优的解,这是矛盾的.
设观测序列长度为 T T T,则可以使用一个 T × N T \times N T×N 的二维DP数组来解本问题。当然,可以将空间优化为一个长度为 T T T 的一维数组. 下面用二维数组来解释。
假设第一个二维数组元素为 δ t , i \delta_{t, i} δt,i, 1 ≤ t ≤ T , 1 ≤ i ≤ N 1\leq t \leq T, 1\leq i \leq N 1≤t≤T,1≤i≤N,表示在时刻 t t t 状态变量 y t = v i y_t=v_i yt=vi的所有部分路径 ( y 1 , y 2 , ⋯ , y t − 1 , y t = v i ) (y_1,y_2,\cdots,y_{t-1},y_t=v_i) (y1,y2,⋯,yt−1,yt=vi) 中的最优路径的概率,即:
δ t , i = max y 1 , y 2 , . . . , y t − 1 P ( y t = v i , y t − 1 , ⋯ , y 1 , x t , ⋯ , x 1 ∣ λ ) , i = 1 , 2 , ⋯ , N (12) \delta_{t, i}=\max_{y_1,y_2,...,y_{t-1}}P(y_t=v_i,y_{t-1},\cdots,y_1,x_t,\cdots,x_1|\lambda),\quad i=1,2,\cdots,N \tag{12} δt,i=y1,y2,...,yt−1maxP(yt=vi,yt−1,⋯,y1,xt,⋯,x1∣λ),i=1,2,⋯,N(12)
首先初始化第一行 δ 1 , i = π i b i ( x 1 ) \delta_{1,i}=\pi_ib_i(x_1) δ1,i=πibi(x1)
然后由前面所述的最优子结构可得 δ t , i \delta_{t,i} δt,i 的递推式:
δ t + 1 , i = max y 1 , y 2 , ⋯ , y t P ( y t + 1 = v i , y t , y t , ⋯ , y 1 , x t + 1 , ⋯ , x 1 ∣ λ ) = max 1 ≤ j ≤ N [ δ t , j a j i ] b i ( x t + 1 ) (13) \begin{aligned} \delta_{t+1,i}&=\max_{y_1,y_2,\cdots,y_t}P(y_{t+1}=v_i,y_t,y_t,\cdots,y_1,x_{t+1},\cdots,x_1|\lambda) \\ &=\max_{1\leq j \leq N}[\delta_{t, j} a_{ji}]b_i(x_{t+1}) \tag{13} \end{aligned} δt+1,i=y1,y2,⋯,ytmaxP(yt+1=vi,yt,yt,⋯,y1,xt+1,⋯,x1∣λ)=1≤j≤Nmax[δt,jaji]bi(xt+1)(13)
意思是求下面一行的第 i i i 个元素时,给矩阵的上面一行(子问题的最优解)乘以对应的转移概率 a j i a_{ji} aji 后取其中的最大值,最后乘以出现观测 x t + 1 x_{t+1} xt+1 的条件概率 P ( x t + 1 ∣ y t + 1 = v i ) = b i ( x t + 1 ) P(x_{t+1}|y_{t+1}=v_i)=b_i(x_{t+1}) P(xt+1∣yt+1=vi)=bi(xt+1) .
为了便于回溯求解得到具体的路径,定义另一个 T × N T\times N T×N 数组 ϕ \phi ϕ 用于保存一些有用的信息.
令:
ϕ t , i = arg max 1 ≤ j ≤ N [ δ t − 1 , j a j i ] (14) \phi_{t, i}=\argmax_{1\leq j\leq N}[\delta_{t-1,j}a_{ji}] \tag{14} ϕt,i=1≤j≤Nargmax[δt−1,jaji](14)
即 ϕ t , i \phi_{t, i} ϕt,i 记录了在使用递推式 ( 13 ) (13) (13)时,是上一行的哪个 δ t − 1 , j \delta_{t-1,j} δt−1,j 转移到 δ t , i \delta_{t, i} δt,i 的. 如下图所示, δ t , i \delta_{t, i} δt,i 是图中的二维矩阵, ϕ t , i \phi_{t, i} ϕt,i 记录的是转移信息. 这样在递推到最后一行求得最大概率对应 δ T , i \delta_{T,i} δT,i 后,根据保存下来的转移信息即可回溯得到最优路径(图中的红色箭头组成的路径).
维特比算法更具体的描述以及例子可以见李航《统计学习方法》第10.4节,注意书中的状态 i i i 对应本文的状态 y y y,书中的观测 o o o 对应本文的观测 x x x。个人认为书中用 i i i 表示状态(随机变量)会很容易让人将其与公式中随处可见的下标 i i i 混淆.
线性链条件随机场-linear chain CRF
模型定义
3个重点:图结构、变量的依赖性假设、参数化
线性链CRF(后文的CRF默认指线性链CRF)的图结构:
CRF的假设:
给定观测变量x的条件下,状态变量Y构成马尔可夫随机场. 在线性链CRF中,“给定x时,y满足马尔可夫性”可以表示为:
P
(
y
i
∣
x
,
y
1
,
.
.
.
,
y
i
−
1
,
y
i
+
1
,
.
.
.
,
y
n
)
=
P
(
y
i
∣
x
,
y
i
−
1
,
y
i
+
1
)
,
i
=
1
,
2
,
⋯
,
n
P(y_i | x, y_1, ..., y_{i-1},y_{i+1},...,y_n)=P(y_i | x, y_{i-1}, y_{i+1}),\quad i=1,2,\cdots,n
P(yi∣x,y1,...,yi−1,yi+1,...,yn)=P(yi∣x,yi−1,yi+1),i=1,2,⋯,n
CRF对条件概率 P ( y ∣ x ) P(y|x) P(y∣x) 进行建模,其参数化形式为:
P ( y ∣ x ) = 1 Z exp ( ∑ j ∑ i = 1 n − 1 λ j t j ( y i + 1 , y i , x , i ) + ∑ k ∑ i = 1 n u k s k ( y i , x , i ) ) (15) P(y|x)=\frac1Z\exp\left( \sum_j \sum_{i=1}^{n-1} \lambda_jt_j(y_{i+1},y_i,x,i)+\sum_k \sum_{i=1}^{n}u_ks_k(y_i,x,i)\right) \tag{15} P(y∣x)=Z1exp(j∑i=1∑n−1λjtj(yi+1,yi,x,i)+k∑i=1∑nuksk(yi,x,i))(15)
其中 t j ( y i + 1 , y i , x , i ) t_j(y_{i+1},y_i,x,i) tj(yi+1,yi,x,i) 是定义在两个相邻标记位置 i i i 和 i + 1 i+1 i+1上的转移特征函数,用于刻画相邻标记变量 y i y_i yi 和 y i + 1 y_{i+1} yi+1 之间的相关关系以及观测序列 x x x 对它们的影响, s k ( y i , x , i ) s_k(y_i,x,i) sk(yi,x,i) 是定义在标记位置 i i i 上的状态特征函数,用于刻画观测序列 x x x 对标记变量 y i y_i yi 的影响.
CRF的简化形式:
其他内容可以参考 这篇博客,至少其符号用的比较清楚,不像李航的书比较乱,而且我感觉李航的书在CRF那节也有几个地方写错了.
训练方法
假设有数据集 X = { ( X 1 , Y 1 ) , ( X 2 , Y 2 ) , ⋯ , ( X N , Y N ) } X=\{(X_1,Y_1),(X_2,Y_2),\cdots,(X_N,Y_N)\} X={(X1,Y1),(X2,Y2),⋯,(XN,YN)},使用极大似然估计来求CRF的参数 w w w。对于使用简化形式的CRF模型,训练数据的对数似然函数为:
L ( w ) = log ∏ i = 1 N P ( Y i ∣ X i ) = ∑ i = 1 N log P ( Y i ∣ X i ) = ∑ i = 1 N log ( 1 Z ( X i ) exp ∑ k = 1 K w k f k ( Y i , X i ) ) = ∑ i = 1 N ∑ k = 1 K w k f k ( Y i , X i ) − ∑ i = 1 N log Z ( X i ) (16) \begin{aligned} L(w)&=\log \prod_{i=1}^NP(Y_i|X_i)\\ \tag{16} &=\sum_{i=1}^N \log P(Y_i|X_i) \\ &=\sum_{i=1}^N \log \left( \frac{1}{Z(X_i)} \exp \sum_{k=1}^{K}w_kf_k(Y_i,X_i) \right) \\ &=\sum_{i=1}^N\sum_{k=1}^{K}w_kf_k(Y_i,X_i)-\sum_{i=1}^N \log Z(X_i)\\ \end{aligned} L(w)=logi=1∏NP(Yi∣Xi)=i=1∑NlogP(Yi∣Xi)=i=1∑Nlog(Z(Xi)1expk=1∑Kwkfk(Yi,Xi))=i=1∑Nk=1∑Kwkfk(Yi,Xi)−i=1∑NlogZ(Xi)(16)
预测方法
同样使用维特比算法,细节见李航《统计学习方法》第11.5节,或参考 可以参考 这篇博客
但是注意,CRF中只需要求解最大非规范化概率对应的路径。理由见下(来自李航的书):
下面直接把预测问题当做动态规划问题来解释。
问题:假设所有可能的标签为 V = [ v 1 , v 2 , . . . , v N ] V=[v_1,v_2,...,v_N] V=[v1,v2,...,vN],其中 v 1 = < s t a r t > v_1=<start> v1=<start>, v N = < e n d > v_N=<end> vN=<end>,输入文本序列 x = [ x 1 , x 2 , . . . , x T ] x=[x_1,x_2,...,x_T] x=[x1,x2,...,xT],我们的目标是根据CRF模型来求解非规范化概率最大的标记序列 y = [ y 1 , y 2 , . . . , y T ] y=[y_1,y_2,...,y_T] y=[y1,y2,...,yT], 另外,我们添加上 y 0 y_0 y0 和 y T + 1 y_{T+1} yT+1,分别对应 v 1 = < s t a r t > v_1=<start> v1=<start>, v N = < e n d > v_N=<end> vN=<end>
另外,CRF模型由状态特征函数和转移特征函数来定义,这里我们用矩阵的形式表示这两个函数:
非规范化概率,即一个标记序列的“分数”,等于状态特征分数+转移特征分数。
设状态特征矩阵为 S S S, S i , j S_{i,j} Si,j 表示 y i = v j y_i=v_j yi=vj 即第 i i i 个标签为 v j v_j vj的分数.
设转移特征矩阵为 T T T, T i , j T_{i,j} Ti,j 表示 ( y t − 1 = v i , y t = v j ) (y_{t-1}=v_i,y_{t}=v_j) (yt−1=vi,yt=vj) 即前一个标签为 v i v_i vi 后一个标签为 v j v_j vj 的分数.
使用动态规划来求解最大分数,设 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示以 y i = v j y_i=v_j yi=vj 结尾的子标签序列的最大分数,并设辅助保存信息的矩阵 H H H, H [ i ] [ j ] H[i][j] H[i][j] 记录的是 d p [ i ] [ j ] dp[i][j] dp[i][j] 是由上一行的哪个状态转移而来的。
初始化:
对于 1 ≤ j ≤ N 1 \le j \le N 1≤j≤N, d p [ 1 ] [ j ] = T 0 , j + S 1 , j dp[1][j]=T_{0,j} + S_{1,j} dp[1][j]=T0,j+S1,j
递推:
对于 1 ≤ i ≤ T 1 \le i \le T 1≤i≤T: d p [ i ] [ j ] = max 1 ≤ k ≤ N { d p [ i − 1 ] [ k ] + T k , j + S i , j } dp[i][j]=\max_{1 \le k \le N}\{dp[i-1][k]+T_{k,j}+S_{i,j}\} dp[i][j]=1≤k≤Nmax{dp[i−1][k]+Tk,j+Si,j}
H [ i ] [ j ] = arg max 1 ≤ k ≤ N { d p [ i − 1 ] [ k ] + T k , j + S i , j } H[i][j]=\argmax_{1 \le k \le N}\{dp[i-1][k]+T_{k,j}+S_{i,j}\} H[i][j]=1≤k≤Nargmax{dp[i−1][k]+Tk,j+Si,j}
计算完第 T T T 行后,最优标签序列的分数为dp矩阵该行的最大值,即 max j { d p [ T , j ] } \max_j\{dp[T,j]\} maxj{dp[T,j]},其最后一个单词的标签在 V V V 中的下标为 i T = arg max j { d p [ T , j ] } i_T=\argmax_j\{dp[T,j]\} iT=jargmax{dp[T,j]}
回溯:
最优标签序列的每个标签都对应标签集 V V V 的一个下标,求出对应的下标序列就是求出了标签序列。
由 i T i_T iT 的值和之前记录的 H H H 矩阵来求解下标序列。
对于 t = T − 1 , T − 2 , . . . , 1 t =T-1,T-2,...,1 t=T−1,T−2,...,1:
i t = H t + 1 , i t + 1 i_{t}=H_{t+1,i_{t+1}} it=Ht+1,it+1
故可求得下标序列 [ i 1 , i 2 , . . . , i T ] [i_1,i_2,...,i_T] [i1,i2,...,iT],因此最优标签序列就是 y ∗ = [ v i 1 , v i 2 , . . . , v i T ] y^*=[v_{i_1},v_{i_2},...,v_{i_T}] y∗=[vi1,vi2,...,viT]
PS:用图来理解则类似前面 HMM 中的图。