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