人工智能里的数学修炼 | 隐马尔可夫模型:前向后向算法

99封情书 提交于 2019-12-06 01:42:02

人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型
人工智能里的数学修炼 | 隐马尔可夫模型:前向后向算法
人工智能里的数学修炼 | 隐马尔可夫模型 : 维特比(Viterbi)算法解码隐藏状态序列
人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数
已经较为清楚的讲述了隐马尔可夫模型及其在实际应用的三个问题:1. 生成观察序列概率, 2. 预测问题, 3. 模型参数学习问题。
这里介绍求解第一个生成观察序列概率的前向后向算法,前向后向算法实际上是两个算法的合成,即前向算法和后向算法,二者相似,这里主要以前向算法为例进行介绍

一、前向算法

前向算法针对的是隐马尔可夫模型的概率计算问题,即给定一个模型参数已知的隐马尔可夫模型(HMM)和一组观测序列x1,x2,...,xnx_{1},x_{2},...,x_{n},求HMM生成这组观测序列的概率

前向算法定义了一个“前向概率”的定义,即:
给定隐马尔可夫模型λ\lambda,定义1到t时刻部分的观测序列为x1,x2,...,xtx_{1},x_{2},...,x_{t},则t时刻的状态xtx_{t}ii的概率qiq_{i}为前向概率, 记做
ct(i)=P(x1,x2,...,xt,ii=qiλ)c_{t}(i)=P(x_{1},x_{2},...,x_{t},i_{i}=q_{i}|\lambda)

定义说明:由于每个状态生成一个观测变量,那么在tt时刻就会生成tt个观测变量,在tt时刻处于状态ii的概率就是前向概率。状态ii的的取值范围为o1,o2,...,oMo_{1},o_{2},...,o_{M},详见 人工智能里的数学修炼 | 概率图模型 : 隐马尔可夫模型

利用定义的前向概率,可以很容易的从1到递推到tt得到观测序列概率P(x1,x2,...,xtλ)P(x_{1},x_{2},...,x_{t}|\lambda),共有三步:

  1. 计算初值(t=1)
    c1(i)=πjbji,j={1,2,...,N}c_{1}(i)=\pi_{j}b_{ji}, j=\{1,2,...,N\} 这里πj\pi_{j}表示初始状态下状态变量为jj的概率, bjib_{ji}表示从状态jj推出观测ii的输出观测概率
  2. 递推环节,对于t=1,2,...,T1t=1,2,...,T-1
    ct+1(i)=[k=1Nct(k)akj]bji,k=1,2,...,Nc_{t+1}(i)=[\sum_{k=1}^{N}c_{t}(k)a_{kj}]b_{ji},k=1,2,...,N这里的akja_{kj}表示由状态kk转移到状态jj的状态转移概率,bjib_{ji}表示由状态jj推出观测ii的输出观测概率
  3. 到达指定时刻T
    P(x1,x2,...,xtλ)=i=1NcTiP(x_{1},x_{2},...,x_{t}|\lambda)=\sum_{i=1}^{N}c_{T}{i}
    前向算法的求解过程其实是相当简洁明了的,即从1到T时刻,对应于每一个观测值xtx_{t}都计算其由前一时刻状态转移后状态输出概率各种可能的和。

二、后向算法

后向算法是前向算法的逆过程,定义了相应的“后向概率”,其原理其实是相似的,这里不做多余的赘述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!