CRF条件随机场

有向图和无向图

在正式进入Linear CRF的介绍之前,我们先来看一下有向图和无向图之间的区别

有向图

我们之前介绍了HMM模型,HMM模型就是一个有向图模型

在这里插入图片描述

如图,我们来看一下如何计算有向图的联合概率分布
p ( a , b , c , d , e ) = p ( a ∣ b ) p ( c ∣ b , d , e ) ∗ p ( b ) p ( d ) p ( e ) p(a,b,c,d,e)=p(a|b)p(c|b,d,e)*p(b)p(d)p(e) p(a,b,c,d,e)=p(ab)p(cb,d,e)p(b)p(d)p(e)
很简单,只需要根据依赖关系即可。

无向图

我们需重点来看一下无向图,因为Linear CRF就是一个无向图模型。

在这里插入图片描述

如图所示,就是一个无向图,我们也来考虑如何计算它的条件概率分布。无向图模型中没有像有向图中一样的依赖关系,因此我们要自己定义一种计算方式。

团和极大团

在无向图模型中,我们定义一个概念叫做(clique),每个团内部的节点必须是两两相连的,比如上图中的a,b,e就是一个团。

极大团的定义是,如果在当前的团中再加入任意一个节点都不构成团,那么这个团就是极大团。

势函数

对于每个团,我们定义一个或多个势函数 f f f​​​​​​​,也可以叫做feature function,这些势函数就是用来描述这个团的特征。我们要求每个团的势函数必须是正值,因此,我们得到每个团的势函数为
ϕ ( x 1 , x 2 . . . x n ) = e x p ( ∑ i w i f i ) \phi(x_1,x_2...x_n)=exp(\sum_{i}w_if_i) ϕ(x1,x2...xn)=exp(iwifi)
有了上面两个概念,我们就可以计算无向图中的联合概率分布。无向图的联合概率分布是根据图中所有的极大团进行定义的,以上图为例
p ( a , b , c , d , e ) = 1 Z ϕ ( a , b , e ) ϕ ( b , c , e ) ϕ ( c , d , e ) p(a,b,c,d,e)=\frac{1}{Z}\phi(a,b,e)\phi(b,c,e)\phi(c,d,e) p(a,b,c,d,e)=Z1ϕ(a,b,e)ϕ(b,c,e)ϕ(c,d,e)
其中,Z是一个归一化项,也叫做partition function, Z = ∑ a , b , c , d , e ϕ ( a , b , e ) ϕ ( b , c , e ) ϕ ( c , d , e ) Z=\sum_{a,b,c,d,e}\phi(a,b,e)\phi(b,c,e)\phi(c,d,e) Z=a,b,c,d,eϕ(a,b,e)ϕ(b,c,e)ϕ(c,d,e)

有向图与无向图的联系

在这里插入图片描述

这张图对于理解HMM和CRF以及有向图和无向图帮助很大。横向比较可以看出,HMM实际上就是朴素贝叶斯模型在时间维度上的展开,而Linear CRF模型就是逻辑回归模型在时间序列上的展开;纵向比较可以看出,有向图模型通常与生成模型相关,而无向图模型通常与判别模型相关(当然,没有绝对性的关系)。

MEMM

MEMM实际上是HMM和CRF之间的一个小插曲。首先来说一下HMM的缺点:HMM在预测当前状态时只能看到当前时刻以及之前的观测序列信息,而实际上,比如在词性标注任务中,我们同样也需要当前时刻之后的信息。于是,MEMM模型被设计出来

在这里插入图片描述

如图所示,MEMM模型实际上是将箭头方向改变,并对条件概率进行建模,转化为判别模型。

但这个模型存在一个严重的问题就是label bias problem,简言之,就是由于局部归一化导致的预测偏差问题,在这里我们不做过多解释了。

Linear-Chain CRF

