隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列

本文介绍了HMM模型中,如何使用维特比算法求解最可能的隐藏状态序列。通过定义局部状态δ和Ψ,进行动态规划递推,最后回溯得到最优状态序列。并提供了一个具体的例子进行详细解析。
摘要由CSDN通过智能技术生成

HMM最可能隐藏状态序列求解概述

在HMM模型的解码问题中,给定模型λ=(A,B,Π)和观测序列 O = { o 1 , o 2 , . . . o T } O =\{o_1,o_2,...o_T\} O={ o1,o2,...oT},求给定观测序列O条件下,最可能出现的对应的状态序列 I ∗ = { i 1 ∗ , i 2 ∗ , . . . i T ∗ } I^*= \{i_1^*,i_2^*,...i_T^*\} I={ i1,i2,...iT},即P(I∗|O)要最大化。

一个可能的近似解法是求出观测序列O在每个时刻t最可能的隐藏状态i∗t然后得到一个近似的隐藏状态序列 I ∗ = { i 1 ∗ , i 2 ∗ , . . . i T ∗ } I^*= \{i_1^*,i_2^*,...i_T^*\} I={ i1,i2,...iT}。要这样近似求解不难,利用隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率中第五节的定义:在给定模型λ和观测序列O时,在时刻t处于状态qi的概率是γt(i),这个概率可以通过HMM的前向算法与后向算法计算。这样我们有:
i t ∗ = a r g max ⁡ 1 ≤ i ≤ N [ γ t ( i ) ] ,    t = 1 , 2 , . . . T i_t^* = arg \max_{1 \leq i \leq N}[\gamma_t(i)], \; t =1,2,...T it=arg1iNmax[γt(i)],t=1,2,...T
    近似算法很简单,但是却不能保证预测的状态序列是整体是最可能的状态序列,因为预测的状态序列中某些相邻的隐藏状态可能存在转移概率为0的情况。

而维特比算法可以将HMM的状态序列作为一个整体来考虑,避免近似算法的问题,下面我们来看看维特比算法进行HMM解码的方法。

维特比算法概述

维特比算法是一个通用的解码算法,是基于动态规划的求序列最短路径的方法。在文本挖掘的分词原理中我们已经讲到了维特比算法的一些细节。

既然是动态规划算法,那么就需要找到合适的局部状态,以及局部状态的递推公式。在HMM中,维特比算法定义了两个局部状态用于递推。

第一个局部状态是在时刻t隐藏状态为i所有可能的状态转移路径 i 1 , i 2 , . . . i t i_1,i_2,...i_t i1,i2,...it中的概率最大值。记为δt(i):
δ t ( i ) = max ⁡ i 1 , i 2 , . . . i t − 1    P ( i t = i , i 1 , i 2 , . . . i t − 1 , o t , o t − 1 , . . . o 1 ∣ λ ) ,    i = 1 , 2 , . . . N \delta_t(i) = \max_{i_1,i_2,...i_{t-1}}\;P(i_t=i, i_1,i_2,...i_{t-1},o_t,o_{t-1},...o_1|\lambda),\; i =1,2,...N δt(i)=i1,i2,...it1maxP(it=i,i1,i2,...it1,ot,ot1,...o1λ),i=1,2,...N
    由δt(i)的定义可以得到δ的递推表达式:
KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \delta_{t+1}(i…
    第二个局部状态由第一个局部状态递推得到。我们定义在时刻t隐藏状态为i的所有单个状态转移路径 ( i 1 , i 2 , . . . , i t − 1 , i ) (i_1,i_2,...,i_{t-1},i) (i1,i2,...,it1,i)中概率最大的转移路径中第t−1个节点的隐藏状态为Ψt(i),其递推表达式可以表示为:
Ψ t ( i ) = a r g    max ⁡ 1 ≤ j ≤ N    [ δ t − 1 ( j ) a j i ] \Psi_t(i) = arg \; \max_{1 \leq j \leq N}\;[\delta_{t-1}(j)a_{ji}] Ψt(i)=arg1jNmax[δ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值