HMM隐马尔可夫模型解决的问题及推导过程

前言

首先HMM解决的问题是基于序列的。
111

其中:

  • 状态序列 I = i 1 , i 2 , . . . , i T I=i_1,i_2,...,i_T I=i1,i2,...,iT ,满足 i T ∈ Q i_T \in Q iTQ Q Q Q 是状态序列的可能取值集合 Q = { q 1 , q 2 , . . . , q N } Q=\{q_1,q_2,...,q_N\} Q={q1,q2,...,qN}
  • 观测序列 O = o 1 , o 2 , . . . , o T O=o_1,o_2,...,o_T O=o1,o2,...,oT ,满足 o T ∈ V o_T \in V oTV V V V 是观测序列的可能取值集合 V = { v 1 , v 2 , . . . , v M } V=\{v_1,v_2,...,v_M\} V={v1,v2,...,vM}

要点:

一、模型参数及意义:

一个HMM模型,可以由 隐藏状态初始概率分布 π \pi π 、状态转移概率矩阵 A A A 和观测状态概率矩阵 B B B 决定

可由如下三元组表示:
λ = ( π ,    A ,    B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B)
其中:

  • π \pi π :表示初始概率分布;
  • A A A :转移矩阵 [ a i j ] [a_{ij}] [aij] a i j = P ( i t + 1 = q j ∣ i t = q i ) a_{ij}=P(i_{t+1}=q_j|i_t=q_i) aij=P(it+1=qjit=qi) ,表示隐藏状态从 t t t 时刻的 q i q_i qi 转变为 t + 1 t+1 t+1 时刻的 q j q_j qj 时的概率;
  • B B B :发射矩阵 [ b j ( k ) ] [b_j(k)] [bj(k)] b j ( k ) = P ( o t = v k ∣ i t = q j ) b_j(k)=P(o_t=v_k|i_t=q_j) bj(k)=P(ot=vkit=qj) ,表示时刻 t t t 时的隐藏状态为 q j q_j qj 时产生观测值为 v k v_k vk 的概率。

二、两个假设:

齐次Markov假设:任意时刻的隐藏状态只依赖于它前一时刻的隐藏状态。

即:
P ( i t + 1 ∣ i 1 , i 2 , . . . , i t ,    o 1 , o 2 , . . . , o t ) = P ( i t + 1 ∣ i t ) P(i_{t+1}|i_1,i_2,...,i_t,\;o_1,o_2,...,o_t)=P(i_{t+1}|i_t) P(it+1i1,i2,...,it,o1,o2,...,ot)=P(it+1it)
观测独立性假设:任意时刻的观测状态只依赖于当前时刻的隐藏状态。

即:
P ( o t ∣ i 1 , i 2 , . . . , i t ,    o 1 , o 2 , . . . , o t ) = P ( o t ∣ i t ) P(o_t|i_1,i_2,...,i_t,\;o_1,o_2,...,o_t)=P(o_t|i_t) P(oti1,i2,...,it,o1,o2,...,ot)=P(otit)

三、三个问题:

HMM解决的三个经典的问题:

① Evaluation评估问题:已知HMM模型 λ = ( π ,    A ,    B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) ,求给定观测序列 O O O 出现的可能性大小 P ( O ∣ λ ) P(O|\lambda) P(Oλ) ,可使用(Forward-Backword)前向后向算法进行求解;

② Decoding解码问题:已知HMM模型 λ = ( π ,    A ,    B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) 和观测序列 O O O ,求解隐藏状态序列 I ^ \hat{I} I^ ,使得当前条件下出现该隐藏状态序列的可能性最大,即:
I ^ = a r g    m a x ⏟ I    P ( I ∣ O , λ ) \hat{I}=\underbrace{arg\;max}_I\;P(I|O,\lambda) I^=I argmaxP(IO,λ)
可使用(Viterbi)维特比算法进行求解;

