隐马尔科夫模型

隐马尔可夫模型

定义: 隐马尔可夫模型(hidden Markov model,HMM)是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可预测的状态随机序列,再由各个状态生成一个观测从而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence);每一个状态生成一个观测,而由此产生的观测的随机序列,成为观测序列(observation sequence);序列的每一个位置又可以看作是一个时刻。

HMM


隐马尔可夫有两个基本假设,其次隐马尔科夫假设和观测独立性假设:

  1. 其次隐马尔科夫假设:假设隐藏的隐马尔可夫链在任意时刻的状态只依赖于前一个时刻的状态,与其他时刻的状态及观测无关。
  2. 观测独立性假设:假设任意时刻的观测只依赖于该时刻的状态

隐马尔可夫模型由初始状态概率向量 π \pi π,状态转移概率矩阵 A A A和观测概率矩阵 B B B决定。 π \pi π A A A确定了隐藏的马尔可夫链,生成不可观测的状态序列, B B B确定了如何从状态生成观测。因此,隐马尔可夫模型 λ \lambda λ/可用三元组表示, λ = ( π , A , B ) \lambda=\left( \pi, A, B \right) λ=(π,A,B)

下面我们仔细介绍一下各个参数的定义:

  • 假设有 N N N个状态的状态集合 Q Q Q为: Q = { q 1 , q 2 , ⋯   , q N } Q = \left\{ q_{1}, q_{2}, \cdots, q_{N} \right\} Q={q1,q2,,qN}
  • 假设有 M M M个观测状态的观测集合 V V V为: V = { v 1 , v 2 , ⋯   , v N } V = \left\{ v_{1}, v_{2}, \cdots, v_{N} \right\} V={v1,v2,,vN}
  • 假设长度为 T T T的状态序列 I I I为: I = ( i 1 , i 2 , ⋯   , i T ) I = \left( i_{1}, i_{2}, \cdots, i_{T} \right) I=(i1,i2,,iT),其对应的观测序列 O O O为: O = ( o 1 , o 2 , ⋯   , o T ) O = \left(o_{1} ,o_{2}, \cdots, o_{T} \right) O=(o1,o2,,oT)
  • 初始状态变量 π \pi π为: π = ( π i ) \pi=\left( \pi_{i} \right) π=(πi),其中 π = P ( i t = q i ) \pi = P \left( i_{t} = q_{i}\right) π=P(it=qi),是在时刻 t t t下处于状态 q q q的概率
  • 状态转移矩阵 A A A为: A = [ a i , j ] N × N A = \left[ a_{i,j}\right]_{N \times N} A=[ai,j]N×N ,其中 a i , j = P ( i t + 1 = q j ∣ i t = q i ) a_{i,j}=P \left( i_{t+1} = q_{j} | i_{t} = q_{i} \right) ai,j=P(it+1=qjit=qi),表示时刻 t t t下的状态 q i q_{i} qi在时刻 t + 1 t+1 t+1转移到状态 q j q_{j} qj的概率
  • 观测概率矩 B B B为: B = [ b j ( k ) ] N × M B= \left[ b_{j}\left( k \right) \right]_{N \times M} B=[bj(k)]N×M,其中 b j ( k ) = P ( o t = v k ∣ i t = q j ) b_{j}\left( k \right)=P \left( o_{t} = v_{k} | i_{t} = q_{j} \right) bj(k)=P(ot=vkit=qj),表示在时刻 t t t下的状态 q j q_{j} qj下生成观测 v k v_{k} vk的概率

有了上面的定义,假设给定HMM模型 λ = ( π , A , B ) \lambda=\left( \pi, A, B \right) λ=(π,A,B) 和观测序列 O = { o 1 , o 2 , ⋯   , o N } O = \left\{ o_{1}, o_{2}, \cdots, o_{N} \right\} O={o1,o2,,oN} ,要怎么计算观测序列 O O O出现的概率 P ( O ∣ λ ) P \left(O | \lambda \right) P(Oλ)。有三种方法,我们一一讲解。

直接计算法

  1. 首先计算状态序列 I I I的概率为 P ( I ∣ λ ) = π i 1 a i 1 , i 2 ⋯ a i T − 1 , i T P\left( I | \lambda \right) = \pi_{i_{1}} a_{i_{1},i_{2}} \cdots a_{i_{T-1},i_{T}} P(Iλ)=πi1ai1,i2aiT1,iT
  2. 再者计算在状态序列 I I I下的观测序列 O O O的概率为 P ( O ∣ I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) ⋯ b i T ( o T ) P\left( O|I, \lambda \right) = b_{i_{1}}\left( o_{1} \right) b_{i_{2}}\left( o_{2} \right) \cdots b_{i_{T}}\left( o_{T} \right) P(OI,λ)=bi1(o1)bi2(o2)biT(oT)
  3. 随后状态序列 I I I和观测序列 O O O的联合概率为 P ( O , I ∣ λ ) = π 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\left( O,I| \lambda \right) = \pi_{i_{1}} b_{i_{1}}\left( o_{1} \right) a_{i_{1},i_{2}} b_{i_{2}}\left( o_{2} \right)\cdots a_{i_{T-1},i_{T}} b_{i_{T}}\left( o_{T} \right) P(O,Iλ)=πi1bi1(o1)ai1,i2bi2(o2)aiT1,iTbiT(oT)
  4. 最后对所有的状态序列 I I I进行求和,计算
    P ( Q ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) = ∑ i 1 , ⋯   , 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 )    \begin{matrix} P \left(Q | \lambda \right)&= \sum_{I}P\left( O|I, \lambda \right) P\left( I | \lambda \right) \qquad \qquad \qquad \qquad \qquad \qquad \\ &= \sum_{i_{1}, \cdots, i_{T}}\pi_{i_{1}} b_{i_{1}}\left( o_{1} \right) a_{i_{1},i_{2}} b_{i_{2}}\left( o_{2} \right)\cdots a_{i_{T-1},i_{T}} b_{i_{T}}\left( o_{T} \right) \; \end{matrix} P(Qλ)=IP(OI,λ)P(Iλ)=i1,,iTπi1bi1(o1)ai1,i2bi2(o2)aiT1,iTbiT(oT)

