隐马尔可夫模型2021-08-20隐马尔可夫模型
模型简介
隐马尔可夫模型(Hidden Markov Model,HMM)是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列;每个状态生成一个观测,由此产生的随机序列称为观测序列。序列的每一个位置又可以看作是一个时刻。

模型定义
模型定义如下:
状态集合,包含种可能,
观测集合,包含种可能,
状态序列,长度为T,
观测序列,长度为T,
状态转移概率矩阵,,其中,
观测概率矩阵,,其中,
初始状态概率向量,,其中,
隐马尔可夫模型由初始状态向量、状态转移概率矩阵和观测概率矩阵决定。和决定状态序列,决定观测序列。因此,隐马尔可夫模型可以用三元符号表示,即:。
两个基本假设
齐次马尔可夫性假设
假设隐藏的马尔可夫链在任意时刻的状态只依赖于其前一时刻的状态,与其它时刻的状态及观测无关,也与时刻无关:

观测独立性假设
假设任意时刻的观测只依赖于该时刻马尔可夫链的状态,与其它观测及状态无关:

三个基本问题
概率计算问题
给定模型和观测序列,计算在模型下观测序列出现的概率。
学习问题
已知观测序列,估计模型的参数,使得在该模型下观测序列概率最大。
预测问题
已知模型参数和观测序列,求最有可能的状态序列 ,即使得最大。
概率计算问题
直接计算
其中,表示给定模型参数时,产生状态序列的概率:
表示给定模型参数且状态序列为,产生观测序列的概率:
因此:
接下来,对该式进行算法复杂度分析:
共有种可能,故时间复杂度为
时间复杂度为
由上述分析,该式总的时间复杂度为,指数级复杂度,实际中不可行。
前向计算
首先定义前向概率:给定隐马尔可夫模型,定义到时刻时部分观测序列为且状态为的概率为前向概率,记作:

对前向概率推导得:
其中, 公式说明:因所有概率均在参数下计算,故从第二步开始,省略条件中的
因此,
基于前向概率,可得观测序列的概率为:
根据上述推导,可得通过前向算法计算观测概率的算法如下:
算法观测序列概率的前向算法)
输入:隐马尔可夫模型观测序列
输出:观测序列概率
- 初值:
- 递推:
- 终止:
时间复杂度分析:
根据递推公式,需要遍历,所以时间复杂度为
时间维度的计算,时间复杂度是
由上述分析可以,总的时间复杂度为,相比直接计算,有很大提升。
后向计算
首先定义后向概率:给定隐马尔可夫模型,定义在时刻状态为的条件下,从到时刻的观测序列为的概率为后向概率,记作:

对后向概率推导得:
其中, 为了确保递推公式的连贯性,令。
基于后向概率,可得观测序列的概率为:
根据上述推导,可得通过后向算法计算观测概率的算法如下:
算法观测序列概率的后向算法)
输入:隐马尔可夫模型观测序列
输出:观测序列概率
- 初值:
- 递推:其中,
- 终止:
若干公式
前向概率 后向概率
给定和,在时刻处于状态的概率
给定和,在时刻处于状态且在时刻处于状态的概率
又因为:
所以:
学习问题
状态已知,观测已知
假设已给出训练数据包含个长度相同的观测序列和对应的状态序列,那么可以利用极大似然估计法来估计隐马尔可夫模型的参数,具体方法如下:
转移概率的估计
其中, 为样本中时刻 处于状态 而到时刻 转移到状态 的 的频数。
观测概率的估计
其中, 为样本中状态为 , 对应观测为 的 的频数。
初始状态概率的估计
S个样本中初始状态为 的频率。
状态未知,观测已知
问题定义
仅知道观测序列为,而不知道状态序列数据,那么隐马尔可夫模型就是一个含有隐变量的概率模型:
可使用EM算法对该问题进行参数求解,该算法亦称为Baum-Welch算法。
完全数据的对数似然
需要确定完全数据的对数似然函数。
观测数据为,未观测数据为,则完全数据为,完全数据的对数似然函数为:
其中,,所以可进一步得到:
E步:求函数
定义函数如下:
其中,是隐马尔可夫模型参数的当前估计值,是要极大化的隐马尔可夫模型参数。 为了后续计算方便,对函数做如下恒等变形:
由于接下来仅极大化,作为常数项可以省略,所以函数可以进一步简化为:
M步:极大化函数
由于要极大化的参数在上式中单独地出现在3个项中,所以只需对各项分别极大化。
求
函数中的第1项可以写成:
由于需要满足约束,利用拉格朗日乘子法,写出拉格朗日函数:
对拉格朗日函数关于求偏导并令结果为0:
利用,对上式两边关于求和可得:
将其带回可得:
其中,表示给定模型参数和观测,在时刻处于状态的概率。
求
函数中的第2项可以写成:
由于需要满足的约束条件,同样需要利用拉格朗日乘子法,写出拉格朗日函数:
对拉格朗日函数关于求偏导并令结果为0:
利用,对上式两边求和可得:
将其带回可得:
分子分母同时除以得:
其中表示给定和,在时刻处于状态且在时刻处于的概率。表示给定和,在时刻处于状态的概率。
求
函数中的第3项可以写成:
由于需要满足约束,同样利用拉格朗日乘子法,写出拉格朗日函数:
对拉格朗日函数关于求偏导并令结果为0:
其中为指示函数 利用,对上式两边关于求和可得:
公式说明:的原因:每一时刻的必然属于且仅属于中的一个。将遍历一遍,所有时刻的必然且仅能满足一次。
将其带回可得:
分子分母同时除以:
其中,表示给定和,在时刻处于状态的概率。
预测问题
贪心算法
在每个时刻选择在该时刻最有可能出现的状态,从而得到一个状态序列,将它作为预测的结果。具体算法那如下:
算法贪心算法预测状态序列)
输入:隐马尔可夫模型观测序列
输出:状态序列
维特比算法
维特比算法:使用动态规划求解概率最大路径,每一条路径对应一个状态序列。具体算法如下:
算法维特比算法预测状态序列)
输入:隐马尔可夫模型观测序列
输出:状态序列
定义在时刻状态为的所有单个路径中概率最大值为:
- 在时刻,可知:
- 对时刻
定义在时刻状态为的所有单个路径中,概率最大的路径中的第个节点为:
- 在时刻,可知:
- 在时刻
得到状态序列
例题:盒子和球模型
假设有3个盒子,每个盒子里面都装有红白两种颜色的球,盒子里的红白球数如下表所示:
盒子红球数白球数
按照如下规则抽球,从而产生一个球的颜色的观测序列:首先以0.2、0.4、0.4的概率从1、2、3号盒子中选取一
个盒子,从这个盒子里随机抽出1个球,记录其颜色后放回,然后按以下概率选取下一个盒子:
盒子
确定了转移的盒子后,再从盒子里随机抽出1个球,记录其颜色后放回。
重复3次,最终得到的观测序列为O={红,白,红}。
记选取的盒子序列为状态序列,试求最优状态序列,即最优路径
解
该问题为典型的隐马尔可夫模型,由题意可得知模型的参数为:
红,白,红
按照维特比算法我们可以进行如下计算:



所以,最优状态序列为:
参考文档
- 如何理解隐马尔科夫模型(HMM)后向算法初始值为1? - 知乎 (zhihu.com)