条件随机场简介(Conditional Random Fields, CRF)

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

了解了随机场,我们再来看看马尔科夫随机场。若随机变量Y的联合概率分布P(Y)代表的无向图G=(V,E)的每个节点均满足马尔科夫性,则G是一个马尔科夫随机场。马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。继续举十个词的句子词性标注的例子: 如果我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。比如第三个词的词性除了与自己本身的位置有关外,只与第二个词和第四个词的词性有关。马尔可夫随机场(Markov random field)就是概率无向图模型(Probabilistic undirected graphical model),表示一个联合概率分布。

理解了马尔科夫随机场,再理解CRF就容易了。CRF是马尔科夫随机场的特例,它假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下我们的输出。这样马尔科夫随机场就特化成了条件随机场。在我们十个词的句子词性标注的例子中,X是词(输入的观测序列),Y是词性(输出的标记序列或状态序列)。因此,如果我们假设它是一个马尔科夫随机场,那么它也就是一个CRF。

一、条件随机场的定义

1. 条件随机场

对于CRF,我们给出准确的数学语言描述:
CRF假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下我们的输出。设 X = ( X 1 , X 2 , . . . , X n ) X=(X_1,X_2,...,X_n) X=(X1,X2,...,Xn) Y = ( Y 1 , Y 2 , . . . , Y n ) Y=(Y_1,Y_2,...,Y_n) Y=(Y1,Y2,...,Yn)是随机变量,P(Y|X)是给定X时Y的条件概率分布。若随机变量Y构成一个由无向图G=(V, E)表示的马尔可夫随机场【即 P ( Y v ∣ X , Y w , w ≠ v ) = P ( Y v ∣ X , Y w , w ∼ v ) P(Y_v|X,Y_w,w\neq v)=P(Y_v|X,Y_w,w\sim v) P(YvX,Yw,w=v)=P(YvX,Yw,wv)任意节点 v都成立】,则称条件概率分布P(Y|X)是条件随机场。

其中, w ≠ v w\neq v w=v 表示 w 是除 v 以外的所有节点 w ∼ v w\sim v wv表示 w 是与 v 相连接的所有节点

条件随机场是一种判别式无向图模型,它是对条件分布进行建模。而HMM是生成式模型,生成式模型是直接对联合分布进行建模。

2. 线性链条件随机场(Linear chain Conditional Random Fields, linear-CRF)

注意在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均为线性链表示的随机变量序列,在给定随机变量序列X的情况下,随机变量Y的条件概率分布P(Y|X)构成条件随机场,即满足马尔科夫性(只和相邻变量有关):

P ( Y i ∣ X , Y 1 , . . . , Y i − 1 , Y i + 1 , . . . , Y n ) = P ( Y i ∣ X , Y i − 1 , Y i + 1 ) , i = 1 , . . . , n P(Y_i|X,Y_1,...,Y_{i-1},Y_{i+1},...,Y_n)=P(Y_i|X,Y_{i-1},Y_{i+1}),\quad i=1,...,n P(YiX,Y1,...,Yi1,Yi+1,...,Yn)=P(YiX,Yi1,Yi+1),i=1,...,n

则称P(Y|X)为线性链条件随机场

如下图所示的结构:X和Y有相同的结构的CRF就构成了线性链条件随机场

条件随机场简介(Conditional Random Fields, CRF)_第1张图片
3. 线性链条件随机场的参数化形式

对于上一节讲到的linear-CRF,我们如何将其转化为可以学习的机器学习模型呢?这是通过特征函数和其权重系数来定义的。什么是特征函数呢?

在linear-CRF中,特征函数分为两类:

  • 第一类是定义在Y节点上的节点特征函数(状态特征),这类特征函数只和当前节点有关,记为:
    s l ( y i , x , i ) ,      l = 1 , 2 , . . . L s_l(y_i, x,i),\;\; l =1,2,...L sl(yi,x,i),l=1,2,...L

其中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(yi1,yi,x,i),k=1,2,...K

其中K是定义在该节点的局部特征函数的总个数,i是当前节点在序列的位置。之所以只有上下文相关的局部特征函数,没有不相邻节点之间的特征函数,是因为我们的linear-CRF满足马尔科夫性。

无论是节点特征函数还是局部特征函数,它们的取值只能是0或者1。即满足特征条件或者不满足特征条件。同时,我们可以为每个特征函数赋予一个权值,用以表达我们对这个特征函数的信任度。假设 s l s_l sl的权重系数是 μ l \mu_l μl t k t_k tk的权重系数是 λ k \lambda_k λk,则linear-CRF由我们所有的 s l , μ l , t k , λ k s_l, \mu_l, t_k, \lambda_k sl,μl,tk,λk共同决定

