隐式半马尔可夫模型简述——Hidden semi-Markov Model: My superficial review

本文介绍隐式半马尔可夫模型(HSMM)的基本概念与使用,以及一些个人理解。读者要求有一定隐式马尔可夫模型(HMM)基础。文中采用的符号系统取自附录2。

文章目录

  • 从HMM到HSMM
  • HSMM概述
    • 常用HSMM变体
  • HSMM的推理方法(Inference)
    • HMM的前向/后向算法
    • HSMM的前向/后向算法

从HMM到HSMM

有关隐式马尔可夫模型模型的由来,此处不做过多阐述,只做简单介绍。详细内容读者可参考此文。
给定一个观测序列 o = { o 1 , o 2 , … , o T } o = \{o_{1}, o_{2}, \dots, o_{T}\} o={ o1,o2,,oT},我们假设该观测序列采样自某个不可直接观测的状态序列 s = { s 1 , s 2 , … , s T } s = \{s_{1},s_{2},\dots,s_{T}\} s={ s1,s2,,sT},且 t t t时刻的状态仅取决于 t − 1 t-1 t1时刻的状态,那么我们认为采样的模型属于隐式马尔可夫模型(Hidden Markov Model, HMM)。一个典型HMM的模型参数为: λ ≜ { A , B , π } \lambda\triangleq\{ A, B, \pi \} λ{ A,B,π} 其中

  • A A A状态转移概率矩阵(Transition probabilities): a i j = P ( s t = S j ∣ s t − 1 = S i ) a_{ij} = P(s_{t} = S_{j} | s_{t-1} = S_{i}) aij=P(st=Sjst1=Si)
  • B B B观测概率矩阵(Observation probabilities): b j ( k ) = P ( o t = O k ∣ s t = S j ) b_{j}(k) = P(o_{t} = O_{k} | s_{t} = S_{j} ) bj(k)=P(ot=Okst=Sj)
  • π \pi π初始状态概率向量(Initial state probabilities): π j = P ( s 0 = S j ) \pi_{j} = P(s_{0} = S_{j}) πj=P(s0=Sj)

一般探讨HMM的使用指的是探讨三个问题:

  1. 评价:给定观测序列,评估该序列满足某个HMM的概率。典型的做法是前向、后向算法。
  2. 解码:给定观测序列和一个HMM,找到该观测序列对应的状态序列。通常采用维特比算法。
  3. 训练:给定观测序列,估计对应的HMM的参数。通常采用EM算法。

隐式马尔可夫模型的可用于建模空间、时间上的不确定性。空间上的不确定性由状态间的转移概率建模,时间上的不确定性则与自身转移概率有关( a i i a_{ii} aii)。利用HMM每次预测下一个采样时刻的状态都仅考虑系统当前时刻的状态。然而,一些实际问题中,状态之间的转移并不在一个采样周期内发生。也就是说,状态会保持一段时间。就好比一个智能体从A地依次运动到B、C、D,由于每个地方大小不同,智能体在每个地方运动的时间长短也不同。这种数据的建模就要用到隐式半马尔可夫模型模型(Hidden semi-Markov Model, HSMM),如下图所示:
隐式半马尔可夫模型简述——Hidden semi-Markov Model: My superficial review_第1张图片
每个状态都有一个时长(Duration),且时长不固定。

HSMM概述

HSMM是HMM的扩展,它允许每个状态具有一个可变的时长(variable duration, d d d)。因此,HSMM可以用以建模时间上的不确定性。HSMM与HMM最重要的区别在于HMM每个状态产生一个观测值,而HSMM每个状态产生一系列观测值。
对于一个HSMM,状态的转移并非 s t → s t + 1 s_{t} \to s_{t+1} stst+1,而是 ( s i , d i ) → ( s i + 1 , d i + 1 ) (s_{i},d_{i}) \to (s_{i+1}, d_{i+1}) (si,di)(si+1,di+1)。令状态 i i i 到状态 j j j 的转移概率为: a ( i , d ′ ) ( j , d ) ≜ P [ s [ t + 1 : t + d ] = S j ∣ s [ t − d ′ + 1 , t ] = S i ] s.t.  ∑ j ∈ S ∖ { i } ∑ d ∈ D a ( i , d ′ ) ( j , d ) = 1 a ( i , d ′ ) ( i , d ) = 0 \begin{aligned} &a_{(i,d')(j,d)} \triangleq P[s_{[t+1:t+d]} = S_{j} | s_{[t-d'+1,t]} = S_{i}] \\ \text{s.t. } &\sum_{j\in\mathcal{S}\setminus\{i\}}\sum_{d\in\mathcal{D}}a_{(i,d')(j,d)} = 1 \\ &a_{(i,d')(i,d)} = 0 \end{aligned} s.t. a(i,d)(j,d)P[s[t+1:t+d]=Sjs[td+1,t]=Si]jS{ i}dDa(i,d)(j,d)=1a(i,d)(i,d)=0 从上式可以看出:

  • 使用HSMM时我们不考虑状态内部转移概率(self-transition probabilities),即将矩阵 A A A中对角线元素全部置零。
  • 状态之间的转移发生在采样时刻 t t t ,此时前一个状态结束,后一个状态开启。
  • 后一个状态及其时长,除了与前一个状态本身有关,还与前一个状态的时长有关。举个例子,一个智能体从A地运动到B地,由于A、B两地交界是线而非点,智能体沿着不同的方向运动有可能在两地停留的时间不同。

HSMM的观测概率表示为: b j , d ( o t + 1 : t + d ) ≜ P [ o t + 1 : t + d ∣ s [ t + 1 : t + d ] = S j ] b_{j,d}(o_{t+1:t+d}) \triangleq P[ o_{t+1:t+d} | s_{[t+1:t+d]} = S_{j} ] bj,d(ot+1:t+d)P[ot+1:t+ds[t+1:t+d]=Sj] 也就是说,在状态 j j j 系统会产生 d d d 个观测输出。当然,该概率分布与 t t t 本身选取无关。

HSMM的初始状态概率定义为: π j , d ≜ P [ s [ t − d + 1 : t ] = S j ] , t ≤ 0 , d ∈ D \pi_{j,d} \triangleq P[s_{[t-d+1:t]} = S_{j}],\quad t\leq 0, d\in\mathcal{D} πj,dP[s[td+1:t]=Sj],t0,dD 注意采样不一定是从 t t t 时刻开始的。举个例子,一个智能体开始运动的位置可能是在A地的中间而非A与B的边界。