③ Learning学习问题:已知观测序列 O O O ,估计模型 λ = ( π ,    A ,    B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) 的参数,使得产生该观测序列的可能性最大,即:
λ M L E = a r g    m a x ⏟ λ    P ( O ∣ λ ) \lambda_{MLE} = \underbrace{arg\;max}_{\lambda}\;P(O|\lambda) λMLE=λ argmaxP(Oλ)
可使用(Baum-Welch)鲍姆-韦尔奇算法进行求解。

四、三个问题的对应求解过程:

① Evaluation评估问题

已知HMM模型 λ = ( π ,    A ,    B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) ,求给定观测序列 O O O 出现的可能性大小 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

  • 暴力求解法
    P ( O ∣ λ ) = ∑ I P ( I , O ∣ λ ) = ∑ I P ( O ∣ I , λ ) ⋅ P ( I ∣ λ ) P(O|\lambda) = \sum_I P(I,O|\lambda) = \sum_I P(O|I,\lambda)\cdot P(I|\lambda) P(Oλ)=IP(I,Oλ)=IP(OI,λ)P(Iλ)
    而:
    P ( I ∣ λ ) = P ( i 1 , i 2 , . . . , i T ∣ λ ) = P ( i T ∣ i 1 , i 2 , . . . , λ ) ⋅ P ( i 1 , i 2 , . . . , i T − 1 ∣ λ ) P(I|\lambda)=P(i_1,i_2,...,i_T|\lambda)=P(i_T|i_1,i_2,...,\lambda)\cdot P(i_1,i_2,...,i_{T-1}|\lambda) P(Iλ)=P(i1,i2,...,iTλ)=P(iTi1,i2,...,λ)P(i1,i2,...,iT1λ)

    = P ( i T ∣ i T − 1 ) ⋅ P ( i 1 , i 2 , . . . , i T − 1 ∣ λ ) = P(i_T|i_{T-1})\cdot P(i_1,i_2,...,i_{T-1}|\lambda) =P(iTiT1)P(i1,i2,...,iT1λ)

    = a T − 1 , T ⋅ P ( i 1 , i 2 , . . . , i T − 1 ∣ λ ) = a_{T-1,T}\cdot P(i_1,i_2,...,i_{T-1}|\lambda) =aT1,TP(i1,i2,...,iT1λ)

    = a T − 1 , T ⋅ a T − 2 , T − 1 ⋅ P ( i 1 , i 2 , . . . , i T − 2 ∣ λ ) =a_{T-1,T}\cdot a_{T-2,T-1}\cdot P(i_1,i_2,...,i_{T-2}|\lambda) =aT1,TaT2,T1P(i1,i2,...,iT2λ)

    = π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t = \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} =π(ai1)t=2Tait1,it

    P ( O ∣ I , λ ) = ∏ t = 1 T b i t ( o t ) P(O|I,\lambda)=\prod_{t=1}^T b_{i_t}(o_t) P(OI,λ)=t=1Tbit(ot)

    所以:
    P ( O ∣ λ ) = ∑ I π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t ∏ t = 1 T b i t ( o t ) P(O|\lambda)=\sum_I \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} \prod_{t=1}^T b_{i_t}(o_t) P(Oλ)=Iπ(ai1)t=2Tait1,itt=1Tbit(ot)

    = ∑ i 1 ∑ i 2 ⋯ ∑ i T ⏞ O ( N T ) π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t ∏ t = 1 T b i t ( o t ) = \overbrace{\sum_{i_1} \sum_{i_2} \cdots \sum_{i_T}}^{O(N^T)} \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} \prod_{t=1}^T b_{i_t}(o_t) =i1i2iT O(NT)π(ai1)t=2Tait1,itt=1Tbit(ot)

    看的出来时间复杂度很高,为 O ( T N T ) O(TN^T) O(TNT)

  • (Forword)前向算法

    我们将 t t t 时刻的观测序列 O = o 1 , o 2 , . . . , o t O=o_1,o_2,...,o_t O=o1,o2,...,ot 与隐藏状态 i t i_t it 的联合概率记为 α t ( i ) \alpha_t(i) αt(i)
    222

    即:
    α t ( i ) = P ( o 1 , o 2 , . . . , o t ,    i t = q i ∣ λ ) \alpha_t(i) = P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) αt(i)=P(o1,o2,...,ot,it=qiλ)

    α T ( i ) = P ( O ,    i t = q i ∣ λ ) \alpha_T(i) = P(O,\;i_t=q_i|\lambda) αT(i)=P(O,it=qiλ)

    而:
    P ( O ∣ λ ) = ∑ i = 1 N P ( O ,    i t = q i ∣ λ ) = ∑ i = 1 N α T ( i ) P(O|\lambda)= \sum_{i=1}^N P(O,\;i_t=q_i|\lambda)=\sum_{i=1}^N \alpha_T(i) P(Oλ)=i=1NP(O,it=qiλ)=i=1NαT(i)
    所以,知道了 α T ( i ) \alpha_T(i) αT(i) 的递推公式, P ( O ∣ λ ) P(O|\lambda) P(Oλ) 便可求解得出。
    α t + 1 ( j ) = P ( o 1 , o 2 , . . . , o t + 1 ,    i t + 1 = q j ∣ λ ) \alpha_{t+1}(j)=P(o_1,o_2,...,o_{t+1},\;i_{t+1}=q_j|\lambda) αt+1(j)=P(o1,o2,...,ot+1,it+1=qjλ)

    = ∑ i = 1 N P ( o 1 , o 2 , . . . , o t + 1 ,    i t + 1 = q j ,    i t = q i ∣ λ ) =\sum_{i=1}^N P(o_1,o_2,...,o_{t+1},\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =i=1NP(o1,o2,...,ot+1,it+1=qj,it=qiλ)

    = P ( o t + 1 ∣ o 1 , o 2 , . . . , o t ,    i t = q i ,    i t + 1 = q j ,    λ ) ⋅ P ( o 1 , o 2 , . . . , o t ,    i t + 1 = q j ,    i t = q i ∣ λ ) =P(o_{t+1}|o_1,o_2,...,o_t,\;i_t=q_i,\;i_{t+1}=q_j,\;\lambda)\cdot P(o_1,o_2,...,o_t,\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =P(ot+1o1,o2,...,ot,it=qi,it+1=qj,λ)P(o1,o2,...,ot,it+1=qj,it=qiλ)

    = ∑ i = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ P ( o 1 , o 2 , . . . , o t ,    i t + 1 = q j ,    i t = q i ∣ λ ) =\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(o_1,o_2,...,o_t,\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =i=1NP(ot+1it+1=qj)P(o1,o2,...,ot,it+1=qj,it=qiλ)

    = ∑ i = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ P ( i t + 1 = q j ∣ o 1 , o 2 , . . . , o t ,    i t = q i ,    λ ) ⋅ P ( o 1 , o 2 , . . . , o t ,    i t = q i ∣ λ ) =\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(i_{t+1}=q_j|o_1,o_2,...,o_t,\;i_t=q_i,\;\lambda)\cdot P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) =i=1NP(ot+1it+1=qj)P(it+1=qjo1,o2,...,ot,it=qi,λ)P(o1,o2,...,ot,it=qiλ)

    = ∑ i = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ P ( i t + 1 = q j ∣ i t = q i ) ⋅ P ( o 1 , o 2 , . . . , o t ,    i t = q i ∣ λ ) =\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(i_{t+1}=q_j|i_t=q_i)\cdot P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) =i=1NP(ot+1it+1=qj)P(it+1=qjit=qi)P(o1,o2,...,ot,it=qiλ)

    = ∑ i = 1 N b j ( o t + 1 ) ⋅ a i j ⋅ α t ( i ) =\sum_{i=1}^N b_j(o_{t+1})\cdot a_{ij}\cdot \alpha_t(i) =i=1Nbj(ot+1)aijαt(i)

  • (Backword)后向算法
    333

    我们把在时刻 t t t 隐藏状态为 q i q_i qi 时产生观测序列 O = o t + 1 , o t + 2 , . . . , o T O=o_{t+1},o_{t+2},...,o_T O=ot+1,ot+2,...,oT 的条件概率记为 β t ( i ) = P ( o t + 1 , o t + 2 , . . . , o T ∣ i t = q i ,    λ ) \beta_t(i)=P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\;\lambda) βt(i)=P(ot+1,ot+2,...,oTit=qi,λ)

    那么根据定义可知: β 1 ( i ) = P ( o 2 , o 3 , . . . , o T ∣ i 1 = q i ,    λ ) \beta_1(i)=P(o_2,o_3,...,o_T|i_1=q_i,\;\lambda) β1(i)=P(o2,o3,...,oTi1=qi,λ)

    此时:

