条件随机场CRF(二) 前向后向算法评估标记序列概率

简介:

1. linear-CRF的三个基本问题

    在隐马尔科夫模型HMM中,我们讲到了HMM的三个基本问题,而linear-CRF也有三个类似的的基本问题。不过和HMM不同,在linear-CRF中,我们对于给出的观测序列xx是一直作为一个整体看待的,也就是不会拆开看(x1,x2,...)(x1,x2,...),因此linear-CRF的问题模型要比HMM简单一些,如果你很熟悉HMM,那么CRF的这三个问题的求解就不难了。

     linear-CRF第一个问题是评估,即给定 linear-CRF的条件概率分布P(y|x)P(y|x), 在给定输入序列xx和输出序列yy时,计算条件概率P(yi|x)P(yi|x)P(yi1yi|x)P(yi−1,yi|x)以及对应的期望. 本文接下来会详细讨论问题一。

     linear-CRF第二个问题是学习,即给定训练数据集XXYY,学习linear-CRF的模型参数wkwk和条件概率Pw(y|x)Pw(y|x),这个问题的求解比HMM的学习算法简单的多,普通的梯度下降法,拟牛顿法都可以解决。

     linear-CRF第三个问题是解码,即给定 linear-CRF的条件概率分布P(y|x)P(y|x),和输入序列xx, 计算使条件概率最大的输出序列yy。类似于HMM,使用维特比算法可以很方便的解决这个问题。 

2.linear-CRF的前向后向概率概述

    要计算条件概率P(yi|x)P(yi|x)P(yi1yi|x)P(yi−1,yi|x),我们也可以使用和HMM类似的方法,使用前向后向算法来完成。首先我们来看前向概率的计算。

    我们定义αi(yi|x)αi(yi|x)表示序列位置ii的标记是yiyi时,在位置ii之前的部分标记序列的非规范化概率。之所以是非规范化概率是因为我们不想加入一个不影响结果计算的规范化因子Z(x)Z(x)在分母里面。

    在条件随机场CRF(一)第八节中,我们定义了下式:

Mi(yi1,yi|x)=exp(k=1Kwkfk(yi1,yi,x,i))Mi(yi−1,yi|x)=exp(∑k=1Kwkfk(yi−1,yi,x,i))

    这个式子定义了在给定yi1yi−1时,从yi1yi−1转移到yiyi的非规范化概率。

    这样,我们很容易得到序列位置i+1i+1的标记是yi+1yi+1时,在位置i+1i+1之前的部分标记序列的非规范化概率αi+1(yi+1|x)αi+1(yi+1|x)的递推公式:

αi+1(yi+1|x)=αi(yi|x)Mi+1(yi+1,yi|x)αi+1(yi+1|x)=αi(yi|x)Mi+1(yi+1,yi|x)

    在起点处,我们定义:

