CRF讲解

本文介绍了条件随机场(CRF),它是给定输入序列条件下输出序列的概率分布模型,在NLP中应用广泛。还阐述了随机场、马尔可夫随机场(MRF)与CRF的关系,以及线性链条件随机场(Linear CRF)的参数化形式、实例和简化形式,以词性标注为例进行说明。

条件随机场(Conditional Random Fields)是给定一组输入序列条件下另一组输出序列的概率分布模型,在NLP中应用很广泛。

场景

假设我们有Bob一天从早到晚的一系列照片,Bob想考考我们,要我们猜这一系列的每张照片对应的活动,比如: 工作的照片,吃饭的照片,唱歌的照片等等。一个比较直观的办法就是,我们找到Bob之前的日常生活的一系列照片,然后找Bob问清楚这些照片代表的活动标记,这样我们就可以用监督学习的方法来训练一个分类模型,比如逻辑回归,接着用模型去预测这一天的每张照片最可能的活动标记。

这种办法虽然是可行的,但是却忽略了一个重要的问题,就是这些照片之间的顺序其实是有很大的时间顺序关系的,而用上面的方法则会忽略这种关系。比如我们现在看到了一张Bob闭着嘴的照片,那么这张照片我们怎么标记Bob的活动呢?比较难去打标记。但是如果我们有Bob在这一张照片前一点点时间的照片的话,那么这张照片就好标记了。如果在时间序列上前一张的照片里Bob在吃饭,那么这张闭嘴的照片很有可能是在吃饭咀嚼。而如果在时间序列上前一张的照片里Bob在唱歌,那么这张闭嘴的照片很有可能是在唱歌。

为了让我们的分类器表现的更好,在标记数据的时候,可以考虑相邻数据的标记信息。这一点,是普通的分类器难以做到的。而这一块,也是CRF比较擅长的地方。

在实际应用中,自然语言处理中的词性标注(POS Tagging)就是非常适合CRF使用的地方。词性标注的目标是给出一个句子中每个词的词性(名词,动词,形容词等)。而这些词的词性往往和上下文的词的词性有关,因此,使用CRF来处理是很适合的。

MRF

随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。举个词性标注的例子:假如我们有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在我们已知的词性集合(名词,动词…)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场。

马尔可夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅与它相邻的位置的赋值有关。就拿上面的例子来说,我们假设所有词的词性只和它相邻的词的词性有关,这个随机场就特化成MRF。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性相关。

CRF

CRF是MRF的特例,它假设MRF中只有 XXXYYY 两种变量。XXX 一般是给定的,而 YYY 是在给定 XXX 的条件下的输出。这样MRF就特化成了CRF。在十个词的句子词性标注中,XXX 是词,YYY 是词性。因此,如果我们假设它是一个MRF,那么它也是CRF。

我们用准确的数学语言来描述:

XXXYYY 是随机变量,P(Y∣X)P(Y|X)P(YX) 是给定 XXXYYY 的条件概率分布。若 YYY 构成MRF,则称条件概率分布 P(Y∣X)P(Y|X)P(YX) 是CRF。

Linear CRF

X=(X1,X2,…,Xn),Y=(Y1,Y2,…,Yn)X = (X_1, X_2, \dots , X_n), Y = (Y_1, Y_2, \dots, Y_n)X=(X1,X2,,Xn),Y=(Y1,Y2,,Yn) 均为线性链的随机变量序列。在给定随机变量序列 XXX 的情况下,随机变量 YYY 的条件概率分布 P(Y∣X)P(Y|X)P(YX) 满足马尔可夫性:
P(Yi∣X,Y1,Y2,…,Yn)=P(Yi∣X,Yi−1,Yi+1) P(Y_i | X, Y_1, Y_2, \dots , Y_n) = P(Y_i | X, Y_{i-1}, Y_{i+1}) P(YiX,Y1,Y2,,Yn)=P(YiX,Yi1,Yi+1)
则称 P(Y∣X)P(Y|X)P(YX) 为线性链条件随机场。