P ( O ∣ λ ) = P ( o 1 , o 2 , . . . , o T ∣ λ ) P(O|\lambda)=P(o_1,o_2,...,o_T|\lambda) P(Oλ)=P(o1,o2,...,oTλ)

= ∑ i = 1 N P ( o 1 , o 2 , . . . , o T ,    i 1 = q i ∣ λ ) = \sum_{i=1}^N P(o_1,o_2,...,o_T,\;i_1=q_i|\lambda) =i=1NP(o1,o2,...,oT,i1=qiλ)

= ∑ i = 1 N P ( o 1 , o 2 , . . . , o T ∣ i 1 = q i ,    λ ) ⋅ P ( i 1 = q i ∣ λ ) =\sum_{i=1}^N P(o_1,o_2,...,o_T|i_1=q_i,\;\lambda)\cdot P(i_1=q_i|\lambda) =i=1NP(o1,o2,...,oTi1=qi,λ)P(i1=qiλ)

= ∑ i = 1 N P ( o 1 ∣ o 2 , . . . , o T ,    i 1 = q i ,    λ ) ⋅ P ( o 2 , . . . , o T ∣ i 1 = q i ,    λ ) ⋅ π i = \sum_{i=1}^N P(o_1|o_2,...,o_T,\;i_1=q_i,\;\lambda)\cdot P(o_2,...,o_T|i_1=q_i,\;\lambda)\cdot \pi_i =i=1NP(o1o2,...,oT,i1=qi,λ)P(o2,...,oTi1=qi,λ)πi

