HMM(2) Baum-Welch算法推导

HMM(2) Baum-Welch算法推导

在上一篇博客中介绍了HMM前向后向算法的推导过程,本次介绍的Baum-Welch算法是用来解决HMM的第二个问题的,即在已知观测序列 O O O,但不知道隐状态序列 Q Q Q和模型参数 λ \lambda λ时,如何去估计参数 λ \lambda λ

1 EM算法介绍和推导

由于Baum-Welch算法的推导过程其实是通过EM算法的思想来进行的,所以在这之前我们需要先对EM算法(Expectation-Maximization algorithm)进行简单的推导与介绍。
EM算法最初是为了解决数据缺失情况下参数的估计问题,算法通过迭代的方式不断更新参数直到最终收敛。其中,迭代的过程可以分为E步和M步,这也就是为什么该算法叫做EM 算法的原因。

1-1 Jensen不等式

Jensen不等式的定义如下:

  1. 若函数 f ( x ) f(x) f(x)是凸函数, x x x是随机变量,那么 E ( f ( x ) ) ≥ f ( E ( x ) ) E(f(x))\ge f(E(x)) E(f(x))f(E(x))。当且仅当 x x x是常量时,不等式取等号成立。
  2. 若函数 f ( x ) f(x) f(x)是凹函数, x x x是随机变量,那么 E ( f ( x ) ) ≤ f ( E ( x ) ) E(f(x))\le f(E(x)) E(f(x))f(E(x))。当且仅当 x x x是常量时,不等式取等号成立。
    如下图所示,直观的对Jensen不等式进行理解。图片源于网络。
    在这里插入图片描述

1-2 EM算法推导

