EM
HMM
HEMM
维比特算法
边缘计算
似然估计
由于时间不够,我暂时写的比较简单,后续会改进
CRF(Conditional Random Field) 条件随机场是近几年自然语言处理领域常用的算法之一,常用于句法分析、命名实体识别、词性标注等。在我看来,CRF就像一个反向的隐马尔可夫模型(HMM),两者都是用了马尔科夫链作为隐含变量的概率转移模型,只不过HMM使用隐含变量生成可观测状态,其生成概率由标注集统计得到,是一个生成模型;而CRF反过来通过可观测状态判别隐含变量,其概率亦通过标注集统计得来,是一个判别模型。由于两者模型主干相同,其能够应用的领域往往是重叠的,但在命名实体、句法分析等领域CRF更胜一筹。当然你并不必须学习HMM才能读懂CRF,但通常来说如果做自然语言处理,这两个模型应该都有了解。
在讨论CRF之前,我们来看看什么样的问题需要CRF模型。这里举一个简单的例子:
假设我们有Bob一天从早到晚的一系列照片,Bob想考考我们,要我们猜这一系列的每张照片对应的活动,比如: 工作的照片,吃饭的照片,唱歌的照片等等。一个比较直观的办法就是,我们找到Bob之前的日常生活的一系列照片,然后找Bob问清楚这些照片代表的活动标记,这样我们就可以用监督学习的方法来训练一个分类模型,比如逻辑回归,接着用模型去预测这一天的每张照片最可能的活动标记。
这种办法虽然是可行的,但是却忽略了一个重要的问题,就是这些照片之间的顺序其实是有很大的时间顺序关系的,而用上面的方法则会忽略这种关系。比如我们现在看到了一张Bob闭着嘴的照片,那么这张照片我们怎么标记Bob的活动呢?比较难去打标记。但是如果我们有Bob在这一张照片前一点点时间的照片的话,那么这张照片就好标记了。如果在时间序列上前一张的照片里Bob在吃饭,那么这张闭嘴的照片很有可能是在吃饭咀嚼。而如果在时间序列上前一张的照片里Bob在唱歌,那么这张闭嘴的照片很有可能是在唱歌。
为了让我们的分类器表现的更好,可以在标记数据的时候,可以考虑相邻数据的标记信息。这一点,是普通的分类器难以做到的。而这一块,也是CRF比较擅长的地方。
在实际应用中,自然语言处理中的词性标注(POS Tagging)就是非常适合CRF使用的地方。词性标注的目标是给出一个句子中每个词的词性(名词,动词,形容词等)。而这些词的词性往往和上下文的词的词性有关,因此,使用CRF来处理是很适合的,当然CRF不是唯一的选择,也有很多其他的词性标注方法。
首先,我们来看看什么是随机场。“随机场”的名字取的很玄乎,其实理解起来不难。随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。还是举词性标注的例子:假如我们有一个十个词形成的句子需要做词性标注。这十个词每个词的词性可以在我们已知的词性集合(名词,动词…)中去选择。当我们为每个词选择完词性后,这就形成了一个随机场。
了解了随机场,我们再来看看马尔科夫随机场。马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。继续举十个词的句子词性标注的例子: 如果我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性有关
理解了马尔科夫随机场,再理解CRF就容易了。CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下我们的输出。这样马尔科夫随机场就特化成了条件随机场。在我们十个词的句子词性标注的例子中,X是词,Y是词性。因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个CRF。
对于CRF,我们给出准确的数学语言描述:
设X与Y是随机变量,P(Y|X)是给定X时Y的条件概率分布,若随机变量Y构成的是一个马尔科夫随机场,则称条件概率分布P(Y|X)是条件随机场
注意在CRF的定义中,我们并没有要求X和Y有相同的结构。而实现中,我们一般都假设X和Y有相同的结构,即:
X = ( X 1 , X 2 , . . . , X n ) , Y = ( Y 1 , Y 2 , . . . , Y n ) X=(X_1,X_2,...,X_n), Y=(Y_1,Y_2,...,Y_n) X=(X1,X2,...,Xn),Y=(Y1,Y2,...,Yn)
我们一般考虑如下图所示的结构:X和Y有相同的结构的CRF就构成了线性链条件随机场(Linear chain Conditional Random Fields,以下简称 linear-CRF)。
在我们的十个词的句子的词性标记中,词有十个,词性也是十个,因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个linear-CRF。
我们再来看看 linear-CRF的数学定义:
在我们的十个词的句子的词性标记中,词有十个,词性也是十个,因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个linear-CRF。
我们再来看看 linear-CRF的数学定义:
设 X = ( X 1 , X 2 , . . . , X n ) , Y = ( Y 1 , Y 2 , . . . , Y n ) X=(X_1,X_2,...,X_n), Y=(Y_1,Y_2,...,Y_n) X=(X1,X2,...,Xn),Y=(Y1,Y2,...,Yn)均为线性链表示的随机变量序列,在给定随机变量序列X的情况下,随机变量Y的条件概率分布P(Y|X)构成条件随机场,即满足马尔科夫性:
P = ( Y i ∣ X , Y 1 , Y 2 , . . , Y n ) = P ( Y i ∣ X , Y i − 1 , Y i + 1 ) P=(Y_i|X,Y_1,Y_2,..,Y_n)=P(Y_i|X,Y_{i-1},Y_{i+1}) P=(Yi∣X,Y1,Y2,..,Yn)=P(Yi∣X,Yi−1,Yi+1)
对于上面讲到的linear-CRF,我们如何将其转化为可以学习的机器学习模型呢?这是通过特征函数和其权重系数来定义的。什么是特征函数呢?
在linear-CRF中,特征函数分为两类,第一类是定义在Y节点上的节点特征函数,这类特征函数只和当前节点有关,记为:
S l ( y i , x , i ) , l = 1 , 2 , . . , n S_l(y_i,x,i),l=1,2,..,n Sl(yi,x,i),l=1,2,..,n
其中L是定义在该节点的节点特征函数的总个数,i是当前节点在序列的位置。
第二类是定义在Y上下文的局部特征函数,这类特征函数只和当前节点和上一个节点有关,记为:
t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , . . , K t_k(y_{i-1},y_i,x,i),k=1,2,..,K tk(yi−1,yi,x,i),k=1,2,..,K
其中K是定义在该节点的局部特征函数的总个数,i是当前节点在序列的位置。之所以只有上下文相关的局部特征函数,没有不相邻节点之间的特征函数,是因为我们的linear-CRF满足马尔科夫性。
无论是节点特征函数还是局部特征函数,它们的取值只能是0或者1。即满足特征条件或者不满足特征条件。同时,我们可以为每个特征函数赋予一个权值,用以表达我们对这个特征函数的信任度。假设 t k t_k tk
的权重系数是 λ k , s l λ_k,s_l λk,sl
的权重系数是 μ l μ_l μl
,则linear-CRF由我们所有的 t k , λ k , s l , μ l t_k,λ_k,s_l,μ_l tk,λk,sl,μl
此时我们得到了linear-CRF的参数化形式如下:
共同决定。
P ( y ∣ x ) = 1 Z ( x ) e x p ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l u l s l ( y i , x , i ) P(y|x)=\frac{1}{Z(x)}exp(\sum_{i,k}λ_kt_k(y_{i-1},y_i,x,i)+ \ \sum_{i,l}u_ls_l(y_i,x,i) P(y∣x)=Z(x)1exp(∑i,kλktk(yi−1,yi,x,i)+ ∑i,lulsl(yi,x,i)
其中,Z(x)为规范化因子: Z ( x ) = ∑ y e x p ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l u l s l ( y i , x , i ) Z(x)=\sum_{y}exp(\sum_{i,k}λ_kt_k(y_{i-1},y_i,x,i)+ \ \sum_{i,l}u_ls_l(y_i,x,i) Z(x)=∑yexp(∑i,kλktk(yi−1,yi,x,i)+ ∑i,lulsl(yi,x,i)
回到特征函数本身,每个特征函数定义了一个linear-CRF的规则,则其系数定义了这个规则的可信度。所有的规则和其可信度一起构成了我们的linear-CRF的最终的条件概率分布。
1.B站 板书推导随机场