= ∑ i = 1 N P ( o 1 ∣ i 1 = q i ) ⋅ β 1 ( i ) ⋅ π i =\sum_{i=1}^N P(o_1|i_1=q_i)\cdot \beta_1(i) \cdot \pi_i =i=1NP(o1i1=qi)β1(i)πi

= ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) = \sum_{i=1}^N \pi_i b_i(o_1)\beta_1(i) =i=1Nπibi(o1)β1(i)

​ 所以求出了 β 1 ( i ) \beta_1(i) β1(i) ,则相应的 P ( O ∣ λ ) P(O|\lambda) P(Oλ) 也就求出来了。

​ 而:
β t ( i ) = P ( o t + 1 , o t + 2 , . . . , o T ∣ i t = q i ,    λ ) \beta_t(i) =P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\;\lambda) βt(i)=P(ot+1,ot+2,...,oTit=qi,λ)

= ∑ j = 1 N P ( o t + 1 , o t + 2 , . . . , o T ,    i t + 1 = q j ∣ i t = q i ,    λ ) = \sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T,\;i_{t+1}=q_j|i_t=q_i,\;\lambda) =j=1NP(ot+1,ot+2,...,oT,it+1=qjit=qi,λ)

= ∑ j = 1 N P ( o t + 1 , o t + 2 , . . . , o T ∣ i t + 1 = q j ,    i t = q i ,    λ ) ⋅ P ( i t + 1 = q j ∣ o t + 1 , o t + 2 , . . . , o T ,    i t = q i ,    λ ) =\sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T|i_{t+1}=q_j,\;i_t=q_i,\;\lambda)\cdot P(i_{t+1}=q_j|o_{t+1},o_{t+2},...,o_T,\;i_t=q_i,\;\lambda) =j=1NP(ot+1,ot+2,...,oTit+1=qj,it=qi,λ)P(it+1=qjot+1,ot+2,...,oT,it=qi,λ)

