参考文献:
http://www.hankcs.com/ml/hidden-markov-model.html
http://blog.csdn.net/zouxy09/article/details/8537620/
首先介绍马尔科夫链,其有三个问题,分别是:
1.知道 隐含状态数量, 转换概率, 可见状态链 求 隐含状态链(解码问题)
2.知道 隐含状态数量, 转换概率, 可见状态链 求 这个结果的概率(评估问题)
3.知道 可见状态链 求转换概率(学习问题)
1和2问题都比较简单,我主要梳理下问题3的思路。
解决问题3是用到 鲍姆-韦尔奇算法 Baum-Welch
而 Baum-Welch的前提是 理解EM算法。
EM算法:
一个样本集{x(1),…,x(m)},包含m个独立的样本。但每个样本i对应的类别z(i)是未知的(相当于聚类)(隐含变量)。我们需要估计概率模型p(x,z)的参数θ,但是由于里面包含隐含变量z,所以很难用最大似然求解,但如果z知道了,那我们就很容易求解了。
对于参数估计,我们本质上还是想获得一个使似然函数最大化的那个参数θ,现在与最大似然不同的只是似然函数式中多了一个未知的变量z,见下式(1)。也就是说我们的目标是找到适合的θ和z让L(θ)最大。所以有下式
本质上我们是需要最大化(1)式,也就是似然函数,但是可以看到里面有“和的对数”,求导后形式会非常复杂,所以很难求解得到未知参数z和θ。所以要坐点改变,就是等号变成了不等号,这就是因为Jensen不等式。
Jensen不等式表述如下:
如果f是凸函数,X是随机变量,那么:E[f(X)]>=f(E[X])
特别地,如果f是严格凸函数,当且仅当X是常量时,上式取等号。
而 (2)式中的期望,(考虑到E(X)=∑x*p(x),f(X)是X的函数,则E(f(X))=∑f(x)*p(x)),又,所以就可以得到公式(3)的不等式了
即
上面的式(2)和式(3)不等式可以写成:似然函数L(θ)>=J(z,Q),那么我们可以通过不断的最大化这个下界J,来使得L(θ)不断提高,最终达到它的最大值。
然后上一张经典的图,解释说明到底是怎么优化的
而对于Q: Q是随机变量z(i)的概率密度函数
所以有
至此,我们推出了在固定参数θ后,使下界拉升的Q(z)的计算公式就是后验概率,解决了Q(z)如何选择的问题。这一步就是E步,建立L(θ)的下界。接下来的M步,就是在给定Q(z)后,调整θ,去极大化L(θ)的下界J(在固定Q(z)后,下界还可以调整的更大)。那么一般的EM算法的步骤如下:
EM的算法流程:
初始化分布参数θ;
重复以下步骤直到收敛:
E步骤:根据参数初始值或上一次迭代的模型参数来计算出隐性变量的后验概率,其实就是隐性变量的期望。作为隐藏变量的现估计值:
M步骤:将似然函数最大化以获得新的参数值:
而对于Baum-Welch
假设给定训练数据只包含S个长度为T的观测序列而没有对应的状态序列,目标是学习隐马尔可夫模型的参数。我们将观测序列数据看作观测数据O,状态序列数据看作不可观测的隐数据I,那么隐马尔可夫模型事实上是一个含有隐变量的概率模型
它的参数学习可以由EM算法实现。
1 确定完全数据的对数似然函数
所有观测数据写成,所有隐数据写成,完全数据是。完全数据的对数似然函数是。
2 EM算法的E步:求Q函数
其中,是隐马尔可夫模型参数的当前估计值,是要极大化的隐马尔可夫模型参数。(Q函数的标准定义是:,式子内部其实是条件概率,其中的对应;其与无关,所以省略掉了。)
这个式子从左到右依次是初始概率、发射概率、转移概率、发射概率……
于是函数可以写成:
式中求和都是对所有训练数据的序列总长度T进行的。这个式子是将代入后,将初始概率、转移概率、发射概率这三部分乘积的对数拆分为对数之和,所以有三项。
3 EM算法的M步:极大化Q函数求模型参数,由于要极大化的参数在Q函数表达式中单独地出现在3个项中,所以只需对各项分别极大化。
具体推导可以看http://www.hankcs.com/ml/hidden-markov-model.html