Linear-Chain CRF叫做线性链条件随机场,是一个无向图、判别式模型。我们首先来介绍Log Linear Model。

Log Linear Model

顾名思义,log linear model就是取完log以后是线性函数的模型,它的标准定义是
p ( y ∣ x ; w ) = e x p ∑ j = 1 m w j F j ( x , y ) Z ( x ; w ) p(y|x;w)=\frac{exp\sum_{j=1}^mw_jF_j(x,y)}{Z(x;w)} p(yx;w)=Z(x;w)expj=1mwjFj(x,y)
其中, F i ( x , y ) F_i(x,y) Fi(x,y)就是我们的feature function, w w w是模型参数。feature function定义的不同可以得到不同的模型,logistic regression就是log linear model, 我们首先来看多元逻辑回归是怎么得到的。

多元逻辑回归

定义 F j ( x , y ) = x i I ( y = c ) F_j(x,y)=x_iI(y=c) Fj(x,y)=xiI(y=c),其中 I ( y = c ) I(y=c) I(y=c)是一个indicator function,取值为0/1。下面我们通过一个例子来理解多元逻辑回归。

假设我们有三个类别1、2、3,特征向量 x ∈ R d x\in{R^d} xRd

当前的y=1时:
F j ( x , y ) = x j ( 1 ≤ j ≤ d ) F_j(x,y)=x_j(1\le{j}\le{d}) Fj(x,y)=xj(1jd)

F j ( x , y ) = 0 ( d < j ≤ 3 d ) F_j(x,y)=0(d\lt{j}\le{3d}) Fj(x,y)=0(d<j3d)

当前的y=2时:
F j ( x , y ) = x j ( d < j ≤ 2 d ) F_j(x,y)=x_j(d\lt{j}\le{2d}) Fj(x,y)=xj(d<j2d)

F j ( x , y ) = 0 ( 1 < j ≤ d , 2 d < j ≤ 3 d ) F_j(x,y)=0(1\lt{j}\le{d},2d\lt{j}\le{3d}) Fj(x,y)=0(1<jd,2d<j3d)

当前的y=3时:
F j ( x , y ) = x j ( 2 d < j ≤ 3 d ) F_j(x,y)=x_j(2d\lt{j}\le{3d}) Fj(x,y)=xj(2d<j3d)

F j ( x , y ) = 0 ( 1 < j ≤ d , d < j ≤ 2 d ) F_j(x,y)=0(1\lt{j}\le{d},d\lt{j}\le{2d}) Fj(x,y)=0(1<jd,d<j2d)

因此,我们将模型的参数分成三个部分,即:
w ( 1 ) = ( w 1 , w 2 . . . . . . w d ) w^{(1)}=(w_1,w_2......w_d) w(1)=(w1,w2......wd)

w ( 2 ) = ( w d + 1 , w d + 2 . . . . . . w 2 d ) w^{(2)}=(w_{d+1},w_{d+2}......w_{2d}) w(2)=(wd+1,wd+2......w2d)

w ( 3 ) = ( w 2 d + 1 , w 2 d + 2 . . . . . . w 3 d ) w^{(3)}=(w_{2d+1},w_{2d+2}......w_{3d}) w(3)=(w2d+1,w2d+2......w3d)

于是,原来的条件概率分布我们就可以写作
p ( y = 1 ∣ x ; w ) = e w ( 1 ) x ∑ i = 1 3 e w ( i ) x p(y=1|x;w)=\frac{e^{w^{(1)}x}}{\sum_{i=1}^{3}e^{w^{(i)}x}} p(y=1x;w)=i=13ew(i)xew(1)x

p ( y = 2 ∣ x ; w ) = e w ( 2 ) x ∑ i = 1 3 e w ( i ) x p(y=2|x;w)=\frac{e^{w^{(2)}x}}{\sum_{i=1}^{3}e^{w^{(i)}x}} p(y=2x;w)=i=13ew(i)xew(2)x

