条件随机场理论(CRFs)可以用于序列标记、数据分割、组块分析等自然语言处理任务中。在中文分词、中文人名识别、歧义消解等汉语自然语言处理任务中都有应用,表现很好。
目前基于 CRFs 的主要系统实现有 CRF,FlexCRF,CRF++
缺点:训练代价大、复杂度高
—预备知识
—产生式模型和判别式模型(Generative model vs. Discriminative model)
—概率图模型
—隐马尔科夫模型
—最大熵模型
机器学习方法的两种分类:产生式模型和判别式模型
假定输入x, 类别标签y
—产生式模型(生成模型)估计联合概率 P(x, y), 因可以根据联合概率来生成样本 —: HMMs
—判别式模型(判别模型)估计条件概率 P(y|x), 因为没有x的知识,无法生成样本,只能判断分类: SVMs,CRF,MEM
一个举例:
(1,0), (1,0), (2,0), (2, 1)
产生式模型:
p(x, y):
P(1, 0) = 1/2, P(1, 1) = 0, P(2, 0) = 1/4, P(2, 1) = 1/4.
判别式模型:
P(y|x):
P(0|1) = 1, P(1|1) = 0, P(0|2) = 1/2, P(1|2) = 1/2
—o和s分别代表观察序列和标记序列
—产生式模型
— 构建o和s的联合分布p(s,o)
—判别式模型
— 构建o和s的条件分布p(s|o)
—产生式模型中,观察序列作为模型的一部分;
—判别式模型中,观察序列只作为条件,因此可以针对观察序列设计灵活的特征。
产生式模型:无穷样本==》概率密度模型 = 产生模型==》预测
判别式模型:有限样本==》判别函数 = 预测模型==》预测
一般认为判别型模型要好于生成型模型,因为它是直接根据数据对概率建模,而生成型模型还要先求两个难度相当的概率
概率图模型
—用图的形式表示概率分布
—基于概率论中贝叶斯规则建立起来的,解决不确定性问题,可以用于人工智能、 数据挖掘、 语言处理文本分类等领域
图模型是表示随机变量之间的关系的图,图中的节点表示随机变量,缺少边表示条件独立假设。因此可以对联合分布提供一种紧致表示
—根据边是否有方向,有两种主要的图模型
◦无向图:亦称马尔科夫随机场(Markov Random Fields, MRF’s)或马尔科夫网络(Markov Networks)
◦有向图:亦称贝叶斯网络(Bayesian Networks)或信念网络(Belief Networks, BN’s).
◦还有混合图模型,有时称为链图(chain graphs)
—我们不妨拿种地来打个比方。其中有两个概念:位置(site),相空间(phase space)。“位置”好比是一亩亩农田;“相空间”好比是种的各种庄稼。我们可以给不同的地种上不同的庄稼,这就好比给随机场的每个“位置”,赋予相空间里不同的值。所以,俗气点说,随机场就是在哪块地里种什么庄稼的事情。
—简单地讲,随机场可以看成是一组随机变量的集合(这组随机变量对应同一个样本空间)。当给每一个位置中按照某种分布随机赋予相空间的一个值之后,其全体就叫做随机场。
—当然,这些随机变量之间可能有依赖关系,一般来说,也只有当这些变量之间有依赖关系的时候,我们将其单独拿出来看成一个随机场才有实际意义。
—具有马尔科夫性质
—体现了一个思想:离当前因素比较遥远(这个遥远要根据具体情况自己定义)的因素对当前因素的性质影响不大。
条件随机场模型是一种无向图模型,它是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。即给定观察序列O,求最佳序列S。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wen718/archive/2010/10/23/5960820.aspx
CRF其实就是一种在生产模型基础上的判别模型?
条件随机场模型是由Lafferty在2001年提出的一种典型的判别式模型。它在观测序列的基础上对目标序列进行建模,重点解决序列化标注的问题条件随机场模型既具有判别式模型的优点,又具有产生式模型考虑到上下文标记间的转移概率,以序列化形式进行全局参数优化和解码的特点,解决了其他判别式模型(如最大熵马尔科夫模型)难以避免的标记偏置问题。
条件随机场理论(CRFs)可以用于序列标记、数据分割、组块分析等自然语言处理任务中。在中文分词、中文人名识别、歧义消解等汉语自然语言处理任务中都有应用,表现很好。
目前基于 CRFs 的主要系统实现有 CRF,FlexCRF,CRF++
缺点:训练代价大、复杂度高
———————————
关于条件随机场的参考文献及其他资料,Hanna Wallach在05年整理和维护的这个页面“conditional random fields”非常不错,其中涵盖了自01年CRF提出以来的很多经典论文(不过似乎只到05年,之后并未更新)以及几个相关的工具包(不过也没有包括CRF++),但是仍然非常值得入门条件随机场的读者参考。
——————————————–
一般序列分类模型常常采用隐马模型(HMM), 像基于类的中文分词, 但隐马模型中存在两个假设: 输出独立性假设和马尔可夫性假设. 其中, 输出独立性假设要求序列数据严格相互独立才能保证推导的正确性, 而事实上大多数序列数据不能 被表示成一系列独立事件. 而条件随机场则使用一种概率图模型, 具有表达长距离依赖性和交叠性特征的能力, 能够较好地解决标注(分类)偏置等问题的优点, 而且所有特征可以进行全局归一化, 能够求得全局的最优解.
条件随机场是一个无向图上概率分布的学习框架, 由Lafferty 等首先引入到自然语言处理的串标引学习任务中来. 最常用的一类CRF是线性链CRF, 适用于我们的分词学习. 记观测串为W=w1w2…wn, 标记串(状态)序列 Y=y1y2…yn, 线性链CRF对一个给定串的标注, 其概率定义为:
。。。 。。。
其中, Y是串的标注序列, W是待标记的字符, fk是特征函数, λk是对应的特征函数的权值, 而t是标记, Z(W)是归一化因子, 使得上式成为概率分布.
CRF模型的参数估计通常使用L-BFGS算法来完成. CRF的解码过程, 也就是求解未知串标注的过程, 需要搜索计算该串上的一个最大联合概率, 即:
Y* = arg max(y)P(Y|W)
在线性链CRF上, 这个计算任务可以用一般的Viterbi算法来有效地完成.
目前我发现的关于CRF的实现有:
* CRF++(http://crfpp.sourceforge.net/)
* Pocket CRF(http://sourceforge.net/project/showfiles.php?group_id=201943)
关于CRF简介及代码实现的网址:http://www.inference.phy.cam.ac.uk/hmw26/crf/#software