机器学习—隐马尔科夫模型(6)学习问题

122 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

因为早在 EM 出现之前就出现 Baum Welch 算法来求解参数,其实 Baum Welch 本身就是一个 EM 算法。也就是我们熟悉最大

EM 是一个算法框架,之前在视频中介绍过 EM 算法框架,EM 和梯度下降一样都是算法,那么今天我们就来实际应用一下这个算法来解决一下隐马尔科夫的解码问题,也就是 arg maxλP(IO,λ)\argmax_{\lambda} P(I|O,\lambda) 通过求解极大似然函数来找到能够让 P(IO)P(I|O) 概率最大,也就是所谓学习问题(learning problem)

θMLE=arg maxθzP(x,zθ)P(zx,θ(t))\theta_{MLE} = \argmax_{\theta} \int_z P(x,z|\theta)P(z|x,\theta^{(t)})

我们先简单回顾一下 EM 算法,上面就是 EM 公式,通过不断迭代来更新 θ\theta 来找到可以让后验概率最大的参数

这里来两句闲话,其实很多算法你看了,也跟着推导过了,不过要是让你自己一步一步推导时候,自己还是无从下手。也就是说有时候还是需要我们自己尝试一下,这样培养自己独立思考和解决问题的能力,一味跟随是不会有提高和突破的

λMLE=arg maxθIP(O,Iλ)P(IO,λ(t))\lambda_{MLE} = \argmax_{\theta} \sum_I P(O,I|\lambda)P(I|O,\lambda^{(t)})

接下里我们就根据马尔科夫中的变量和参数对应到 EM 公式中,首先 OO 是观测变量对应于 xx,而 II 作为隐含变量对应于 zzλ\lambda 作为参数对应于 θ\theta,到现在我们已经一一对应上了,接下来就可以开始转换了

λ(t+1)=arg maxλIlogP(O,Iλ)P(IO,λ(t))\lambda^{(t+1)} = \argmax_{\lambda} \sum_I \log P(O,I|\lambda)P(I|O,\lambda^{(t)})

这里用到一个小技巧,也就是联合概率乘法,其实到现在有一个公式被用到概率比较高,在概率与数理统计中用到公式并不多,P(AB)=P(AB)P(B)P(AB) = P(A|B)P(B) 所以就可以列出下面式子

P(IO,λ(t))=P(I,Oλ(t))P(Oλ(t))P(I|O,\lambda^{(t)}) = \frac{P(I,O|\lambda^{(t)})}{P(O|\lambda^{(t)})}

我们看上面式子,其中 P(I,Oλ(t))P(I,O|\lambda^{(t)})OOII 的联合概率,P(Oλ(t))P(O|\lambda^{(t)}) 这里 λt\lambda^t 是一个常数,而 P(O)P(O)P(IO,λt)P(I|O,\lambda^t) 无关,所以可以进一步化简为 P(IO,λ(t))=P(I,Oλ(t))P(I|O,\lambda^{(t)}) = P(I,O|\lambda^{(t)})

λ(t+1)=arg maxλIlogP(O,Iλ)P(I,Oλ(t))λ(t)=(π(t),A(t),B(t))\lambda^{(t+1)} = \argmax_{\lambda} \sum_I \log P(O,I|\lambda)P(I,O|\lambda^{(t)}) \\ \lambda^{(t)} = (\pi^{(t)},A^{(t)},B^{(t)})

我们可以Q(λ,λ(t))Q(\lambda,\lambda^{(t)}) 函数来表示 IlogP(O,Iλ)P(I,Oλ(t))\sum_I \log P(O,I|\lambda)P(I,O|\lambda^{(t)})

Q(λ,λ(t))=IlogP(O,Iλ)P(I,Oλ(t))Q(\lambda,\lambda^{(t)}) = \sum_I \log P(O,I|\lambda)P(I,O|\lambda^{(t)})
P(O,Iλ)=πi1t=2Tait1aitt=1Tbi(ot+1)P(O,I|\lambda) = \pi_{i_1} \prod_{t=2}^T a_{i_{t-1}}a_{i_t} \prod_{t=1}^T b_i(o_{t+1})
=I[(logπi1+i=2Tlogat1at+t=1Tlogbit(ot)]P(O,Iλ(t))]= \sum_I \left[ (\log \pi_{i_1} + \sum_{i=2}^T \log a_{t-1} a_t + \sum_{t=1}^T \log b_{i_t}(o_t) \right] P(O,I|\lambda^{(t)})]

然后

π(t+1)=arg maxπQ(λ,λ(t))=arg maxπI[logπi1P(O,Iλ(t))]\pi^{(t+1)} = \argmax_{\pi} Q(\lambda,\lambda^{(t)})\\ = \argmax_{\pi} \sum_{I} \left[ log \pi_{i_1} P(O,I|\lambda^{(t)})\right]
arg maxπi1iT[logπi1P(O,i1,,iTλ(t))]\argmax_{\pi} \sum_{i_1} \cdots \sum_{i_T} \left[ \log \pi_{i_1} P(O,i_1,\dots,i_T|\lambda^{(t)}) \right]
arg maxi1[logπiP(O,i1λt+1)]\argmax \sum_{i_1} \left[ \log \pi_i P(O,i_1|\lambda^{t+1}) \right]

这里还有一个约束,也就是初始值概率求和为 1

s.t.i=1Nπi=1s.t. \sum_{i=1}^N \pi_i =1