条件随机场(Conditional Random Fields, CRF)

条件随机场(Conditional Random Fields, CRF)

本文翻译自英文博客,原文地址:https://medium.com/ml2vec/overview-of-conditional-random-fields-68a2a20fa541

概要

    CRF是一个判别模型,通常用于序列预测任务。其核心思想是:结合已经预测出的标签进行待预测信息的推测,从而提高模型的预测能力。本文从以下几点介绍CRF:

    1、什么是判别器(它和生成器有什么区别);

    2、CRF涉及的数学概念;

    3、CRF和HMM有哪些区别;

    4、CRF的应用有哪些;

1 什么是判别器

    机器学习主要有两类模型,分别是判别模型和生成模型。CRF是一种判别模型,它的功能是对类别间的决策边界进行建模。生成模型则是对数据生成进行建模,建模完成后,模型生成的数据,可用于数据分类。举个例子,朴素贝叶斯分类器,是一个典型生成器算法,逻辑斯特回归则是一个基于最大似然估计的判别器算法。下面可以看看它们如何应用于类别预测。

公式1 贝叶斯公式

    朴素贝叶斯的公式如上式所示,可以通过贝叶斯规则,展开变成条件概率公式,如以下公式所示。

公式2 贝叶斯公式展开

    逻辑回归分类器依赖于逻辑斯特回归方程,公式如下所示。

公式3 逻辑斯特回归方程

    分类器通过训练数据训练,更新分类器权重参数theta,不断优化分类器,公式如下:

公式4 逻辑斯特回归参数优化

    从上式可以看出,逻辑斯特回归是直接通过最大化条件概率求解的。通过贝叶斯规则的转换,条件概率公式可以转换得到上面所求的生成器的公式。公式如下:

公式5 贝叶斯准则应用于逻辑斯特回归

    应用贝叶斯准则后,逻辑斯特回归方程变成先验概率和最大似然概率的乘积(P(x)与结果无关,认为是常数,可忽略)。另外,可以注意到,p(x|y) * p(y) = p(x, y),即为x,y的联合概率分布,这也符合前面生成器的定义。生成模型通过学习联合概率分布,用于求输入x和标签y的联合概率分布。类似的,判别模型通过学习条件概率分布,学习出决策边界函数,直接用于分类数据。所以,对于判别器模型,给定一个输入样本,可以通过条件概率模型去预测它的类别。

    这些定义如何应用到CRF?CRF是一个判别模型,它的核心思想就是把逻辑斯特回归用于序列输入。如果你熟悉HMM的话,那么你就会发现它和CRF有一些共同之处,它们都是应用于序列输入问题。HMM是应用一个转换矩阵和输入去求发射矩阵,其核心思想和贝叶斯类似,另外,HMM也是生成模型。

2 CRF涉及的数学概念

    有了以上的信息,下面看看CRF及其如何解决序列输入问题。

    就如同上面所示的,我们建模条件概率的公式如下:

公式6 条件概率公式

    在CRF中,我们的输入数据是序列,因此在预测当前输入的输出时,需要考虑前文信息。为了能够建模前文信息,我们使用特征函数(Feature Function),它有多项输入,这些输入包括:

    1、输入序列,X;

    2、当前输入的位置信息i;

    3、前一个输入的标签;

    4、当前输入的标签;

    因此,特征函数定义如下:

公式7 特征函数

    特征函数的功能是求字符在序列中所表达的信息(强调上下文)。例如,将CRF用于词性标注任务的例子:“当L{i-1}为名词,并且L{i}是动词时,f(X, i, L{i-1}, L{i}) = 1,否则f(X, i, L{i-1}, L{i}) = 0;类似的,当L{i-1}为动词,并且L{i}是形容词时,f(X, i, L{i-1}, L{i}) = 1,否则f(X, i, L{i-1}, L{i}) = 0”

    每个特征函数都是基于前面一个词的标签和当前词预测的,其预测结果不是0,就是1。要训练一个CRF,首先需要设计特征函数和初始参数(lambda),然后通过优化算法去更新参数,相关公式如下:

公式8 CRF的概率分布函数

        模型建立好后,用最大似然概率估计(MLE)去评估函数。为了应用最大似然,我们首先需要对函数取负对数,以便计算。公式如下:

公式9 CRF的负对数似然函数

    为了得到最大似然概率函数的解,我们对lambda求导。公式如下:

公式10 求导公式

    然后可以通过梯度下降法对求解。梯度更新公式如下:

公式11 CRF梯度更新公式

    CRF的求解总结如下:

        (1)定义特征函数F;

        (2)随机初始化lambda;

        (3)应用梯度下降法更新参数直至收敛;

    我们可以看到,CRF和逻辑斯特回归非常像,它们都是求解条件概率分布。只是CRF为了解决序列输入的问题,引入了特征函数。

CRF与HMM的区别

    通过前面的分析,可以很明显的看出,虽然它们都是用于解决序列输入问题,但是CRF和HMM是两个完全不同的模型。

    它们的不同点包括:

    (1)HMM是生成模型,通过求解联合概率分布得到输出。而CRF是判别模型,通过求解条件概率分布得到输出。

    (2)CRF不依赖于独立假设(标签相互独立),避免了标签bias。

    但是从另外一方面看,HMM可以看成是CRF的一个特例(转换概率固定的一个特例)。HMM是基于朴素贝叶斯的,而朴素贝叶斯可以从逻辑斯特回归衍生出来,而CRF就是基于逻辑斯特回归的。

CRF的应用

    由于CRF在解决序列问题的优异能力,它被广泛应用于NLP的相关任务中。一个例子就是词性标注。句子中的词的词性通常依赖于前面的词,所以可以通过建模CRF解决词性标注问题。另外还包括实体命名识别、或者名词提取等。CRF可以用于任何多变量相互依赖的序列问题。另外,CRF还可以应用于图像区块识别和基因序列检测问题。

扩张阅读

    如果对CRF想进行更多的了解,可以阅读以下文献。    

https://stackoverflow.com/questions/879432/what-is-the-difference-between-a-generative-and-discriminative-algorithm [There are several answers in this post that provide a good overview of Discriminative and Generative algorithms.]

https://www.cs.cmu.edu/~tom/mlbook/NBayesLogReg.pdf [A detailed review between the differences in Naive Bayes and Logistic Regression.]

http://homepages.inf.ed.ac.uk/csutton/publications/crftut-fnt.pdf [Section 2.2 on Discriminative and Generative classifiers, and how they apply to Naive Bayes vs Logistic Regression.]

https://prateekvjoshi.com/2013/02/23/why-do-we-need-conditional-random-fields/ and https://prateekvjoshi.com/2013/02/23/what-are-conditional-random-fields/ [These are both very good posts on introduction to Conditional Random Fields and how they differ from graphical models (like HMMs)]

http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/ [A light overview of Conditional Random Fields.]

http://www.lsi.upc.edu/~aquattoni/AllMyPapers/crf_tutorial_talk.pdf [Slide deck that goes over Conditional Random Fields, how to define feature functions, and steps on it’s derivation.]

你可能感兴趣的:(条件随机场(Conditional Random Fields, CRF))