隐马尔科夫模型(Hidden Markov Model, HMM)
1.生成模型,对 p(x,y) p ( x , y ) 进行建模
2.符号说明
SYMBOLS | meanings |
---|---|
Q{q1,q2,⋯,qn} Q { q 1 , q 2 , ⋯ , q n } | 可能的状态集合 |
V{v1,v2,⋯,vn} V { v 1 , v 2 , ⋯ , v n } | 可能的观测集合 |
I{i1,i2,⋯,in} I { i 1 , i 2 , ⋯ , i n } | 真实的状态集合 |
O{o1,o2,⋯,on} O { o 1 , o 2 , ⋯ , o n } | 真实的观测集合 |
A=[aij]N∗N A = [ a i j ] N ∗ N | 状态转移矩阵 |
B=[bj(k)]N∗M B = [ b j ( k ) ] N ∗ M | 观测概率矩阵 |
πi=p(i1=qi) π i = p ( i 1 = q i ) | 初始状态概率向量 |
其中 aij=p(it+1=qj|it=qi),bj(k)=p(ot=vk|it=qj) a i j = p ( i t + 1 = q j | i t = q i ) , b j ( k ) = p ( o t = v k | i t = q j ) .
3.模型假设:
①齐次马尔科夫假设:任意时刻,当前状态只与上一个状态有关。
②观测独立性假设:任意时刻,观测仅依赖于当前状态。
4.问题
**①估计问题(Evaluation)**
给定模型$\lambda = (A,B,\pi)$和观测序列$O$,计算$O$出现的概率$p(O|\lambda)$.
**解法:**
- 直接计算(注意这里 λ λ 是一个固定参数,而不是一个随机变量,正常应该写成分号?)
但是由于$I$的组合数目太多,这个计算量非常大,其复杂度为$O(N^T)$。
前向算法
定义 αt(i)=p(o1,o2,⋯,ot,it=qi|λ) α t ( i ) = p ( o 1 , o 2 , ⋯ , o t , i t = q i | λ ) ,即在t时刻观测序列为 o1,o2,⋯,ot o 1 , o 2 , ⋯ , o t ,状态为 qi q i 的概率,称其为前向概率。
则有:
αt+1(i)=∑j=1Nαt(j)ajibi(ot+1) α t + 1 ( i ) = ∑ j = 1 N α t ( j ) a j i b i ( o t + 1 )α1(i)=πibi(o1) α 1 ( i ) = π i b i ( o 1 )最终:
p(O|λ)=∑i=1NαT(i) p ( O | λ ) = ∑ i = 1 N α T ( i )
最终算法转变为动态规划,算法复杂度为 O(T∗N2) O ( T ∗ N 2 ) .后向算法
定义 βt(i)=p(ot+1,ot+2,⋯,oT,it=qi|λ) β t ( i ) = p ( o t + 1 , o t + 2 , ⋯ , o T , i t = q i | λ ) ,即在t时刻,其后的观测序列为 ot+1,ot+2,⋯,oT o t + 1 , o t + 2 , ⋯ , o T ,状态为 qi q i 的概率,称其为后向概率。
则有:
βt(i)=∑j=1Naijbj(ot+1)βt+1(j) β t ( i ) = ∑ j = 1 N a i j b j ( o t + 1 ) β t + 1 ( j )βT(i)=1 β T ( i ) = 1最终:
p(O|λ)=∑i=1Nπibi(o1)β1(i) p ( O | λ ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i )
最终算法转变为动态规划,算法复杂度为 O(T∗N2) O ( T ∗ N 2 ) .**② 学习问题(Learning)** 学习模型参数,分为两种情况:
{A.B.知道观测序列和对应的状态序列仅知道观测序列 { A . 知道观测序列和对应的状态序列 B . 仅知道观测序列
解法:Case A.
极大似然估计
aij^=Aij∑jAij a i j ^ = A i j ∑ j A i jbj(k)^=Bjk∑kBjk b j ( k ) ^ = B j k ∑ k B j kAij A i j 是t时刻处于状态 i i ,在t+1时刻转移到状态的频数。
Bjk B j k 为状态j观测到k的频数。
Case B.
EM算法估计,状态序列为隐变量。
③预测算法(解码问题,Decoding)
给定模型$\lambda$和观测预测$O$,求状态序列。 **解法:**
近似算法
在t时刻处于状态i的概率是:
γt(i)=p(it=qi|O,λ)=p(it=qi,O|λ)p(O|λ)=αt(i)βt(i)∑jαt(j)βt(j) γ t ( i ) = p ( i t = q i | O , λ ) = p ( i t = q i , O | λ ) p ( O | λ ) = α t ( i ) β t ( i ) ∑ j α t ( j ) β t ( j )i∗t=argmax1≤i≤N[γt(i)] i t ∗ = arg max 1 ≤ i ≤ N [ γ t ( i ) ]最终得到的状态序列为 I∗=(i∗1,i∗2,⋯,i∗T) I ∗ = ( i 1 ∗ , i 2 ∗ , ⋯ , i T ∗ ) .
缺点:不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。
维特比算法(动态规划算法的一种)
即记录到当前为止,观测序列最有可能的状态序列,然后回溯。称为最大概率路径。
记录的表结构为 T∗N T ∗ N 。T为观测序列长度,N为状态可能数目。