= ∑ j = 1 N P ( o t + 1 , o t + 2 , . . . , o T ∣ i t + 1 = q j ) ⋅ a i j =\sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T|i_{t+1}=q_j)\cdot a_{ij} =j=1NP(ot+1,ot+2,...,oTit+1=qj)aij

= ∑ j = 1 N P ( o t + 1 ∣ o t + 2 , . . . , o T ,    i t + 1 = q j ) ⋅ P ( o t + 2 , . . . , o T ∣ i t + 1 = q j ) ⋅ a i j =\sum_{j=1}^N P(o_{t+1}|o_{t+2},...,o_T,\;i_{t+1}=q_j)\cdot P(o_{t+2},...,o_T|i_{t+1}=q_j)\cdot a_{ij} =j=1NP(ot+1ot+2,...,oT,it+1=qj)P(ot+2,...,oTit+1=qj)aij

= ∑ j = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ β t + 1 ( j ) ⋅ a i j = \sum_{j=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot \beta_{t+1}(j)\cdot a_{ij} =j=1NP(ot+1it+1=qj)βt+1(j)aij

= ∑ j = 1 N b j ( o t + 1 ) a i j β t + 1 ( j ) = \sum_{j=1}^N b_j(o_{t+1})a_{ij}\beta_{t+1}(j) =j=1Nbj(ot+1)aijβt+1(j)

​ 至此,我们就可以根据 β T ( i ) \beta_T(i) βT(i) 递推出 β T − 1 ( i ) , . . . , β 1 ( i ) \beta_{T-1}(i),...,\beta_1(i) βT1(i),...,β1(i)

② Decoding解码问题:

已知HMM模型 λ = ( π ,    A ,    B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) 和观测序列 O O O ,求解隐藏状态序列 I ^ \hat{I} I^ ,使得当前条件下出现该隐藏状态序列的可能性最大。
555

使用(Viterbi)维特比算法进行求解:

本质上就是基于动态规划求解最短路径(最大概率)的问题。

这里我们将在时刻 t t t 隐藏状态为 i i i 的所有可能的状态转移路径 i 1 , i 2 , . . . i t i_1,i_2,...i_t i1,i2,...it 中的概率最大值记为 δ t ( i ) \delta_t(i) δt(i) ,则有:
δ t ( i ) = m a x ⏟ i 1 , i 2 , . . . , i t − 1 P ( i t = i ,    i 1 , i 2 , . . . , i t − 1 ,    o 1 , o 2 , . . . , o t ∣ λ ) ,    i = 1 , 2 , . . . , N \delta_t(i) = \underbrace{max}_{i_1,i_2,...,i_{t-1}} P(i_t=i,\;i_1,i_2,...,i_{t-1},\;o_1,o_2,...,o_{t}|\lambda),\;i=1,2,...,N δt(i)=i1,i2,...,it1 maxP(it=i,i1,i2,...,it1,o1,o2,...,otλ),i=1,2,...,N
δ t ( i ) \delta_t(i) δt(i) 的定义可以得到 δ \delta δ 的递推表达式:
δ t + 1 ( j ) = m a x ⏟ i 1 , i 2 , . . . , i t P ( i t + 1 = i ,    i 1 , i 2 , . . . , i t ,    o 1 , o 2 , . . . , o t + 1 ∣ λ ) \delta_{t+1}(j)=\underbrace{max}_{i_1,i_2,...,i_{t}} P(i_{t+1}=i,\;i_1,i_2,...,i_{t},\;o_1,o_2,...,o_{t+1}|\lambda) δt+1(j)=i1,i2,...,it maxP(it+1=i,i1,i2,...,it,o1,o2,...,ot+1λ)

= m a x ⏟ 1 ≤ i ≤ N δ t ( i ) a i j b j ( o t + 1 ) =\underbrace{max}_{1 \le i \le N} \delta_t(i)a_{ij}b_j(o_{t+1}) =1iN maxδt(i)aijbj(ot+1)

但是 δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j) 表示的是最大的概率值,而不是状态转移路径,所以我们要在每次获取到最大概率值之后标记出此时的状态转移路径,即隐藏状态 i i i 的取值。

