新起点
前向算法
2020-06-13 01:13:26

前向算法(Forward algorithm),在隐马尔可夫模型(HMM)中,是用于计算“置信状态”的。置信状态指根据既往证据推算出的当前状态的概率分布。这个过程也被叫做“滤波”。前向算法和维特比算法紧密相关但又互不相同。

前向算法是用来解决解码问题的算法之一。自从语音识别技术和模式识别技术发展以来,它也越来越普遍地被用在像计算生物学这样的使用HMM的领域内。

整个算法的目标是计算联合概率分布 p ( x t , y 1 : t ) {\displaystyle p(x_{t},y_{1:t})} 。为了方便,我们把 x ( t ) {\displaystyle x(t)} 简写做 x t {\displaystyle x_{t}} ,将 ( y ( 1 ) , y ( 2 ) , . . . , y ( t ) ) {\displaystyle (y(1),y(2),...,y(t))} 简写做 y 1 : t {\displaystyle y_{1:t}} 。直接计算 p ( x t , y 1 : t ) {\displaystyle p(x_{t},y_{1:t})} 则需要计算所有状态序列 { x 1 : t 1 } {\displaystyle \{x_{1:t-1}\}} 的边缘分布,而它的数量和 t {\displaystyle t} 成指数相关。使用这一算法,我们可以利用HMM的条件独立性质,递归地进行计算。

我们令

利用链式法则来展开 p ( x t , x t 1 , y 1 : t ) {\displaystyle p(x_{t},x_{t-1},y_{1:t})} ,我们可以得到

由于 y t {\displaystyle y_{t}} 和除了 x t {\displaystyle x_{t}} 之外的一切都条件独立,而 x t {\displaystyle x_{t}} 又和 x t 1 {\displaystyle x_{t-1}} 之外的一切都条件独立,因此

这样,由于 p ( y t | x t ) {\displaystyle p(y_{t}|x_{t})} p ( x t | x t 1 ) {\displaystyle p(x_{t}|x_{t-1})} 由HMM的输出概率和状态转移概率我们可以很快计算用 α t 1 ( x t 1 ) {\displaystyle \alpha _{t-1}(x_{t-1})} 计算出 α t ( x t ) {\displaystyle \alpha _{t}(x_{t})} ,并且可以避免递归计算。

前向算法可以很容易地被修改来适应其他的HMM变种,比如马尔可夫跳跃线性系统。

为了能够使用“未来的历史”(比如我们在试图预测过去的某个时点的状态),我们可以运行后向算法,它是前向算法的一个补充。这一操作被称为平滑。 前向-后向算法对 1 < k < t {\displaystyle 1<k<t} 计算 P ( x k | y 1 : t ) {\displaystyle P(x_{k}|y_{1:t})} ,因此使用了过去和未来的全部信息。

为了解码最可能的序列,需要使用维特比算法。它会从过去的观测中试图推测最可能的状态序列,也即使 P ( x 0 : t | y 0 : t ) {\displaystyle P(x_{0:t}|y_{0:t})} 最大化的状态序列。

相关:

网站公告: