写点什么

从头开始(概率)学 HMM:精讲第四课 - 预测问题(维特比算法)

用户头像
herosunly
关注
发布于: 刚刚
从头开始(概率)学HMM:精讲第四课-预测问题(维特比算法)

1. 问题描述

  预测问题(解码问题):已知模型和观测序列,求对给定预测序列条件概率 P(I|O)最大的状态序列。该问题其实是最被常用的,也是我们之前一直提到的如何进行序列标注。解决该问题需要用到维特比算法。第二章详细讲述了维特比

2. 解决方法一:维特比算法

  初看本章目录,可能感觉不太合理,但其实不然,作者故意为之。因为先讲为什么得到结论,也即推导,可能还是不太明白,甚至听完感觉明白了,一做题发现理解错误。所以这里,我们先抛出结论。结论中给出的定义先不要问为什么是这个式子,为什么这么取。假设他是对的,走一遍案例。然后再看推导,结合求解案例的过程,可能会更好理解。

2.1 结论

  • 首先给出几个定义:

- :t 时刻,状态为 i 的概率,因为状态有 N 种,故可以求出 N 个,简单来讲,可以理解成。但实际上不是这样的,具体的后面讲推导的时候再来更正,现在可以先这么理解。

- 递推:是一个递推式,公式定义为:,首先理解下 max 下面加取值范围的含义。max 下的 j 说明了 max 里面变化的是 j,由于 j 的变化会带动的变化,说明了 j 的取值范围。因此 max 下加取值范围的含义是在 j 变化过程中的最大值。上述有 N 个取值,每个对应一个,因此,某一时刻计算 N 个取值,相应的,计算 N 个取值,且两者一一对应。

- :其定义为下面挂取值范围,这里就不多做阐述了,其实看到就已经知道是变量 j 的其中一个值。看 max 里面,不就是递推公式里 max 里面的内容吗。因此连到一起看,是在当前时刻状态为 i 时上一时刻的某个状态,且这个状态令最大,也即令当前时刻最大。**

- 维特比算法确定最优路径的过程(此时可以结合下方案例以及手写图片理解):

- 第一步,根据递推公式,从 t=1 时刻开始计算以及对应的

- 比较最后一个时刻的,找到最大值,以及最大值对应的

- 逆向求解最优路径(案例中高亮部分,从后向前看)

2. 2 案例

已知




观测序列,观测序列只有两种取值(红,白),B 的第一列对应红,第二列对应白;隐藏状态取值有 3 种(1, 2, 3),求最优的状态序列答案解析:


  • 第一步:递推求解每一时刻的

t = 1 时:

,记

,记

,记

t = 2 时:

同理求得

因此:


t=3 时:

同理求得因此:;==


  • 第二步:比较最后一个时刻 t=3 时的,找出最大值,以及对应的:最后一个时刻 t=3 时:;==,其中值最大,因此 t=3 时,选择状态 3;其对应的==

  • 第三步:逆向求解最优路径:t=3 时选择了状态 3,计算过程中取的是上一时刻 t=2 的状态 3(上一时刻值最大);t=2 时选择了状态 3(因为 t=3 时,令值最大的上一时刻状态是 3),计算过程中取的是上一时刻 t=1 时刻的状态 3(上一时刻值最大)t=1 时选择了状态 3(因为 t=2 时,令值最大的上一时刻状态是 3),计算过程中取的是上一时刻 t=0 时刻的状态 0(上一时刻值最大)因此最优路径是(3,3,3)