α0(y0|x)={10y0=startelseα0(y0|x)={1y0=start0else

    假设我们可能的标记总数是mm, 则yiyi的取值就有mm个,我们用αi(x)αi(x)表示这mm个值组成的前向向量如下:

αi(x)=(αi(yi=1|x),αi(yi=2|x),...αi(yi=m|x))Tαi(x)=(αi(yi=1|x),αi(yi=2|x),...αi(yi=m|x))T

    同时用矩阵Mi(x)Mi(x)表示由Mi(yi1,yi|x)Mi(yi−1,yi|x)形成的m×mm×m阶矩阵:

Mi(x)=[Mi(yi1,yi|x)]Mi(x)=[Mi(yi−1,yi|x)]

    这样递推公式可以用矩阵乘积表示:

αTi+1(x)=αTi(x)Mi(x)αi+1T(x)=αiT(x)Mi(x)

    同样的。我们定义βi(yi|x)βi(yi|x)表示序列位置ii的标记是yiyi时,在位置ii之后的从i+1i+1nn的部分标记序列的非规范化概率。

    这样,我们很容易得到序列位置i+1i+1的标记是yi+1yi+1时,在位置ii之后的部分标记序列的非规范化概率βi(yi|x)βi(yi|x)的递推公式:

βi(yi|x)=Mi+1(yi,yi+1|x)βi+1(yi+1|x)βi(yi|x)=Mi+1(yi,yi+1|x)βi+1(yi+1|x)

    在终点处,我们定义:

βn+1(yn+1|x)={10yn+1=stopelseβn+1(yn+1|x)={1yn+1=stop0else

    如果用向量表示,则有:

βi(x)=Mi+1(x)βi+1(x)βi(x)=Mi+1(x)βi+1(x)

    由于规范化因子Z(x)Z(x)的表达式是:

Z(x)=c=1mαn(yc|x)=c=1mβ1(yc|x)Z(x)=∑c=1mαn(yc|x)=∑c=1mβ1(yc|x)

    也可以用向量来表示Z(x)Z(x):

Z(x)=αTn(x)1=1Tβ1(x)Z(x)=αnT(x)∙1=1T∙β1(x)

    其中,11mm维全1向量。

3. linear-CRF的前向后向概率计算

    有了前向后向概率的定义和计算方法,我们就很容易计算序列位置ii的标记是yiyi时的条件概率P(yi|x)P(yi|x):

P(yi|x)=αTi(yi|x)βi(yi|x)Z(x)=αTi(yi|x)βi(yi|x)αTn(x)1P(yi|x)=αiT(yi|x)βi(yi|x)Z(x)=αiT(yi|x)βi(yi|x)αnT(x)∙1

    也容易计算序列位置ii的标记是yiyi,位置i1i−1的标记是yi1yi−1 时的条件概率P(yi1,yi|x)P(yi−1,yi|x):

P(yi1,yi|x)=αTi1(yi1|x)Mi(yi1,yi|x)βi(yi|x)Z(x)=αTi1(yi1|x)Mi(yi1,yi|x)βi(yi|x)αTn(x)1P(yi−1,yi|x)=αi−1T(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)Z(x)=αi−1T(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)αnT(x)∙1

4. linear-CRF的期望计算

    有了上一节计算的条件概率,我们也可以很方便的计算联合分布P(x,y)P(x,y)与条件分布P(y|x)P(y|x)的期望。

    特征函数fk(x,y)fk(x,y)关于条件分布P(y|x)P(y|x)的期望表达式是:

EP(y|x)[fk]=EP(y|x)[fk(y,x)]=i=1n+1yi1yiP(yi1,yi|x)fk(yi1,yi,x,i)=i=1n+1yi1yifk(yi1,yi,x,i)αTi1(yi1|x)Mi(yi1,yi|x)βi(yi|x)αTn(x)1(1)(2)(3)(1)EP(y|x)[fk]=EP(y|x)[fk(y,x)](2)=∑i=1n+1∑yi−1yiP(yi−1,yi|x)fk(yi−1,yi,x,i)(3)=∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1T(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)αnT(x)∙1

    同样可以计算联合分布P(x,y)P(x,y)的期望:

EP(x,y)[fk]=x,yP(x,y)i=1n+1fk(yi1,yi,x,i)=xP¯¯¯¯(x)yP(y|x)i=1n+1fk(yi1,yi,x,i)=xP¯¯¯¯(x)i=1n+1yi1yifk(yi1,yi,x,i)αTi1(yi1|x)Mi(yi1,yi|x)βi(yi|x)αTn(x)1(4)(5)(6)(4)EP(x,y)[fk]=∑x,yP(x,y)∑i=1n+1fk(yi−1,yi,x,i)(5)=∑xP¯(x)∑yP(y|x)∑i=1n+1fk(yi−1,yi,x,i)(6)=∑xP¯(x)∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1T(yi−1|x)Mi(yi−1,yi|x)βi(yi|x)αnT(x)∙1

    假设一共有KK个特征函数,则k=1,2,...Kk=1,2,...K

5. linear-CRF前向后向算法总结

    以上就是linear-CRF的前向后向算法,个人觉得比HMM简单的多,因此大家如果理解了HMM的前向后向算法,这一篇是很容易理解的。

    注意到我们上面的非规范化概率Mi+1(yi+1,yi|x)Mi+1(yi+1,yi|x)起的作用和HMM中的隐藏状态转移概率很像。但是这儿的概率是非规范化的,也就是不强制要求所有的状态的概率和为1。而HMM中的隐藏状态转移概率也规范化的。从这一点看,linear-CRF对序列状态转移的处理要比HMM灵活。

 


本文转自刘建平Pinard博客园博客,原文链接:http://www.cnblogs.com/pinard/p/7055072.html,如需转载请自行联系原作者

相关文章
|
2月前
|
存储 算法 索引
模拟算法题练习(二)(DNA序列修正、无尽的石头)
模拟算法题练习(二)(DNA序列修正、无尽的石头)
|
5月前
|
设计模式 算法 Java
【数据结构和算法】递增的三元子序列
给你一个整数数组nums,判断这个数组中是否存在长度为3的递增子序列。 如果存在这样的三元组下标(i, j, k)且满足i < j < k,使得nums[i] < nums[j] < nums[k],返回true;否则,返回false。
57 3
|
5月前
|
算法 Java
Java中更优秀些的标记整理算法
Java中更优秀些的标记整理算法
35 1
|
5月前
|
算法
class072 最长递增子序列问题与扩展【算法】
class072 最长递增子序列问题与扩展【算法】
26 0
|
3月前
|
编解码 算法 定位技术
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
102 3
|
5月前
|
算法
排序置顶、非置顶算法,实现置顶后的结果和非置顶的内容排序保持原始序列
排序置顶、非置顶算法,实现置顶后的结果和非置顶的内容排序保持原始序列
|
3天前
|
JavaScript 前端开发 算法
JavaScript的垃圾回收机制通过标记-清除算法自动管理内存
【5月更文挑战第11天】JavaScript的垃圾回收机制通过标记-清除算法自动管理内存,免除开发者处理内存泄漏问题。它从根对象开始遍历,标记活动对象,未标记的对象被视为垃圾并释放内存。优化技术包括分代收集和增量收集,以提升性能。然而,开发者仍需谨慎处理全局变量、闭包、定时器和DOM引用,防止内存泄漏,保证程序稳定性和性能。
9 0
|
16天前
|
机器学习/深度学习 人工智能 运维
人工智能平台PAI 操作报错合集之请问Alink的算法中的序列异常检测组件,是对数据进行分组后分别在每个组中执行异常检测,而不是将数据看作时序数据进行异常检测吧
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。
|
17天前
|
算法 数据安全/隐私保护 数据格式
基于混沌序列的图像加解密算法matlab仿真,并输出加解密之后的直方图
该内容是一个关于混沌系统理论及其在图像加解密算法中的应用摘要。介绍了使用matlab2022a运行的算法,重点阐述了混沌系统的特性,如确定性、非线性、初值敏感性等,并以Logistic映射为例展示混沌序列生成。图像加解密流程包括预处理、混沌序列生成、数据混淆和扩散,以及密钥管理。提供了部分核心程序,涉及混沌序列用于图像像素的混淆和扩散过程,通过位操作实现加密。
|
18天前
|
编解码 算法 数据可视化
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现