前言

隐马尔可夫模型是结构最简单的动态贝叶斯网,这是一种著名的有向图模型,主要用于时序数据建模,在语音识别、自然语言处理等领域有广泛应用。


一、基本概念

1、两组变量和三组参数

两组变量
  • 状态变量 y i y_i yi:隐藏的马尔可夫随机链生成的状态序列,不可观测
  • 观测变量 x i x_i xi:每个状态生成一个观测,由此产生观测的随机序列

两个基本假设:

  • 观测独立性假设:
      图中的箭头表示了变量间的依赖关系。在任一时刻,观测变量的取值仅依赖于状态变量,即 x t x_t xt y t y_t yt确定,与其他状态变量及观测变量的取值无关。‘
  • 齐次马尔可夫假设:
      同时,t时刻的状态 y t y_t yt仅依赖于 t − 1 t-1 t1时刻的状态 y t − 1 y_{t-1} yt1,与其余 n − 2 n-2 n2个状态无关,这就是马尔科夫链,即:系统下一时刻的状态仅由当前状态确定,不依赖于以往的任何状态,基于这种依赖关系所有变量的联合概率分布为:
    在这里插入图片描述
三组参数
  • 状态转移概率:模型在各个状态间转换的概率,通常记为 A = [ a i j ] N × N A=[a_{ij}]_{N\times N} A=[aij]N×N,其中
    a i j = P ( y t + 1 = s j ∣ y t = s i ) , 1 ≤ i , j ≤ N , a_{ij}=P(y_{t+1}=s_j|y_t=s_i),1\le i,j\le N, aij=P(yt+1=sjyt=si),1i,jN,
  • 输出观测概率:模型根据当前状态获得各个观测值的概率,通常记为矩阵 B = [ b i j ] N × M B=[b_{ij}]_{N\times M} B=[bij]N×M
    b i j = P ( x t = o j ∣ y t = s i ) , 1 ≤ i ≤ N , 1 ≤ j ≤ M b_{ij}=P(x_t=o_j|y_t=s_i),1\le i \le N,1\le j \le M bij=P(xt=ojyt=si),1iN,1jM
  • 初始状态概率:模型在初始时刻各状态出现的概率,通常记为 π = ( π 1 , π 2 , . . . , π n ) \pi=(\pi_1,\pi_2,...,\pi_n) π=(π1,π2,...,πn)
    π i = P ( y 1 = s i ) , 1 ≤ i ≤ N \pi_{i}=P(y_1=s_i),1\le i\le N πi=P(y1=si),1iN

通过指定状态空间 Y \mathcal Y Y、观测空间 X \mathcal X X和上述三个参数,就能确定一个隐马尔可夫模型,通过用其参数 λ = [ A , B , p i ] \lambda =[A,B,pi] λ=[A,B,pi]来指代。给定隐马尔可夫模型 λ \lambda λ,它按如下过程产生观测序列 { x 1 , x 2 , . . . , x n } \{x_1,x_2,...,x_n\} {x1,x2,...,xn}
(1)设置 t = 1 t=1 t=1,并根据初始状态概率 π \pi π选择初始状态 y 1 y_1 y1;
(2)根据状态 y t y_t yt和输出观测概率 B B B选择观测变量取值 x t x_t xt
(3)根据状态 y t y_t yt和状态转移矩阵 A A A转移模型状态,即确定 y t + 1 y_{t+1} yt+1
(4)若 t < n t <n t<n,设置 t = t + 1 t=t+1 t=t+1,并转到第(2)步,否则停止。
其中 y t ∈ { s 1 , s 2 , . . . , s n } y_t\in \{s_1,s_2,...,s_n\} yt{s1,s2,...,sn} x t ∈ { o 1 , o 2 , . . . , o m } x_t\in \{o_1,o_2,...,o_m\} xt{o1,o2,...,om}分别为第 t t t时刻的状态和观测值。

2、三个基本问题

  • 概率学习问题
    在这里插入图片描述

  • 预测问题(解码问题)
    在这里插入图片描述

  • 学习问题
    在这里插入图片描述

二、概率计算问题

1、直接计算法(暴力穷举)

列举所有可能的长度为T的状态序列 y = { y 1 , y 2 , . . . , y T } y=\{y_1,y_2,...,y_T \} y={y1,y2,...,yT},求各个状态序列 x x x与观测序列 x = { x 1 , x 2 , . . . , x T } x= \{x_1,x_2,...,x_T \} x={x1,x2,...,xT}的联合概率 P ( x , y ∣ λ ) P(x,y | λ) P(x,yλ),然后对所有可能的状态序列求和,从而得到最终的概率 P ( x ∣ λ ) P(x|λ) P(xλ)

缺点:计算量非常庞大, O ( T N T ) O(TN^T) O(TNT)阶,不可行

2、前向算法

首先,定义前向概率:

前向概率:给定隐马科夫模型 λ \lambda λ,定义到时刻 t t 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=qiλ)
可以递推地求得前向概率 α t ( i ) \alpha_t(i) αt(i)及观测序列概率 P ( 0 ∣ λ ) P(0|\lambda) P(0λ)

  • 输入:隐马尔科夫模型 λ \lambda λ,观测序列 O O O
  • 输出:观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)
  • 前向算法:

理解:
在这里插入图片描述

计算:每一次计算直接引用上一时刻的计算结果,避免重复计算,计算量是 O ( N 2 T ) O(N^2T) O(N2T)阶。

3、后向算法

首先,定义后向概率:

后向概率:给定隐马科夫模型 λ \lambda λ,定义在时刻 t t t状态为 q i q_i qi的条件下,从 t + 1 t+1 t+1 T T T的部分观测序列为 o t + 1 , o t + 2 , . . . . . . , o T o_{t+1},o_{t+2},......,o_T ot+1,ot+2,......,oT的概率为后向概率,记作
β t ( i ) = P ( o t + 1 , o t + 2 , . . . . . . , o T ∣ i t = q i , λ ) \beta_t(i)=P(o_{t+1},o_{t+2},......,o_T|i_t=q_i,\lambda) βt(i)=P(ot+1,ot+2,......,oTit=qi,λ)
可以递推地求得后向概率 β t ( i ) \beta_t(i) βt(i)及观测序列概率 P ( 0 ∣ λ ) P(0|\lambda) P(0λ)

  • 输入:隐马尔科夫模型 λ \lambda λ,观测序列 O O O
  • 输出:观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)
  • 后向算法:

理解:在这里插入图片描述

三、预测问题

1、近似算法

2、维特比算法

  用动态规划求概率最大路径(最优路径),这时一条路径对应着一个状态序列。

理解这里是引用

  • 输入:隐马尔科夫模型 λ \lambda λ,观测序列 O O O
  • 输出:最优路径 I ∗ = ( i 1 ∗ , i 1 ∗ , . . . i T ∗ ) I^*=(i^*_1,i^*_1,...i^*_T) I=(i1,i1,...iT).
  • 维特比算法:
    在这里插入图片描述
    例子:

在这里插入图片描述
在这里插入图片描述

四、学习问题

1、监督学习算法

2、非监督学习算法


reference

[1]周志华-《机器学习》
[2]李航-《统计学习方法》
[3]02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题
[4]隐马尔科夫模型(HMM)一前向与后向算法

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