2.3 推导

  上面先讲了如何计算,本节主要讲述为什么。


  • 动态规划原理中最优路径具有特性:如果最优路径在时刻 t 通过结点 $i_t^i_t^i_T^i_t^i_T^i_t^i_T^i_1^i_t^*$的部分路径连接起来,就会形成一条比原来更优的路径。这与动态规划的最优路径的特性定义相矛盾。

  • 维特比算法中的动态规划思想:以 2.2 的案例为例,假如现在观测序列变为即只有两个时刻 t=1 和 t=2(为了方便讲解,只选取两个时间)。我们知道观测序列为{红,白},求的是隐藏序列(来自哪个盒子),可能的结果为{1,1}、{1,2}、{1,3}、{2,1}、{2,2}、{2,3}、{3,1}、{3,2}、{3,3},问题的本质是求这 9 种可能哪个概率最大,概率最大的那个就是我们的答案。将所有可能的结果呈现在二维图中:


  • 对上图进行阐释:在已知第一次为红色时,可以选择第 1、第 2、第 3 个盒子;第二次为白色亦同。由此从第一次红色到第二次白色就有 9 条路径可以选择。

  • 假如第一次和第二次结果对应的盒子分别是盒子 1 和盒子 2,也就是说选择了路径 2。那么我们如何确保图中的路径 2 概率最大呢?

  • 从第二次结果考虑,只要从开始到第一次结果选择的路径正确,且从第一次结果到第二次结果的转移正确(即第二次正确选择了盒子 2),就能保证我们整个路径正确。

  • 广泛地讲:只要从开始到第 t 次结果选择的路径是正确的,且第 t+1 时刻正确选择(t 时刻到 t+1 时刻转移正确)就能保证直到 t+1 时刻我们的选择都是对的,得到的答案就是最优答案。由于 t 时刻选择的结果依赖于 t-1 时刻的选择,因此可以确定好 t 时刻的选择再一直向前推,推导 t-1、t-2...t=1 时刻的结果,就是维特比算法的思想。


  • 维特比算法的公式化表示:

  • 最优路径:$I^=(I_1^,I_2^,...,I_T^)$

  • 定义在时刻 t 状态为 i 的所有单个路径中概率最大值:定义方式有点像前后向算法,已知参数,求时刻 t 的状态为 i,求出现观测序列的概率。注意的是有一个要求-时刻 t 的状态为 i。公式见下,注意,公式中的是一组变量,放到 max 下面,指这组变量取哪组值时能让**的概率最大。**其他的都是已知的量,也即定量,放到公式里,只是说明,我已知这些量。在概率当中,如果 y 为定量,非随机变量,x 为随机变量,概率表达式可以写成 P(x;y)或者 p(x|y)。用条件概率的形式表示,只是想说明,有一个已知的定量,实际并非条件概率。**本质是概率,但该概率携带了 t 时刻状态为 i 这一信息。


  • 递推公式:根据序列生成任务,t+1 时刻的隐藏状态=t 时刻的隐藏状态×(j 为 t+1 时刻的隐藏状态)×,因此 t+1 时刻的最大概率等于 t 时刻的乘转移概率和观测概率。公式表达如下:

  • 由递推公式可以看到,的取值(t+1 时刻状态为 i 这一事实)取决于上一时刻,也即上一时刻状态 j 的选择。因此计算需要从一点点向后计算到,才能得到,但是确定最优路径时,计算到最后只有,不存在后面 T+1 的递推公式了。在时刻 T 只要比较的最大值,也就确定了时刻 T 的状态(假如为状态 2),而根据递推式,时刻 T 的状态 2 取决于上一时刻 T-1 的状态,因此只要 T 时刻的状态 2 一确定,T-1 时刻的状态也就确定了(让 T 时刻状态为 2 的概率最大的那个状态)。因此定义在时刻 t 状态为 i 的所有单个路径中概率最大的路径的第 t-1 个结点(本质是结点


  • 总结维特比算法的过程:


3. 解决方法二:近似算法



发布于: 刚刚阅读数: 2
用户头像

herosunly

关注

还未添加个人签名 2018.05.11 加入

还未添加个人简介

评论

发布
暂无评论
从头开始(概率)学HMM:精讲第四课-预测问题(维特比算法)