龙空技术网

终于有人把隐马尔可夫链的前向后向算法讲懂了!

3D视觉工坊 1647

前言:

现时朋友们对“前向算法与后向算法”大致比较注意,你们都想要分析一些“前向算法与后向算法”的相关内容。那么小编也在网摘上收集了一些有关“前向算法与后向算法””的相关文章,希望朋友们能喜欢,咱们一起来了解一下吧!

来源:计算机视觉工坊

添加v:dddvisiona,备注:3D GS,拉你入群。文末附行业细分群

前言

在上一篇文章你真的理解隐马尔可夫模型了吗?》中,我们讲解了隐马尔科夫链中的基本概念,并在最后说明了隐马尔可夫链中三个基本问题:

概率计算问题:给定模型参数和观测序列计算在模型参数下观测到x的概率(评估模型和观测序列之间的匹配程度)

预测问题:给定模型和观测序列,求使得最大的状态观测序列(根据观测序列推断最有可能的状态序列)

学习问题:给定观测序列,调整模型参数,使得该序列出现的概率最大(训练模型使其更好地描述观测序列)

这篇文章将会以尽可能通俗易懂的方式为大家讲解这几个问题的解法,其中概率计算问题将主要讲解前向、后向算法,预测问题将主要讲解维特比算法,学习问题主要讲解神经网络学习的方式。

1.直接计算法

直接计算法就是枚举所有的路径,然后将所有路径求和,得到最终答案,这种计算方法计算复杂度为(每条路经有2n个乘法操作,共个路径),计算过程复杂,且耗时,我们仅列举一下计算方法,不过多解释:

2.前向算法

我们使用这样一个信封抽球问题作为例子讲解,状态为第0/1号信封,观测为球的颜色为红/黑

我们先不管观测到的5个状态,就假设观测到了第一个球为红色,这个概率该怎么计算呢?

我们不知道第一个状态是哪个信封,我们只能根据一些先验去猜:有两种可能状态0/1,可能得到红球,如果第一个状态为0,那么得到红球观测的概率为,如果第一个状态为1,那么得到红球观测的概率为

而这里我们用来猜的的先验就是稳态向量,我们拿到这个稳态向量可能会猜,是0的概率为0.5,是1的概率为0.5,那么:

如果第一个状态为0,得到观测为红球的概率就是

如果第一个状态为1,得到观测为红球的概率就是

然后将二者加起来就可以得到第一个观测为红球的概率

我们将记为,这表示第1个状态(下标)为0(值)的概率;同样将记为,这表示第1个状态(下标)为1(值)的概率,这样表示是因为后面计算我们会用到,以简化我们的计算量。

我们再加入进来一个状态--,我们采用同样的方法,得到第二个观测为黑球,也只有两种可能状态0/1,这时我们的先验就变成了我们之前记录的,它们分别表示了第一个状态为0/1的概率:

如果第二个状态为0,可能由第一个状态为0/1转移而来,那么其概率为,然后再由状态0观测到黑球概率为,综合起来概率为

同样的,如果第二个状态为1,可能由第一个状态为0/1转移而来,那么其概率为,然后再由状态1观测到黑球概率为,综合起来概率为

这样我们就得到了前两个观测和状态组成的马尔科夫链的概率,我们重复上述步骤,一直到得到5个状态的马尔科夫链概率:

将这两个概率加起来,就得到了最终的,在模型参数下观测到x的概率

附录展示了完整的计算过程!

可以把这个过程化成一个树状图:

3.后向算法

后向算法,顾名思义就是从后往前算,我们先定义一个类似于的中间变量表示:在t时刻的状态为i的条件下,从t+1时刻到n时刻(最后时刻)的部分观测变量的概率。

那么,我们现在开始逐步计算:

表示,假设第5个状态为0,得到6到最后观测的概率,因为一共5个状态,那么这个概率为1;同理

表示,假设第4个状态为0,得到5到最后观测(第5个观测为红)的概率,第5个状态可能为0/1,那么我们应该这样计算;同理,假设第4个状态为1,

进一步解释:,表示第四个状态为0(\beta_4(0)),到第五个状态为0(A_{00}*\beta_5(0)),然后观测为红球(B_{00})

依次从后向前计算,最后计算得到,表示假设第1个状态为0或1,得到2到最后观测的概率,也就是得到了下图的马尔科夫链的概率。

这时,注意到还有第一个观测没有考虑进来,所以我们要再向前推一个,第0个状态(稳态先验)为0或1,得到1到最后观测的概率,第0的状态是不存在在马尔科夫链中的,我们用先验知识(稳态向量)进行猜测,然后相加就得到了最终的概率

附录展示了完整的计算过程!

对应上面的树状图,前向算法相当于树自顶向下不断分叉,后向算法相当于自底向上不断合并,两个过程都可以得到最终的概率。

总结

现在我们已经掌握了,在给定隐马尔科夫链参数的条件下,如何计算获得当前观测的概率,对应这组观测序列,有很多可能得状态序列,比如:0,1,0,1,0;1,1,1,0,1;1,1,1,1,1等等,哪一条才是最有可能得到这组观测的状态序列呢?

这就是预测问题,我们将在下一篇文章介绍解决这个问题的经典算法-维特比算法。

附录

下载

在公众号「计算机视觉工坊」后台,回复「3dcv」,即可获取工业3D视觉、SLAM、自动驾驶、三维重建、事件相机、无人机等近千余篇最新顶会论文;巴塞罗那自治大学和慕尼黑工业大学3D视觉和视觉导航精品课件;相机标定、结构光、三维重建、SLAM,深度估计、模型部署、3D目标检测等学习资料。

3D视觉方向交流群成立啦

目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶、三维重建、无人机方向,细分群包括:

[工业3D视觉]相机标定、立体匹配、三维点云、结构光、机械臂抓取、缺陷检测、6D位姿估计、相位偏折术、Halcon、摄影测量、阵列相机、光度立体视觉等。

[SLAM]视觉SLAM、激光SLAM、语义SLAM、滤波算法、多传感器融合、多传感器标定、动态SLAM、MOT SLAM、NeRF SLAM、机器人导航等。

[自动驾驶]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器、多传感器标定、多传感器融合、自动驾驶综合群等、3D目标检测、路径规划、轨迹预测、3D点云分割、模型部署、车道线检测、Occupancy、目标跟踪等。

[三维重建]NeRF、多视图几何、OpenMVS、MVSNet、colmap、纹理贴图等

[无人机]四旋翼建模、无人机飞控等

除了这些,还有求职、硬件选型、视觉产品落地、最新论文、3D视觉最新产品、3D视觉行业新闻等交流群

大家可以添加小助理v: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。

标签: #前向算法与后向算法