HSMM的模型参数总结如下: λ = { a ( i , d ′ ) ( j , d ) , b ( j , d ) ( o k 1 : k d ) , π j , d } \lambda = \{a_{(i,d')(j,d)}, b_{(j,d)}(o_{k1:kd}), \pi_{j,d}\} λ={ a(i,d)(j,d),b(j,d)(ok1:kd),πj,d}

常用HSMM变体

从前述内容可以看出,通用HSMM模型参数较多,十分复杂。使用时,我们可以针对特定的问题对HSMM进行参数简化。下面介绍几种常见简化模型。

  • 假设状态时长与前一个状态无关,那么状态转移概率可简化为: a ( i , d ′ ) j ≜ P [ s [ t + 1 = S j ∣ s [ t − d ′ + 1 : t ] = S i ] p j ( d ) ≜ P [ s t + 1 : t + d ] = S j ∣ s [ t + 1 = S j ] a ( i , d ′ ) ( j , d ) = a ( i , d ′ ) j p j ( d ) \begin{aligned} a_{(i,d')j} &\triangleq P[s_{[t+1} = S_{j} | s_{[t-d'+1:t]} = S_{i}] \\ p_{j}(d) &\triangleq P[s_{t+1:t+d]} = S_{j} | s_{[t+1} = S_{j}] \\ a_{(i,d')(j,d)} &=a_{(i,d')j}p_{j}(d) \end{aligned} a(i,d)jpj(d)a(i,d)(j,d)P[s[t+1=Sjs[td+1:t]=Si]P[st+1:t+d]=Sjs[t+1=Sj]=a(i,d)jpj(d)前一个状态 i i i持续时长 d ′ d' d的概率乘以后一个状态 j j j时长为 d d d的概率。
  • 假设状态转移与前一个状态的时长无关,那么状态转移概率可简化为: a i ( j , d ) ≜ P [ s [ t + 1 : t + d ] = S j ∣ s t ] = S i ] a ( i , d ′ ) ( j , d ) = a i ( j , d ) \begin{aligned} a_{i(j,d)} &\triangleq P[s_{[t+1:t+d]} = S_{j} | s_{t]} = S_{i}] \\ a_{(i,d')(j,d)} &=a_{i(j,d)} \end{aligned} ai(j,d)a(i,d)(j,d)P[s[t+1:t+d]=Sjst]=Si]=ai(j,d)前一个状态 i i i t t t时刻转移到后一个状态 j j j且状态 j j j时长为 d d d的概率
  • 假设状态与前一个状态的时长无关,且当前状态时长仅与当前状态有关,那么状态转移概率可简化为: a i j ≜ P [ s [ t + 1 = S j ∣ s t ] = S i ] a ( i , d ′ ) ( j , d ) = a i j p j ( d ) \begin{aligned} a_{ij} &\triangleq P[s_{[t+1} = S_{j} | s_{t]} = S_{i}] \\ a_{(i,d')(j,d)} &=a_{ij}p_{j}(d) \end{aligned} aija(i,d)(j,d)P[s[t+1=Sjst]=Si]=aijpj(d) 即前一个状态 i i i转移到后一个状态 j j j的概率乘以状态 j j j时长为 d d d的概率

HSMM的推理方法(Inference)

基于HSMM的推理方法最基本的就是前向/后向(Forward/Backward algorithm)算法。该方法可用于观测序列的评价。为了更直接展示HSMM推理的算法特征,我们将基于HSMM的前向/后向算法与基于HMM的前向/后向算法加以对比。HMM的前向后向算法更详细推导参考此文。

HMM的前向/后向算法

先回顾一下HMM的前向算法。定义前向变量为: α t ( j ) = P [ s t = S j , o 1 : t ∣ λ ] \alpha_{t}(j) = P[s_{t} = S_{j}, o_{1:t} \vert \lambda] αt(j)=P[st=Sj,o1:tλ] 即状态序列 o 1 : t o_{1:t} o1:t中时刻 t t t的状态为 j j j的概率。那么 t = 1 , α 1 ( j ) = π j b j ( o 1 ) t = 2 , α 2 ( j ) = [ ∑ i α 1 ( i ) a i j ] b j ( o 2 ) t = 3 , α 3 ( j ) = [ ∑ i α 2 ( i ) a i j ] b j ( o 3 ) ⋯ ⋯ t = T , α T ( j ) = [ ∑ i α T − 1 ( i ) a i j ] b j ( o T ) \begin{aligned} &t= 1,\quad \alpha_{1}(j) = \pi_{j}b_{j}(o_{1}) \\ &t = 2,\quad \alpha_{2}(j) = \left[ \sum_{i}\alpha_{1}(i)a_{ij} \right]b_{j}(o_{2}) \\ &t=3,\quad \alpha_{3}(j) = \left[ \sum_{i}\alpha_{2}(i)a_{ij} \right]b_{j}(o_{3}) \\ &\cdots \cdots \\ &t=T,\quad \alpha_{T}(j) = \left[ \sum_{i}\alpha_{T-1}(i)a_{ij} \right]b_{j}(o_{T}) \end{aligned} t=1,α1(j)=πjbj(o1)t=2,α2(j)=[iα1(i)aij]bj(o2)t=3,α3(j)=[iα2(i)aij]bj(o3)t=T,αT(j)=[iαT1(i)aij]bj(oT) 最终 P ( o ∣ λ ) = ∑ i α T ( i ) P(o|\lambda) = \sum_{i}\alpha_{T}(i) P(oλ)=iαT(i) 前向算法利用了马尔可夫特性和局部计算避免重复计算。

下面看HMM的后向算法。定义后向变量为: β t ( j ) = P [ o t + 1 : T | s t = S j , λ ] \beta_{t}(j) = P\left[ o_{t+1:T} \middle\vert s_{t}=S_{j},\lambda \right] βt(j)=P[ot+1:Tst=Sj,λ] t t t时刻状态为 j j j时后续观测序列为 o t + 1 : T o_{t+1:T} ot+1:T的概率。那么 t = T , β T ( j ) = 1 t = T − 1 , β T − 1 ( j ) = ∑ i a i j b i ( o T ) β T ( i ) t = T − 2 , β T − 2 ( j ) = ∑ i a i j b i ( o T − 1 ) β T − 1 ( i ) ⋯ ⋯ t = 1 , β 1 ( j ) = ∑ i a i j b i ( o 2 ) β 2 ( j ) \begin{aligned} &t = T,\quad \beta_{T}(j) = 1 \\ &t=T-1,\quad \beta_{T-1}(j) = \sum_{i}a_{ij}b_{i}(o_{T})\beta_{T}(i) \\ &t = T-2, \quad \beta_{T-2}(j) = \sum_{i}a_{ij}b_{i}(o_{T-1})\beta_{T-1}(i) \\ &\cdots \cdots \\ &t=1,\quad \beta_{1}(j) = \sum_{i}a_{ij}b_{i}(o_{2})\beta_{2}(j) \end{aligned} t=T,βT(j)=1t=T1,βT1(j)=iaijbi(oT)βT(i)t=T2,βT2(j)=iaijbi(oT1)βT1(i)t=1,β1(j)=iaijbi(o2)β2(j) 最终 P ( o | λ ) = ∑ i π i b i ( o 1 ) β 1 ( i ) P\left( o \middle\vert \lambda \right) = \sum_{i}\pi_{i}b_{i}(o_{1})\beta_{1}(i) P(oλ)=iπibi(o1)β1(i) 后向算法与前向算法的计算复杂度相同。

HSMM的前向/后向算法

HSMM的前后向算法相对比较复杂,但是主要变化在于时间序列的选取。HSMM的前向/后向算法仅探讨状态转移时刻的观测序列评价。后面的内容会尽量保持与HMM部分有统一的符号系统。

定义HSMM的前向变量为: α t ( j , d ) = P [ s [ t − d + 1 : t ] = S j , o 1 : t | λ ] \alpha_{t}(j,d) = P\left[ s_{[t-d+1:t]} = S_{j}, o_{1:t} \middle\vert \lambda \right] αt(j,d)=P[s[td+1:t]=Sj,o1:tλ] 注意该变量与时长 d d d 有关,即观测序列 o 1 : t o_{1:t} o1:t在时刻 [ t − d + 1 : t ] [t-d+1:t] [td+1:t]的状态为 j j j的概率。那么其递推公式为: α t ( j , d ) = ∑ i ∈ S ∖ { j } ∑ d ′ α t − d ( i , d ′ ) a ( i , d ′ ) ( j , d ) b j , d ( o t − d + 1 : t ) \alpha_{t}(j,d) = \sum_{i\in\mathcal{S}\setminus \{j\}}\sum_{d'}\alpha_{t-d}(i,d') a_{(i,d')(j,d)} b_{j,d}(o_{t-d+1:t}) αt(j,d)=iS{ j}dαtd(i,d)a(i,d)(j,d)bj,d(otd+1:t) 由于HSMM的状态转移概率中包含状态和时长两个随机变量,因此前向改变递推时要考虑两个边缘分布。不要忘记在HSMM中我们始终假设状态自转移概率为零

类似的,定义后向变量为: β t ( j , d ) = P [ o t + 1 : T | s [ t − d + 1 : t ] = S j , λ ] \beta_{t}(j,d) = P\left[ o_{t+1:T} \middle\vert s_{[t-d+1:t]} = S_{j},\lambda \right] βt(j,d)=P[ot+1:Ts[td+1:t]=Sj,λ] 即时刻 [ t − d + 1 : t ] [t-d+1:t] [td+1:t]的状态为 j j j且后续观测序列为 o t + 1 : T o_{t+1:T} ot+1:T的概率。 其递推公式为: β t ( j , d ) = ∑ i ∈ S ∖ { j } ∑ d ′ a ( j , d ) ( i , d ′ ) b i , d ′ ( o t + 1 : t + d ′ ) β t + d ′ ( i , d ′ ) \beta_{t}(j,d) = \sum_{i\in\mathcal{S}\setminus \{j\}}\sum_{d'} a_{(j,d)(i,d')} b_{i,d'}(o_{t+1:t+d'})\beta_{t+d'}(i,d') βt(j,d)=iS{ j}da(j,d)(i,d)bi,d(ot+1:t+d)βt+d(i,d)

需要注意的是,起始与终止时刻下,观测序列的产生并不一定依照上述前向/后向变量;就好比一个智能体起始时刻下位于A地的中间某处,因此运动到B地的耗时将经过整个A地的时长。由于HSMM始末时刻的特殊性,进行前向/后向推理时,需要对时刻进行假设:

  • 通用假设:假设随机过程开始于 − ∞ -\infty ,终止于 + ∞ +\infty +,那么观测时间段 t = [ 1 : T ] t=[1:T] t=[1:T]可以被认为是系统运动过程中的任意一段。既然是任意一段,那么我们可以认为时刻 [ 1 , T ] [1,T] [1,T]之外的部分模型满足 b j , d ( ⋅ ) = 1 b_{j,d}(\cdot) = 1 bj,d()=1
  • 简化假设:简单起见,我们就假设随机过程开始于 1 1 1,终止于 T T T。也就是说,我们不考虑始末位置的不确定问题,该假设因其简单而被广泛使用。此时的前向变量 α 0 ( j , d ) = π j , d , d ∈ D α τ ( j , d ) = 0 , τ < 0 , d ∈ D \begin{aligned} &\alpha_{0}(j,d) = \pi_{j,d}, \quad d\in\mathcal{D} \\ &\alpha_{\tau}(j,d) = 0,\quad \tau<0, d\in\mathcal{D} \end{aligned} α0(j,d)=πj,d,dDατ(j,d)=0,τ<0,dD 后向变量 β T ( i , d ) = 1 , d ∈ D β τ ( i , d ) = 0 , τ > T , d ∈ D \begin{aligned} &\beta_{T}(i,d) = 1, d\in\mathcal{D} \\ &\beta_{\tau}(i,d) = 0, \tau > T, d\in\mathcal{D} \end{aligned} βT(i,d)=1,dDβτ(i,d)=0,τ>T,dD 这样一来,我们也可认为起始状态持续时间恰好为 d d d,初始概率 π j , d ′ = P [ s [ 1 : d ] = S j | λ ] \pi_{j,d}' = P\left[ s_{[1:d]} = S_{j} \middle\vert \lambda \right] πj,d=P[s[1:d]=Sjλ]。那么 α d ( j , d ) = π j , d ′ b j , d ( o 1 : d ) , ∀ d ∈ D \alpha_{d}(j,d) = \pi_{j,d}'b_{j,d}(o_{1:d}), \forall d\in\mathcal{D} αd(j,d)=πj,dbj,d(o1:d),dD

未完待续……


1 感谢 李航——《统计学习方法》第2版
2 Thanks: Shun-Zheng Yu, Hidden semi-Markov models, Artifical Intelligence, 2020.

你可能感兴趣的:(Machine,Learning,概率论)