此时我们得到了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 μ l s l ( y i , x , i ) ) (1.3.1) P(y|x) = \frac{1}{Z(x)}exp\Big(\sum\limits_{i,k} \lambda_kt_k(y_{i-1},y_i, x,i) +\sum\limits_{i,l}\mu_ls_l(y_i, x,i)\Big)\tag{1.3.1} P(yx)=Z(x)1exp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))(1.3.1)

其中,分子是非规范化条件概率,Z(x) 为规范化因子:
Z ( x ) = ∑ y e x p ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) (1.3.2) Z(x) =\sum\limits_{y} exp\Big(\sum\limits_{i,k} \lambda_kt_k(y_{i-1},y_i, x,i) +\sum\limits_{i,l}\mu_ls_l(y_i, x,i)\Big)\tag{1.3.2} Z(x)=yexp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))(1.3.2)

回到特征函数本身,每个特征函数定义了一个linear-CRF的规则,则其系数定义了这个规则的可信度。所有的规则和其可信度一起构成了我们的linear-CRF的最终的条件概率分布。

4. 线性链条件随机场实例

这里我们给出一个linear-CRF用于词性标注的实例,为了方便,我们简化了词性的种类。假设输入的都是三个词的句子,即 X = ( x 1 , x 2 , x 3 ) X=(x_1, x_2, x_3) X=(x1,x2,x3),输出的词性标记为 Y = ( y 1 , y 2 , y 3 ) Y=(y_1,y_2,y_3) Y=(y1,y2,y3),其中 Y ∈ { 1 ( 名 词 ) , 2 ( 动 词 ) } Y \in \{1(名词), 2(动词)\} Y{1(),2()}。此外,设局部特征函数 t k t_k tk、节点特征函数 s l s_l sl和对应的权重 λ k , μ k \lambda_k,\mu_k λk,μk如下:
t 1 = t 1 ( y i − 1 = 1 , y i = 2 , x , i ) ,      i = 2 , 3 ,      λ 1 = 1 t_1 =t_1(y_{i-1} = 1, y_i =2,x,i), \;\;i =2,3,\;\;\lambda_1=1 t1=t1(yi1=1,yi=2,x,i),i=2,3,λ1=1注:t函数只和当前i和上一个节点i-1有关,所以i可以取2,3
t 2 = t 2 ( y 1 = 1 , y 2 = 1 , x , 2 ) ,      λ 2 = 0.5 t_2 =t_2(y_1 = 1, y_2 =1,x,2),\;\;\lambda_2=0.5 t2=t2(y1=1,y2=1,x,2),λ2=0.5注:其实这里i也可以取2,3但是由于其他情况λ2取值为0,省略了。详见下。
t 3 = t 3 ( y 2 = 2 , y 3 = 1 , x , 3 ) ,      λ 3 = 1 t_3 =t_3(y_2 = 2, y_3 =1,x,3),\;\;\lambda_3=1 t3=t3(y2=2,y3=1,x,3),λ3=1
t 4 = t 4 ( y 1 = 2 , y 2 = 1 , x , 2 ) ,      λ 4 = 1 t_4 =t_4(y_1 = 2, y_2 =1,x,2),\;\;\lambda_4=1 t4=t4(y1=2,y2=1,x,2),λ4=1
t 5 = t 5 ( y 2 = 2 , y 3 = 2 , x , 3 ) ,      λ 5 = 0.2 t_5 =t_5(y_2 = 2, y_3 =2,x,3),\;\;\lambda_5=0.2 t5=t5(y2=2,y3=2,x,3),λ5=0.2
s 1 = s 1 ( y 1 = 1 , x , 1 ) , μ 1 = 1 s_1=s_1(y_1=1,x,1),\mu_1=1 s1=s1(y1=1,x,1),μ1=1
s 2 = s 2 ( y i = 2 , x , i ) ,      i = 1 , 2 ,      μ 2 = 0.5 s_2=s_2(y_i=2,x,i),\;\;i=1,2,\;\;\mu_2=0.5 s2=s2(yi=2,x,i),i=1,2,μ2=0.5
s 3 = s 3 ( y i = 1 , x , 1 ) ,      i = 2 , 3 ,      μ 3 = 0.8 s_3=s_3(y_i=1,x,1),\;\;i=2,3,\;\;\mu_3=0.8 s3=s3(yi=1,x,1),i=2,3,μ3=0.8
s 4 = s 4 ( y 3 = 2 , x , 1 ) ,      μ 4 = 0.5 s_4=s_4(y_3=2,x,1),\;\;\mu_4=0.5 s4=s4(y3=2,x,1),μ4=0.5

上面只标记出局部特征函数 t k t_k tk、节点特征函数 s l s_l sl取值为1的情况,实际上所有情况概括如下:
t k ( y i − 1 , y i , x , i ) = { 1 y i − 1 = m , y i = n , x , i ( i = 2 , 3 , m = 1   o r   2 , n = 1   o r   2 ) 0 其 他 t_k(y_{i-1},y_i,x,i)=\begin{cases} 1 & y_{i-1}=m,y_i=n,x,i(i=2,3,m=1\ or\ 2,n=1\ or\ 2)\\ 0 & 其他 \end{cases} tk(yi1,yi,x,i)={10yi1=m,yi=n,x,i(i=2,3,m=1 or 2,n=1 or 2)
权重为0对计算条件随机场没有影响,所以取值为0的情况直接省略了。

问:求标记(1,2,2)的非规范化条件概率(下面的CRF基本问题1)。
答:其实这里CRF的参数已经给出了,直接代入linear-CRF的参数化公式,我们就可以求得非规范化条件概率:
P ( y ∣ x ) ∝ e x p [ ∑ k = 1 5 λ k ∑ i = 2 3 t k ( y i − 1 , y i , x , i ) + ∑ l = 1 4 μ l ∑ i = 1 3 s l ( y i , x , i ) ] P(y|x) \propto exp\Big[\sum\limits_{k=1}^5\lambda_k\sum\limits_{i=2}^3t_k(y_{i-1},y_i, x,i) + \sum\limits_{l=1}^4\mu_l\sum\limits_{i=1}^3s_l(y_i, x,i) \Big] P(yx)exp[k=15λki=23tk(yi1,yi,x,i)+l=14μli=13sl(yi,x,i)]
将(1,2,2)带入上式得到: P ( y 1 = 1 , y 2 = 2 , y 3 = 2 ∣ x ) ∝ e x p ( 3.2 ) P(y_1=1,y_2=2,y_3=2|x) \propto exp(3.2) P(y1=1,y2=2,y3=2x)exp(3.2)

5. 线性链条件随机场的简化形式

在上几节里面,我们用 s l s_l sl表示节点特征函数,用 t k t_k tk表示局部特征函数,同时也用了不同的符号表示权重系数,导致表示起来比较麻烦。其实我们可以对特征函数稍加整理,将其统一起来。

假设我们在某一节点我们有 K 1 K_1 K1个局部特征函数和 K 2 K_2 K2个节点特征函数,总共有 K = K 1 + K 2 K=K_1+K_2 K=K1+K2个特征函数。我们用一个特征函数 f k ( y i − 1 , y i , x , i ) f_k(y_{i-1},y_i, x,i) fk(yi1,yi,x,i) 来统一表示如下:
f k ( y i − 1 , y i , x , i ) = { t k ( y i − 1 , y i , x , i ) k = 1 , 2 , . . . K 1 s l ( y i , x , i ) k = K 1 + l ,    l = 1 , 2... , K 2 f_k(y_{i-1},y_i, x,i)= \begin{cases} t_k(y_{i-1},y_i, x,i) & {k=1,2,...K_1}\\ s_l(y_i, x,i)& {k=K_1+l,\; l=1,2...,K_2} \end{cases} fk(yi1,yi,x,i)={tk(yi1,yi,x,i)sl(yi,x,i)k=1,2,...K1k=K1+l,l=1,2...,K2

f k ( y i − 1 , y i , x , i ) f_k(y_{i-1},y_i, x,i) fk(yi1,yi,x,i) 在各个序列位置求和得到:
f k ( y , x ) = ∑ i = 1 n f k ( y i − 1 , y i , x , i ) f_k(y,x) = \sum\limits_{i=1}^nf_k(y_{i-1},y_i, x,i) fk(y,x)=i=1nfk(yi1,yi,x,i)

同时我们也统一 f k ( y i − 1 , y i , x , i ) f_k(y_{i-1},y_i, x,i) fk(yi1,yi,x,i) 对应的权重系数 w k w_k wk如下:
w k = { λ k k = 1 , 2 , . . . K 1 μ l k = K 1 + l ,    l = 1 , 2... , K 2 w_k= \begin{cases} \lambda_k & {k=1,2,...K_1}\\ \mu_l & {k=K_1+l,\; l=1,2...,K_2} \end{cases} wk={λkμlk=1,2,...K1k=K1+l,l=1,2...,K2

这样,我们的linear-CRF的参数化形式简化为
P ( y ∣ x ) = 1 Z ( x ) e x p ∑ k = 1 K w k f k ( y , x ) (1.5.1) P(y|x) = \frac{1}{Z(x)}exp\sum\limits_{k=1}^Kw_kf_k(y,x)\tag{1.5.1} P(yx)=Z(x)1expk=1Kwkfk(y,x)(1.5.1)

其中,Z(x)为规范化因子:
Z ( x ) = ∑ y e x p ∑ k = 1 K w k f k ( y , x ) (1.5.2) Z(x) =\sum\limits_{y}exp\sum\limits_{k=1}^Kw_kf_k(y,x)\tag{1.5.2} Z(x)=yexpk=1Kwkfk(y,x)(1.5.2)

对比一下化简前的公式(1.3.1)和(1.3.2),其实就是统一了两个函数和两个权重。

如果将(1.5.1)和(1.5.2)两式中的 w k w_k wk f k f_k fk的用向量表示,即:
w = ( w 1 , w 2 , . . . w K ) T        F ( y , x ) = ( f 1 ( y , x ) , f 2 ( y , x ) , . . . f K ( y , x ) ) T w=(w_1,w_2,...w_K)^T\;\;\; F(y,x) =(f_1(y,x),f_2(y,x),...f_K(y,x))^T w=(w1,w2,...wK)TF(y,x)=(f1(y,x),f2(y,x),...fK(y,x))T

则linear-CRF的参数化形式简化为内积形式如下:
P w ( y ∣ x ) = e x p ( w ⋅ F ( y , x ) ) Z w ( x ) = e x p ( w ⋅ F ( y , x ) ) ∑ y e x p ( w ⋅ F ( y , x ) ) P_w(y|x) = \frac{exp(w \cdot F(y,x))}{Z_w(x)} = \frac{exp(w \cdot F(y,x))}{\sum\limits_{y}exp(w \cdot F(y,x))} Pw(yx)=Zw(x)exp(wF(y,x))=yexp(wF(y,x))exp(wF(y,x))

6. 线性链条件随机场的矩阵形式

假设 P w ( y ∣ x ) P_w(y|x) Pw(yx)是由内积形式给出的线性链条件随机场,表示对给定观测序列x,相应的标记序列y的条件概率。矩阵形式需要引进特殊的起点状态 y 0 = s t a r t y_0=start y0=start和终点状态 y n + 1 = s t o p y_{n+1}=stop yn+1=stop,这时 P w ( y ∣ x ) P_w(y|x) Pw(yx)可以通过矩阵形式表示。

这里,先引入一个新的量 M i ( y i − 1 , y i ∣ x ) M_i(y_{i-1},y_i|x) Mi(yi1,yix)

M i ( y i − 1 , y i ∣ x ) = exp ⁡ ∑ k = 1 K w k f k ( y i − 1 , y i , x , i ) , i = 1 , 2 , . . . , n + 1 M_i(y_{i-1},y_i|x)=\exp\sum_{k=1}^Kw_kf_k(y_{i-1},y_i,x,i),\quad i=1,2,...,n+1 Mi(yi1,yix)=expk=1Kwkfk(yi1,yi,x,i),i=1,2,...,n+1

看一下,这个量融合了参数和特征,是一个描述模型的比较简洁的量;其次,不难发现,这个量相比于原来的非规范化概率 P ( Y = y ∣ x ) ∝ exp ⁡ ∑ k = 1 K w k f k ( y , x ) P(Y=y|x)\propto\exp\displaystyle\sum_{k=1}^Kw_kf_k(y,x) P(Y=yx)expk=1Kwkfk(y,x) ,少了对位置的内层求和【 f x ( y , x ) 内 部 有 个 求 和 操 作 f_x(y,x)内部有个求和操作 fx(y,x)】,换句话说这个量是针对于某个位置 i (及其前一个位置 i-1 )的。

那么,假设状态序列的状态存在 m 个可能的取值,对于任一位置 i = 1,2,…,n+1 ,定义一个 m 阶方阵:
M i ( x ) = [ exp ⁡ ∑ k = 1 K f k ( y i − 1 , y i , x , i ) ] m × m = [ M i ( y i − 1 , y i ∣ x ) ] m × m (1.6.1) \begin{aligned}M_i(x)&=[\exp\sum_{k=1}^Kf_k(y_{i-1},y_i,x,i)]_{m\times m}\\&=[M_i(y_{i-1},y_i|x)]_{m\times m}\end{aligned} \tag{1.6.1} Mi(x)=[expk=1Kfk(yi1,yi,x,i)]m×m=[Mi(yi1,yix)]m×m(1.6.1)

又因为有等式: ∏ i [ exp ⁡ ∑ k = 1 K w k f k ( y i − 1 , y i , x , i ) ] = exp ⁡ ( ∑ k = 1 K w k ∑ i f k ( y i − 1 , y i , x , i ) ) \displaystyle\prod_i\biggl[\exp\sum_{k=1}^Kw_kf_k(y_{i-1},y_i,x,i)\biggr]=\exp\biggl(\sum_{k=1}^Kw_k\sum_i f_k(y_{i-1},y_i,x,i)\biggr) i[expk=1Kwkfk(yi1,yi,x,i)]=exp(k=1Kwkifk(yi1,yi,x,i))成立,这样,给定观测序列x,标记序列y的非规范化概率可以通过n+1个矩阵的乘积 ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) \prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x) i=1n+1Mi(yi1,yix)表示,于是,规范化之后的条件概率 P w ( y ∣ x ) P_w(y|x) Pw(yx)是:

P w ( Y = y ∣ x ) = 1 Z w ( x ) ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) (1.6.2) P_{\textbf w}(Y=y|x)=\frac{1}{Z_{\textbf w}(x)}\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x) \tag{1.6.2} Pw(Y=yx)=Zw(x)1i=1n+1Mi(yi1,yix)(1.6.2)

其中, 1 Z w ( x ) \frac{1}{Z_{\textbf w}(x)} Zw(x)1为规范化因子,是n+1个矩阵的乘积的(start,stop)元素:
Z w ( x ) = ( M 1 ( x ) M 2 ( x ) ⋯ M n + 1 ( x ) ) ( s t a r t , s t o p ) (1.6.3) Z_{\textbf w}(x)=(M_1(x)M_2(x)\cdots M_{n+1}(x))_{(start,stop)} \tag{1.6.3} Zw(x)=(M1(x)M2(x)Mn+1(x))(start,stop)(1.6.3)

规范化因子 Z w ( x ) Z_{\textbf w}(x) Zw(x) 是这 n+1 个矩阵的乘积矩阵的索引为 (???,???) 的元素。 Z w ( x ) Z_{\textbf w}(x) Zw(x) 它就等于以 start 为起点、以 stop 为终点的所有状态路径的非规范化概率 ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) \prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x) i=1n+1Mi(yi1,yix)之和(证明略)。

7. 线性链条件随机场的矩阵形式实例

给定一个线性链条件随机场,n = 3 ,状态的可能取值为 1 和 2 。设 y 0 = s t a r t = 1 , y n + 1 = s t o p = 1 y_0 = start = 1, y_{n+1} = stop = 1 y0=start=1,yn+1=stop=1 ,且 M 矩阵在 i = 1,2,...,n+1 的值已知,求状态序列以 start 为起点、以stop为终点的所有状态路径的非规范化规范化概率
M 1 ( x ) = ( a 01 a 02 0 0 ) , M 2 ( x ) = ( b 11 b 12 b 21 b 22 ) M_1(x)=\begin{pmatrix}a_{01} & a_{02}\\0&0\end{pmatrix},\quad M_2(x)=\begin{pmatrix}b_{11} & b_{12}\\b_{21} & b_{22}\end{pmatrix} M1(x)=(a010a020),M2(x)=(b11b21b12b22)
M 3 ( x ) = ( c 11 c 12 c 21 c 22 ) , M 4 ( x ) = ( 1 0 1 0 ) M_3(x)=\begin{pmatrix}c_{11} & c_{12}\\c_{21} & c_{22}\end{pmatrix},\quad M_4(x)=\begin{pmatrix}1 & 0\\1 & 0\end{pmatrix} M3(x)=(c11c21c12c22),M4(x)=(1100)

