矩阵连乘 动态规划_中文命名实体识别_03_动态规划之美_HMM&CRF中的前向/后向算法推导...

导语:HMM和CRF模型中利用大量的动态规划算法进行快速运算,本文主要是从比较实用和易于理解的角度,对HMM和CRF模型的前向算法和后向算法进行进行了推导,其中的推导过程,补充了大量细节,面对网络上全文搬运统计学习课本上的大量无用内容,本文可以作为一个很好的补充,唯一不足的是CRF边缘概率计算的推导还未完成,想了各种易理解的方式,但是都不够友好,暂时先放弃了这块内容。

  • HMM简要介绍

  • HMM的概率计算问题

    • 前向算法

    • 后向算法

    • 前向后向算法

  • CRF中的概率计算问题

    • 前向算法

    • 后向算法

  • 总结

HMM简要介绍

在自然语言处理中,存在很多序列到序列的任务,比如机器翻译,词性标注,命名实体识别,都是需要对给定的输入句子,输出一个带标签的序列,如果按照PGM中对应的概念,我们会把输入的句子中的字作为观测序列, 把我们比较关注的任务如词性,实体类别等作为隐含状态序列。

对于HMM模型而言,模型为观测序列和隐含标签状态序列的联合概率分布,并且做了如下限制:

  • 当前时刻的隐含状态只跟上一时刻的隐含状态有关,与其他时刻无关;
  • 当前时刻的观测只与当前时刻的隐含状态有关

因此,HMM模型可以表示为:

在上式中,有两部分概率连乘得到,即转移概率和发射概率,在实际的HMM中,除了上述两个转移概率和发射概率,还有一个状态初始概率分布。

对于HMM模型,一般会涉及到3个问题:

  • 概率计算问题:即在给定模型参数的情况下,计算观测序列出现的概率,即;
  • 学习问题:在给定观测序列的情况下,估计模型参数;
  • 预测问题:给定模型参数和观测序列,计算使得条件概率最大的隐含状态序列;

对于概率计算问题,会涉及到前向算法,后向算法等2种算法来极大的加快运算效率,这2种算法本质是利用了动态规划的思想;对于学习问题,对于无监督的学习,需要利用EM算法,对于同时给定了观测序列以及对应的隐含状态的情况,直接进行统计即可;对于预测问题,需要利用维特比算法,本质也是一种动态规划算法。

HMM的概率计算问题

下面会现在针对概率计算问题进行叙述,掌握这部分内容,需要回忆一下基本的贝叶斯公式,全概率公式。由于概率计算问题是在给定好了模型参数情况下,计算观测序列出现的概率计算问题,假设隐含状态的个数为,即任意时刻的隐含状态的取值只能是种状态中的一种(利用1到K表示状态),那么给定一个观测序列的概率计算公式,结合全概率计算公式:

从上述最原始的概率计算公式可以发现,计算的时间复杂度为,该计算方式需要枚举出所有可能的隐含状态序列的取值,因此不可取,需要利用快速的计算方法。

前向算法,后向算法,前向后向算法,就是利用动态规划的算法,将时间复杂度降低到,与序列长度呈平方关系,而不是指数关系。

首先,先定义前向算法和后向算法的公式,他们分别为:

  • 前向算法:给定一个联合概率:, 表示在时刻,给定了隐含状态的取值为,观测序列为的联合概率;
  • 后向算法:给定一个条件概率:

为什么说前向算法可以用于计算呢?根据前向算法的定义,

  • 当时,,那么根据全概率公式:

如果前后算法能够在线性时间内完成计算,那么亦可以在线性时间内完成计算。同理,如果利用后向算法来计算观测序列的概率:

  • 当t=0时,,那么:

下面将对前向算法,后向算法进行介绍,主要是推导出动态规划中的状态转移方程。

前向算法

由于我们的目标是推导出动态规划中的状态转移方程,即找到当前时刻与的关系,所以我们需要凑出这个两者之间的关系,根据前向算法中定义的联合概率公式:

下面针对上述推导公式的每一步进行说明:

  • 第一步,是一个全概率公式,我们在原始的公式中,新增了一个隐变量,为了与原始概率等价,需要将其积分掉,或者说利用全概率公式,令其取值遍历整个状态的取值;
  • 第二步,贝叶斯公式,但是我们需要注意的是,由于我们的目标是找到与的关系,因此将贝叶斯公式转换成了如上的形式,根据前向算法的公式定义:;
  • 第三步, 公式中直接推导出了发射概率和转移概率的形式,下面对其进行推导,又是一通贝叶斯公式:由于HMM中的输出只与有关,因此,
  • 第四步,由于发射概率与无关,所有可以移到外面,最终得到整个状态转移方程