我们定义在时刻 t + 1 t+1 t+1 隐藏状态为 j j j 的所有单个状态转移路径 ( i 1 , i 2 , . . . , i t − 1 , i t , j t + 1 ) (i_1,i_2,...,i_{t-1},i_t,j_{t+1}) (i1,i2,...,it1,it,jt+1) 中概率最大的转移路径中时刻为 t t t 的节点的隐藏状态为 ψ t + 1 ( j ) \psi_{t+1}(j) ψt+1(j)

那么:
ψ t + 1 ( j ) = a r g    m a x ⏟ 1 ≤ i ≤ N    δ t ( i ) a i j \psi_{t+1}(j) = \underbrace{arg\;max}_{1\le i\le N}\;\delta_t(i)a_{ij} ψt+1(j)=1iN argmaxδt(i)aij
现在,我们可以根据 δ t + 1 ( i ) \delta_{t+1}(i) δt+1(i) 递推得到 δ t ( i ) , δ t − 1 ( i ) , . . . , δ 1 ( j ) \delta_{t}(i),\delta_{t-1}(i),...,\delta_{1}(j) δt(i),δt1(i),...,δ1(j) ,那么根据上式,我们可以得到使得 δ t ( i ) \delta_{t}(i) δt(i) 最大的状态转移路径 I ^ = ψ 1 ( i ) , ψ 2 ( i ) , . . . , ψ t ( i ) \hat{I} =\psi_{1}(i),\psi_{2}(i),...,\psi_{t}(i) I^=ψ1(i),ψ2(i),...,ψt(i)

③ Learning学习问题:

已知观测序列 O O O ,估计模型 λ = ( π ,    A ,    B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) 的参数,使得产生该观测序列的可能性最大。

这样的学习问题我们可以使用(Baum-Welch)鲍姆-韦尔奇算法进行求解。

首先我们给出算法的求解公式:
θ ( t + 1 ) = a r g    m a x ⏟ θ ∫ Z l o g    P ( X , Z ∣ Q ) ⋅ P ( Z ∣ X , θ ( t ) ) d Z \theta^{(t+1)}=\underbrace{arg\;max}_{\theta} \int_{Z} log\;P(X,Z|Q)\cdot P(Z|X,\theta^{(t)})dZ θ(t+1)=θ argmaxZlogP(X,ZQ)P(ZX,θ(t))dZ
其中:

  • X X X 表示观测值,等价于前面的观测序列 O O O ;
  • Z Z Z 表示隐变量,等价于前面的隐藏状态序列 I I I (离散的);
  • θ \theta θ 表示模型参数,等价于前面的 λ \lambda λ

那么上式可以改写为:
λ ( t + 1 ) = a r g    m a x ⏟ λ    ∑ I l o g    P ( O , I ∣ λ ) ⋅ P ( I ∣ O ,    λ ( t ) ) \lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot P(I|O,\;\lambda^{(t)}) λ(t+1)=λ argmaxIlogP(O,Iλ)P(IO,λ(t))

= λ ( t + 1 ) = a r g    m a x ⏟ λ    ∑ I l o g    P ( O , I ∣ λ ) ⋅ P ( O , I ∣ λ ( t ) ) P ( O ∣ λ ( t ) ) =\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot \frac{P(O,I|\lambda^{(t)})}{P(O|\lambda^{(t)})} =λ(t+1)=λ argmaxIlogP(O,Iλ)P(Oλ(t))P(O,Iλ(t))

