隐马尔可夫模型(Hidden Markov Model,HMM)是
统计模型,它用来描述一个含有隐含未知参数的
马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如
模式识别。
引言
隐
马尔可夫模型(Hidden Markov Model,HMM)作为一种统计
分析模型,创立于20世纪70年代。80年代得到了传播和发展,成为
信号处理的一个重要方向,现已成功地用于
语音识别,行为识别,
文字识别以及
故障诊断等领域。
基本理论
隐
马尔可夫模型是
马尔可夫链的一种,它的状态不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率
密度分布的状态序列产生。所以,隐
马尔可夫模型是一个双重
随机过程----具有一定状态数的隐
马尔可夫链和显示随机函数集。自20世纪80年代以来,HMM被应用于
语音识别,取得重大成功。到了90年代,HMM还被引入计算机
文字识别和
移动通信核心技术“
多用户的检测”。HMM在生物
信息科学、
故障诊断等领域也开始得到应用。
基本算法
针对以下三个问题,人们提出了相应的算法
*1 评估问题:
直接计算法(概念上可行,计算上不科学)、前向算法、后向算法
*2 解码问题:
Viterbi算法:使用
动态规划求解概率最大(最优)路径。
近似算法:选择每一时刻最有可能出现的状态,从而得到一个状态序列。
*3 学习问题: Baum-Welch算法(向前向后算法)、
监督学习算法
基本概述
一种HMM可以呈现为最简单的
动态贝叶斯网络。隐马尔可夫模型背后的数学是由LEBaum和他的同事开发的。它与早期由RuslanL.Stratonovich提出的最优
非线性滤波问题息息相关,他是第一个提出前后过程这个概念的。
在简单的
马尔可夫模型(如
马尔可夫链),所述状态是直接可见的
观察者,因此
状态转移概率是唯一的参数。在隐马尔可夫模型中,状态是不直接可见的,但输出依赖于该状态下,是可见的。每个状态通过可能的输出记号有了可能的
概率分布。因此,通过一个HMM产生标记序列提供了有关状态的一些序列的信息。注意,“隐藏”指的是,该模型经其传递的状态序列,而不是模型的参数;即使这些参数是精确已知的,我们仍把该模型称为一个“隐藏”的马尔可夫模型。隐马尔可夫模型以它在时间上的
模式识别所知,如语音,手写,
手势识别,词类的标记,乐谱,
局部放电和生物信息学应用。
隐马尔可夫模型可以被认为是一个概括的
混合模型中的隐藏变量(或变量),它控制的混合成分被选择为每个观察,通过
马尔可夫过程而不是
相互独立相关。最近,隐马尔可夫模型已推广到两两马尔可夫模型和
三重态马尔可夫模型,允许更复杂的
数据结构的考虑和非平稳
数据建模。
模型表达
隐
马尔可夫模型(HMM)可以用五个元素来描述,包括2个状态集合和3个
概率矩阵:
1. 隐含状态 S
这些状态之间满足
马尔可夫性质,是
马尔可夫模型中实际所隐含的状态。这些状态通常无法通过直接观测而得到。(例如S1、S2、S3等等)
2. 可观测状态 O
在模型中与隐含状态相关联,可通过直接观测而得到。(例如O1、
O2、
O3等等,可观测状态的数目不一定要和隐含状态的数目一致。)
3. 初始状态概率矩阵 π
表示隐含状态在初始时刻t=1的概率矩阵,(例如t=1时,P(S1)=p1、P(S2)=P2、P(S3)=p3,则初始状态概率矩阵 π=[ p1 p2 p3 ].
其中Aij = P( Sj | Si ),1≤i,,j≤N.
表示在 t 时刻、状态为 Si 的条件下,在 t+1 时刻状态是 Sj 的概率。
5. 观测状态转移概率矩阵 B (英文名为Confusion Matrix,直译为
混淆矩阵不太易于从字面理解)。
令N代表隐含状态数目,M代表可观测状态数目,则:
Bij = P( Oi | Sj ), 1≤i≤M,1≤j≤N.
表示在 t 时刻、隐含状态是 Sj 条件下,观察状态为 Oi 的概率。
总结:一般的,可以用λ=(A,B,π)
三元组来简洁的表示一个隐
马尔可夫模型。隐
马尔可夫模型实际上是标准马尔可夫模型的扩展,添加了可观测状态集合和这些状态与隐含状态之间的概率关系。
基本问题
1. 评估问题。
给定观测序列 O=O1O2O3…Ot和
模型参数λ=(A,B,π),怎样有效计算某一观测序列的概率,进而可对该HMM做出相关评估。例如,已有一些模型参数各异的HMM,给定观测序列O=O1O2O3…Ot,我们想知道哪个HMM模型最可能生成该观测序列。通常我们利用forward算法分别计算每个HMM产生给定观测序列O的概率,然后从中选出最优的HMM模型。
这类评估的问题的一个经典例子是
语音识别。在描述
语言识别的隐马尔科夫模型中,每个单词生成一个对应的HMM,每个观测序列由一个单词的语音构成,单词的识别是通过评估进而选出最有可能产生观测序列所代表的读音的HMM而实现的。
2.解码问题
给定观测序列 O=O1O2O3…Ot 和模型参数λ=(A,B,π),怎样寻找某种意义上最优的隐状态序列。在这类问题中,我们感兴趣的是马尔科夫模型中隐含状态,这些状态不能直接观测但却更具有价值,通常利用Viterbi算法来寻找。
这类问题的一个实际例子是中文
分词,即把一个句子如何划分其构成才合适。例如,句子“
发展中国家”是划分成“发展-中-国家”,还是“发展-中国-家”。这个问题可以用隐马尔科夫模型来解决。句子的分词方法可以看成是隐含状态,而句子则可以看成是给定的可观测状态,从而通过建HMM来寻找出最可能正确的分词方法。
3. 学习问题。
即HMM的模型参数λ=(A,B,π)未知,如何调整这些参数以使观测序列O=O1O2O3…Ot的概率尽可能的大。通常使用Baum-Welch算法以及Reversed Viterbi算法解决。
怎样调整模型参数λ=(A,B,π),使观测序列 O=O1O2O3…Ot的概率最大?
历史
隐马尔可夫模型最初是在20世纪
60年代后半期Leonard E. Baum和其它一些作者在一系列的统计学论文中描述的。HMM最初的应用之一是开始于20世纪70年代中期的
语音识别。
在1980年代后半期,HMM开始应用到生物序列尤其是
DNA的分析中。此后,在
生物信息学领域HMM逐渐成为一项不可或缺的技术。