p ( y = 3 ∣ x ; w ) = e w ( 3 ) x ∑ i = 1 3 e w ( i ) x p(y=3|x;w)=\frac{e^{w^{(3)}x}}{\sum_{i=1}^{3}e^{w^{(i)}x}} p(y=3x;w)=i=13ew(i)xew(3)x

这就是多元的逻辑回归,而这个形式刚好就是我们的softmax函数。

条件随机场

条件随机场也是log linear model的一种,只是它的feature function与多元逻辑回归不同。在之前我们讲到过,Linear CRF可以看作是逻辑回归在时间序列上的展开,而且Linear CRF的极大团其实是 y i − 1 , y i , x y_{i-1},y_i,x yi1,yi,x​,因此我们可以将feature function改写为
e x p ∑ j = 1 m w j F j ( x , y ) = e x p ∑ j = 1 m w j ∑ t = 2 T f j ( y t − 1 , y t , x ) exp\sum_{j=1}^mw_jF_j(x,y)=exp\sum_{j=1}^mw_j\sum_{t=2}^Tf_j(y_{t-1},y_t,x) expj=1mwjFj(x,y)=expj=1mwjt=2Tfj(yt1,yt,x)
我们把式子整理一下,并令 g t ( y t − 1 , y t ) = ∑ j = 1 m w j f j ( y t − 1 , y t , x ) g_t(y_{t-1},y_t)=\sum_{j=1}^mw_jf_j(y_{t-1},y_t,x) gt(yt1,yt)=j=1mwjfj(yt1,yt,x),于是:
e x p ∑ j = 1 m w j F j ( x , y ) = ∑ t = 2 T g t ( y t − 1 , y t ) exp\sum_{j=1}^mw_jF_j(x,y)=\sum_{t=2}^Tg_t(y_{t-1},y_t) expj=1mwjFj(x,y)=t=2Tgt(yt1,yt)

参数学习

对于CRF的参数学习问题,我们可以采取梯度下降法来做,那么接下来最重要的问题就是如何计算梯度。我们写出梯度表达式
∂ ∂ w j l o g p ( y ∣ x ; w ) = ∂ ∂ w j l o g e x p ( ∑ j = 1 m w j F j ( x , y ) ) Z ( x ; w ) \frac{\partial}{\partial{w_j}}logp(y|x;w)=\frac{\partial}{\partial{w_j}}log\frac{exp(\sum_{j=1}^mw_jF_j(x,y))}{Z(x;w)} wjlogp(yx;w)=wjlogZ(x;w)exp(j=1mwjFj(x,y))

= ∂ ∂ w j ( ∑ j = 1 m w j F j ( x , y ) − l o g Z ( x ; w ) ) =\frac{\partial}{\partial{w_j}}(\sum_{j=1}^mw_jF_j(x,y)-logZ(x;w)) =wj(j=1mwjFj(x,y)logZ(x;w))

= F j ( x , y ) − 1 Z ( x ; w ) ∂ Z ( x ; w ) ∂ w j =F_j(x,y)-\frac{1}{Z(x;w)}\frac{\partial{Z(x;w)}}{\partial{w_j}} =Fj(x,y)Z(x;w)1wjZ(x;w)

而我们知道 Z ( x ; w ) = ∑ y , e x p ∑ j = 1 m w j F j ( x , y , ) Z(x;w)=\sum_{y^{,}}exp\sum_{j=1}^mw_jF_j(x,y^,) Z(x;w)=y,expj=1mwjFj(x,y,)​,于是就得到:
∂ Z ( x ; w ) ∂ w j = ∑ y , [ e x p ∑ j = 1 m w j F j ( x , y , ) ] F j ( x , y , ) \frac{\partial{Z(x;w)}}{\partial{w_j}}=\sum_{y^{,}}[exp\sum_{j=1}^mw_jF_j(x,y^,)]F_j(x,y^,) wjZ(x;w)=y,[expj=1mwjFj(x,y,)]Fj(x,y,)
代入上式后得到:
= F j ( x , y ) − ∑ y , F j ( x , y , ) e x p ∑ j = 1 m w j F j ( x , y , ) Z ( x ; w ) =F_j(x,y)-\sum_{y^,}F_j(x,y^,)\frac{exp\sum_{j=1}^mw_jF_j(x,y^,)}{Z(x;w)} =Fj(x,y)y,Fj(x,y,)Z(x;w)expj=1mwjFj(x,y,)

