什么是CRF
CRF即条件随机场(Conditional Random Fields),是在给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,它是一种判别式的概率无向图模型,既然是判别式,那就是对条件概率分布建模。
CRF较多用在自然语言处理和图像处理领域,在NLP中,它是用于标注和划分序列数据的概率化模型,根据CRF的定义,相对序列就是给定观测序列X和输出序列Y,然后通过定义条件概率P(Y|X)来描述模型。
CRF的输出随机变量假设是一个无向图模型或者马尔科夫随机场,而输入随机变量作为条件不假设为马尔科夫随机场,CRF的图模型结构理论上可以任意给定,但我们常见的是定义在线性链上的特殊的条件随机场,称为线性链条件随机场。
概率无向图模型
前面说到CRF的输出随机变量是一个概率无向图模型,那么现在看看该模型。
概率无向图模型是由无向图表示的联合概率分布,假设联合概率分布P(Y)通过无向图来表示,则在图中节点表示随机变量,边表示随机变量之间的依赖关系,联合概率分布P(Y)满足马尔科夫性则称其为概率无向图模型,或者是马尔科夫随机场。
如下图,图是一个由节点和边组成的结构体,无向是指边没有方向,整个图记作G=(V,E),其中V为节点的集合,E为边的集合。
每个节点v对应一个随机变量Yv,于是Y=Yv|v∈V,在观察序列X的条件下,每个随机变量Yv都满足马尔科夫特性,即
P(Yv|X,Yw)=p(Yv|X,Yw,w∼v) ,其中w∼v表示w和v是图G中邻近的两个节点。
线性链条件随机场
无向图的结构理论上可以是任意的,但在NLP中对于标记处理问题,对其建模主要用最简单最普通的链式结构,即线性链条件随机场。如下图,可以看到节点为线性链结构,节点对应了序列Y的元素,而观察序列X不做任何独立性假设,但X序列的结构也可以是线性链结构。
综上所述,设有线性链结构的随机变量序列 X=(X1,X2,...,Xn),Y=(Y1,Y2,...,YN),在给定观察序列X的条件下,随机变量序列Y的条件概率分布为P(Y|X),若其满足马尔科夫特性,即
P(Yi|X,Y1,Y2...Yn)=P(Yi|X,Yi−1,Yi+1),这时P(Y|X)则为线性链条件随机场。
概率的定义
在线性链条件随机场中,在给定的观察序列X情况下,某个特定序列Y的概率为P(Y|X),根据定义有,
P(Y|X)=exp(∑i,kλktk(Yi−1,Yi,X,i)+∑i,lμlsl(Yi,X,i))
其中,tk(Yi−1,Yi,X,i)表示转移函数,表示在序列X下序列Y在位置i-1及i对应的值转移概率,而sl(Yi,X,i)表示状态函数,表示在序列X下序列Y在位置i对应的值概率。另外λk,μl分别为两个函数的权重。
转移函数和状态函数都称为特征函数,特征函数一般取值0或1,满足特征函数的则为1,否则为0。比如下面的转移函数,只有当Yi−1,Yi满足一定的条件时才为1,否则为0。
tk(Yi−1,Yi,X,i)={1,0,conditionsaboutYi−1,Yiotherwise
如果我们令sl(Yi,X,i)=sl(Yi−1,Yi,X,i),则转移函数和状态函数可以统一由特征函数表示,对特征在各个位置i求和,有
Fk(Y,X)=∑ni=1fk(Yi−1,Yi,X,i)
最后再加上归一化,最终条件随机场的条件概率为,
P(Y|X)=1Z(X)exp(∑Kk=1λkFk(Y,X))
其中,
Z(X)=∑yexp(∑Kk=1λkFk(Y,X))
如何训练CRF
训练CRF主要就是要训练特征函数的权重,对于训练集(x1,y1),(x2,y2),...,(xn,yn),采用极大似然估计法计算权重参数,条件概率的对数似然函数为:
L(λ)=∑x,yp~(x,y)∑ni=1(∑Kk=1λkfk(yi−1,yi,x,i))−∑xp~(x)logZ(x)
其中p~(x,y)为训练样本集中xy的经验概率,它等于xy同时出现的次数除以样本空间容量;p~(x)为训练样本集中x的经验概率,它等于x出现的次数除以样本空间容量。
然后对λ求导,令其为0再求解出λ,即得到解。因为极大似然估计法不一定能得到一个近似解,所以需要利用一些迭代技术来确定参数,比如GIS或IIS算法,这里不再深入。
啥时考虑CRF
如果信息是与时间或空间的前后有关联时要考虑到CRF。
以下是广告
========广告时间========
鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。
=========================
欢迎关注: