人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列

半世苍凉 提交于 2019-12-06 01:43:08

人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型
人工智能里的数学修炼 | 隐马尔可夫模型:前向后向算法
人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列
人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数
已经较为清楚的讲述了隐马尔可夫模型及其在实际应用的三个问题:1. 生成观察序列概率, 2. 预测问题, 3. 模型参数学习问题。

这里介绍求解第二个预测问题的维特比算法,这里举个例子回归一下预测问题
在语音识别等任务中,观测值为语音信号,隐藏状态为文字,目标就是根据观测信号来推断最有可能的状态序列

一、维特比算法的可递推局部状态

维特比算法是一种基于动态规划的求序列最短路径的方法,它通过确定一个合适的局部状态,利用局部状态进行递推,实现问题的求解。
在隐马尔可夫模型中,维特比算法定义了两个局部状态进行递推。
第一个局部状态δt(i)\delta_{t}(i)用于记录在时刻tt隐藏状态为ii所有可能的状态转移路径ii,i2,...,iti_{i},i_{2},...,i_{t}中的概率最大值,记为
δt+1(i)=max1jN[δt(j)aji]bi(ot+1)\delta_{t+1}(i)=max_{1\leq j\leq N}[\delta_{t}(j)a_{ji}]b_{i}(o_{t+1})这里ajia_{ji}表示由状态j向状态i的状态转移概率,bi(ot+1)b_{i}(o_{t+1})表示由隐藏状态ii输出观测状态ot+1o_{t+1}的概率。
第二个局部状态Ψt(i)\Psi _{t}(i)是用于记录在每个时刻最可能的隐藏状态,记为
Ψt(i)=argmax1jN[δt1(j)aji]\Psi _{t}(i)=argmax_{1\leq j\leq N}[\delta _{t-1}(j)a_{ji}]有了这两个可递推的局部状态,我们可以从初始时刻递推到时刻TT,得到过程中Ψt(i)\Psi _{t}(i)依次记录的最优隐藏状态序列。

二、维特比算法的递推流程

已知: 隐马尔可夫模型λ={A,B,π}\lambda=\{A,B,\pi\},观测序列O=(o1,o2,...,oT)O=(o_{1},o_{2},...,o_{T})
输出:最有可能的隐藏状态序列I=i1,i2,...,iTI^{*}={i^{*}_{1},i^{*}_{2},...,i^{*}_{T}}

  1. 初始化局部状态:
    δ1(i)=πibi(o1),i=1,2,...,N\delta_{1}(i)=\pi_{i}b_{i}(o_{1}),i=1,2,...,N其中πi\pi_{i}表示初始隐藏状态为ii的概率, bi(o1)b_{i}(o_{1})表示隐藏状态为ii,输出观测状态为o1o_{1}的概率
  2. 进行动态规划的递推,t=2,3,...,Tt=2,3,...,T:
    δt(i)=max1jN[δt1(j)aji]bi(ot),i=1,2,...,N\delta_{t}(i)=max_{1\leq j \leq N}[\delta_{t-1}(j)a_{ji}]b_{i}(o_{t}),i=1,2,...,NΨt(i)=argmax1jN[δt1(j)aji],i=1,2,...,N\Psi _{t}(i)=argmax_{1\leq j\leq N}[\delta _{t-1}(j)a_{ji}],i=1,2,...,N
  3. 计算TT时刻最大的δT(i)\delta_{T}(i), 即为最可能的隐藏状态序列出现的概率,同时计算Ψt(i)\Psi_{t}(i)时刻最大的δT(i)\delta_{T}(i), 即为时刻TT最可能的隐藏状态
    P=max1jNδT(i)P^{*}=max_{1\leq j \leq N}\delta_{T}(i) iT=argmax1jN[δT(i)]i_{T}^{*}=argmax_{1\leq j \leq N}[\delta_{T}(i)]
  4. 局部状态Ψt(i)\Psi _{t}(i)记录的序列,记为最可能的隐藏状态序列, 对于t=T1,T2,....,1t=T-1,T-2,....,1:
    it=Ψt+1(it+1)i_{t}^{*}=\Psi_{t+1}(i^{*}_{t+1})
    最终可以得到最有可能的隐藏状态序列I=i1,i2,...,iTI^{*}={i^{*}_{1},i^{*}_{2},...,i^{*}_{T}}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!