HMM基础理论-前向算法
来源:互联网 发布:python灰帽子讲的什么 编辑:程序博客网 时间:2024/05/17 06:37
本文主要讨论HMM要解决的三个基本问题。
并对第一个问题求似然概率进行公式推导和说明。
首先,HMM由以下几个组件构成:
1. Q=q1q2...qN 状态集合
2. A=a11a12...an1...ann 状态转移矩阵,aij 表示从状态i到状态j的概率 p(qj|qi)
3. O=o1o2...oT 长度为T序列的观测值
4. B=bi(ot) 观测似然,也叫发射概率,观测值ot 由状态i产生的概率
5. q0,qF 初始状态,结束状态
π = π1,π2,...,πN 初始概率分布 πi 表示HMM初始由状态i开始的概率
前提:
1.Markov假设:
P(qi|q1...qi−1) = P(qi|qi−1) => 当前状态只和前一个状态有关。
2.输出独立假设:P(oi|q1...qi,...,qT,o1,...,oi,...,oT)=P(oi|qi) 即输出只和一个状态qi有关,不和其他状态或者输出相关。
有了以上基础概念,我们看HMM有三个问题需要解决:
问题1,计算似然(likelihood):给定HMM的λ= (A,B) 和观测序列O ,计算似然概率P(O|λ)
问题2,解码问题(decoding):给定HMM的λ = (A,B) 和观测序列O,找到最佳状态序列Q
问题3,训练问题(Learning):给定观测序列O和状态集合,训练HMM参数A和B
接下来,我们就要讨论第一个问题
针对问题1,首先,在一定的状态序列,观测概率的联合概率计算如下所示:
在HMM中,有N个隐藏状态,观测值为T个观测序列情况下:
有NT 个可能的状态序列,当N和T很大的情况下,所以通过计算每个隐藏状态序列的似然概率,然后求和算出总的似然概率变得非常不现实了。
我们使用前向(forward)算法来高效的解决以上问题,其中用一个table用来存储中间值,其时间复杂度为O(N2T) 。
首先,使αt(j)记做:在给定λ前提下,观测到前t个观测值(O1-Ot)且状态在j的概率:
其计算公式如下:
1.初始化:
2.递归:
3.终止:(状态qF 没有发射概率)
算法代码如下所示:
可视化的图例如下所示:
上图中,forward[s,t] 代表αt(s)
forward[qF,T] 表示αT(qF) ,即:
在给定λ前提下,观测到T个观测序列(O),且状态在结束状态qF的概率,即P(O|λ)
以上就是求似然概率的公式推导。
下一章会讨论HMM第二个问题,解码(decoding)的公式推导.
- HMM基础理论-前向算法
- hmm-前向算法
- hmm-前向算法
- HMM:前向算法实例
- HMM-前向后向算法
- HMM-信道模型&前向算法
- HMM——前向后向算法
- HMM:隐马尔科夫模型-前向算法
- HMM前向算法复杂度的分析
- HMM基础-HMM训练-前向后向算法
- HMM——前向算法与后向算法
- HMM前向算法和后向算法的推导
- HMM前向算法,维比特算法,后向算法,前向后向算法代码
- HMM学习最佳范例七:前向-后向算法
- 隐马尔可夫(HMM)、前/后向算法、Viterbi算法 再次总结
- 隐马尔可夫(HMM)、前/后向算法、Viterbi算法 再次总结
- HMM学习最佳范例五:前向算法1
- HMM学习最佳范例五:前向算法2
- CSS+DIV布局中absolute和relative
- AndroidStudio加上类注释,方法注释模板
- Java读写Excel之POI超入门
- js 展示聊天动画
- Kotlin Primer·第四章·Kotlin 的类(上)
- HMM基础理论-前向算法
- 未来的12个趋势
- Emacs的orgmode基本使用教程
- webservice客户端和服务端程序基础入门
- 浅析芝麻信用分征信体系
- Ubuntu 安装 Anaconda
- bzoj 3039 悬线法 最大子矩阵问题
- UIFont如何获取系统字体样式
- Java总结篇系列:Java多线程(二)