1.模型概述
(1)模型定义
隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态的序列,再由各个状态随机生成一个观测而产生观测序列的过程。
(2)相关概念
- 状态序列:隐藏的马尔可夫链随机生成的状态序列。
- 观测序列:每一个状态生成一个随机的观测序列。
- 是一个生成模型,表示状态序列和观测序列的联合分布,但是状态序列是隐藏的,不可观测的。
- 可以用于标注,这时状态对应着标记。标注问题是给定观测序列预测其对应的标记序列。
(3)三要素
- 初始状态概率向量 π \pi π
- 状态转移概率矩阵 A A A
- 观测概率矩阵 B B B
隐马尔可夫模型由这三要素决定,其中 π , A \pi,A π,A决定状态序列, B B B决定观测序列。
模型可以写成 λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)。
(4)两个假设
- 齐次马尔可夫性假设——隐性的马尔可夫链在任意时刻t的状态只依赖于前一时刻的状态,与其他时刻状态、观测和时刻t无关。
- 观测独立性假设——任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关。
(5)三个基本问题:
- 概率计算问题:给定模型和观测序列,计算在模型下观测序列出现的概率。——采用:前向算法、后向算法
- 学习问题:已知观测序列,估计模型中的参数,使得在该模型下观测序列概率最大,即用极大似然估计的方法估计参数。——采用:Baum-Welch算法,也就是EM算法可以高效地对隐马尔可夫模型进行训练。它是一种非监督学习算法。
- 预测问题:也称解码问题,已知模型和观测序列,求最可能的对应的状态序列。——采用:近似算法、维特比算法【维特比算法(Viterbi algorithm)应用动态规划高效地求解最优路径,即概率最大的状态序列。】
(6)观测序列的生成过程
- 输入:隐马尔可夫模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列长度T;
- 输出:观测序列 O = ( o 1 , o 2 , … … , o T ) O=(o_1,o_2,……,o_T) O=(o1,o2,……,oT)
- 算法实施步骤:a.按照初始分布 π \pi π产生状态 i 1 i_1 i1;b.令t=1;c.根据 i t i_t it的观测概率分布 b i t ( k ) b_{i_t}(k) bit(k)生成 o t o_t ot;d.按照 i t i_t it的状态转移概率分布{ a i t i t + 1 a_{i_ti_{t+1}} aitit+1}产生状态 i t + 1 i_{t+1} it+1;e.令 t = t + 1 t=t+1 t=t+1,如果 t < T t<T t<T,转步骤c,否则停止。
2.概率计算算法
(1)直接计算
直接按照概率公式计算,公式为 P ( O ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) = ∑ i 1 , i 2 , . . . i T π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) . . . a i T − 1 i T b i T ( o T ) P(O|\lambda)=\sum_IP(O|I,\lambda)P(I|\lambda)=\sum_{i_1,i_2,...i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)...a_{i_{T-1}i_T}b_{i_T}(o_T) P(O∣λ)=I∑P(O∣I,λ)P(I∣λ)=i1,i2,...iT∑πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(oT)缺点:计算量很大,是 O ( T N T ) O(TN^T) O(TNT)阶的
(2)前向算法
1)前向概率
给定隐马尔可夫模型 λ \lambda λ,定义到时刻t部分观测序列为 o 1 , o 2 , . . . , o t o_1,o_2,...,o_t o1,o2,...,ot且状态为 q i q_i qi的概率为前向概率,记作: α t ( i ) = P ( o 1 , o 2 , . . . , o t , i t = q i ∣ λ ) \alpha_t(i)=P(o_1,o_2,...,o_t,i_t=q_i|\lambda) αt(i)=P(o1,o2,...,ot,it=