隐马尔可夫模型(HMM)

本文深入探讨隐马尔可夫模型(HMM)的三大核心问题:概率计算、学习与预测。通过前向/后向算法解决概率计算问题,Baum-Welch算法应对学习挑战,Viterbi算法实现最优状态序列预测。文章详细解释了各算法原理及应用。

三大基本问题:

1. 概率计算问题:已知模型参数\lambda=(\pi,A,B)和观测序列O,求P(O|\lambda); 

2. 学习问题:已知O,求最优的模型参数\lambda,使得P(O|\lambda)最大;

3. 预测问题(decode):已知模型参数\lambda和观测序列O,求使得P(I | O,\lambda)最大的状态序列I

 

1. 概率计算问题:前向or后向算法

如果直接枚举所有I,时间复杂度是O(T * N^T),(N是状态总数,T是序列长度),太慢了!

前向算法:从前往后动态规划。定义\alpha _{t}(i)=P(o1,o2,...,ot, i_{t}=q_{i} | \lambda), 初值\alpha _{1}(i)=\pi _{i}*b_{i}(o1); 可以写出\alpha _{t}(i)\alpha _{t-1}(i)的递推关系式;最终P(O|\lambda)=所有i的\alpha _{T}(i)之和

后向算法:从后往前动态规划。定义\beta _{t}(i)=P(o(t+1),o(t+2),...,o(T), |  i_{t}=q_{i}\lambda); 初值\beta _{T}(i)都等于1;可以写出\beta _{t}(i)\beta _{t+1}(i)的递推关系式;最终P(O|\lambda)=所有i的(\pi _{i}*b_{i}(o1)*\beta _{1}(i))之和

注意:\alpha _{t}(i)\beta _{t}(i)的 i_{t}=q_{i}位置不同!另外\alpha _{t}(i)包含o(t),\beta _{t}(i)不包含o(t);

 

3. 预测问题(decode):P(I | O,\lambda)=P(I,O | \lambda) / P(O | \lambda), 分母对所有I都一样所以消去,等价于求最优I使得P(I,O | \lambda)最大化;

解法:Viterbi, 其实也是动态规划,把前向算法里的sum变成max即可。

 

2. 学习问题:Baum-Welch算法

附录:P(O, i_{t}=q_{i} ∣λ), \gamma _{t}(i)\xi _{t}(i,j)的由来是推导出来的,不是拍脑袋想出来的!

有监督学习(也就是I都给定了),直接统计频率即可得到(\pi,A,B)

无监督学习(I未知), Baum-Welch算法 : 带有隐变量的极大似然法,套用EM算法的框架(I就是z)。

E步:Q(I)=P(I | O,\bar{\lambda })=P(I,O|\bar{\lambda }) / P(O|\bar{\lambda });   \bar{\lambda }是上一轮的参数;此处不求解,在M步会用到;

M步:最大化sum_I Q(I)*lg(P(O,I | \lambda)/Q(I)); \lambda是本轮待训练的参数;lg分母Q(I)和\lambda无关,所以消去;Q(I)展开以后,分母P(O|\bar{\lambda })对所有I都一样(我:但是对不同的样本是不同的啊?),消去;化简为最大化sum_I P(I,O|\bar{\lambda })*lgP(O,I | \lambda), 把lgP(O,I | \lambda)展开成(\pi,A,B)们连乘的形式,转成3组lg相加的形式;分别找最优的(\pi,A,B)使得式子最大化;以\pi为例:因为\pi(i)在所有i上加和是1,所以求解带等式约束的最优化问题,拉格朗日法,写个式子,对\pi(i)求偏导另其等于0,求解得到\pi(i)

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值