隐马尔科夫模型(HMM):状态序列预测

本文介绍了隐马尔科夫模型(HMM)中预测观测序列最可能出现的状态序列的两种方法。一是采用贪心算法,独立考虑每个时刻的最大概率状态,但可能产生非法状态转移;二是利用维特比算法,通过动态规划找到全局最优路径,确保状态转移的合理性。详细阐述了两种算法的状态转移方程及推论过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

给定模型参数和观测序列,预测令观测序列出现概率最大的状态序列时,有两种解决思路:一种是采用贪心思想的近似算法,另一种是采用动态规划思想的维特比算法。

近似算法

这是一种采用贪心算法,它在给定模型参数和观测序列下,独立考虑每个时刻出现概率最大的状态 q i q_i qi 作为该时刻状态的推论 s t ∗ = q i s_t^* = q_i st=qi,从而得到一个状态序列的推论 S ∗ = ( s 1 ∗ , s 2 ∗ , ⋯   , s T ∗ ) S^* = (s_1^*, s_2^*, \cdots, s_T^*) S=(s1,s2,,sT)

在给定模型参数和观测序列下, t t t 时刻处于状态 q i q_i qi 的概率为 γ t ( q i ) \gamma_t(q_i) γt(qi)1,所以 t t t 时刻状态的推论 s t ∗ s_t^* st 为:
s t ∗ = arg max ⁡ 1 ≤ i ≤ N [ γ t ( q i ) ] s_t^* = \argmax_{1 \le i \le N} [\gamma_t(q_i)] st=1iNargmax[γt(qi)]状态序列的推论为:

S ∗ = ( arg max ⁡ 1 ≤ i ≤ N [ γ 1 ( q i ) ] , arg max ⁡ 1 ≤ i ≤ N [ γ 2 ( q i ) ] , ⋯   , arg max ⁡ 1 ≤ i ≤ N [ γ T ( q i ) ] ) S^* = (\argmax_{1 \le i \le N} [\gamma_1(q_i)], \argmax_{1 \le i \le N} [\gamma_2(q_i)], \cdots, \argmax_{1 \le i \le N} [\gamma_T(q_i)]) S=(1iNargmax[γ1(qi)],1iNargmax[γ2(qi)],,1iNargmax[γT(qi)])
近似算法计算简单 ,但不能保证取得全局最优解,因为此方法推论出的状态序列中可能存在状态转移概率为0的相邻状态(即对某些 i , j ,   a i j = 0 i,j, \ a_{ij}=0 i,j, aij=0),所以有些单独看出现概率很高的状态,实际在该时刻是不可能发生的。尽管如此,近似算法仍然是十分有用的。

维特比算法

维特比算法用动态规划(dynamic programming)求概率最大路径(最优路径)的思想来推论HMM模型的状态序列,此时每条路径对应一种可能状态序列。

给定模型参数,定义到 t t t 时刻部分观测序列为 o 1 , ⋯   , o t o_1, \cdots, o_t o1,,ot 且部分状态序列为 s 1 , ⋯   , s t s_1, \cdots, s_t s1,,st 的概率为路径权重,记作:
δ t ( q i ) = P ( s 1 , ⋯   , s t = q i , o 1 , ⋯   , o t ∣ λ ) (1) \delta _t(q_i) = P(s_1, \cdots, s_t = q_i, o_1, \cdots, o_t | \lambda) \tag{1} δt(qi)=P(s1,,st=qi,o1,,otλ)(1)

所以,状态转移方程可表示为:

δ t + 1 ( q i ) = max ⁡ 1 ≤ j ≤ N P ( s 1 , ⋯   , s t = q j , s t + 1 = q i , o 1 , ⋯   , o t , o t + 1 ∣ λ ) (2) \delta _{t+1}(q_i) = \max_{1 \le j \le N} P(s_1, \cdots, s_t = q_j, s_{t+1} = q_i, o_1, \cdots, o_t, o_{t+1} | \lambda) \tag{2} δt+1(qi)=1jNmaxP(s1,,st=qj,st+1=qi,o1,,ot,ot+1λ)(2)

根据HMM模型的齐次马尔科夫性假设和观测独立性假设, 式 ( 2 ) 式(2) (2)中的条件概率

P ( s 1 , ⋯   , s t = q j , s t + 1 = q i , o 1 , ⋯   , o t , o t + 1 ∣ λ ) = P ( s 1 , ⋯   , s t = q j , o 1 , ⋯   , o t ∣ λ ) P ( s t + 1 = q i ∣ s t = q j ) P ( o t + 1 ∣ s t + 1 = q i ) P(s_1, \cdots, s_t = q_j, s_{t+1} = q_i, o_1, \cdots, o_t, o_{t+1} | \lambda) = P(s_1, \cdots, s_t = q_j, o_1, \cdots, o_t| \lambda)P(s_{t+1} = q_i | s_t = q_j)P(o_{t+1} | s_{t+1} = q_i) P(s1,,st=qj,st+1=qi,o1,,ot,ot+1λ)=P(s1,,st=qj,o1,,otλ)P(st+1=qist=qj)P(ot+1st+1=qi)
所以状态转移方程可改写为:

δ t + 1 ( q i ) = max ⁡ 1 ≤ j ≤ N   δ t ( q j ) a j i b i ( o t + 1 ) ,       t = 1 , ⋯   , T − 1 (3) \delta _{t+1}(q_i) = \max_{1 \le j \le N} \ \delta _t(q_j)a_{ji}b_i(o_{t+1}), \ \ \ \ \ t=1,\cdots,T-1 \tag{3} δt+1(qi)=1jNmax δt(qj)ajibi(ot+1),     t=1,,T1(3)

初始条件为:当 t = 1 t=1 t=1 时,
δ 1 ( q i ) = π i b i ( o 1 ) (4) \delta _1(q_i) = \pi_ib_i(o_{1}) \tag{4} δ1(qi)=πibi(o1)(4)

综上,可将所有情况的状态转移方程统一写成如下形式:

δ t ( q i ) = { π i b i ( o 1 ) ,      t = 1 max ⁡ 1 ≤ j ≤ N   δ t − 1 ( q j ) a j i b i ( o t ) ,      t = 2 , 3 , ⋯   , T (5) \delta _t(q_i) = \begin{cases} \pi_ib_i(o_{1}), \ \ \ \ t=1 \\ \\ \max_{1 \le j \le N} \ \delta _{t-1}(q_j)a_{ji}b_i(o_{t}), \ \ \ \ t=2, 3, \cdots, T \end{cases} \tag{5} δt(qi)=πibi(o1),    t=1max1jN δt1(qj)ajibi(ot),    t=2,3,,T(5)
并由此得出维特比算法状态序列的推论:

S ∗ = ( s 1 ∗ , s 2 ∗ , ⋯   , s T ∗ ) = arg max ⁡ 1 ≤ i ≤ N   δ T ( ∗ ∗ q i ∗ ∗ ) (6) S^* = (s_1^*, s_2^*, \cdots, s_T^*) = \argmax_{1 \le i \le N} \ \delta _T(**q_i**) \tag{6} S=(s1,s2,,sT)=1iNargmax δT(qi)(6)


  1. 具体推导请详见作者文章:隐马尔科夫模型(HMM):计算观测序列的出现概率 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值