使用直接计算法,看公式就能看到繁重的计算量,加快计算速度,下面介绍前向算法和后向算法。前向概率是由前向后计算,局部计算前向概率,每一次的计算直接引用前一个时刻的计算成果。

前向后向算法

前向算法

对于隐马尔可夫模型 λ \lambda λ,定义时刻t的状态为 q i q_{i} qi,且到该时刻下的观测序列 o 1 , ⋯   , o t o_{1}, \cdots , o_{t} o1,,ot的概率为前向概率 α t ( i ) = P ( o 1 , ⋯   , o t , i t = q i ∣ λ ) \alpha_{t} \left( i\right) = P\left(o_{1},\cdots,o_{t}, i_{t}=q_{i} | \lambda \right) αt(i)=P(o1,,ot,it=qiλ);那么 α t ( i ) α i j \alpha_{t} \left( i \right) \alpha_{ij} αt(i)αij就是在时刻 t t t状态为 q i q_{i} qi时且在时刻 t + 1 t+1 t+1处于状态 q j q_{j} qj时观测到 o 1 , ⋯   , o t o_{1}, \cdots,o_{t} o1,,ot的联合概率;对 α t ( i ) α i j \alpha_{t} \left( i \right) \alpha_{ij} αt(i)αij在时刻 t t t下的所有可能的 N N N个状态进行求和计算,其结果就是到时刻 t t t观测为 o 1 , ⋯   , o t o_{1}, \cdots,o_{t} o1,,ot并在时刻 t + 1 t+1 t+1处于状态 q j q_{j } qj的联合概率;最后再与 b i ( o t + 1 ) b_{i}\left( o_{t+1}\right) bi(ot+1)相乘,其结果恰好是到当时刻 t + 1 t+1 t+1的状态为 q j q_{j} qj时,观测到 o 1 , ⋯   , o t + 1 o_{1},\cdots, o_{t+1} o1,,ot+1的概率,即是 α t + 1 ( i ) \alpha_{t+1}\left( i \right) αt+1(i)

HMM的前向算法的计算步骤如下:

  1. 初始化: α 1 ( i ) = π i b i ( o 1 ) , i = 1. ⋯   , N \alpha_{1} \left( i\right) = \pi_{i} b_{i}\left( o_{1} \right ),i=1.\cdots,N α1(i)=πibi(o1),i=1.,N
  2. 对每一个时刻 t = 1 , ⋯   , T t=1,\cdots, T t=1,,T
    α t + 1 ( i ) = [ ∑ j = 1 N α t ( j ) α j i ] b i ( o t + 1 ) , i = 1 , 2 , ⋯   , N \alpha_{t+1} \left( i\right) = \left [ \sum_{j=1}^{N}\alpha_{t}\left( j \right ) \alpha_{ji} \right ]b_{i}\left ( o_{t+1} \right ), i=1,2,\cdots,N αt+1(i)=[j=1Nαt(j)αji]bi(ot+1),i=1,2,,N
  3. 最后:
    $ P \left(Q | \lambda \right) = \sum_{i=1}^{N} \alpha_{T} \left ( i \right )$

后向算法

对于隐马尔可夫模型 λ \lambda λ,定义时刻t的状态为 q i q_{i} qi,从 t + 1 t+1 t+1时刻到时刻 T T T的观测序列 o t + 1 , ⋯   , o T o_{t+1}, \cdots , o_{T} ot+1,,oT的概率为后向概率 β ( i ) = P ( o t + 1 , ⋯   , o T ∣ i t = q i , λ ) \beta \left( i \right) = P\left(o_{t+1},\cdots,o_{T} | i_{t}=q_{i}, \lambda \right) β(i)=P(ot+1,,oTit=qi,λ)

类似于前向计算的思路,这次计算是由后向前计算,步骤如下:

  1. 初始化为 β ( i ) = 1 , i = 1 , 2 , ⋯   , N \beta \left ( i \right ) = 1, i=1,2,\cdots,N β(i)=1,i=1,2,,N
  2. 将时刻 t t t从后向前编列 t = T − 1 , ⋯   , 1 t=T-1,\cdots,1 t=T1,,1
    β t ( i ) = ∑ j = 1 N α i j b j ( o t + 1 ) β t + 1 ( j ) , i = 1 , 2 , ⋯   , N \beta_{t} \left( i\right) = \sum_{j=1}^{N}\alpha_{ij} b_{j}\left ( o_{t+1} \right )\beta_{t+1}\left ( j \right ) , i=1,2,\cdots,N βt(i)=j=1Nαijbj(ot+1)βt+1(j),i=1,2,,N
  3. 最后:
    P ( Q ∣ λ ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) P \left(Q | \lambda \right) = \sum_{i=1}^{N} \pi_{i}b_{i}\left ( o_{1} \right )\beta_{1}\left ( i \right ) P(Qλ)=i=1Nπibi(o1)β1(i)

参考

  1. 统计学习方法(第二版)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹤宁

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值