= F j ( x , y ) − ∑ y , F j ( x , y , ) p ( y , ∣ x ; w ) =F_j(x,y)-\sum_{y^,}F_j(x,y^,)p(y^,|x;w) =Fj(x,y)y,Fj(x,y,)p(y,x;w)

接下来,我们关注如何计算 Z ( x ; w ) Z(x;w) Z(x;w),答案还是前向后向算法

Forward Algorithm

与HMM中的前向算法类似,我们定义 α t ( v ) \alpha_t(v) αt(v)表示1~t时刻且第t时刻的标记为 v v v​的score,则
α t + 1 ( v ) = ∑ y 1 . . . y t e x p ( ∑ i = 2 t g i ( y i − 1 , y i ) + g t + 1 ( y t , v ) ) \alpha_{t+1}(v)=\sum_{y_1...y_t}exp(\sum_{i=2}^tg_i(y_{i-1},y_i)+g_{t+1}(y_{t},v)) αt+1(v)=y1...ytexp(i=2tgi(yi1,yi)+gt+1(yt,v))

= ∑ y t = u [ ∑ y 1 . . . y t − 1 e x p ( ∑ i = 2 t − 1 g i ( y i − 1 , y i ) + g t ( y t − 1 , u ) ) ] e x p ( g t + 1 ( u , v ) ) =\sum_{y_t=u}[\sum_{y_1...y_{t-1}}exp(\sum_{i=2}^{t-1}g_i(y_{i-1},y_i)+g_{t}(y_{t-1},u))]exp(g_{t+1}(u,v)) =yt=u[y1...yt1exp(i=2t1gi(yi1,yi)+gt(yt1,u))]exp(gt+1(u,v))

= ∑ u α t ( u ) e x p ( g t + 1 ( u , v ) ) =\sum_{u}\alpha_t(u)exp(g_{t+1(u,v)}) =uαt(u)exp(gt+1(u,v))

Backward Algorithm

定义 β t ( v ) \beta_t(v) βt(v)表示t~T时刻且第t时刻的标记为 v v v的score,则
β t ( v ) = ∑ y t + 1 . . . y T e x p ( ∑ i = t + 2 T g i ( y i − 1 , y i ) + g t + 1 ( v , y t + 1 ) ) \beta_t(v)=\sum_{y_{t+1}...y_T}exp(\sum_{i=t+2}^Tg_i(y_{i-1},y_i)+g_{t+1}(v,y_{t+1})) βt(v)=yt+1...yTexp(i=t+2Tgi(yi1,yi)+gt+1(v,yt+1))

= ∑ y t + 1 = u [ ∑ y t + 2 . . . y T e x p ( ∑ i = t + 3 T g i ( y i − 1 , y i ) + g t + 1 ( u , y t + 2 ) ) ] e x p ( g t ( v , u ) ) =\sum_{y_{t+1}=u}[\sum_{y_{t+2}...y_{T}}exp(\sum_{i=t+3}^{T}g_i(y_{i-1},y_i)+g_{t+1}(u,y_{t+2}))]exp(g_{t}(v,u)) =yt+1=u[yt+2...yTexp(i=t+3Tgi(yi1,yi)+gt+1(u,yt+2))]exp(gt(v,u))

= ∑ u β t + 1 ( u ) e x p ( g t ( v , u ) ) =\sum_{u}\beta_{t+1}(u)exp(g_t(v,u)) =uβt+1(u)exp(gt(v,u))

