本文参考自:http://blog.csdn.net/happyzhouxiaopei/article/details/7960876react
这三个模型均可以用来作序列标注模型。可是其各自有自身的特色,HMM模型是对转移几率和表现几率直接建模,统计共现几率。而MEMM模型是对转移 几率和表现几率创建联合几率,统计时统计的是条件几率。MEMM容易陷入局部最优,是由于MEMM只在局部作归一化,而CRF模型中,统计了全局几率,在 作归一化时,考虑了数据在全局的分布,而不是仅仅在局部归一化,这样就解决了MEMM中的标记偏置的问题。算法
举个例子,对于一个标注任务,“我爱北京天安门“,网络
标注为" s s b e b c e"app
对于HMM的话,其判断这个标注成立的几率为 P= P(s转移到s)*P('我'表现为s)* P(s转移到b)*P('爱'表现为s)* ...*P().训练时,要统计状态转移几率矩阵和表现矩阵。dom
对于MEMM的话,其判断这个标注成立的几率为 P= P(s转移到s|'我'表现为s)*P('我'表现为s)* P(s转移到b|'爱'表现为s)*P('爱'表现为s)*..训练时,要统计条件状态转移几率矩阵和表现矩阵。分布式
对于CRF的话,其判断这个标注成立的几率为 P= F(s转移到s,'我'表现为s)....F为一个函数,是在全局范围统计归一化的几率而不是像MEMM在局部统计归一化的几率。函数
优势:oop
(1)CRF没有HMM那样严格的独立性假设条件,于是能够容纳任意的上下文信息。特征设计灵活(与ME同样) ————与HMM比较性能
(2)同时,因为CRF计算全局最优输出节点的条件几率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。 ————与MEMM比较学习
(3)CRF是在给定须要标记的观察序列的条件下,计算整个标记序列的联合几率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。————与ME比较
缺点:训练代价大、复杂度高
HMM模型中存在两个假设:一是输出观察值之间严格独立,二是状态的转移过程当中当前状态只与前一状态有关(一阶马尔可夫模型)。
MEMM模型克服了观察值之间严格独立产生的问题,可是因为状态之间的假设理论,使得该模型存在标注偏置问题。
CRF模型解决了标注偏置问题,去除了HMM中两个不合理的假设。固然,模型相应得也变复杂了。
HMM模型将标注看做马尔可夫链,一阶马尔可夫链式针对相邻标注的关系进行建模,其中每一个标记对应一个几率函数。HMM是一种产生式模型,定义了联合几率分布 ,
其中x和y分别表示观察序列和相对应的标注序列的随机变量。为了可以定义这种联合几率分布,产生式模型须要枚举出全部可能的观察序列,这在实际运算过程当中很困难,
由于咱们须要将观察序列的元素看作是彼此孤立的个体即假设每一个元素彼此独立,任什么时候刻的观察结果只依赖于该时刻的状态。
HMM模型的这个假设前提在比较小的数据集上是合适的,但实际上在大量真实语料中观察序列更多的是以一种多重的交互特征形式表现,观察元素之间普遍存在长程相关性。
在命名实体识别的任务中,因为实体自己结构所具备的复杂性,利用简单的特征函数每每没法涵盖全部的特性,这时HMM的假设前提使得它没法使用复杂特征(它没法使用多于一个标记的特征。
最大熵模型可使用任意的复杂相关特征,在性能上最大熵分类器超过了Byaes分类器。可是,做为一种分类器模型,这两种方法有一个共同的缺点:
每一个词都是单独进行分类的,标记之间的关系没法获得充分利用,具备马尔可夫链的HMM模型能够创建标记之间的马尔可夫关联性,这是最大熵模型所没有的。
最大熵模型的优势:首先,最大熵统计模型得到的是全部知足约束条件的模型中信息熵极大的模型;
其次,最大熵统计模型能够灵活地设置约束条件,经过约束条件的多少能够调节模型对未知数据的适应度和对已知数据的拟合程度;
再次,它还能天然地解决了统计模型中参数平滑的问题。
最大熵模型的不足:首先,最大熵统计模型中二值化特征只是记录特征的出现是否,而文本分类须要知道特征的强度,所以,它在分类方法中不是最优的;
其次,因为算法收敛的速度较慢,因此致使最大熵统计模型它的计算代价较大,时空开销大;再次,数据稀疏问题比较严重。
最大熵马尔科夫模型把HMM模型和maximum-entropy模型的优势集合成一个产生式模型,这个模型容许状态转移几率依赖于序列中彼此之间非独立的特征上,
从而将上下文信息引入到模型的学习和识别过程当中,提升了识别的精确度,召回率也大大的提升,有实验证实,这个新的模型在序列标注任务上表现的比HMM和无状态的最大熵模型要好得多。
CRF模型的特色:首先,CRF在给定了观察序列的状况下,对整个的序列的联合几率有一个统一的指数模型。一个比较吸引人的特性是其 损失函数 的凸面性。
其次,条件随机域模型相比较改进的隐马尔可夫模型能够更好更多的利用待识别文本中所提供的上下文信息以得更好的实验结果。
条件随机域在中文组块识别方面有效,并避免了严格的独立性假设和数据概括偏置问题。
条件随机域(CRF)模型应用到了中文名实体识别中,而且根据中文的特色,定义了多种特征模板。而且有测试结果代表:在采用相同特征集合的条件下,条件随机域模型较其余几率模型有更好的性能表现。
再次,词性标注主要面临兼类词消歧以及未知词标注的难题,传统隐马尔科夫方法不易融合新特征,而最大熵马尔科夫模型存在标注偏置等问题。
论文引入条件随机域创建词性标注模型,易于融合新的特征,并能解决标注偏置的问题。
CRFs具备很强的推理能力,而且可以使用复杂、有重叠性和非独立的特征进行训练和推理,可以充分地利用上下文信息做为特征,还能够任意地添加其余外部特征,
使得模型可以获取的信息很是丰富。同时,CRFs解决了最大熵模型中的“label bias”问题。
CRFs与最大熵模型的本质区别是:最大熵模型在每一个状态都有一个几率模型,在每一个状态转移时都要进行归一化。若是某个状态只有一个后续状态,那么该状态到后续状态的跳转几率即为1。这样,无论输入为任何内容,它都向该后续状态跳转。而CRFs是在全部的状态上创建一个统一的几率模型,这样在进行归一化时,即便某个状态只有一个后续状态,它到该后续状态的跳转几率也不会为1,从而解决了“labelbias”问题。所以,从理论上讲,CRFs很是适用于中文的词性标注。
CRF模型的优势:首先,CRF模型因为其自身在结合多种特征方面的优点和避免了标记偏置问题。其次,CRF的性能更好,CRF对特征的融合能力比较强,
对于实例较小的时间类ME来讲,CRF的识别效果明显高于ME的识别结果。
CRF模型的不足:首先,经过对基于CRF的结合多种特征的方法识别英语命名实体的分析,发如今使用CRF方法的过程当中,特征的选择和优化是影响结果的关键因素,
特征选择问题的好与坏,直接决定了系统性能的高低。其次,训练模型的时间比ME更长,且得到的模型很大,在通常的PC机上没法运行。
------------------------------------------------------------------我是华丽丽的分割线---------------------------------------------------------------------------------------------------------
一部分区别在于几率归一化的时候。CRF的归一化在模型上更加合理(可是在计算的时候可能致使计算量增长),而HMM的归一化会致使label bias问题
正文:
通常能够从两个方面来理解CRF模型:
一个从通常的graphical model来的(能够当作logistic回归的扩展)。
另外一个方面是linear chain CRF与HMM有相似的结构,而分别是discriminative model和generative model。
直接扔出CRF的公式会给人一种wtf的感受,我阅读的材料都是从无向图模型开始提及,从这个模型开始呢,能够理解公式怎么来的,那咱们就从这个模型提及吧。
图中{Y1,Y2,Y3}和{Y3,Y2,Y4}是最大团,包含的任何节点都两两相连被称做团。最大团就是不能再添加节点。
而后呢,有个定理叫Hammersley-Clifford定理,给出了无向图模型P(Y)的公式。
- Hammersley-Clifford定理:
几率无向图模型的联合几率分布P(Y)能够表示为以下形式:
势函数取 对数线性,就获得了第一次见让本学渣云里雾里的公式。(懒得输了贴个图)
再详细点:
就是linear chain CRF常见的两种特征函数指数和的形式。
注意点!!!高潮来了!!若是咱们把上式中的特征函数去掉,获得就是自变量X关于Y的logistic回归(加上一个normalizer函数Z(x)),每一个Y和X之间对数线性关系。
本学渣看到这里的时候真是amazing了一下。
好了,那么是否是能够说linear chain CRF是logistic回归,再加上了有关相邻项某种神秘联系的参数呢?看起来是这样的,我也不敢肯定= =、、
以后呢,再从HMM的角度看。
右边取对数变成和的形式,再加上归一化的Z(x) 获得
------------------------------------------------------------------我是华丽丽的分割线---------------------------------------------------------------------------------------------------------
来来来,这两天正好在复习CRF,我从头给你说。。。
模型
------
首先什么是随机场呢,一组随机变量,他们样本空间同样,那么就是随机场。当这些随机变量之间有依赖关系的时候,对咱们来讲才是有意义的。
咱们利用这些随机变量之间的关系建模实际问题中的相关关系,实际问题中咱们可能只知道这两个变量之间有相关关系,但并不知道具体是多少,咱们想知道这些依赖关系具体是什么样的,因而就把相关关系图画出来,而后经过实际数据训练去把具体的相关关系训练出来嵌入到图里,而后用获得的这个图去进行预测、去进行reference等不少事情。
那么为了简化某些为问题来讲,也为了这个图画出来能用,咱们会在画图的时候要遵循一些假设和规则,好比马尔科夫独立性假设。按照这个假设和规则来画图,画出来的图会知足一系列方便的性质便于使用。
马尔可夫独立性假设是说:对一个节点,在给定他所链接的全部节点的前提下,他与外接是独立的。就是说若是你观测到了这个节点直接链接的那些节点的值的话,那他跟那些不直接链接他的点就是独立的。形式上,咱们是想把他设计成这个样子的,边能够传递信息,点与点之间经过边相互影响,若是观测到一个节点的取值或者这个节点的取值是常量,那么别的节点就没法经过这个节点来影响其余节点。因此对一个节点来讲,若是用来链接外界的全部节点都被锁住了,那他跟外界就没法传递信息,就独立了。这比贝叶斯网络就直观多了,贝叶斯网络要判断两点之间独立还要看有没有v-structure,还要看边的指向。
呐,知足马尔可夫独立性的随机场,就叫马尔可夫随机场。它不只具备我刚才说的那些性质,除此以外,还等价于吉布斯分布。
这些边具体是如何建模的呢,以什么形式记录这些几率信息的?贝叶斯网络每一条边是一个条件几率分布,P(X|Y),条件是父节点、结果是子节点。他有一个问题,就是当我知道A、B、C三个变量之间有相关关系,可是不知道具体是谁依赖谁,或者 我不想先假设谁依赖谁,这个时候贝叶斯就画不出来图了。由于 贝叶斯网络是经过变量之间的条件分布来建模整个网络的,相关关系是经过依赖关系(条件分布)来表达的。而马尔可夫随机场是这样, 我不想知道这三个变量间究竟是谁依赖谁、谁是条件谁是结果,我只想用联合分布直接表达这三个变量之间的关系。好比说两个变量A、B,这两个变量的联合分布是:| A, B | P(A, B) |
|--------------+---------|
| A = 0, B = 0 | 100 |
| A = 0, B = 1 | 10 |
| A = 1, B = 0 | 20 |
| A = 1, B = 1 | 200 |
这个分布表示,这条边的功能是使它链接的两点(A和B)趋同,当A = 0的时候B更可能等于0不太可能等于1,当A = 1的时候B更可能等于1不太可能等于0。这样一来你知道了三个变量之间的联合分布,那他们两两之间的条件分布天然而然就在里面。
这样出来的图是等价于吉布斯分布的,就是说,你能够只在每一个最大子团上定义一个联合分布(而不须要对每一个边定义一个联合分布),整个图的联合几率分布就是这些最大子团的联合几率分布的乘积。固然这里最大子团的联合几率并非标准的联合几率形式,是没归一化的联合几率,叫factor(因子),整个图的联合几率乘完以后下面再除一个归一化因子和就归一化了,最终是一个联合几率,每一个子团记载的都是因子,是没归一化的几率,严格大于零,能够大于一。但关键是依赖关系、这些相关关系已经encode在里面了。
这是马尔科夫随机场。
条件随机场是指这个图里面一些点我已经观测到了,求,在我观测到这些点的前提下,整张图的分布是怎样的。就是given观测点,你去map inference也好你去作之类的事情,你可能不求具体的分布式什么。这里还要注意的是,马尔科夫随机场跟贝叶斯网络同样都是产生式模型,条件随机场才是判别式模型。
这是条件随机场,NER(命名实体识别)这个任务用到的是线性链条件随机场。
线性链条件随机场的形式是这样的,观测点是你要标注的这些词自己和他们对应的特征,例如说词性是否是专有名词、语义角色是否是主语之类的。隐节点,是这些词的标签,好比说是否是人名结尾,是否是地名的开头这样。这些隐节点(就是这些标签),依次排开,相邻的节点中间有条边,跨节点没有边(线性链、二阶)。而后全部观测节点(特征)同时做用于全部这些隐节点(标签)。至于观测节点之间有没有依赖关系,这些已经不重要了,由于他们已经被观测到了,是固定的。
这是线性链条件随机场的形式。
呐,这些特征是怎么表达的呢?是这样,他有两种特征,一种是转移特征,就是涉及到两个状态之间的特征。另外一种就是简单的状态特征,就是只涉及到当前状态的特征。特征表达形式比较简单,就是你是否知足我特征所说的这个配置,是就是1,不是就是。好比说,上一个状态是地名的中间,且当前词是'国'(假设他把中国分词 拆成两个了),且当前词的词性是专有名词、且上一个词的词性也是专有名词,若是知足这个配置、输出就是一、不知足就输出0。而后这些特征每一个都有一个权 重,咱们最后要学的就是这些权重。特征跟权重乘起来再求和,外面在套个exp,出来就是这个factor的形式。这是一个典型的对数线性模型的表达方式。这种表达方式很是常见,有不少好处,好比为何要套一个exp呢?一方面,要保证每个factor是正的,factor能够大于一也能够不归一化,但必定要是正的。另外一方面,咱们最后要经过最大似然函数优化的,似然值是这些 factor的累乘,对每个最大子团累乘。这么多项相乘没有人直接去优化的,都是取log变成对数似然,而后这些累乘变成累加了嘛,而后优化这个累加。不管是算梯度用梯度降低,仍是另导数为零求解析解都很方便了(这个表达形态下的目标函数是凸的)。你套上exp以后,再取对数,那么每一个因子就变成一堆特征乘权重的累积,而后整个对数似然就是三级累积,对每一个样本、每一个团、每一个特征累积。这个形式就颇有利了,你是求导仍是求梯度仍是怎样,你面对的就是一堆项的和,每一个和是一个1或者一个0乘以一个 权重。固然后面还要减一个log(Z),不过对于map inference来讲,给定Z以后log(Z)是常量,优化能够不带这一项。
推断
------
线性链的条件随机场跟线性链的隐马尔科夫模型同样,通常推断用的都是维特比算法。这个算法是一个最简单的动态规划。
首先咱们推断的目标是给定一个X,找到使P(Y|X)最大的那个Y嘛。而后这个Z(X),一个X就对应一个Z,因此X固定的话这个项是常量,优化跟他不要紧(Y的取值不影响Z)。而后 exp也是单调递增的,也不带他,直接优化exp里面。因此最后优化目标就变成了里面那个线性和的形式,就是对每一个位置的每一个特征加权求和。好比说两个状态的话,它对应的几率就是从开始转移到第一个状态的几率加上从第一个转移到第二个状态的几率,这里几率是只exp里面的加权和。那么这种关系下就能够用维特比了,首先你算出第一个状态取每一个标签的几率,而后你再计算到第二个状态取每一个标签得几率的最大值,这个最大值是指从状态一哪一个标签转移到这个标签的几率最大,值是多 少,而且记住这个转移(也就是上一个标签是啥)。而后你再计算第三个取哪一个标签几率最大,取最大的话上一个标签应该是哪一个。以此类推。整条链计算完以后, 你就知道最后一个词去哪一个标签最可能,以及去这个标签的话上一个状态的标签是什么、取上一个标签的话上上个状态的标签是什么,酱。这里我说的几率都是 exp里面的加权和,由于两个几率相乘其实就对应着两个加权和相加,其余部分都没有变。
学习
------
这是一个典型的无条件优化问题,基本上全部我知道的优化方法都是优化似然函数。典型的就是梯度降低及其升级版(牛顿、拟牛顿、BFGS、L-BFGS),
这里版本最高的就是L-BFGS了吧,因此通常都用L-BFGS。除此以外EM算法也能够优化这个问题。
------------------------------------------------------------------我是华丽丽的分割线---------------------------------------------------------------------------------------------------------
基本符号:Y是序列的标注,X是序列的特征
二者的建模方式不一样:CRF: 最大熵准则建模条件几率
HMM:假设出变量间的几率分布,建模全部观察到的变量的联合分布。在Y变量间作了markov假设。
再次注意CRF跟markov不要紧!linear chain CRF才和markov有关。
而linear chain CRF和MEMM的分母在求和号里面外面的区别,并非CRF和HMM的区别。
至于CRF和HMM,要先把CRF约束成linear chain CRF,而后linear chain CRF和HMM的区别:是判别式模型和生成模型的区别,是函数拟合和几率模型的区别。
这里再多说点,HMM叫hidden markov model, markov上面已经说了,而hidden是什么意思呢?在上面的例子里,Y是序列的标注,是可见的观察量。可是HMM的标准介绍里面,Y是未知量,HMM建模的是p(X) = sum_Y P(Y,X) 而不是 P(Y,X),注意要对Y求和的。搞语音识别的同窗通常接触的是这个HMM,这个是带有hidden的真身,而搞天然语言处理的同窗接触的可能是Y是可见量的那个HMM,但实际上是阉割版的HMM,由于根本没有hidden的变量啊,没有了hidden变量的hmm就不须要EM来训练,很很差玩的。学hmm的时候不学EM,很惋惜,EM是ML领域最神奇的算法。
------------------------------------------------------------------我是华丽丽的分割线---------------------------------------------------------------------------------------------------------