飞鸟各投林

导航

HMM,MEMM,CRF模型的比较

本文参考自:http://blog.csdn.net/happyzhouxiaopei/article/details/7960876

这三个模型都可以用来做序列标注模型。但是其各自有自身的特点,HMM模型是对转移概率和表现概率直接建模,统计共现概率。而MEMM模型是对转移 概率和表现概率建立联合概率,统计时统计的是条件概率。MEMM容易陷入局部最优,是因为MEMM只在局部做归一化,而CRF模型中,统计了全局概率,在 做归一化时,考虑了数据在全局的分布,而不是仅仅在局部归一化,这样就解决了MEMM中的标记偏置的问题。

举个例子,对于一个标注任务,“我爱北京天安门“,

                                  标注为" s s  b  e b c e"

对于HMM的话,其判断这个标注成立的概率为 P= P(s转移到s)*P('我'表现为s)* P(s转移到b)*P('爱'表现为s)* ...*P().训练时,要统计状态转移概率矩阵和表现矩阵。

对于MEMM的话,其判断这个标注成立的概率为 P= P(s转移到s|'我'表现为s)*P('我'表现为s)* P(s转移到b|'爱'表现为s)*P('爱'表现为s)*..训练时,要统计条件状态转移概率矩阵和表现矩阵。

对于CRF的话,其判断这个标注成立的概率为 P= F(s转移到s,'我'表现为s)....F为一个函数,是在全局范围统计归一化的概率而不是像MEMM在局部统计归一化的概率。

优点:

(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的感觉,我阅读的材料都是从无向图模型开始说起,从这个模型开始呢,可以理解公式怎么来的,那我们就从这个模型说起吧。

- 概率无向图模型(probabilistic undirected graphical model)
首先我们有无向图G=(V,E),V是节点,E是边, 图G中每个节点v上都有一个随机变量y,这样所有的节点上的随机变量就构成一组随机变量Y,图G上有联合概率分布P(Y)。
边e表示相邻节点的变量存在某种神秘的联系。
图G上的随机变量Y满足马尔科夫性,即两个不相邻的节点上的随机变量yi,yj条件独立。
这个模型的定义就这么简单,它又叫马尔科夫随机场(MRF),这个名字貌似响亮一些。
再稍微介绍一下最大团(maximal clique) 如下图

图中{Y1,Y2,Y3}和{Y3,Y2,Y4}是最大团,包含的任何节点都两两相连被称作团。最大团就是不能再添加节点。

然后呢,有个定理叫Hammersley-Clifford定理,给出了无向图模型P(Y)的公式。
- Hammersley-Clifford定理
概率无向图模型的联合概率分布P(Y)可以表示为如下形式:

- 条件随机场(conditional random field)
定义:(和上面的模型比较就是多了一个X。)
设X与Y是随机变量,P(Y|X)是给定条件X的条件下Y的条件概率分布,若随机变量Y构成一个由无向图G=(V,E)表示的马尔科夫随机场。则称条件概率分布P(X|Y)为条件随机场。
虽然定义里面没有要求,我们还是默认X和Y结构一致,这是general CRF,然后看看linear chain CRF,
线性链就是X和Y都是一串序列,线性链里面呢,最大团就是相邻的两项,y_i和y_i+1。
由Hammersley-Clifford定理写出linear chain CRF的公式。

势函数取 对数线性,就得到了第一次见让本学渣云里雾里的公式。(懒得输了贴个图)

再详细点:

就是linear chain CRF常见的两种特征函数指数和的形式。
注意点!!!高潮来了!!如果我们把上式中的特征函数t_{k}去掉,得到就是自变量X关于Y的logistic回归(加上一个normalizer函数Z(x)),每个Y和X之间对数线性关系。

本学渣看到这里的时候真是amazing了一下。

好了,那么是不是可以说linear chain CRF是logistic回归,再加上了有关相邻项某种神秘联系的参数呢?看起来是这样的,我也不敢确定= =、、
之后呢,再从HMM的角度看。

- HMM和linear chain CRF
HMM的概率分布可以写成这样的形式:

右边取对数变成和的形式,再加上归一化的Z(x) 得到

嗯,这样一看就和前面的CRF长的很像了,就是一个是条件概率,一个是联合概率,
这也是discriminative model和generative model的区别。
注意Z(x)是遍历所有y的全局归一化,写在乘积符号里面的是local归一化,得到的是MEMM。
其实generative和discriminative的差别是很大的,因为假设不一样,结果和参数训练的方法都不同,
线性的CRF不需要EM算法,稍微简单一些,最大似然训练集之后,梯度下降加上vertebi算法就可以了。

 


嗯,所以说我们就是从这两条路走到了线性的CRF,general的CRF也是从MRF来的,公式是最大团的乘积形式,计算上麻烦一些,会用到loopy belief propagation。

------------------------------------------------------------------我是华丽丽的分割线---------------------------------------------------------------------------------------------------------

来来来,这两天正好在复习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,不是就是。比如说,上一个状态是地名的中间,且当前词是'国'(假设他把中国分词 拆成两个了),且当前词的词性是专有名词、且上一个词的词性也是专有名词,如果满足这个配置、输出就是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,直接用最大熵准则建模p(Y|X)的概率。
  • 而HMM,是在做了markov假设下去建模p(Y,X)(即一切观察量的联合概率分布)。
这里借用@li Eta
同学答案里的公式,我把i变成t,要注意:
  1. CRF是用最大熵准则建模p(Y|X),从而得到一个指数归一化的函数形式,但是分子上应该是exp(sum_i{w_i*f_i(Y,X)}) 而不是f_i(yt,yt+1,X). 把f(Y,X)变到f(yt,yt+1,X)其实是做了一个markov假设的CRF,而不是General形式的CRF. 当然实际应用中,我们甚至把特征简化为只能是f(yt,X)和f(yt,yt+1)(注意此时f里面没X了),进一步减小特征数和加快训练和推断速度。这种叫linear chain CRF。
  2. HMM是生成模型,而 同学贴的实际上是MEMM(最大熵马尔科夫模型),它建模的也是p(Y|X), 而不是一般我们讲的用来建模p(Y,X)的HMM生成模型。HMM生成模型,求和号里是p(yt|yt-1)p(xt|yt)而不是p(yt|yt-1,X).此时p(yt|yt-1)一般就是个多项分布,而p(xt|yt)则可以是任意你用来建模世界的分布。把 同学里面的MEMM的X到Y的箭头倒过来指(变成Y指向X),才是HMM.

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领域最神奇的算法。


CRF叫condition random field,为啥这么叫呢,我猜呢,是一般无向图模型大家就叫markov random field,CRF呢是个二部图,一部分是Y一部分是X,最后建模的是P(Y|X)是个条件概率,所以叫condition random field. 我就这么一猜,确实有点不负责任,这个名字的来源我一直么研究过,这段要是说错了请见谅。

------------------------------------------------------------------我是华丽丽的分割线---------------------------------------------------------------------------------------------------------

 

贝叶斯是生成模型,并且假设变量之间相互独立。那么对于像NLP中NER这样的任务是肯定不行的。
HMM的出现,拓展了贝叶斯的图关系,model了观测变量的markov性,但是,始终表达能力不够,没有context。
CRF不model输出与单个变量之间的关系了,而是与LR类似,model y 与 所有的向量x1,x2,x3,x4.....xn之间的关系,
加上图的local function的表达能力使得context信息和feature扩展能力变强。于是CRF得到了很不错的应用。

 

之前学习过隐马尔可夫模型的话,我们知道它是一个时间序列模型。起初对这个【时间】不以为然,隐马尔可夫模型中的节点,不就是一个个状态么,何必叫时间序列模型,还不如更名为状态序列模型。
学到条件随机场,发现了HMM和CRF的一个显著区别,即节点与节点之间的边,HMM是有向的,而CRF是无向的。
而时间序列,能很好的表达当前状态与之前状态有关而和后续状态无关这一特性,即在图中的有向性,因此时间序列模型相比状态模型更合适。
而CRF则可以成为一个HMM的扩展,称为状态序列模型更合适,从【有向边】升级到【无向边】。


CRF只需要考虑当前观测状态的特性,不像HMM有严格的独立性的要求。
从图的角度来看,就是观测序列的元素之间并不存在图结构。
从建立模型的角度来看,CRF只考虑观测序列X整体,而HMM是将每一个时刻的状态都考虑在内,并且对观测序列做出了马尔科夫独立性假设
正是因为CRF不做独立性假设,这就是“条件随机”的含义。

 

posted on 2017-03-26 22:46  飞鸟各投林  阅读(18325)  评论(0编辑  收藏  举报