[模式识别]条件随机场CRF(ConditionalRandomField)
来源:互联网 发布:淘宝买的妹汁是真的吗 编辑:程序博客网 时间:2024/06/06 07:26
花了将近一个多月的时间,终于把CRF算是入门性的学完了,找了篇比较好的文章(十分简练易懂),帮助以后回顾。中间附上对参数估计的证明。
原链接:http://www.tanghuangwhu.com/archives/162
关联数据有两个特点:第一,我们准备建立模型的实体之间存在统计依赖性,第二,每个实体自身具有丰富的有利于分类的特征例如,当Web文档进行分类时候,网页上的文本类标签提供了很多信息,但超链接定义的页面之间的关系,可以进一步提高分类的准确度,图模型很自然的建立了实体之间的结构化关系。通常来讲,图模型已被用于表示联合概率分布P(Y,X),其中的变量y代表我们希望预测的属性,输入变量X代表获得的实体信息。利用关系数据中的局部特征对联合分布建模非常困难,因为这需要对包含复杂依赖关系的P(X)建模,引入数据之间的关系是把双刃剑,如果模型中引入它,导致模型非常复杂,如果忽略它,那么模型的准确性就会受到影响.对于分类问题来说,直接模拟的条件分布P(Y|X)条件随机场就是这么做的。条件随机场是关联这一个图结构的条件分布P(Y| X),因为直接对条件概率建模,输入变量X之间的关联不需要显示的表达出来
通常我看到一个模型,我总是会试着和我所知道的一些模型去进行比较。CRF算是机器学习模型中比较复杂的一个模型。同输入输出角度, CRF从数据空间来看是一个序列化的输入和序列化的输出, 从函数空间角度,就是一个指数函数,和逻辑回归函数形式一致,只是他的输入使出是一个序列(一条句子)或者一个矩阵(一副图像),损失函数是cross entropy,优化算法一般采用梯度下降类算法(LBFGS),但是在优化的过程中伴随着复杂的inference过程。
判别式模型和产生式模型
朴素贝叶斯和逻辑回归模型之间的一个重要区别是,朴素贝叶斯是产生式模型,它基于联合分布P(X,Y)建模,而逻辑回归是判别式模型,它直接对条件分布P(Y|X)建模,这一段中我们讨论产生式模型和判别式模型的区别和判别式模型在很多应用中的优点,具体来说,我们会集中以朴素贝叶斯和逻辑回归为例,但是这些区别可以推广到一般的产生式模型和判别式模型。
对条件分布p(Y| X)建模,不包括对P(X) 建模(P(X)对分类来说无关紧要),对P(X)建模非常困难,因为P(X)包含很多相互依赖的特征,比如在 NER应用中,HMM只依赖一个特征,这个词本身,但是很多词,特别是一些特定的名字可能没有出现在训练集合中,因此词本身这个特征是未知的,为了标注未登陆词,我们需要利用词的其他的特征,如词性,相邻词,前缀和后缀等。
在产生式模型中包含相互依赖的特征有两种方式,加强模型来表达输入数据之前的关联,或者简单的做独立性假设,比如朴素贝叶斯假设,第一种方法通常很难在提高模型复杂度的同时仍然保持模型优化的简便,比如我们很难建立词性和词的后缀之间的关系,而实际上我们也不是特别愿意去这么做,第二种方法,对输入数据做独立性假设会使得准确性降低,尽管朴素贝叶斯在文本分类应用中表现出其的好,但是在很多其他的应用中都比逻辑回归要逊色虽然朴素贝叶斯的分类准确率较高,但是在概率估计应用方便表现较差。
线性链式CRF模型
模型定义
线性链式的条件随机场如下所示
样本级的归一化函数
从HMM到CRF
我们已经看到了判别式模型和序列模型的有点,而线性链式条件随机场综合了这两点,我们从HMM引入线性链式CRF,然后在讨论模型的参数估计
通常HMM表达式如下
可以进一步表示成下面这种形式
最后从HMM导出条件概率模型如下:
这个条件概率是线性链式条件随机场,只是特征只包括词本身这一个,当然线性链式条件随机场可以包含很多其他的特征。
我们已经看到当联合分布为HMM的形式时,相应的条件概率分布为线性链式的CRF,在HMM中状态i 到状态j的转移概率总是相同的,和当前的输入无关,但是在CRF中,我们可以通过加入特征
模型优化
这一节我们来讨论如何估计CRF的参数
优化采用的是带惩罚项的极大似然估计,注意也基于样本独立这个假设,然后通过也通过对数运算把累积问题转换为累加问题。
展开之后得到了下面的形式:
假设参数的先验分布为高斯分布,得到下式,即加上了一个正则化项:
优化最重要的就是梯度的计算了,梯度本身就是对各参数的求导过程。求导的过程可以抛开对各样本梯度的求和,只需要关注一个样本,然后再求和即可,比较难理解的应该是第二项的求导了,
关于该式的证明:
CRF的概率模型,给定observations 求某一latent states序列的概率。
其中分母Z(x)是归一因子:
公式(2) 中的y就是所有可能的序列,如果一个序列有个8个latent states,每个state有6个可能的取值,那么所有可能序列就有6的8次方。由此可见计算他时开销是相当大的。给出极大似然函数的对数表达式:
其中N是训练序列的个数,那么梯度下降法的方式大概是这样的(其实是梯度上升发求最大值):
为了简单起见,我们把N去掉,最后加上也一样,变成:
对第k个特征函数求偏导,得到:
好了,我们把主力集中在第二项,因为第一项已经很简单了:
把分母Z(x)带入,得到:
Z(x)对于一个训练序列来讲是常数,所以可以拿到括号里面,化简得到:
这一步很漂亮,接着:
推导完毕,这个式第一项是真实值,第二项是期望值,当俩者相等时,梯度为0,迭代停止。计算p(y|x)比较麻烦,可以用dynamic programming来求解,类似vertebi。也可以用pseudo-likelihood,而不是maximum-likelihood.具体参考:
Zhan, Kai, Steven Faux, and Fabio Ramos. "Multi-scale Conditional Random Fields for first-person activity recognition." Pervasive Computing and Communications (PerCom), 2014 IEEE International Conference on. IEEE, 2014.
Besag, Julian. "Statistical analysis of non-lattice data." The statistician (1975): 179-195.
之后,对式(10)中的项加入样本集中的每个点i,并加入正则化项的求导结果即得到结果。
第一项是特征函数在先验分布(样本)上的期望,第二项是特征函数在当前模型参数下的期望,忽略正则项的情况下,当梯度为零的时候,两项相等。
推理(inference)
对CRF来说通常两类推理问题,
- 第一,在训练阶段,计算梯度需要每条边的边缘分布
p(y,y′|x(i)) ; - 第二,在测试阶段,求概率最大的标号序列(viterbi)
y∗=argmaxyp(y|x)
在CRF中要做的事情就是在上面那个梯度的公式中求出在当前样本及当前的参数下,各个label状态出现的条件概率。然后基于这个分布来计算特征在当前参数下的期望。注意这个计算是对每个样本进行计算。在图像数据中,inference通常只是求近似解,但是在一维问题中可以求的精确解的,HMM中有个问题是在给定参数之后求解最可能的序列和每个序列的概率,,同样
我们从HMM的算法出发,然后推广到线性链式CRF,HMM可以看错是一个因子图,
即
初始状态
可以看出
初始状态
可以看出
条件概率如下,
推广到线性链式CRF,
MEMM模型
给定观测序列
在MEMM模型中,概率
转移概率都可以通过
这个形式的分布满足最大熵概率分布,及满足特征的先验分布的期望等于特征在给定(训练好的)模型下的期望,即对于所有的i满足
假设序列
最大熵模型
假设 x 观测数据,y为标号,
当
当y为不同的标号状态时候,对应的
模型比较
优点:
(1)和HMM相比,CRF直接对后验概率建模,因而可以容纳任意的上下文信息。特征设计灵活,
(2)和MEMM相比,由于CRF计算全局最优输出节点的条件概率,MEMM只是由前一个状态转移的状态进行的归一,而是对序列的所有可能组合进行归一,克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点
(3)和ME相比,CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,考虑标号序列之间的关系,而不是把假设标注之间独立,
缺点:训练代价大、复杂度高
- [模式识别]条件随机场CRF(ConditionalRandomField)
- CRF 条件随机场
- CRF-条件随机场
- 条件随机场(CRF)
- 条件随机场(CRF)
- 条件随机场(CRF)
- CRF(条件随机场)
- CRF-条件随机场
- 条件随机场CRF
- 条件随机场CRF
- 条件随机场CRF
- 条件随机场CRF
- 条件随机场CRF
- CRF条件随机场简介
- CRF条件随机场简介
- CRF++条件随机场 总结
- CRF条件随机场简介
- CRF条件随机场简介
- mac terminal快捷键
- 【Java故事系列】Java虚拟机的10年
- 百度排名算法调整 经验分享
- 面向对象中的设计模式
- 通过案例对SparkStreaming 透彻理解三板斧之三:解密SparkStreaming运行机制和架构进阶之Job和容错
- [模式识别]条件随机场CRF(ConditionalRandomField)
- 项目3-警察和厨师(1)
- 观察者模式_起到控制器的作用
- spring 集成apache qpid 简单demo
- socket通信代码例子
- 15 个 Android 通用流行框架大全
- 遍历Map的四种方法
- jsp 资料
- Spring MVC 4 文件下载实例(带源码)