隐马尔可夫模型(HMM,Hidden Markov model)是关于时序的概率模型,描述由隐藏马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
隐马尔可夫模型属于动态贝叶斯网,可用于标注问题的模型学习,属于生成模型,在语音识别、自然语言处理,生物信息等领域有着广泛应用。
1. 基本概念
1.1 标注问题
标注(Tagging)问题是分类问题的推广,又是更复杂的结构预测(structure prediction)问题的简单形式。
- 输入:观测序列
- 输出:标记序列或状态序列
- 目的:学习一个模型,使其能够对观测序列给出标记序列作为预测
标注问题针对训练集D,D={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}输入观测序列:x(i)=(x1(i),x2(i),...,xn(i))T,i=1,2,...,m输出标记序列:y(i)=(y1(i),y2(i),...,yn(i))T,i=1,2,...,mn是序列的长度,m为样本个数,n<<m。
学习一个模型(条件概率分布):P(Y1,Y2,...,Yn∣X1,X2,...,Xn)
使得对于一个新的观测序列:x(m+1)=(x1(m+1),x2(m+1),...,xn(m+1))T
找到使条件概率P((y1(m+1),y2(m+1),...,yn(m+1))T∣x1(m+1),x2(m+1),...,xn(m+1))T最大的标记序列y(m+1)=(y1(m+1),y2(m+1),...,yn(m+1))T
1.2 马尔可夫链
随机过程x(t),在t时刻的状态it,仅与t−1时刻的状态it−1有关,即P(it∣it−1,...,i1)=P(it∣it−1),t=1,2,...T,该过程称为马尔可夫过程(Markov Process),又称马尔可夫链(Markov Chain)。

上图为一个马尔可夫链,可以看出P(it+1=M3∣it=M2)=0.6,P(it+1=M4∣it=M2)=0.4
1.3 隐马尔可夫模型
隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence);
每个状态生成一个观测,由此产生的观测的随机序列,称为观测序列(observation sequence);
序列的每个位置为一个时刻。
- 状态集合:Q={q1,q2,...,qN},N是可能的状态数。
- 观测集合:V={v1,v2,...,vM},M是可能的观测数。
- 状态序列:I=(i1,i2,...,iT),T是状态序列的长度。
- 观测序列:O=(o1,o2,...,oT)。
(1)定义
隐马尔可夫模型λ由状态转移概率分布矩阵A、观测概率矩阵B及初始概率分布向量π确定,可表示为λ=(A,B,π)。π和A决定状态序列,B决定观测序列。
-
状态转移概率矩阵A=[aij]N×N,其中aij=P(it+1=qj∣it=qi),i=1,2,...,N;j=1,2,...,N是t时刻qi状态下转移到t+1时刻qj状态的概率。
-
观测概率矩阵B=[bjk]N×M,其中bjk=P(ot=vk∣it=qj),k=1,2,...,M;j=1,2,...,N是t时刻qj状态下生成观测vk的概率。
-
初始状态概率向量π=(πi),其中πi=P(i1=qi),i=1,2,...,N是t=1时刻处于状态qi的概率。
根据定义,观测序列O=(o1,o2,...,oT)的生成过如下:
- Step1: 按照初始状态分布π产生状态i1
- Step2: 令t=1
- Step3: 按照状态it的观测概率分布bit(k)生成ot
- Step4: 按照状态it的转移概率分布{ait,it+1}产生状态it+1
- Step5: 令t=t+1,若t<T,转至Step3;否则,终止
(2)两个基本假设
由定义可知,隐马尔可夫模型有两个基本假设:
- 齐次马尔可夫性假设:隐藏马尔可夫链任意t时刻的状态it只依赖于t−1时刻的状态it−1,与其他时刻的状态及观测无关,也与时刻t无关,即
P(it∣it−1,ot−1,...,i1,o1)=P(it∣it−1),t=1,2,...T
- 观测独立性假设:任意t时刻的观测ot只依赖于该时刻的马尔可夫链的状态ot,与其他观测即状态无关,即
P(ot∣iT,oT,iT−1,oT−1...,it+1,ot+1,it,it−1,ot−1,...,i1,o1)=P(ot∣it),t=1,2,...T
1.4 E.g.

按如下步骤,产生颜色序列:
- Step1:从4个盒子中等概率选取1个盒子,然后随机抽出1个球,记录颜色并放回
- Step2:按照如下规则选择盒子,从选定的盒子中抽出1个球,记录颜色并放回
- 如果当前盒子是A:直接选择盒子B
- 如果当前盒子是B或C:以0.4概率转移到左边盒子,0.6的概率转移到右边盒子
- 如果当前盒子是D:以0.5的概率停留在盒子D,0.5的概率转移到盒子C
即按照如下马尔可夫链选择盒子:

如此重复T次,得到颜色的观测序列。
该例子为一个隐马尔可夫模型,有两个随机序列:
- 状态序列:盒子的序列(隐藏的),长度为T
- 观测序列:颜色的观测序列(可观测的),长度为T
- 状态集合:Q={A,B,C,D},状态数N=4
- 观测集合:V={红,白},观测数M=2
- 初始概率分布:π=(0.25,0.25,0.25,0.25)
- 状态转移概率分布:A=⎣⎢⎢⎡00.400100.4000.600.5000.60.5⎦⎥⎥⎤
- 观测概率分布:b=⎣⎢⎢⎡0.50.30.60.80.50.70.40.2⎦⎥⎥⎤
其中,b21=P(ot=v1∣it=q2)=P(ot=红∣it=B)=0.3,j=2,k=1
表示t时刻,B盒状态下生成观测为红球的概率为0.3。
2. 三个基本问题
2.1 概率计算问题
已知模型λ=(A,B,π)和观测序列O=(o1,o2,...,oT),计算在模型λ下观测序列O出现的概率P(O∣λ)。采用前向(forward)与后向(backward)算法。
2.2 学习问题
已知观测序列O=(o1,o2,...,oT),估计模型参数(A,B,π),即使得该模型下观测序列产生的概率P(O∣λ)最大,可使用极大似然估计法估计参数。
如果将观测序列看做观测数据O,而状态序列看做不可观测的隐数据I,则隐马尔可夫模型可看做是一个含有隐变量的概率模型
P(O∣λ)=I∑P(O∣I,λ)P(I∣λ)可使用EM算法(Baum-Welch算法)实现隐马尔可夫模型的训练。
2.3 预测问题
已知模型λ=(A,B,π)和观测序列O=(o1,o2,...,oT),计算使得条件概率P(I∣O)最大的状态序列I=(i1,i2,...,iT),即给定观测序列,求对应的最可能的状态序列,又称解码问题。
维比特算法应用动态规划搞笑求解最优路径,即概率最大的状态路径。