![6f4627bd6f73c0b7ebc02b9129c3b439.png](https://img-blog.csdnimg.cn/img_convert/6f4627bd6f73c0b7ebc02b9129c3b439.png)
原创:hxj7
本文介绍了如何用Baum-Welch算法来估算HMM模型中的概率参数。
Baum-Welch算法应用于HMM的效果
前文《序列比对(十五)——EM算法以及Baum-Welch算法的推导》介绍了EM算法和Baum-Welch算法的推导过程。Baum-Welch算法是EM算法的一个特例,用来估算HMM模型中的概率参数。其具体步骤如下:
![fcb00ccecfbf06ccd19f32a8a405d0eb.png](https://img-blog.csdnimg.cn/img_convert/fcb00ccecfbf06ccd19f32a8a405d0eb.png)
图片引自《生物序列分析》
本文给出了Baum-Welch算法的C代码,还是以投骰子为例,估算出了转移概率以及发射概率。
具体效果如图:
(下面几张图中的 `Real` 表示真实的转移概率以及发射概率,而`Baum-Welch`表示用Baum-Welch算法估算的转移概率以及发射概率。)
首先是当若干条序列总长度为300时:
![abe5188703f87aba93576d1d84d31853.png](https://img-blog.csdnimg.cn/img_convert/abe5188703f87aba93576d1d84d31853.png)
![a3a4d8ab6ad0e8fff952566ecc34d9e8.png](https://img-blog.csdnimg.cn/img_convert/a3a4d8ab6ad0e8fff952566ecc34d9e8.png)
然后是当若干条序列总长度为30000时:
![e1f78f57afeb96c72eba57ad7d8c548a.png](https://img-blog.csdnimg.cn/img_convert/e1f78f57afeb96c72eba57ad7d8c548a.png)
![da3dc7a8e5eae0a03e8f2c5d1e8383a0.png](https://img-blog.csdnimg.cn/img_convert/da3dc7a8e5eae0a03e8f2c5d1e8383a0.png)
可以看出总长度为30000时已经很接近真实值了。但是,Baum-Welch算法的结果时一个局部最优值,很依赖初始值的设定。所以,当初始值不同时,也有可能会出现这种结果:
![39328855e08042cc83df9f40dd92d049.png](https://img-blog.csdnimg.cn/img_convert/39328855e08042cc83df9f40dd92d049.png)
![d7739e93bceb93fb68a01891f4751b17.png](https://img-blog.csdnimg.cn/img_convert/d7739e93bceb93fb68a01891f4751b17.png)
小结一下:
- Baum-Welch算法通过多次迭代来估算HMM模型中的概率参数。
- 本文代码设定了迭代的终止条件:当“归一化后的平均对数似然”的变化小于预先设定的阈值时或者迭代次数超出最大迭代次数时,迭代终止。
- Baum-Welch算法的最终结果非常依赖初始值的设定。本文代码中的初始值是随机值。
- 在计算期望次数时,使用了伪计数。
代码中所用公式及其推导
![85e3a24b95e53c1986bc2ac41bf2c02f.png](https://img-blog.csdnimg.cn/img_convert/85e3a24b95e53c1986bc2ac41bf2c02f.png)
![3a33e2fb1fa0f5a4ae2f7904a3feee68.png](https://img-blog.csdnimg.cn/img_convert/3a33e2fb1fa0f5a4ae2f7904a3feee68.png)
![6756547b98999842bc0720782d0f555b.png](https://img-blog.csdnimg.cn/img_convert/6756547b98999842bc0720782d0f555b.png)
![c101ae2610fcc8c6c87f9d8fe350a642.png](https://img-blog.csdnimg.cn/img_convert/c101ae2610fcc8c6c87f9d8fe350a642.png)
![f35e8cd954b7ea66757583ba8d96e460.png](https://img-blog.csdnimg.cn/img_convert/f35e8cd954b7ea66757583ba8d96e460.png)