通过图表的形式,可以展示出前向算法的流程如下图所示,在前向算法中运算次数是次,因此整个时间复杂度为。

5f2a4131d400fa7b6c406e2f6e2c14de.png

后向算法

对于后向算法,顾名思义,就是从时间开始计算,依次计算, , ,对于后向算法,也需要根据定义推导出和的关系,即等式右边要提前算出,这样计算前一个时刻时才不会重复计算

通过图表的形式,可以展示出前向算法的流程如下图所示,在前向算法中由于是从右到左依次填充各列的

1951069e0a4d4ab0a2971ce9df40236b.png

前向后向算法

上述前向算法和后向算法都可以用于计算观测序列出现的概率,那么当给定观测序列, 计算在时刻,的条件概率,即:

即通过前向算法和后向算法,可以计算得到在任务时刻隐含状态的概率(条件概率)

CRF中的概率计算问题

在上一篇文章中,我们从Log-Linear模型的角度,推导出了CRF模型的形式,参数学习方法,CRF模型可以表示为:

同时,根据指数函数的运算法则,可以对上述形式做如下变换:

有了上述形式,定义在序列的第个位置,由状态转移到的非规范化概率为:

所以上述等式,可以再次等价为:

前向算法

首先,先给出CRF模型中的前向算法中要计算的东西是什么,其定义与HMM是一致的,都是要计算出在时刻上对应的隐含状态的概率,在CRF中是条件概率,在HMM中是联合概率,对比如下:

  • HMM中前向算法计算的概率为
  • CRF中前向算法计算的概率为:,根据定义,上一时刻可以表示为:,和都是具体的隐含状态取值,为了区分不同时刻的不同状态,故这样写。

下面对CRF前向算法进行推导,得到 和 的状态转移方程,假定隐含状态的取值有K个状态,

下面针对上述推导公式的每一步进行说明:

第一步:全概率公式,增加了上一个隐含时刻的具体取值;
第二步:贝叶斯公式;
第三步:贝叶斯公式,改变条件概率的形式,主要是需要凑出和条件转移概率;
第四步:还是贝叶斯公式,主要是对进行展开;
第五步:消去
第六步:替换,得到 和 的状态转移方程;同时第6步中根据CRF中概率转移的特点,可以发现与是独立的,只与有关;
第七步:在上述公式中出现了一个概率转移公式(第6行):,其表示的意思为,对于隐含状态的第时刻,在给定观测序列和上一时刻隐含状态为时,转移到(即从状态转移到)的概率,根据CRF模型整体的条件概率公式,见上一小节,公式中的,表示的就是在第个时刻,从转移到的非规范概率,为了简洁起见,我们利用下面的符号来代替(这里面没有值定状态的具体取值,实际计算时需要指定):

至此,我们完成了前向算法的推导过程,在有些参考资料中,还会引入矩阵的形式,在上式中表示的是的一个状态的概率取值,如果利用表示所有的状态向量(维列向量):

同理:

同时利用来表示在时刻上,从状态转移到的非规范化概率矩阵,相比于HMM模型,CRF模型在各个位置上(时间点上)都有特定的概率转移矩阵, 即

最终:

举例,当时刻的的隐含状态为1时概率计算:

563dae01d02854928c4efa2b83ff59d0.png

后向算法

CRF中后向算法的计算的条件概率为:

  • CRF中后向算法计算的概率为:, 因此下一时刻的表达式为,,和都是具体的隐含状态取值,为了区分不同时刻的不同状态,故这样写。

与前向算法的推导类似,需要构造出和的关系,下面开始推导,部分内容不进行解释,如果疑问,可以参考前向算法:

总结

动态规划思想是一种很好的解决问题的思想,在HMM和CRF中,通过设计前向,后向算法加快了概率计算。相比于大部分内容都是原文摘抄统计学习的介绍性文章,本文的推导过程,易于理解,让有需要的同学理解动态规划之美,同时本文也有遗憾,对于CRF的概率计算部分,未完成,至今还没有解决第二篇文章留下的天坑。

c2a4c374ec2b59aa8c2ec5ad79e9e1fa.png

813da1f7d4b8f2343b51cf3d4f1ca4e0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值