1、隐马尔可夫模型基本概念
隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。
隐马尔可夫模型的形式定义如下:
设是所有可能状态的集合,
是所有可能观测的集合:
其中为可能状态数,
为可能观测数。
是长度为
的状态序列,
是对应的观测序列:
是状态转移概率矩阵:
其中:
是观测概率矩阵:
其中:
是初始状态概率向量:
其中:
隐马尔可夫模型由初始状态概率向量、状态转移概率矩阵
和观测概率矩阵
决定。因此隐马尔可夫模型
可表示为:
具体来说,长度为的观测序列的生成过程如下:按照初始状态分布
产生状态
,按状态
的观测概率分布
生成
,按状态
的状态转移概率分布
产生状态
,依次递推。
- 由定义可知隐马尔可夫模型的两个基本假设:
(1)齐次马尔可夫性假设,即隐藏的马尔科夫链在任意时刻的状态只依赖于其前一时刻的状态,与其他时刻状态及观测无关,也与时刻
无关。
(2)观测独立性假设,即任意时刻的观测只依赖于该时刻的马尔科夫链状态,与其它观测状态无关。
- 隐马尔可夫模型的三个基本问题如下:
(1)概率计算问题:给定模型和观测序列
,计算在模型
下序列
出现的概率
。
(2)学习问题:已知观测序列,估计模型
参数,使得在该模型下观测序列
最大。
(3)预测问题:已知模型和观测序列
,求使得
最大的状态序列
。
接下来分别阐述这三个问题的解决方法。
2、概率计算算法
2.1、直接计算法
状态的概率是:
对固定的观测序列
的概率是:
同时出现的联合概率为:
从而:
可以看到,上式是对所有可能的序列求和,而长度为
的
序列的数量是
数量级的,而
的计算量是
级别的,因此计算量为
,非常大,这种算法在实际中不可行。
2.2、前向算法
首先定义前向概率:给定隐马尔可夫模型,定义到时刻
部分观测序列为
且状态为
的概率为前向概率,记作:
观测序列概率的前向算法如下:
(1)初值:
(2)递推,对:
(3)终止:
前向算法高效的关键是局部计算前向概率,然后利用路径结构将前向概率递推到全局,得到。前向概率算法计算量是
级别的。
2.3、后向算法
首先定义后向概率:给定隐马尔可夫模型,定义在时刻
状态为
的条件下,从
到
部分观测序列为
的概率为后向概率,记作:
观测序列概率的后向算法如下:
(1)初值:
(2)递推,对:
(3)终止:
3、学习算法
3.1、监督学习方法
若有个长度相同观测序列和对应状态序列
则可利用极大似然估计得到隐马尔可夫模型参数:
设样本中时刻处于状态
时刻
转移到状态
的频数为
,那么状态转移概率
的估计为:
设样本中状态为观测为
的频数为
,那么观测概率
的估计为:
初始状态的估计
为
个样本中初始状态为
的频率。
3.2、无监督学习方法(Baum-Welch算法)
假设给定训练数据只包含个长度为
的观测序列
而没有对应状态序列,我们可以把状态数据看作不可观测的隐数据
,则隐马尔可夫模型事实上是一个含有隐变量的概率模型:
其参数可由EM算法实现。
4、预测算法
4.1、近似算法
近似算法的思想是,在每个时刻选择在该时刻最有可能出现的状态
,从而得到一个状态序列
。
近似算法的优点是计算简单,缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分,比如存在转移概率为0的相邻状态。尽管如此,近似算法还是有用的。
4.2、维特比算法
维特比算法实际上是用动态规划解隐马尔可夫模型预测问题,即用动态规划求概率最大路径(最优路径),此路径对应一个状态序列。
定义在时刻状态为
的所有单个路径
中概率最大值为:
由定义得递推式:
定义在时刻状态为
的所有单个路径
中概率最大路径的第
个结点为:
维特比算法如下:
(1)初始化:
(2)递推,对:
(3)终止:
(4)回溯,对:
最优路径为