花了将近一个多月的时间,终于把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表达式如下
模型优化
这一节我们来讨论如何估计CRF的参数 θ={λk} 给定独立同分布的训练数据 D={x(i),y(j)}Ni=1 x(i)={x(i)1,x(i)2,...,x(i)T} 为序列化输入, y(i)={y(i)1,y(i)2,...,y(i)T} 为序列化输出
优化采用的是带惩罚项的极大似然估计,注意也基于样本独立这个假设,然后通过也通过对数运算把累积问题转换为累加问题。
关于该式的证明:
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来说通常两类推理问题,
在CRF中要做的事情就是在上面那个梯度的公式中求出在当前样本及当前的参数下,各个label状态出现的条件概率。然后基于这个分布来计算特征在当前参数下的期望。注意这个计算是对每个样本进行计算。在图像数据中,inference通常只是求近似解,但是在一维问题中可以求的精确解的,HMM中有个问题是在给定参数之后求解最可能的序列和每个序列的概率,,同样 α α 和 β β 的定义如下
我们从HMM的算法出发,然后推广到线性链式CRF,HMM可以看错是一个因子图,
MEMM模型
给定观测序列 x1,...,xn 通过最大化 P(y1,...,yn|x1,...,xn) P 得到标号序列 y1,...,yn
在MEMM模型中,概率 P(y1,...,yn|x1,...,xn) P表示成了马尔可夫转移概率的连乘,