上式中分母 P ( O ∣ λ ( t ) ) P(O|\lambda^{(t)}) P(Oλ(t)) 是已知的常量,对结果不会产生影响,这里我们可以省略掉,即:
= λ ( t + 1 ) = a r g    m a x ⏟ λ    ∑ I l o g    P ( O , I ∣ λ ) ⋅ P ( O , I ∣ λ ( t ) ) =\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot P(O,I|\lambda^{(t)}) =λ(t+1)=λ argmaxIlogP(O,Iλ)P(O,Iλ(t))

现在是要找到 λ ( t + 1 ) \lambda^{(t+1)} λ(t+1) λ ( t ) \lambda^{(t)} λ(t) 之间的关系式进行迭代更新, λ ( t ) \lambda^{(t)} λ(t) 可以这样表示:
λ ( t ) = ( π ( t ) ,    A ( t ) ,    B ( t ) ) \lambda^{(t)}=(\pi^{(t)},\; A^{(t)},\; B^{(t)}) λ(t)=(π(t),A(t),B(t))
由于模型的三个参数的迭代过程都是使用类似的思想,而且关于 A A A B B B 的推导相对比较麻烦,所以这里只演示 π \pi π 的推导求解过程:

可令:
Q ( λ , λ ( t ) ) = ∑ I l o g    P ( O , I ∣ λ ) ⋅ P ( O , I ∣ λ ( t ) ) Q(\lambda,\lambda^{(t)})=\sum_I log\;P(O,I|\lambda)\cdot P(O,I|\lambda^{(t)}) Q(λ,λ(t))=IlogP(O,Iλ)P(O,Iλ(t))

= ∑ I [ l o g    π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t ⋅ ∏ t = 1 T b i t ( o t ) ⋅ P ( O , I ∣ λ ( t ) ) ] =\sum_I \big[log\;\pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t}\cdot \prod_{t=1}^T b_{i_t}(o_t) \cdot P(O,I|\lambda^{(t)})\big] =I[logπ(ai1)t=2Tait1,itt=1Tbit(ot)P(O,Iλ(t))]

= ∑ I [ ( l o g    π ( a i 1 ) + ∑ t = 2 T l o g    a i t − 1 , i t + ∑ t = 1 T l o g    b i t ( o t ) ) ⋅ P ( O , I ∣ λ ( t ) ) ] =\sum_I \big[\big(log\;\pi(a_{i_1}) + \sum_{t=2}^T log\;a_{i_{t-1},i_t} + \sum_{t=1}^T log\;b_{i_t}(o_t)\big) \cdot P(O,I|\lambda^{(t)})\big] =I[(logπ(ai1)+t=2Tlogait1,it+t=1Tlogbit(ot))P(O,Iλ(t))]

由于小括号中的第二、三项与 π \pi π 没有关系,所以上式可以进一步简化:
π ( t + 1 ) = a r g    m a x ⏟ π    Q ( λ , λ ( t ) ) \pi^{(t+1)}=\underbrace{arg\;max}_{\pi}\;Q(\lambda,\lambda^{(t)}) π(t+1)=π argmaxQ(λ,λ(t))

= a r g    m a x ⏟ π    ∑ I [ l o g    π i 1 ⋅ P ( O , I ∣ λ ( t ) ) ] =\underbrace{arg\;max}_{\pi}\;\sum_I \big[log\;\pi_{i_1}\cdot P(O,I|\lambda^{(t)})\big] =π argmaxI[logπi1P(O,Iλ(t))]

= a r g    m a x ⏟ π    ∑ i 1 ⋯ ∑ i T [ l o g    π i 1 ⋅ P ( O ,    i 1 , i 2 , . . . , i T ∣ λ ( t ) ) ] =\underbrace{arg\;max}_{\pi}\;\sum_{i_1} \cdots \sum_{i_T} \big[log\;\pi_{i_1}\cdot P(O,\;i_1,i_2,...,i_T|\lambda^{(t)})\big] =π argmaxi1iT[logπi1P(O,i1,i2,...,iTλ(t))]