有了前向后向算法,我们就可以计算下面三个量:

  1. Z ( x ; w ) = ∑ u α t ( u ) β t ( u ) Z(x;w)=\sum_{u}\alpha_t(u)\beta_t(u) Z(x;w)=uαt(u)βt(u)
  2. p ( y t = u ∣ x ; w ) = α t T ( u ) β t ( u ) Z ( x ; w ) p(y_t=u|x;w)=\frac{\alpha_t^T(u)\beta_t(u)}{Z(x;w)} p(yt=ux;w)=Z(x;w)αtT(u)βt(u)
  3. p ( y t − 1 = u , y t = v ∣ x ; w ) = α t T ( u ) e x p [ g t ( u , v ) ] β t ( u ) Z ( x ; w ) p(y_{t-1}=u, y_t=v|x;w)=\frac{\alpha_t^T(u)exp[g_t(u,v)]\beta_t(u)}{Z(x;w)} p(yt1=u,yt=vx;w)=Z(x;w)αtT(u)exp[gt(u,v)]βt(u)

那么我们将得到的式子代入梯度式子,整理化简后可以得到:
∂ ∂ w j l o g p ( y ∣ x ; w ) = F j ( x , y ) − ∑ t = 2 T ∑ y t − 1 = u ∑ y t = v f j ( u , v , x ) α t T ( u ) e x p [ g t ( u , v ) ] β t ( u ) Z ( x ; w ) \frac{\partial}{\partial{w_j}}logp(y|x;w)=F_j(x,y)-\sum_{t=2}^T\sum_{y_{t-1}=u}\sum_{y_t=v}f_j(u,v,x)\frac{\alpha_t^T(u)exp[g_t(u,v)]\beta_t(u)}{Z(x;w)} wjlogp(yx;w)=Fj(x,y)t=2Tyt1=uyt=vfj(u,v,x)Z(x;w)αtT(u)exp[gt(u,v)]βt(u)

预测

预测问题和HMM模型一样,也采用Viterbi算法。定义 δ ( t , v ) \delta(t,v) δ(t,v)表示1~t时刻且第t时刻标记为 v v v的最大score

递推关系与前向算法类似:
δ ( t + 1 , v ) = max ⁡ y 1 . . . y t e x p ( ∑ i = 2 t g i ( y i − 1 , y i ) + g t + 1 ( y t , v ) ) \delta(t+1,v)=\max_{y_1...y_t}exp(\sum_{i=2}^tg_i(y_{i-1},y_i)+g_{t+1}(y_{t},v)) δ(t+1,v)=y1...ytmaxexp(i=2tgi(yi1,yi)+gt+1(yt,v))

= max ⁡ y t = u [ max ⁡ y 1 . . . y t − 1 e x p ( ∑ i = 2 t − 1 g i ( y i − 1 , y i ) + g t ( y t − 1 , u ) ) ] e x p ( g t + 1 ( u , v ) ) =\max_{y_t=u}[\max_{y_1...y_{t-1}}exp(\sum_{i=2}^{t-1}g_i(y_{i-1},y_i)+g_{t}(y_{t-1},u))]exp(g_{t+1}(u,v)) =yt=umax[y1...yt1maxexp(i=2t1gi(yi1,yi)+gt(yt1,u))]exp(gt+1(u,v))

δ ( t + 1 , v ) = m a x y t = u δ ( t , u ) e x p ( g t + 1 ( u , v ) ) \delta(t+1,v)=max_{y_t=u}\delta(t,u)exp(g_{t+1}(u,v)) δ(t+1,v)=maxyt=uδ(t,u)exp(gt+1(u,v))

CRF的特征函数可以人工定义,现在的常用做法是用神经网络进行特征提取,然后用CRF得到输出,例如BiLSTM+CRF

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值