Machine Learning Series No.9 -- HMM(Hidden Markov Model)

隐马尔科夫模型(Hidden Markov Model, HMM)

1.生成模型,对 p(x,y) p ( x , y ) 进行建模
2.符号说明
SYMBOLSmeanings
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]NN A = [ a i j ] N ∗ N 状态转移矩阵
B=[bj(k)]NM 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.模型假设:
①齐次马尔科夫假设:任意时刻,当前状态只与上一个状态有关。

t,p(it|it1,ot1,,i1,o1)=p(it|it1) ∀ t , p ( i t | i t − 1 , o t − 1 , ⋯ , i 1 , o 1 ) = p ( i t | i t − 1 )

②观测独立性假设:任意时刻,观测仅依赖于当前状态。
t,p(ot|it,ot,it1,ot1,,i1,o1)=p(ot|it) ∀ t , p ( o t | i t , o t , i t − 1 , o t − 1 , ⋯ , i 1 , o 1 ) = p ( o t | i t )

4.问题
**①估计问题(Evaluation)**

    给定模型$\lambda = (A,B,\pi)$和观测序列$O$,计算$O$出现的概率$p(O|\lambda)$.

**解法:**
  • 直接计算(注意这里 λ λ 是一个固定参数,而不是一个随机变量,正常应该写成分号?)

p(O|λ)=Ip(O,I|λ)=Ip(O|I,λ)p(I|λ) p ( O | λ ) = ∑ I p ( O , I | λ ) = ∑ I p ( O | I , λ ) p ( I | λ )

    但是由于$I$的组合数目太多,这个计算量非常大,其复杂度为$O(N^T)$。

p(O|I,λ)=bi1(o1)bi2(o2)bit(ot) p ( O | I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) ⋯ b i t ( o t )

p(I|λ)=πi1ai1,i2ai2,i3ait1,it p ( I | λ ) = π i 1 a i 1 , i 2 a i 2 , i 3 ⋯ a i t − 1 , i t

p(O,I|λ)=i1,i2,,itπi1bi1(o1)ai1,i2bi2(o2)ai2,i3bit1(ot1)ait1,itbit(ot) p ( O , I | λ ) = ∑ i 1 , i 2 , ⋯ , i t π i 1 b i 1 ( o 1 ) a i 1 , i 2 b i 2 ( o 2 ) a i 2 , i 3 ⋯ b i t − 1 ( o t − 1 ) a i t − 1 , i t b i t ( o 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(TN2) 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(TN2) O ( T ∗ N 2 ) .

    **② 学习问题(Learning)**
    
    学习模型参数,分为两种情况:
    

    {A.B. { A . 知道观测序列和对应的状态序列 B . 仅知道观测序列

    解法:

  • Case A.

    极大似然估计

    aij^=AijjAij a i j ^ = A i j ∑ j A i j

    bj(k)^=BjkkBjk b j ( k ) ^ = B j k ∑ k B j k

    Aij A i j 是t时刻处于状态 i i ,在t+1时刻转移到状态j的频数。

    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 )

    it=argmax1iN[γt(i)] i t ∗ = arg ⁡ max 1 ≤ i ≤ N [ γ t ( i ) ]

    最终得到的状态序列为 I=(i1,i2,,iT) I ∗ = ( i 1 ∗ , i 2 ∗ , ⋯ , i T ∗ ) .

    缺点:不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。

  • 维特比算法(动态规划算法的一种)

    即记录到当前为止,观测序列最有可能的状态序列,然后回溯。称为最大概率路径。

    记录的表结构为 TN T ∗ N 。T为观测序列长度,N为状态可能数目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值