HMM与CRF笔记

本文为阅读李航的《统计学习方法》和周志华的西瓜书后,对HMM与CRF的学习笔记,方便日后可回顾完此文即可在面试中回答诸如“简单介绍下CRF”,“HMM是如何训练的”等问题.

隐马尔可夫模型-HMM

模型定义

3个重点:图结构、变量的依赖性假设、参数化(基本符号与三要素)

HMM的图结构如下:

HMM与CRF笔记_第1张图片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\} yiQ={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\} xiV={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),1iN

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=vjyt=qi),1iN,1jM,表示在任意时刻 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(xtyt=qi),1iN 进行建模(即上图中的 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,...,xTyt=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=qiX,λ)(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=qjX,λ)(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=1Nj=1NP(yt=qi,yt+1=qj,Xλ)P(yt=qi,yt+1=qj,Xλ)=i=1Nj=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=1T1γt(i)t=1T1ξ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(YX) 最大化.

一般情况下使用维特比算法来进行预测. 维特比算法中,将一个状态序列 ( 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 1tT,1iN,表示在时刻 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,,yt1,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,...,yt1maxP(yt=vi,yt1,,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λ)=1jNmax[δ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+1yt+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=1jNargmax[δt1,jaji](14)

ϕ t , i \phi_{t, i} ϕt,i 记录了在使用递推式 ( 13 ) (13) (13)时,是上一行的哪个 δ t − 1 , j \delta_{t-1,j} δt1,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 后,根据保存下来的转移信息即可回溯得到最优路径(图中的红色箭头组成的路径).

HMM与CRF笔记_第2张图片

维特比算法更具体的描述以及例子可以见李航《统计学习方法》第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)的图结构:

HMM与CRF笔记_第3张图片

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(yix,y1,...,yi1,yi+1,...,yn)=P(yix,yi1,yi+1),i=1,2,,n

CRF对条件概率 P ( y ∣ x ) P(y|x) P(yx) 进行建模,其参数化形式为:

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(yx)=Z1exp(ji=1n1λjtj(yi+1,yi,x,i)+ki=1nuksk(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的简化形式:

HMM与CRF笔记_第4张图片

其他内容可以参考 这篇博客,至少其符号用的比较清楚,不像李航的书比较乱,而且我感觉李航的书在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=1NP(YiXi)=i=1NlogP(YiXi)=i=1Nlog(Z(Xi)1expk=1Kwkfk(Yi,Xi))=i=1Nk=1Kwkfk(Yi,Xi)i=1NlogZ(Xi)(16)

预测方法

同样使用维特比算法,细节见李航《统计学习方法》第11.5节,或参考 可以参考 这篇博客

但是注意,CRF中只需要求解最大非规范化概率对应的路径。理由见下(来自李航的书):

HMM与CRF笔记_第5张图片

下面直接把预测问题当做动态规划问题来解释。

问题:假设所有可能的标签为 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= v1=<start> v N = < e n d > v_N= 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= v1=<start> v N = < e n d > v_N= 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) (yt1=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 1jN 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 1iT 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]=1kNmax{dp[i1][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]=1kNargmax{dp[i1][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=T1,T2,...,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 中的图。

你可能感兴趣的:(NLP,Machine,Learning)