前言
隐马尔可夫模型(Hidden Markov Model,简称HMM),是可以用来标注问题的统计学习模型,描述由马尔可夫链随机生成观测序列的过程,属于生成式模型。 在正常的马尔可夫模型中,状态对于观测者来说是直接可见的。这样状态的转换概率便是全部的参数。而在隐马尔可夫模型中,状态并不是直接可见的,但是受状态影响的某些变量是可见的。每一个状态在可能输出的符号上都有一个概率分布,因此输出序列能否透露出状态序列的一些信息。
HMM模型的定义
隐马尔可夫模型由初始概率分布,状态转移概率分布以及观测概率分布确定。 我们假设Q是所有可能的隐藏状态的集合,V是所有可能的观测状态的集合,即:
其中,N是可能的状态数,M是可能的观测数。 I是长度为T的状态序列,O是对应的观测序列。
A是状态转移概率矩阵:
其中,
表示在时刻t处于状态$q_i$的条件下在时刻t+1转移到状态$q_j$的概率。
B是观测概率矩阵:
其中,
表示在时刻t处于状态$q_j$的条件下生成观测$v_k$的概率。
$\pi$是初始状态概率向量:
其中:
表示时刻t=1处于状态$q_i$的概率。
一个马尔可夫模型,可以有隐藏状态的初始概率分布$\pi$,状态转移矩阵A和观测状态转移矩阵B决定,$\pi$,A决定状态序列,B决定观测序列。因此,隐马尔可夫模型$\lambda$可以用三员符号表示,即:
$\pi$,A,B称为隐马尔可夫模型的三要素。
隐马尔可夫做了两个很重要的基本能假设:
1、齐次马尔可夫假设,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于前一时刻的状态,于其他时刻的状态及观察无关,也与时刻t无关,即:
2、观察独立性假设,即假设任意时刻的观测值依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关,即:
HMM的3个经典问题
HMM模型建立起来后,一般我们会讨论3个问题:
1、评估问题:给定模型$\lambda=(A,B,\pi)$和观测序列$O=(o_1,o_2,…,o_T)$,计算在模型$\lambda$下观测序列O出现的概率 => (前向算法)
2、预测问题:也称解码,给定观测序列O和模型参数$\lambda$,我们怎样选择一个状态序列,以便能够最好的解释观测序列,即求最有可能的状态序列(条件概率 最大)。=> (维比特算法)
3、学习问题:给定观测序列O,找到一个能最好的解释观测序列的模型$\lambda=(A,B,\pi)$,即使得 最大。=> (EM算法,前后向算法)
评估描述
给定观测序列$O=(o_1,o_2,…,o_T)$和模型$\lambda=(A,B,\lambda)$,求观测序列O出现的概率最大的概率$P(O|\lambda)$。解决该问题的最直观的想法是把所有可能的隐藏状态都遍历一遍,得到对应观测状态的概率有多大,这些可能全部加起来就是得到这个观测状态的可能性。 1、全概率公式求解观测序列在所有可能的隐藏状态序列下的概率之和。
2、任意隐藏状态序列$I=(i_1,i_2,…,i_T)$的概率是
3、已知状态序列$\lambda$下,观测序列$O=(o_1,o_2,…,o_T)$的概率
4、O和I同时出现的联合概率为:
5、对所有可能的隐藏状态序列I求和得:
利用上式计算量很大,达到$O(TN^T)$阶,在状态集合和隐藏状态序列比较短时,还是有可能穷举所有可能的状态序列,如果长的话,穷举的数量太大,指数级的,就很难完成。
前向算法
给定HMM模型$\lambda$,定义到时刻t部分观测序列为$o_1,o_2,..o_t$且状态为$q_i$的概率为前向概率,记为:
通过递推求得前向概率$\alpha_t(i)$即观测序列概率
算法
输入:隐马尔可夫模型$\lambda$,观测序列O 输出:观测序列概率$P(O|\lambda)$ 1、初值
2、递推,对t=1,2,…,T-1
3、终止
预测描述
近似算法
维比特算法
维比特算法实际是用动态规划解马尔可夫模型的预测问题,即用动态规划求概率最大路径,这时一条路径对应着一个状态序列。
算法
输入:模型$\lambda=(A,B,\pi)$和观测序列
输出:最优路径
1、初始化:
2、递推,对
3、终止
4、最优路径回溯,对$t=T-1,T-2,…,1$
求得