RNN的开端!最详细推导HMM模型+例子(二):forward算法backward算法

详细推导HMM算法+直观例子+项目应用(二):forward算法与backward算法

HMM模型介绍

本文将帮您深入浅出的彻底理解HMM模型架构和其中用于参数估计的forward算法与backward算法,全文阅读大约需要10分钟,如果您希望亲自手推公式,则总耗时约20分钟。

本文为HMM系列的第二篇,第一篇请见
RNN的开端!最详细推导HMM算法推导+例子(一):维特比算法和模型建立

本文为贪心学院课程的学习笔记,讲师为李文哲博士。
阅读本文需要概率论中的概率相关与不相关的基础知识。

HMM参数估计

在第一篇文章中,我们介绍了如何通过complete case,即已知所有参数的情况下,求解维特比算法,从而获得隐藏状态z的序列。
现在我们将介绍,如何通过incomplete case转换成complete case,算法即是forward算法和backward算法,分别简称为F算法和B算法。

FB算法的目标和拆分

Forward and Backward算法目标:计算P( z k z_{k} |x)
拆分成两个算法:
F算法:P( z k , x 1 : k z_{k},x_{1:k} )联合概率
B算法:P( x 1 : k x_{1:k} | z k z_{k} )

在这里插入图片描述
接下来对这两个概率进行一点处理:

  • p(zk|x)正比于p(zk,x),只差常数项
  • P( x 1 : k x_{1:k} | z k z_{k} ),希望知道条件独立从而简化P。条件独立要求x1到k的全部信息全包含到了zk上,假设xk+1和x1到k条件独立于zk。

根据D-seperation判断出无关,则P( x 1 : k x_{1:k} | z k z_{k} )可做如下简化:
在这里插入图片描述
同理P(zk|x)也可以做简化:
在这里插入图片描述

实际项目应用:Change Detection

假设通过HMM,在风控里关心组团记账,风险的东西,那么需要知道,在哪些时间节点里,网络结构经过了很大变化,变化的时候就存在风险

方法1:直接比较网络图之间的相似度,如果相似度小于某个阈值,那么久说明网络经过了很大的变化
方法2:HMM模型法,隐式变量无法观测到,能观察到的是网状结构,现在想知道那些地方出现了很大的变化。现在未必计算相似度,而是计算不同状态下,生成网状图的可能性,用0,1序列表示状态,0表示好,1表示风险高

只要评估 p ( z k z k + 1 x ) p(z_{k} \not =z_{k+1}|x) 是否超过阈值,就能知道k到k+1是否发生了突变。为了计算 p ( z k z k + 1 x ) p(z_{k} \not =z_{k+1}|x) ,可用FB算法

Forward算法详解

在计算 P ( z k , x 1 : k ) P(z_{k},x_{1:k}) 时,用递归的思想,想拆分成子问题 P ( z k 1 , x 1 : k 1 ) P(z_{k-1},x_{1:k-1}) 乘以某个数。

则先边缘化,再提取 p ( z k 1 , x 1 : k 1 ) p(z_{k-1},x_{1:k-1})
在这里插入图片描述
右边的式子目前仍然比较复杂,希望进一步简化

其中,p(zk|zk-1,x1:k-1)很好算,第三个式子很像生成概率,接下来只要确认条件独立,进行拆分
在这里插入图片描述
考虑概率独立性,判断zk是否依赖于zk-1和前面x1:k-1?

显然是的,zk和x1:k-1条件独立,因为x1:k-1已经把一切都传给了zk-1,因此把x1:k-1划掉
在这里插入图片描述
同理,一旦包含zk,没必要包含zk-1和前面一系列x
在这里插入图片描述
分别是:子问题+A矩阵可算+B矩阵可算,则此刻可以递归计算
同时注意 base case,即初始是什么
在这里插入图片描述
Forward算法结束

Backward算法详解

目标:计算和F算法相反的p(xk+1:n|zk),同样希望拆分成子问题
在这里插入图片描述
同样进行展开和提取
在这里插入图片描述
仍然采用边缘化性质,zk和zk+1之后的xk+1:n无关
在这里插入图片描述
与F算法相反,从后往前算
在这里插入图片描述
该算法的复杂度:O(n*m2)

至此,forward和backward算法结束,HMM模型中我们获得了概率。

发布了13 篇原创文章 · 获赞 24 · 访问量 1254

猜你喜欢

转载自blog.csdn.net/weixin_46233323/article/details/104833330