参数化形式

我们通过特征函数及其权重系数来将Linear CRF转化为机器学习模型。

特征函数分为两类,一类是定义在 YYY 节点上的状态特征函数,这类特征函数只与当前节点有关,记为:
sl(yi,x,i),l=1,2,…,L s_l(y_i, x, i), \quad l=1, 2, \dots, L sl(yi,x,i),l=1,2,,L
iii 是当前节点在序列的位置,LLL 表示当前节点的状态特征函数的个数。

另一类是定义在 YYY 上下文的转移特征函数,这类特征函数只和当前节点和上一个节点有关,记为:
tk(yi−1,yi,x,i),k=1,2,…,K t_k(y_{i-1}, y_i, x, i), \quad k = 1, 2, \dots, K tk(yi1,yi,x,i),k=1,2,,K
iii 是当前节点在序列的位置,KKK 表示当前节点的转移特征函数的个数。

无论是状态特征函数还是转移特征函数,它们的取值只能是0或1。即满足特征条件或不满足特征条件。同时,我们可以为每个特征函数赋予一个权值,用以表达我们对这个特征函数的信任度。假设 tkt_ktk 的权重系数是 λk\lambda_kλksls_lsl 权重系数是 μl\mu_lμl , 由此得到Linear CRF的参数化形式:
P(y∣x)=1Z(x)e∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i) P(y|x) = \frac {1} {Z(x)} e^{\sum_{i, k} \lambda_k t_k(y_{i-1}, y_i, x, i) + \sum_{i, l} \mu_l s_l (y_i, x, i)} P(yx)=Z(x)1ei,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)
其中,Z(x)Z(x)Z(x) 为规范化因子:
Z(x)=∑ye∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i) Z(x) = \sum_y e^{\sum_{i, k} \lambda_k t_k(y_{i-1}, y_i, x, i) + \sum_{i, l} \mu_l s_l (y_i, x, i)} Z(x)=yei,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)
每个特征函数定义了一个Linear CRF的规则,其系数定义了这个规则的可信度。两者一起构成了Linear CRF的条件概率分布。

实例

这里举一个词性标注的例子。假设输入的都是三个词的句子,即 X=(X1,X2,X3)X = (X_1, X_2, X_3)X=(X1,X2,X3),输出的词性标记为 Y=(Y1,Y2,Y3)Y = (Y_1, Y_2, Y_3)Y=(Y1,Y2,Y3),其中 Y∈{1(名词),2(动词)}Y \in {\lbrace 1(名词), 2(动词) \rbrace}Y{1(名词),2(动词)}。这里只标记出取值为1的特征函数:
t1=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1t2=t2(y1=1,y2=1,x,2),λ2=0.5t3=t3(y2=2,y3=1,x,3),λ3=1t4=t4(y1=2,y2=1,x,2),λ4=1t5=t5(y2=2,y3=2,x,3),λ5=0.2s1=s1(y1=1,x,1),μ1=1s2=s2(yi=2,x,i),i=1,2,μ2=0.5s3=s3(yi=1,x,i),i=2,3μ3=0.8s4=s4(y3=2,x,3)μ4=0.5 t_1 = t_1(y_{i-1}=1, y_i=2, x, i), \quad i = 2, 3, \quad \lambda_1=1 \\ t_2 = t_2(y_1=1, y_2=1, x, 2), \quad \lambda_2 = 0.5 \\ t_3 = t_3(y_2=2, y_3=1, x, 3), \quad \lambda_3 = 1 \\ t_4 = t_4(y_1=2, y_2=1, x, 2), \quad \lambda_4 = 1 \\ t_5 = t_5(y_2=2, y_3=2, x, 3), \quad \lambda_5 = 0.2 \\ s_1 = s_1(y_1=1, x, 1), \quad \mu_1=1 \\ s_2 = s_2(y_i=2, x, i), \quad i=1, 2, \quad \mu_2 = 0.5 \\ s_3 = s_3(y_i=1, x, i), \quad i=2, 3 \quad \mu_3 = 0.8 \\ s_4 = s_4(y_3=2, x, 3) \quad \mu_4 = 0.5 t1=t1(yi1=1,yi=2,x,i),i=2,3,λ1=1t2=t2(y1=1,y2=1,x,2),λ2=0.5t3=t3(y2=2,y3=1,x,3),λ3=1t4=t4(y1=2,y2=1,x,2),λ4=1t5=t5(y2=2,y3=2,x,3),λ5=0.2s1=s1(y1=1,x,1),μ1=1s2=s2(yi=2,x,i),i=1,2,μ2=0.5s3=s3(yi=1,x,i),i=2,3μ3=0.8s4=s4(y3=2,x,3)μ4=0.5
求标记(1, 2, 2)的概率。

