本文介绍隐式半马尔可夫模型(HSMM)的基本概念与使用,以及一些个人理解。读者要求有一定隐式马尔可夫模型(HMM)基础。文中采用的符号系统取自附录2。
有关隐式马尔可夫模型模型的由来,此处不做过多阐述,只做简单介绍。详细内容读者可参考此文。
给定一个观测序列 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 t−1时刻的状态,那么我们认为采样的模型属于隐式马尔可夫模型(Hidden Markov Model, HMM)。一个典型HMM的模型参数为: λ ≜ { A , B , π } \lambda\triangleq\{ A, B, \pi \} λ≜{ A,B,π} 其中
一般探讨HMM的使用指的是探讨三个问题:
隐式马尔可夫模型的可用于建模空间、时间上的不确定性。空间上的不确定性由状态间的转移概率建模,时间上的不确定性则与自身转移概率有关( a i i a_{ii} aii)。利用HMM每次预测下一个采样时刻的状态都仅考虑系统当前时刻的状态。然而,一些实际问题中,状态之间的转移并不在一个采样周期内发生。也就是说,状态会保持一段时间。就好比一个智能体从A地依次运动到B、C、D,由于每个地方大小不同,智能体在每个地方运动的时间长短也不同。这种数据的建模就要用到隐式半马尔可夫模型模型(Hidden semi-Markov Model, HSMM),如下图所示:
每个状态都有一个时长(Duration),且时长不固定。
HSMM是HMM的扩展,它允许每个状态具有一个可变的时长(variable duration, d d d)。因此,HSMM可以用以建模时间上的不确定性。HSMM与HMM最重要的区别在于HMM每个状态产生一个观测值,而HSMM每个状态产生一系列观测值。
对于一个HSMM,状态的转移并非 s t → s t + 1 s_{t} \to s_{t+1} st→st+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]=Sj∣s[t−d′+1,t]=Si]j∈S∖{ i}∑d∈D∑a(i,d′)(j,d)=1a(i,d′)(i,d)=0 从上式可以看出:
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+d∣s[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,d≜P[s[t−d+1:t]=Sj],t≤0,d∈D 注意采样不一定是从 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的推理方法最基本的就是前向/后向(Forward/Backward algorithm)算法。该方法可用于观测序列的评价。为了更直接展示HSMM推理的算法特征,我们将基于HSMM的前向/后向算法与基于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∑αT−1(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:T∣st=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=T−1,βT−1(j)=i∑aijbi(oT)βT(i)t=T−2,βT−2(j)=i∑aijbi(oT−1)βT−1(i)⋯⋯t=1,β1(j)=i∑aijbi(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的前向/后向算法仅探讨状态转移时刻的观测序列评价。后面的内容会尽量保持与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[t−d+1:t]=Sj,o1:t∣∣λ] 注意该变量与时长 d d d 有关,即观测序列 o 1 : t o_{1:t} o1:t在时刻 [ t − d + 1 : t ] [t-d+1:t] [t−d+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)=i∈S∖{ j}∑d′∑αt−d(i,d′)a(i,d′)(j,d)bj,d(ot−d+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:T∣∣s[t−d+1:t]=Sj,λ] 即时刻 [ t − d + 1 : t ] [t-d+1:t] [t−d+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)=i∈S∖{ j}∑d′∑a(j,d)(i,d′)bi,d′(ot+1:t+d′)βt+d′(i,d′)
需要注意的是,起始与终止时刻下,观测序列的产生并不一定依照上述前向/后向变量;就好比一个智能体起始时刻下位于A地的中间某处,因此运动到B地的耗时将经过整个A地的时长。由于HSMM始末时刻的特殊性,进行前向/后向推理时,需要对时刻进行假设:
未完待续……
1 感谢 李航——《统计学习方法》第2版
2 Thanks: Shun-Zheng Yu, Hidden semi-Markov models, Artifical Intelligence, 2020.