假设样本集合 X = { x 1 , x 2 , . . . , x N } X=\{x_1,x_2,...,x_N\} X={x1,x2,...,xN}包含 N N N个样本,模型需要估计的参数为 λ \lambda λ,模型的对数似然如式(1-1):
L ( λ ) = ∑ i = 1 N log ⁡ P ( x i ; λ ) (1-1) L(\lambda)=\sum_{i=1}^N\log{P(x_i;\lambda)}\tag{1-1} L(λ)=i=1NlogP(xi;λ)(1-1)
而极大似然估计则是寻找一组能够使式(1-1)最大的模型参数作为最终的参数估计,即 λ ^ = a r g m a x ( L ( λ ) ) \hat\lambda=argmax(L(\lambda)) λ^=argmax(L(λ))
若我们得到的样本数据包含为观察到的隐藏数据 Z = { z 1 , z 2 , . . . , z N } Z=\{z_1,z_2,...,z_N\} Z={z1,z2,...,zN},即每个样本对应的隐藏数据。此时我们最大化的对数似然将变为式(1-2)。
L ( λ ) = ∑ i = 1 N log ⁡ ∑ z i P ( x i , z i ; λ ) (1-2) L(\lambda)=\sum_{i=1}^N\log\sum_{z_i}P(x_i,z_i;\lambda)\tag{1-2} L(λ)=i=1NlogziP(xi,zi;λ)(1-2)
接下来,假设隐藏数据服从某一分布 Q ( z i ) Q(z_i) Q(zi),对式(1-2)进行变换,如式(1-3)。
L ( λ ) = ∑ i = 1 N log ⁡ ∑ z i P ( x i , z i ; λ ) = ∑ i = 1 N log ⁡ ∑ z i Q ( z i ) P ( x i , z i ; λ ) Q ( z i ) ≥ ∑ i = 1 N ∑ z i Q ( z i ) log ⁡ P ( x i , z i ; λ ) Q ( z i ) (1-3) \begin{aligned} L(\lambda) &=\sum_{i=1}^N\log\sum_{z_i}P(x_i,z_i;\lambda)\tag{1-3} \\ &=\sum_{i=1}^N\log\sum_{z_i}Q(z_i)\frac{P(x_i,z_i;\lambda)}{Q(z_i)} \\ &\ge \sum_{i=1}^N\sum_{z_i} Q(z_i)\log\frac{P(x_i,z_i;\lambda)}{Q(z_i)} \\ \end{aligned} L(λ)=i=1NlogziP(xi,zi;λ)=i=1NlogziQ(zi)Q(zi)P(xi,zi;λ)i=1NziQ(zi)logQ(zi)P(xi,zi;λ)(1-3)
式(1-3)中第二步到第三步是利用Jensen不等式完成的,由于 log ⁡ ( x ) \log(x) log(x)函数是一个凹函数,因此 E ( f ( x ) ) ≤ f ( E ( x ) ) E(f(x))\le f(E(x)) E(f(x))f(E(x)),在这里是关于 Q ( z i ) Q(z_i) Q(zi)的期望。我们通过Jensen不等式确定了 L ( λ ) L(\lambda) L(λ)的下界,在之前说过只有当函数内的随机变量取到常量时,Jensen不等式才会取到等号,也就是说 P ( x i , z i ; λ ) Q ( z i ) = c \frac{P(x_i,z_i;\lambda)}{Q(z_i)}=c Q(zi)P(xi,zi;λ)=c,由于 ∑ i = 1 N Q ( z i ) = 1 \sum_{i=1}^NQ(z_i)=1 i=1NQ(zi)=1
P ( x i , z i ; λ ) Q ( z i ) = c P ( x i , z i ; λ ) = c Q ( z i ) ∑ z i P ( x i , z i ; λ ) = c ∑ z i Q ( z i ) ∑ z i N P ( x i , z i ; λ ) = c \frac{P(x_i,z_i;\lambda)}{Q(z_i)}=c\\ P(x_i,z_i;\lambda)=cQ(z_i) \\ \sum_{z_i}P(x_i,z_i;\lambda)=c\sum_{z_i}Q(z_i) \\ \sum_{z_i}^NP(x_i,z_i;\lambda)=c Q(zi)P(xi,zi;λ)=cP(xi,zi;λ)=cQ(zi)ziP(xi,zi;λ)=cziQ(zi)ziNP(xi,zi;λ)=c
根据上式的推导,我们发现在Jensen不等式取等号时, ∑ z i P ( x i , z i ; λ ) \sum_{z_i}P(x_i,z_i;\lambda) ziP(xi,zi;λ)也取得常量,因此将常量用 ∑ i = 1 N P ( x i , z i ; λ ) \sum_{i=1}^NP(x_i,z_i;\lambda) i=1NP(xi,zi;λ)替换后得(1-4):
P ( x i , z i ; λ ) Q ( z i ) = ∑ z i P ( x i , z i ; λ ) (1-4) \frac{P(x_i,z_i;\lambda)}{Q(z_i)}=\sum_{z_i}P(x_i,z_i;\lambda) \tag{1-4} Q(zi)P(xi,zi;λ)=ziP(xi,zi;λ)(1-4) Q ( z i ) = P ( x i , z i ; λ ) ∑ z i P ( x i , z i ; λ ) = P ( x i , z i ; λ ) P ( x i ; λ ) = P ( z i ∣ x i ; λ ) (1-5) Q(z_i)=\frac{P(x_i,z_i;\lambda)}{\sum_{z_i}P(x_i,z_i;\lambda)}=\frac{P(x_i,z_i;\lambda)}{P(x_i;\lambda)}=P(z_i|x_i;\lambda)\tag{1-5} Q(zi)=ziP(xi,zi;λ)P(xi,zi;λ)=P(xi;λ)P(xi,zi;λ)=P(zixi;λ)(1-5)
式(1-5)的推导展示了在Jensen不等式取得等号时 Q ( z i ) Q(z_i) Q(zi)实际上是后验概率,我们此时便可以确定 Q ( z i ) Q(z_i) Q(zi)的选择了,计算后验概率的这一步就是E步,在算法中利用上一次迭代得到的参数计算后验概率来对 Q ( z i ) Q(z_i) Q(zi)进行更新,下一步M步,我们固定计算好的 Q ( z i ) = P ( z i ∣ x i ; λ ^ ) Q(z_i)=P(z_i|x_i;\hat\lambda) Q(zi)=P(zixi;λ^)来最大化 ∑ i = 1 N ∑ z i Q ( z i ) log ⁡ P ( x i , z i ; λ ) Q ( z i ) \sum_{i=1}^N\sum_{z_i} Q(z_i)\log\frac{P(x_i,z_i;\lambda)}{Q(z_i)} i=1NziQ(zi)logQ(zi)P(xi,zi;λ),即:
a r g m a x ∑ i = 1 N ∑ z i Q ( z i ) log ⁡ P ( x i , z i ; λ ) Q ( z i ) = a r g m a x ∑ i = 1 N ∑ z i P ( z i ∣ x i ; λ ^ ) log ⁡ P ( x i , z i ; λ ) P ( z i ∣ x i ; λ ^ ) = a r g m a x ∑ i = 1 N ∑ z i P ( z i ∣ x i ; λ ^ ) log ⁡ P ( x i , z i ; λ ) − ∑ i = 1 N ∑ z i P ( z i ∣ x i ; λ ^ ) log ⁡ P ( z i ∣ x i ; λ ^ = a r g m a x ∑ i = 1 N ∑ z i P ( z i ∣ x i ; λ ^ ) log ⁡ P ( x i , z i ; λ ) \begin{aligned} argmax\sum_{i=1}^N\sum_{z_i} Q(z_i)\log\frac{P(x_i,z_i;\lambda)}{Q(z_i)} &=argmax\sum_{i=1}^N\sum_{z_i} P(z_i|x_i;\hat\lambda)\log\frac{P(x_i,z_i;\lambda)}{P(z_i|x_i;\hat\lambda)} \\ &=argmax\sum_{i=1}^N\sum_{z_i} P(z_i|x_i;\hat\lambda)\log{P(x_i,z_i;\lambda)}-\sum_{i=1}^N\sum_{z_i}P(z_i|x_i;\hat\lambda)\log{P(z_i|x_i;\hat\lambda} \\ &=argmax\sum_{i=1}^N\sum_{z_i} P(z_i|x_i;\hat\lambda)\log{P(x_i,z_i;\lambda)} \end{aligned} argmaxi=1NziQ(zi)logQ(zi)P(xi,zi;λ)=argmaxi=1NziP(zixi;λ^)logP(zixi;λ^)P(xi,zi;λ)=argmaxi=1NziP(zixi;λ^)logP(xi,zi;λ)i=1NziP(zixi;λ^)logP(zixi;λ^=argmaxi=1NziP(zixi;λ^)logP(xi,zi;λ)上式中第二步的第二项中由于是固定值所以不影响最终的结果,所以将其省略。因此,EM算法的M步就是寻找能够最大化上式 ∑ i = 1 N ∑ z i P ( z i ∣ x i ; λ ^ ) log ⁡ P ( x i , z i ; λ ) \sum_{i=1}^N\sum_{z_i} P(z_i|x_i;\hat\lambda)\log{P(x_i,z_i;\lambda)} i=1NziP(zixi;λ^)logP(xi,zi;λ)的模型参数 λ \lambda λ

Baum-Welch算法推导

Baum-Welch算法的整个过程就是EM算法的过程。首先在E步我们利用上一次迭代训练出的 λ ^ \hat\lambda λ^来计算后验概率,在M步我们固定后验概率计算最大化式(1-6)新的一组参数 λ ^ \hat\lambda λ^,其中 K K K表示样本集合中序列样本的总数,可以发现式(1-6)和上一节中最后推出来的公式是一致的,未知的隐状态序列 Q Q Q就是EM算法中的隐藏变量。
λ ^ : = a r g m a x λ ∑ k = 1 K ∑ Q P ( Q ∣ O k , λ ^ ) log ⁡ P ( O k , Q ∣ λ ) (1-6) \hat\lambda :=argmax_{\lambda}\sum_{k=1}^K\sum_QP(Q|O_k,\hat\lambda)\log{P(O_k,Q|\lambda)}\tag{1-6} λ^:=argmaxλk=1KQP(QOk,λ^)logP(Ok,Qλ)(1-6)
假设我们的训练样本集是 { O 1 , O 2 , . . . , O K } \{O_1,O_2,...,O_K\} {O1,O2,...,OK},对于其中的某一个 O k = { o 1 ( k ) , o 2 ( k ) , . . . , o T ( k ) } O_k=\{o_1^{(k)},o_2^{(k)},...,o_T^{(k)}\} Ok={o1(k),o2(k),...,oT(k)},样本集对应的隐状态集是 { Q 1 , Q 2 , . . . , Q K } \{Q_1,Q_2,...,Q_K\} {Q1,Q2,...,QK},对于其中的某一个 Q k = { q 1 ( k ) , q 2 ( k ) , . . . , q T ( k ) } Q_k=\{q_1^{(k)},q_2^{(k)},...,q_T^{(k)}\} Qk={q1(k),q2(k),...,qT(k)}。对式(1-6)进一步分解为(1-7):
λ ^ : = a r g m a x λ ∑ k = 1 K ∑ Q P ( O k , Q ∣ λ ^ ) P ( O k ∣ λ ^ ) log ⁡ P ( O k , Q ∣ λ ) (1-7) \hat\lambda:=argmax_\lambda\sum_{k=1}^K\sum_Q\frac{P(O_k,Q|\hat\lambda)}{P(O_k|\hat\lambda)}\log{P(O_k,Q|\lambda)}\tag{1-7} λ^:=argmaxλk=1KQP(Okλ^)P(Ok,Qλ^)logP(Ok,Qλ)(1-7)
式(1-7)中由于 P ( O k ∣ λ ^ ) P(O_k|\hat\lambda) P(Okλ^)的值是固定的,因此可以忽略,式(1-7)则化简为式(1-8):
λ ^ : = a r g m a x λ ∑ k = 1 K ∑ Q P ( O k , Q ∣ λ ^ ) log ⁡ P ( O k , Q ∣ λ ) (1-8) \hat\lambda:=argmax_\lambda\sum_{k=1}^K\sum_QP(O_k,Q|\hat\lambda)\log{P(O_k,Q|\lambda)}\tag{1-8} λ^:=argmaxλk=1KQP(Ok,Qλ^)logP(Ok,Qλ)(1-8)
式(1-8)也就是我们最终需要优化的表达式,下面我们需要写出在模型参数为 λ \lambda λ O O O Q Q Q的联合概率分布的详细表达式,如式(1-9),其中式(1-8)中在 λ ^ \hat\lambda λ^ O O O Q Q Q的联合概率分布与式(1-9)一致,只是因为迭代次数的原因参数值不同而已。式(1-9)中 i t i^{t} it表示序列 t t t时刻的隐状态为 i i i
P ( O , Q ∣ λ ) = π ( i ( 1 ) ) b i ( 1 ) ( o 1 ) a i ( 1 ) i ( 2 ) b i ( 2 ) ( o 2 ) . . . a i ( T − 1 ) i ( T ) b i ( T ) ( o T ) (1-9) P(O,Q|\lambda)=\pi(i^{(1)})b_{i^{(1)}}(o_1)a_{i^{(1)}i^{(2)}}b_{i^{(2)}}(o_2)...a_{i^{(T-1)}i^{(T)}}b_{i^{(T)}}(o_T)\tag{1-9} P(O,Qλ)=π(i(1))bi(1)(o1)ai(1)i(2)bi(2)(o2)...ai(T1)i(T)bi(T)(oT)(1-9)
将式(1-9)带入式(1-8)中进行展开得:
λ ^ : = a r g m a x λ ∑ k = 1 K ∑ Q P ( O k , Q ∣ λ ^ ) log ⁡ [ π ( i ( 1 ) ) b i ( 1 ) ( o 1 ) a i ( 1 ) i ( 2 ) b i ( 2 ) ( o 2 ) . . . a i ( T − 1 ) i ( T ) b i ( T ) ( o T ) ] = a r g m a x λ ∑ k = 1 K ∑ Q P ( O k , Q ∣ λ ^ ) ( log ⁡ π ( i ( 1 ) ) + ∑ t = 1 T − 1 log ⁡ a i ( t ) i ( t + 1 ) + ∑ t = 1 T b i ( t ) ( o t ) ) \begin{aligned} \hat\lambda &:=argmax_\lambda\sum_{k=1}^K\sum_QP(O_k,Q|\hat\lambda)\log[{\pi(i^{(1)})b_{i^{(1)}}(o_1)a_{i^{(1)}i^{(2)}}b_{i^{(2)}}(o_2)...a_{i^{(T-1)}i^{(T)}}b_{i^{(T)}}(o_T) }] \\ &=argmax_\lambda\sum_{k=1}^K\sum_QP(O_k,Q|\hat\lambda)(\log\pi(i^{(1)})+\sum_{t=1}^{T-1}\log{a_{i^{(t)}i^{(t+1)}}}+\sum_{t=1}^{T}b_{i^{(t)}}(o_t)) \end{aligned} λ^:=argmaxλk=1KQP(Ok,Qλ^)log[π(i(1))bi(1)(o1)ai(1)i(2)bi(2)(o2)...ai(T1)i(T)bi(T)(oT)]=argmaxλk=1KQP(Ok,Qλ^)(logπ(i(1))+t=1T1logai(t)i(t+1)+t=1Tbi(t)(ot))
接下来对 λ ( Π , A , B ) \lambda(\Pi,A,B) λ(Π,A,B)内的各个参数求偏导,首先来求 π ( i ) ^ \hat{\pi(i)} π(i)^,我们先将求导后为0的部分省略掉。
π ( i ) ^ = a r g m a x π ( i ( 1 ) ) ∑ k = 1 K ∑ Q P ( O k , Q ∣ λ ^ ) log ⁡ π ( i ( 1 ) ) (1-10) \hat{\pi(i)}=argmax_{\pi(i^{(1)})}\sum_{k=1}^K\sum_QP(O_k,Q|\hat\lambda)\log{\pi(i^{(1)})}\tag{1-10} π(i)^=argmaxπ(i(1))k=1KQP(Ok,Qλ^)logπ(i(1))(1-10)
由于 ∑ i = 1 M π ( i ( 1 ) ) = 1 \sum_{i=1}^M\pi(i^{(1)})=1 i=1Mπ(i(1))=1等式条件的约束,因此利用拉格朗日乘子法可 以得到需要最大化的拉格朗日函数(1-11):
l ( π ) = a r g m a x π ( i ( 1 ) ) ∑ k = 1 K ∑ Q P ( O k , Q ∣ λ ^ ) log ⁡ π ( i ( 1 ) ) + γ ( ∑ i = 1 M π ( i ( 1 ) ) − 1 ) (1-11) l(\pi)=argmax_{\pi(i^{(1)})}\sum_{k=1}^K\sum_QP(O_k,Q|\hat\lambda)\log{\pi(i^{(1)})}+\gamma(\sum_{i=1}^M\pi(i^{(1)})-1)\tag{1-11} l(π)=argmaxπ(i(1))k=1KQP(Ok,Qλ^)logπ(i(1))+γ(i=1Mπ(i(1))1)(1-11)
对(1-11)求 π ( i ( 1 ) ) \pi(i^{(1)}) π(i(1))偏导并令结果等于零得式(1-12):
∑ k = 1 K P ( O k , q 1 ( k ) = σ i ∣ λ ^ ) + γ π ( i ( 1 ) ) = 0 (1-12) \sum_{k=1}^KP(O_k,q_1^{(k)}=\sigma_i|\hat\lambda)+\gamma\pi(i^{(1)})=0\tag{1-12} k=1KP(Ok,q1(k)=σiλ^)+γπ(i(1))=0(1-12)
对式(1-12)两侧对 i ( 1 ) i^{(1)} i(1)求和得式(1-13):
∑ k = 1 K P ( O k ∣ λ ^ ) + γ = 0 (1-13) \sum_{k=1}^KP(O_k|\hat\lambda)+\gamma=0\tag{1-13} k=1KP(Okλ^)+γ=0(1-13)
将式(1-13)的 γ = − ∑ k = 1 K P ( O k ∣ λ ^ ) \gamma=-\sum_{k=1}^KP(O_k|\hat\lambda) γ=k=1KP(Okλ^)带入到式(1-12)中可以得到:
π ( i ( 1 ) ) = ∑ k = 1 K P ( O k , q 1 ( k ) = σ i ∣ λ ^ ) ∑ k = 1 K P ( O k ∣ λ ^ ) (1-14) \begin{aligned} \pi(i^{(1)}) &=\frac{\sum_{k=1}^KP(O_k,q_1^{(k)}=\sigma_i|\hat\lambda)}{\sum_{k=1}^KP(O_k|\hat\lambda)}\tag{1-14} \\ \end{aligned} π(i(1))=k=1KP(Okλ^)k=1KP(Ok,q1(k)=σiλ^)(1-14)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值