根据上述参数化公式我们有:
P(y∣x)∝e∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i) P(y|x) \propto e^{\sum_{i, k} \lambda_k t_k(y_{i-1}, y_i, x, i) + \sum_{i, l} \mu_l s_l (y_i, x, i)} P(yx)ei,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)
代入(1, 2, 2)得到:
P(y1=1,y2=2,y3=2∣x)∝e3.2 P(y_1=1, y_2=2, y_3=2|x) \propto e^{3.2} P(y1=1,y2=2,y3=2∣x)e3.2

简化形式

我们用 sls_lsl 表示状态特征函数,用 tkt_ktk 表示转移特征函数,同时也使用了不同的符号表示权重系数,导致表示起来非常麻烦。这里我们简化一下表示形式。

假设在某节点有 K1K_1K1 个状态特征函数和 K2K_2K2 个转移特征函数。我们用一个特征函数 fk(yi−1,yi,x,i)f_k(y_{i-1}, y_i, x, i)fk(yi1,yi,x,i) 来统一表示:
fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i)k=1,2,…,K1sl(yi,x,i)k=K1+l,l=1,2,…,K2 f_k(y_{i-1}, y_i, x, i) = \begin{cases} t_k(y_{i-1}, y_i, x, i) \quad k=1, 2, \dots, K_1 \\ s_l(y_i, x, i) \quad k = K_1+l, \quad l=1, 2, \dots, K2 \end{cases} fk(yi1,yi,x,i)={tk(yi1,yi,x,i)k=1,2,,K1sl(yi,x,i)k=K1+l,l=1,2,,K2
同时我们也统一 fk(yi−1,yi,x,i)f_k(y_{i-1}, y_i, x, i)fk(yi1,yi,x,i) 对应的权重系数 wkw_kwk 如下:

wk={λkk=1,2,…,K1μlk=K1+l,l=1,2,…,K2 w_k = \begin{cases} \lambda_k \quad k = 1, 2, \dots, K_1 \\ \mu_l \quad k = K_1 + l, \quad l = 1, 2, \dots, K_2 \end{cases} wk={λkk=1,2,,K1μlk=K1+l,l=1,2,,K2
最终Linear CRF的参数化形式简化如下:
Pw(y∣x)=e∑k=1Kwkfk(yi−1,yi,x,i)∑ye∑k=1Kwkfk(yi−1,yi,x,i) P_w(y|x) = \frac {e^{\sum_{k=1}^K w_k f_k(y_{i-1}, y_i, x, i)}} {\sum_y e^{\sum_{k=1}^K w_k f_k(y_{i-1}, y_i, x, i)}} Pw(yx)=yek=1Kwkfk(yi1,yi,x,i)ek=1Kwkfk(yi1,yi,x,i)
其中,yyy 表示一条输出序列,如上例的(1, 2, 2)


参考自:

  • https://www.cnblogs.com/pinard/p/7048333.html
  • https://www.zhihu.com/question/53458773/answer/554436625
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值