【注: M 1 ( x ) M_1(x) M1(x)只有一行是因为从start在引入的时候就确定了只有一种可能,而 a 01 a_{01} a01 a 02 a_{02} a02也分别表示到位置1的两个状态的概率。 M 4 ( x ) M_4(x) M4(x)只有一列则是因为stop也只有一个可能,并且前一个位置3的两种状态只能到位置4的这一个状态,所以概率肯定为1,此外如果我们假设stop=1,那 M 4 ( x ) M_4(x) M4(x)就是只有第二列元素且全为1$】

解:

首先如下图所示就是例子中的先行链条件随机场,从 start 到 stop 有八种不同的序列组合:y=(1,1,1), y=(1,1,2), … , y=(2,2,2),而对应的各个路径的非规范化概率分别是:
a 01 b 11 c 11 ,   a 01 b 11 c 12 ,   a 01 b 12 c 21 ,   a 01 b 12 c 22 a_{01}b_{11}c_{11},\ a_{01}b_{11}c_{12},\ a_{01}b_{12}c_{21},\ a_{01}b_{12}c_{22} a01b11c11, a01b11c12, a01b12c21, a01b12c22
a 02 b 21 c 11 ,   a 02 b 21 c 12 ,   a 02 b 22 c 21 ,   a 02 b 22 c 22 a_{02}b_{21}c_{11},\ a_{02}b_{21}c_{12},\ a_{02}b_{22}c_{21},\ a_{02}b_{22}c_{22} a02b21c11, a02b21c12, a02b22c21, a02b22c22
条件随机场简介(Conditional Random Fields, CRF)_第2张图片
然后按照式(1.6.3)计算规范化因子,通过计算矩阵乘积 M 1 ( x ) M 2 ( x ) M 3 ( x ) M 4 ( x ) M_1(x)M_2(x)M_3(x)M_4(x) M1(x)M2(x)M3(x)M4(x),可得第一行第一列的元素为:
a 01 b 11 c 11 + a 01 b 11 c 12 + a 01 b 12 c 21 + a 01 b 12 c 22 + a 02 b 21 c 11 + a 02 b 21 c 12 + a 02 b 22 c 21 + a 02 b 22 c 22 a_{01}b_{11}c_{11}+a_{01}b_{11}c_{12}+a_{01}b_{12}c_{21}+a_{01}b_{12}c_{22}+a_{02}b_{21}c_{11}+a_{02}b_{21}c_{12}+a_{02}b_{22}c_{21}+a_{02}b_{22}c_{22} a01b11c11+a01b11c12+a01b12c21+a01b12c22+a02b21c11+a02b21c12+a02b22c21+a02b22c22

