隐马尔可夫模型(HMM)
白话HMM
HMM定义:隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列(状态序列),再由各个状态生成一个观测而产生观测随机序列(观测序列)的过程。序列的每一个位置可以看成一个时刻。
什么是状态?什么是观测?
举一个简单的例子,假设有两个相同的盒子A,B,A中有红球:白球=1:1,B中有红球:白球=3:1,我们随机选择一个盒子,再从该盒子中拿出一个球,我们发现我们拿出的球是一个红球。如果我们只知道得到的球是红球,我们可以判断它是从哪一个盒子中拿出的吗?不知道!这时红球就对应一个观测(
o1
),而它对应的盒子则是一个不可观测的状态(
i1
)。
现在我们接着上一个例子,我们规定:如果是第一次选择盒子(如
i1
),那么选择两个盒子的概率相等;如果我们当前选择的盒子是A,那么下一次我们就以1/2的概率选择A,1/2的概率选择B;如果我们当前的盒子是B,那么下一次我们就以2/3的概率选择A,1/3的概率选择B。
按照这种规则进行T次,我们是不是会得到一个长度为T的状态序列?每次从选出的盒子里面再随机拿出一个球,我们会不会得到一个长度为T的观测序列?
我们选择盒子的过程是按照先后顺序来的,所以这个过程是时序相关的。到现在为止,我们已经对HMM定义有了了解。
现在我们来了解该模型的参数构成:首先我们第一次选择盒子,选择两个盒子的概率都是1/2,这个概率就是初始状态的概率
π
;如果不是第一次选择盒子,那么我们选择下一个盒子的概率是依据当前盒子种类确定的,这个概率是状态转移概率
a
;我们从选出的盒子中拿出每种球的概率就是观测概率
隐马尔科夫模型
λ
就是由这三个参数确定的,即:
1. 概率计算问题:给定模型 λ 和观测序列 O ,计算在该模型下观测序列
2. 学习问题:已知观测序列 O ,估计模型
3. 预测问题:已知模型 λ 和观测序列 O ,求使得P(O|I)最大的状态序列。在语音识别任务中,观测值为语音信号,隐藏状态为文字;在输入法中类似。
现在我们是不是对隐马尔科夫模型有了一个直观的认识?是不是感觉很简单?如果你只是想要了解HMM是什么,怎么使用的,用来干什么的,现在可以回去了emmm…
深入HMM
前言
三个要素
隐马尔可夫模型由初始概率分布,状态转移概率分布以及观测概率分布确定。
设
I 是长度为
B 是观测概率矩阵:
π 是初始状态概率向量:
两个假设
- 隐马尔科夫链在任意时刻
t
的状态只依赖于其前一个时刻的状态,与其他时刻的状态及观测无关,也与时刻
t 无关。P(it|it−1,ot−1,...,i1,o1),t=1,2,...,T - 任意时刻的观测只依赖于该时刻隐马尔科夫链的状态,与其他观测及状态无关。
P(ot|iT,oT,it−1,ot−1,...,it+1,ot+1,it,it−1,ot−1,...,i1,o1)=P(ot|it)
三个基本问题
- 概率计算问题:给定模型
λ=(A,B,π)
和观测序列
O=(o1,o2,...,oT)
,计算在该模型下观测序列
O
出现的概率
P(O|λ) 。 - 学习问题:已知观测序列 O=(o1,o2,...,oT) ,估计模型 λ=(A,B,π) 参数,使得 P(O|λ) 最大。
- 预测问题:已知模型 λ=(A,B,π) 和观测序列 O=(o1,o2,...,oT) ,求使得P(O|I)最大的状态序列 I=(i1,i2,...,iT) 。
在继续之前,让我们以另外一种角度来看一下HMM:
看着上面的图,我们是不是想到了全连接神经网络和多段图?这个图代表什么含义呢?这个图是HMM各种概率计算的核心。
该图理解如下:假设
t
时刻状态为
针对绿色框框中的每一种可能的状态序列,我们都会产生一个对应的观测序列
O=(o1,o2,...,oT), oi∈V
。
1. 概率计算算法
直接计算法
问题:给定模型
λ=(A,B,π)
和观测序列
O=(o1,o2,...,oT)
,计算观测序列
O
出现的概率。
直接计算方法是列举所有可能的长度为
状态序列
I=(i1,i2,...,iT)
的概率是
则观测序列 O 出现的概率是:
前向算法
为了描述方便,首先进行前向概率定义:给定隐马尔科夫模型
λ
,定义到时刻
t
部分观测序列为
具体怎么求呢?看图:
我们假设已经知道
t
时刻状态为
在
t+1
时刻的状态
qi
可由
t
时刻中的N个状态(
因为初值为 α1(i)=πibi(o1) ,那么我们就可以从前往后递推得到观测序列 O 出现的概率:
后向算法
首先给出后向概率定义:给定隐马尔可夫模型
λ
,定义在时刻
t
状态为
具体怎么求?看图:
递推公式怎么得到呢?首先我们知道
t+1
时刻往后的状态和观测出现的概率,那么从
t
时刻往后状态和观测出现的概率只需要把从
假设我们现在在
qi
,那么我们有
aij
的概率转移到下一时刻的状态
qj
,而当我们处于状态
qj
时,我们可以以概率
βt+1(j)
来确定观测序列
ot+2,ot+3,...,oT
出现的概率,那我们就可以对所有情况进行一个累加来得到我们在状态
qi
的条件下得到观测序列
ot+1,ot+2,...,oT
的概率。
我们会得到:
小结
利用前向概率和后向概率定义可以将观测序列概率 P(O|λ) 写成:
2. 学习算法
监督学习算法
假定已知训练数据包含
S
个长度的序观测序列和对应的状态序列
1. 设样本中时刻
t
处于状态
2. 设样本中状态为 j 并且观测为
3. 初始状态概率 πi 的估计 π^i 为 S 个样本中初始状态为
无监督-(EM算法求解)
假设给定训练数据只包含
S
个长度为
1. 确定完全数据的对数似然函数 logP(O,I|λ) 。
2. EM算法的E步:求 Q 函数
3. 预测算法
给定观测序列
O
以及隐马尔可夫模型参数
学过算法的一般都知道多段图求解最短路径的动态规划求解方法,只不过在求最短路径的时候路径的计算是不同段之间的边长度相加,而在这里则是不同段之间的边代表的状态转移概率相乘。
假定在时刻
t
状态为
然后我们在递推的时候对最优路径进行记录。当然这就是鼎鼎有名的维特比算法。
参考
李航 《统计学习方法》
周志华 《机器学习》
Kevin P. Murphy 《Machine Learning A Probabilistic Persperctive》