我们发现前面的连续积分从 i 2 i_2 i2 i T i_T iT l o g    π i 1 log\;\pi_{i_1} logπi1 无关,与第二项连续积分的结果是一个边缘概率,即:
= a r g    m a x ⏟ π    ∑ i 1 [ l o g    π i 1 ⋅ P ( O ,    i 1 ∣ λ ( t ) ) ] =\underbrace{arg\;max}_{\pi}\;\sum_{i_1} \big[log\;\pi_{i_1}\cdot P(O,\;i_1|\lambda^{(t)})\big] =π argmaxi1[logπi1P(O,i1λ(t))]
到这里则变成了有约束条件下的求极值问题,由前面的条件可知,初始概率分布满足如下条件:
∑ i = 1 N π i = 1 \sum_{i=1}^N \pi_i = 1 i=1Nπi=1
此时,我们使用拉格朗日乘子法来求解它,引入 η ≥ 0 \eta \ge 0 η0 使得:
L ( π , η ) = ∑ i = 1 N l o g    π i ⋅ P ( O ,    i 1 = q i ∣ λ ( t ) ) + η ( ∑ i = 1 N π i − 1 ) L(\pi, \eta) = \sum_{i=1}^N log\;\pi_i \cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta \big(\sum_{i=1}^N \pi_i -1\big) L(π,η)=i=1NlogπiP(O,i1=qiλ(t))+η(i=1Nπi1)
对拉格朗日函数求关于 π i \pi_i πi 的偏导,并令其为0:
∂ L ( π , η ) ∂ π i = 1 π i ⋅ P ( O ,    i 1 = q i ∣ λ ( t ) ) + η = 0 ⋯ ① \frac{\partial L(\pi, \eta)}{\partial \pi_i} = \frac{1}{\pi_i}\cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta = 0 \quad \cdots \text{①} πiL(π,η)=πi1P(O,i1=qiλ(t))+η=0

⇒ π i = − P ( O ,    i 1 = q i ∣ λ ( t ) ) η ⋯ ② \Rightarrow \pi_i = -\frac{P(O,\;i_1=q_i|\lambda^{(t)})}{\eta} \quad \cdots \text{②} πi=ηP(O,i1=qiλ(t))

我们对式①等号两边的式子对 i i i 1 , 2 , . . . , N 1,2,...,N 1,2,...,N 上求和,即得:
∑ i = 1 N [ 1 π i ⋅ P ( O ,    i 1 = q i ∣ λ ( t ) ) + η ] = 0 \sum_{i=1}^N \big[\frac{1}{\pi_i}\cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta\big] = 0 i=1N[πi1P(O,i1=qiλ(t))+η]=0

⇒ ∑ i = 1 N [ P ( O ,    i 1 = q i ∣ λ ( t ) ) + π i η ] = 0 \Rightarrow \sum_{i=1}^N \big[P(O,\;i_1=q_i|\lambda^{(t)}) + \pi_i \eta\big] = 0 i=1N[P(O,i1=qiλ(t))+πiη]=0

⇒ P ( O ∣ λ ( t ) ) + η = 0 \Rightarrow P(O|\lambda^{(t)}) + \eta = 0 P(Oλ(t))+η=0

⇒ η = − P ( O ∣ λ ( t ) ) ⋯ ③ \Rightarrow \eta = -P(O|\lambda^{(t)}) \quad \cdots \text{③} η=P(Oλ(t))

将式③代入到式②中,可得:
π i ( t + 1 ) = P ( O ,    i 1 = q i ∣ λ ( t ) ) P ( O ∣ λ ( t ) ) \pi_i^{(t+1)} = \frac{P(O,\;i_1=q_i|\lambda^{(t)})}{P(O|\lambda^{(t)})} πi(t+1)=P(Oλ(t))P(O,i1=qiλ(t))
这样我们就得到了 t + 1 t+1 t+1 时刻的参数 π i \pi_i πi 由时刻 t t t 的模型参数更新的表达式。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值