很显然等于从start到stop所有路径的非规范化概率之和。即要求的规范化因子

二、条件随机场的三个基本问题

  1. 条件随机场的概率计算问题,即给定 linear-CRF的条件概率分布P(y|x), 在给定输入序列x和输出序列y时,计算条件概率 P ( Y i = y i ∣ x ) P(Y_i=y_i|x) P(Yi=yix) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) P(Y_{i-1}=y_{i-1}, Y_i=y_i|x) P(Yi1=yi1,Yi=yix)以及对应的期望。
  2. 条件概率最大的输出序列预测问题,即给定 linear-CRF的条件概率分布P(y|x),和输入序列x, 计算使条件概率最大的输出序列y。类似于HMM,使用维特比算法可以很方便的解决这个问题。
  3. 条件随机场模型参数学习问题,即给定训练数据集X和Y,学习linear-CRF的模型参数 w k w_k wk和条件概率 P w ( y ∣ x ) P_w(y|x) Pw(yx),这个问题的求解比HMM的学习算法简单的多,普通的梯度下降法,拟牛顿法都可以解决。

三、linear-CRF和HMM的比较

linear-CRF模型和HMM模型有很多相似之处,尤其是其三个典型问题非常类似,除了模型参数学习的问题求解方法不同以外,概率估计问题和解码问题使用的算法思想基本也是相同的。同时,两者都可以用于序列模型,因此都广泛用于自然语言处理的各个方面。

现在来看看两者的不同点。

  • 最大的不同点是linear-CRF模型是判别模型,而HMM是生成模型,即linear-CRF模型要优化求解的是条件概率 P ( y ∣ x ) P(y|x) P(yx),而HMM要求解的是联合分布 P ( x , y ) P(x,y) P(x,y)
  • 第二,linear-CRF是利用最大熵模型的思路去建立条件概率模型,对于观测序列并没有做马尔科夫假设。而HMM是在对观测序列做了马尔科夫假设的前提下建立联合分布的模型

参考:

  • 条件随机场
  • NLP —— 图模型(二)条件随机场(Conditional random field,CRF)
  • 条件随机场CRF(一)从随机场到线性链条件随机场

THE END.

你可能感兴趣的:(ML)