一文读懂NLP之条件随机场算法详解

0 前言

​ 条件随机场(conditional random field,CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔科夫随机场。本文主要讨论它在标注问题上的应用,因此主要讲线性链(linear chain)条件随机场,这时问题变成了由输入序列对输出序列预测的判别模型,形式为对数线性模型,学习模型参数的方法通常是极大似然估计或者正则化的极大似然估计。

​ 本文参考李航老师的《统计学习方法》,加上自己的理解。

1 马尔科夫随机场

​ 概率无向图模型(probabilistic undirected graphical model),又称为马尔科夫随机场(Markov random field),是一个可以由无向图表示的联合概率分布。

1.1 概率图模型的定义

​ 图是由节点及连接节点的边组成的集合。节点和边分别记作 v v v e e e,节点和边的集合分别记作 V V V E E E,图记作 G = ( V , E ) G=(V,E) G=(V,E)。无向图是指边没有方向的图,有向图是指边有方向的图。
在这里插入图片描述
概率图模型是用图来表示概率分布,设有联合概率分布 P ( Y ) P(\boldsymbol{Y}) P(Y) Y \boldsymbol{Y} Y是一组随机变量。用图 G = ( V , E ) G=(V,E) G=(V,E)来表示概率分布 P ( Y ) P(\boldsymbol{Y}) P(Y)。在图 G G G中,节点$v \in V 表 示 一 个 随 机 变 量 表示一个随机变量 Y_v , 则 ,则 \boldsymbol{Y}=(Y_v)_{v \in V} ; 边 ;边 e \in E$表示随机变量之间的概率依赖关系。常用的概率图模型分为两类:

  • 有向图:贝叶斯网络。信念网络
  • 无向图:马尔科夫随机场、马尔科夫网络

概率图模型是一门很深的学问,在大学里面也是专门的一门课来讲。这篇文章仅仅是代表我自己的认知,也仅仅限于标注模型。
在这里插入图片描述
现在已经用图来表示概率分布,那怎么根据图来计算概率分布呢?

  1. 概率有向图模型的联合概率:

    概率有向图模型的联合概率一般按照如下所示的公式求解:

    P ( X 1 , X 2 , . . . , X N ) = ∏ i = 1 N P ( X i ∣ π ( X i ) ) P(X_1,X_2,...,X_N)=\prod\limits_{i=1}^NP(X_i|\pi(X_i)) P(X1,X2,...,XN)=i=1NP(Xiπ(Xi))
    其中, π ( X i ) \pi(X_i) π(Xi) X i X_i Xi的所有父节点,按理说应该是 P ( Y ) P(\boldsymbol{Y}) P(Y)来表示概率,但是画图时用的是 X X X,这是一个小错误
    在这里插入图片描述
    由图可得:
    P ( X 1 , X 2 , . . . , X 5 ) = P ( X 1 ) P ( X 2 ∣ X 1 ) P ( X 3 ∣ X 2 ) P ( X 4 ∣ X 2 ) P ( X 5 ∣ X 3 , X 4 ) ​ P(X_1,X_2,...,X_5)=P(X_1)P(X_2|X_1)P(X_3|X_2)P(X_4|X_2)P(X_5|X_3,X_4)​ P(X1,X2,...,X5)=P(X1)P(X2X1)P(X3X2)P(X4X2)P(X5X3,X4)

  2. 概率无向图模型的联合概率:

    无向图一般就指的是马尔科夫网路,无向图的无向性导致不能用条件概率参数化表示联合概率,而是需要从一组条件独立的原则中找出一系列局部函数的乘积来表示联合概率。

在这里插入图片描述

如果无向图是一个很大的图,可以使用因子分解 P ( X ) P(\boldsymbol{X}) P(X)写成若干个联合概率的乘积,所以问题来了,怎么分解呢?将图分解为若干个“小团”,注意每一个团必须是最大团(定义在后面介绍),用 Q ∈ C Q\in C QC表示, C C C是最大团的集合。下面给出 P ( X ) P(\boldsymbol{X}) P(X)的公式,也叫因子分解式:
P ( X ) = 1 Z ∏ Q ∈ C ψ Q ( x Q ) P(\boldsymbol{X})=\frac{1}{Z}\prod\limits_{Q \in C}\psi_Q(\boldsymbol{x}_Q) P(X)=Z1QCψQ(xQ)
其中, Z = ∑ x ∏ Q ∈ C ψ Q ( x Q ) Z=\sum\limits_\boldsymbol{x}\prod\limits_{Q\in C}\psi_Q(\boldsymbol{x_Q}) Z=xQCψQ(xQ)为规范化因子,是为了保证概率之和为1,类似于softmax。因为在计算上式时并不是按照概率来计算的,而是定义了特征函数(见后文),数值代表不了概率。在实际应用中,精确计算 Z Z Z是很困难的,但许多任务往往并不需要获得 Z Z Z的精确值。 ψ Q ( x Q ) \psi_Q(\boldsymbol{x_Q}) ψQ(xQ)是一个最大团 Q Q Q所包含的所有随机变量的联合概率,也称作势函数,这个函数必须是非负实数函数,一般取指数函数:
ψ Q ( x Q ) = exp ⁡ { − E ( Y Q ) } \psi_Q(\boldsymbol{x}_Q)=\exp\{-E(Y_Q)\} ψQ(xQ)=exp{E(YQ)}

1.2 马尔科夫随机场

先给一个简单的马尔科夫随机场。
在这里插入图片描述

  1. 团的定义

    对于图中节点的一个子集,若任意子集中任意两个节点间都有边连接,则称该节点子集为一个“团”(clique)。若在一个团中加入任何一个节点都不再形成团,则称这个团为“最大团”。最小的最大团只有两个节点,如上图中的 { x 2 , x 4 } \{x_2,x_4\} {x2,x4}

    团: { x 1 , x 2 } , { x 1 , x 3 } , { x 2 , x 4 } , { x 2 , x 5 } , { x 2 , x 6 } , { x 3 , x 5 } , { x 5 , x 6 } , { x 2 , x 5 , x 6 } \{x_1,x_2\},\{x_1,x_3\},\{x_2,x_4\},\{x_2,x_5\},\{x_2,x_6\},\{x_3,x_5\},\{x_5,x_6\},\{x_2,x_5,x_6\} {x1,x2},{x1,x3},{x2,x4},{x2,x5},{x2,x6},{x3,x5},{x5,x6},{x2,x5,x6}

    最大团: { x 1 , x 2 } , { x 1 , x 3 } , { x 2 , x 4 } , { x 3 , x 5 } , { x 2 , x 5 , x 6 } \{x_1,x_2\},\{x_1,x_3\},\{x_2,x_4\},\{x_3,x_5\},\{x_2,x_5,x_6\} {x1,x2},{x1,x3},{x2,x4},{x3,x5},{x2,x5,x6}

按照上述的公式求解概率,只需用到最大团。原因:若 Q Q Q不是最大团,则它一定会被一个另一个最大团 Q ∗ Q^* Q完全包含,即 Q ∈ Q ∗ Q\in Q^* QQ,这意味着 Q Q Q包含的变量之间的关系不仅体现在势函数 ψ Q \psi_Q ψQ中,还体现在 ψ Q ∗ \psi_{Q^*} ψQ中,这样就乱套了,所以联合概率必须使用最大团来定义。

上述这个图的联合概率为:
P ( X ) = 1 Z ψ 12 ( x 1 , x 2 ) ψ 13 ( x 1 , x 3 ) ψ 24 ( x 2 , x 4 ) ψ 35 ( x 3 , x 5 ) ψ 256 ( x 2 , x 5 , x 6 ) P(\boldsymbol{X})=\frac{1}{Z}\psi_{12}(x_1,x_2)\psi_{13}(x_1,x_3)\psi_{24}(x_2,x_4)\psi_{35}(x_3,x_5)\psi_{256}(x_2,x_5,x_6) P(X)=Z1ψ12(x1,x2)ψ13(x1,x3)ψ24(x2,x4)ψ35(x3,x5)ψ256(x2,x5,x6)
其中, ψ 256 ( x 2 , x 5 , x 6 ) \psi_{256}(x_2,x_5,x_6) ψ256(x2,x5,x6)定义在最大团 { x 2 , x 5 , x 6 } \{x_2,x_5,x_6\} {x2,x5,x6}上,由于它的存在不需要为团 { x 2 , x 5 } , { x 2 , x 6 } , { x 5 , x 6 } \{x_2,x_5\},\{x_2,x_6\},\{x_5,x_6\} {x2,x5},{x2,x6},{x5,x6}构建势函数。

​ 在马尔科夫随机场中,还需要得到“条件独立性”,即马尔科夫性,同样借助分离的概念。马尔科夫性是保证或者判断概率图是否为概率无向图的条件,一共三点内容:

  • 全局马尔科夫性

  • 局部马尔科夫性

  • 成对马尔科夫性

    注:这个只作为判断一个概率图是不是马尔科夫随机场,可以不用重点关注。

  1. 全局马尔科夫性

    分离集的定义:若从节点集A的节点到B中的节点都必须经过节点集C中的节点,则称节点集A和B被节点集C分离,C成为分离集。

    在这里插入图片描述

    全局马尔科夫性:给定两个变量子集的分离集,则这两个变量子集条件独立。记作:
    P ( x A , x B ∣ x C ) = P ( x A ∣ x C ) P ( x B ∣ x C ) P(x_A,x_B|x_C)=P(x_A|x_C)P(x_B|x_C) P(xA,xBxC)=P(xAxC)P(xBxC)
    相关证明可以查看《机器学习_周志华》

  2. 局部马尔科夫性

    给定某变量的邻接变量,则该变量条件独立于其他变量,设 W W W是与v有边连接的所有节点集合, O O O v v v W W W以外的其他所有节点集合,则:
    P ( X V , X O ∣ X W ) = P ( X V ∣ X W ) P ( X O ∣ X W ) P(X_V,X_O|X_W)=P(X_V|X_W)P(X_O|X_W) P(XV,XOXW)=P(XVXW)P(XOXW)
    P ( X O ∣ X W ) > 0 P(X_O|X_W)>0 P(XOXW)>0,则有:
    P ( X V ∣ X W ) = P ( X V ∣ X W , X O ) P(X_V|X_W)=P(X_V|X_W,X_O) P(XVXW)=P(XVXW,XO)

  3. 成对马尔科夫性

    u u u v v v是无向图中的任意两个没有边连接的节点,其他所有节点集合为 O O O,成对马尔科夫性是指给定随机变量组 X O X_O XO的条件下随机变量 X u X_u Xu X v X_v Xv是条件独立的,即:
    P ( X u , X − v ∣ X O ) = P ( X u ∣ X O ) P ( X v ∣ X O ) P(X_u,X-v|X_O)=P(X_u|X_O)P(X_v|X_O) P(Xu,XvXO)=P(XuXO)P(XvXO)

针对上述的定义,现在给出概率无向图模型的定义:

设有联合概率分布 P ( X ) P(\boldsymbol{X}) P(X),由无向图 G = ( V , E ) G=(V,E) G=(V,E)表示,在途中,节点表示随机变量,边表示随机变量之间的依赖关系。如果连个概率分布满足成对、局部和全局马尔科夫性,就称此联合概率分布为概率无向图模型,或马尔科夫随机场。

2 条件随机场

​ 条件随机场是给定随机变量 X \boldsymbol{X} X条件下,随机变量 Y \boldsymbol{Y} Y的马尔科夫随机场。这里主要介绍定义在线性链上的特殊的条件随机场,成为线性链条件随机场。注意条件随机场是判别模型,是对条件概率 P ( Y ∣ X ) P(\boldsymbol{Y}|\boldsymbol{X}) P(YX)进行建模。线性链条件随机场可以用于标注问题,这时,在条件概率模型 P ( Y ∣ X ) P(\boldsymbol{Y}|\boldsymbol{X}) P(YX)中, Y \boldsymbol{Y} Y是输出变量,表示标记序列,也可以称为状态序列, X \boldsymbol{X} X是输入变量,表示需要标注的观测序列。在学习模型参数时,利用训练数据及通过极大似然估计或正则化的极大似然估计得到条件概率模型 P ^ ( Y ∣ X ) \hat{P}(\boldsymbol{Y}|\boldsymbol{X}) P^(YX);预测时,对于给定的输入序列 x \boldsymbol{x} x,求出条件概率 P ^ ( y ∣ x ) \hat{P}(\boldsymbol{y}|\boldsymbol{x}) P^(yx)最大的输出序列 y ^ \hat{\boldsymbol{y}} y^

2.1 条件随机场的定义

定义:设 X \boldsymbol{X} X Y \boldsymbol{Y} Y是随机变量, P ( Y ∣ X ) P(\boldsymbol{Y}|\boldsymbol{X}) P(YX)是在给定 X \boldsymbol{X} X的条件下 Y \boldsymbol{Y} Y的条件概率分布,若随机变量 Y \boldsymbol{Y} Y构成了一个由无向图 G = ( V , E ) G=(V,E) 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 v v成立,则称条件概率分布 P ( Y ∣ X ) P(\boldsymbol{Y}|\boldsymbol{X}) P(YX)为条件随机场,其中 w ≠ v w\neq v w=v表示节点 v v v以外的所有节点, w ∼ v w \sim v wv表示在图中与节点 v v v有边连接的所有节点 w w w Y w , Y v , Y u Y_w,Y_v,Y_u Yw,Yv,Yu是与节点对应的随机变量。

​ 在定义中并没有要求 X \boldsymbol{X} X Y \boldsymbol{Y} Y具有想听的结构,现实中,一般假设 X \boldsymbol{X} X Y \boldsymbol{Y} Y 相 同 的 图 结 构 \color{red}相同的图结构 ,本文也只考虑无向图为下图所示的线性链的情况,用符号表示为:
G = ( V = { 1 , 2 , 3 , . . . , n } , E = { ( i , i + 1 ) } ) G=(V=\{1,2,3,...,n\},\quad E=\{(i,i+1)\}) G=(V={1,2,3,...,n},E={(i,i+1)})
在这里插入图片描述
​ 在此情况下,最大团集合就是两个相邻的节点的集合。

线性链条件随机场的定义:设 X = ( X 1 , X 2 , X 3 , . . . , X n ) , Y = ( Y 1 , Y 2 , Y 3 , . . . , Y n ) \boldsymbol{X}=(X_1,X_2,X_3,...,X_n),\boldsymbol{Y}=(Y_1,Y_2,Y_3,...,Y_n) X=(X1,X2,X3,...,Xn),Y=(Y1,Y2,Y3,...,Yn)均为线性链表示的随机变量序列,若在给定随机变量序列 X \boldsymbol{X} X的条件下,随机变量序列 Y \boldsymbol{Y} Y的条件概率分布 P ( Y ∣ X ) P(\boldsymbol{Y}|\boldsymbol{X}) P(YX)构成条件随机场,即满足马尔科夫性:
P ( Y i ∣ X , Y 1 , Y 2 , . . , Y i − 1 , Y i + 1 , . . . , Y n ) = P ( Y i ∣ X , Y i − 1 , Y i + 1 ) P(Y_i|\boldsymbol{X},Y_1,Y_2,..,Y_{i-1},Y_{i+1},...,Y_n)=P(Y_i|\boldsymbol{X},Y_{i-1},Y_{i+1}) P(YiX,Y1,Y2,..,Yi1,Yi+1,...,Yn)=P(YiX,Yi1,Yi+1)
则称 P ( Y ∣ X ) P(\boldsymbol{Y}|\boldsymbol{X}) P(YX)为线性链条件随机场,可以看出, Y i Y_i Yi只与观测序列当前值和前后状态相关。在标注问题中, Y \boldsymbol{Y} Y是输出变量,表示标记序列,也可以称为状态序列, X \boldsymbol{X} X是输入变量,表示需要标注的观测序列。

​ 这里引用博文随机场中的一个例子:

随机场包含两个要素:位置(site),相空间(phase space)。当给每一个位置中按照某种分布随机赋予相空间的一个值之后,其全体就叫做随机场。我们不妨拿种地来打个比方。“位置”好比是一亩亩农田; “相空间”好比是种的各种庄稼。我们可以给不同的地种上不同的庄稼,这就好比给随机场的每个“位置”,赋予相空间里不同的值。所以,俗气点说,随机场就是在哪块地里种什么庄稼的事情。
好了,明白了上面两点,就可以讲马尔可夫随机场了。还是拿种地打比方,如果任何一块地里种的庄稼的种类仅仅与它邻近的地里种的庄稼的种类有关,与其它地方的庄稼的种类无关,那么这些地里种的庄稼的集合,就是一个马尔可夫随机场。
马尔可夫随机场,描述了具有某种特性的集合。拿种地打比方,如果任何一块地里种的庄稼的种类仅仅与它邻近的地里种的庄稼的种类有关,与其它地方的庄稼的种类无关,那么这些地里种的庄稼的集合,就是一个马尔可夫随机场。

2.2 条件随机场的参数化形式

​ 根据前面介绍的概率无向图模型的因子分解式,线性链条件随机场的各因子是定义在相邻两个节点上的函数。设 P ( Y ∣ X ) P(\boldsymbol{Y}|\boldsymbol{X}) P(YX)为线性链条件随机场,则在随机变量 X \boldsymbol{X} X取值为 x x x的条件下,随机变量 Y \boldsymbol{Y} Y取值为 y y y的条件概率具有如下形式:
P ( y ∣ x ) = 1 Z ( x ) ∏ Q ψ Q ( x , y ) = 1 Z ( x ) exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) \begin{aligned} P(y|x)&=\frac{1}{Z(x)}\prod \limits_Q\psi_Q(x,y)\\ &=\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)} \end{aligned} P(yx)=Z(x)1QψQ(x,y)=Z(x)1exp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))
其中,
Z ( x ) = ∑ y exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) 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)} Z(x)=yexp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))
t k t_k tk s l s_l sl是特征函数, λ k \lambda_k λk μ l \mu_l μl是对应的权值, Z ( x ) Z(x) Z(x)是规范化因子,求和是在所有可能的输出序列上进行的。

推导过程(一定要看下面的过程,可以帮助你很好理解):

上文介绍的概率无向图模型只有 X X X一种随机变量,现在图中有 X , Y X,Y X,Y两种随机变量,所以 P ( X ) = 1 Z ∏ Q ψ Q ( X Q ) P(X)=\frac{1}{Z}\prod\limits_Q\psi_Q(X_Q) P(X)=Z1QψQ(XQ)变成:
P ( X , Y ) = 1 Z ∏ Q ψ Q ( X Q , Y Q ) = ∏ Q ψ Q ( X Q , Y Q ) ∑ X , Y ∏ Q ψ Q ( X Q , Y Q ) 则 : P ( x , y ) = ∏ Q ψ Q ( x Q , y Q ) ∑ x , y ∏ Q ψ Q ( x Q , y Q ) \begin{aligned} P(X,Y)&=\frac{1}{Z}\prod\limits_Q\psi_Q(X_Q,Y_Q)\\ &=\frac{\prod\limits_Q\psi_Q(X_Q,Y_Q)}{\sum\limits_{X,Y}\prod\limits_Q\psi_Q(X_Q,Y_Q)}\\ 则:\\ P(x,y)&=\frac{\prod\limits_Q\psi_Q(x_Q,y_Q)}{\sum\limits_{x,y}\prod\limits_Q\psi_Q(x_Q,y_Q)} \end{aligned} P(X,Y)P(x,y)=Z1QψQ(XQ,YQ)=X,YQψQ(XQ,YQ)QψQ(XQ,YQ)=x,yQψQ(xQ,yQ)QψQ(xQ,yQ)

Z ( x ) = ∑ y ∏ Q ψ Q ( x Q , y Q ) Z(x)=\sum\limits_y\prod\limits_Q\psi_Q(x_Q,y_Q) Z(x)=yQψQ(xQ,yQ),在归一化的时候,只需对每种 x x x求一个归一化因子
P ( y ∣ x ) = 1 Z ( x ) ∏ Q ψ Q ( x Q , y Q ) P(y|x)=\frac{1}{Z(x)}\prod \limits_Q\psi_Q(x_Q,y_Q) P(yx)=Z(x)1QψQ(xQ,yQ)
根据线性链条件随机场的定义,对于每一个因子,有两种情况:

  1. 因子处于两个输出序列上,和当前位置的观测,以及前一个状态有关,还要对每一个对应的特征求连积 ψ Q ( x Q , y Q ) = ψ Q ( y i − 1 , y i , x , i ) = exp ⁡ ( λ 1 t 1 ( y i − 1 , y i , x , i ) ) exp ⁡ ( λ 2 t 2 ( y i − 1 , y i , x , i ) ) ⋅ ⋅ ⋅ exp ⁡ ( λ k t k ( y i − 1 , y i , x , i ) ) = exp ⁡ ( ∑ k λ k t k ( y i − 1 , y i , x , i ) ) \psi_Q(x_Q,y_Q)=\psi_Q(y_{i-1},y_i,x,i)=\exp(\lambda_1t_1(y_{i-1},y_i,x,i))\exp(\lambda_2t_2(y_{i-1},y_i,x,i))···\exp(\lambda_kt_k(y_{i-1},y_i,x,i))=\exp(\sum\limits_k\lambda_kt_k(y_{i-1},y_i,x,i)) ψQ(xQ,yQ)=ψQ(yi1,yi,x,i)=exp(λ1t1(yi1,yi,x,i))exp(λ2t2(yi1,yi,x,i))exp(λktk(yi1,yi,x,i))=exp(kλktk(yi1,yi,x,i))

在这里插入图片描述

  1. 因子处于观测序列和输出序列之间,和当前位置的观测有关,还要对每一个对应的特征求连积 ψ Q ( x Q , y Q ) = ψ Q ( y i , x , i ) = exp ⁡ ( μ 1 s 1 ( y i , x , i ) ) exp ⁡ ( μ 2 s 2 ( y i , x , i ) ) ⋅ ⋅ ⋅ exp ⁡ ( μ l s l ( y i , x , i ) ) = exp ⁡ ( ∑ l μ l s l ( ( y i , x , i ) ) \psi_Q(x_Q,y_Q)=\psi_Q(y_i,x,i)=\exp(\mu_1s_1(y_i,x,i))\exp(\mu_2s_2(y_i,x,i))···\exp(\mu_ls_l(y_i,x,i))=\exp(\sum\limits_l\mu_ls_l((y_i,x,i)) ψQ(xQ,yQ)=ψQ(yi,x,i)=exp(μ1s1(yi,x,i))exp(μ2s2(yi,x,i))exp(μlsl(yi,x,i))=exp(lμlsl((yi,x,i))

在这里插入图片描述

则: ψ Q ( x Q , y Q ) = exp ⁡ ( ∑ k λ k t k ( y i − 1 , y i , x , i ) + ∑ l μ l s l ( ( y i , x , i ) ) \psi_Q(x_Q,y_Q)=\exp(\sum\limits_k\lambda_kt_k(y_{i-1},y_i,x,i)+\sum\limits_l\mu_ls_l((y_i,x,i)) ψQ(xQ,yQ)=exp(kλktk(yi1,yi,x,i)+lμlsl((yi,x,i))

对每一个因子求连积,即对每一个位置 i i i求乘积,对指数来说是求和:
P ( y ∣ x ) = 1 Z ( x ) ∏ Q ψ Q ( x Q , y Q ) = 1 Z ( x ) exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) = exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) ∑ y exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) \begin{aligned} P(y|x)&=\frac{1}{Z(x)}\prod \limits_Q\psi_Q(x_Q,y_Q)\\ &=\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)}\\ &=\frac{\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)}}{\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)}} \end{aligned} P(yx)=Z(x)1QψQ(xQ,yQ)=Z(x)1exp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))=yexp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))exp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))
定义特征的原因:根据最大熵原则,希望找到一个符合所有边缘分布,同时使得熵达到最大的模型,这个模型就是指数函数,每一个边缘分布对应指数模型中的一个特征。最大熵会在后序博文给出。

  • t k t_k tk是定义在边上的特征函数,称为转移特征,依赖于当前位置和前一个位置,是人为定义的特征;
  • s l s_l sl是定义在边上的特征函数,称为状态特征,依赖于当前位置,是人为定义的特征;
  • t k , s l t_k,s_l tk,sl是都依赖于位置,是局部特征函数,通常取值为1或0;
  • 条件随机场完全由特征函数 t k , s l t_k,s_l tk,sl和对应的权值 λ k \lambda_k λk μ l \mu_l μl确定。

2.3 条件随机场的例子

​ 设有一标注问题:输入观测序列为 X = ( X 1 , X 2 , X 3 ) \boldsymbol{X}=(X_1,X_2,X_3) X=(X1,X2,X3),输出标记序列为 Y = ( Y 1 , Y 2 , Y 3 ) \boldsymbol{Y}=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3) Y 1 , Y 2 , Y 3 Y_1,Y_2,Y_3 Y1,Y2,Y3取值空间为 { 1 , 2 } \{1,2\} {1,2}假设特征函数 t k , s l t_k,s_l tk,sl和对应的权值 λ k \lambda_k λk μ l \mu_l μl如下:
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),\quad i=2,3,\quad \lambda_1=1 t1=t1(yi1=1,yi=2,x,i),i=2,3,λ1=1
这表示当当前位置 y y y取值为2,上一位置为1,则特征函数 t t t取值为1,取值为0的条件省略,即:
t 1 ( y i − 1 = 1 , y i = 2 , x , i ) = { 1 , y i − 1 = 1 , y i = 2 , x , i , ( i = 2 , 3 ) 0 , 其 他 t_1(y_{i-1}=1,y_i=2,x,i)=\begin{cases}1,& y_{i-1}=1,y_i=2,x,i,(i=2,3)\\ 0,& 其他\end{cases} t1(yi1=1,yi=2,x,i)={1,0,yi1=1,yi=2,x,i,(i=2,3)
在这里插入图片描述

一共有5个特征函数 t t t,4个特征函数 s s s

对给定的观测序列 x x x,求标记序列为 y = ( y 1 , y 2 , y 3 ) = ( 1 , 2 , 2 ) y=(y_1,y_2,y_3)=(1,2,2) y=(y1,y2,y3)=(1,2,2)的非规范化条件概率,也就是没有除以规范化因子的条件概率,即:

exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) \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)} exp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))

解:

​ 根据因子分解式:
P ( y ∣ x ) ∝ exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) ∝ exp ⁡ [ ∑ 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 ) ] \begin{aligned} P(y|x)&\propto\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)}\\ &\propto \exp{[\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)}] \end{aligned} P(yx)exp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))exp[k=15λki=23tk(yi1,yi,x,i)+l=14μli=13sl(yi,x,i)]
计算过程:

k = 1 k=1 k=1时:
∑ i = 2 3 t 1 ( y i − 1 , y i , x , i ) = t 1 ( y 1 = 1 , y 2 = 2 , x , i = 2 ) + t 1 ( y 2 = 2 , y 3 = 2 , x , i = 3 ) = 1 + 0 = 1 \begin{aligned} \sum\limits_{i=2}^3t_1(y_{i-1,y_i,x,i})&=t_1(y_1=1,y_2=2,x,i=2)+t_1(y_2=2,y_3=2,x,i=3)\\ &=1+0=1 \end{aligned} i=23t1(yi1,yi,x,i)=t1(y1=1,y2=2,x,i=2)+t1(y2=2,y3=2,x,i=3)=1+0=1
k = 2 k=2 k=2时:
∑ i = 2 3 t 2 ( y i − 1 , y i , x , i ) = t 2 ( y 1 = 1 , y 2 = 2 , x , i = 2 ) + t 2 ( y 2 = 2 , y 3 = 2 , x , i = 3 ) = 0 + 0 = 0 \begin{aligned} \sum\limits_{i=2}^3t_2(y_{i-1,y_i,x,i})&=t_2(y_1=1,y_2=2,x,i=2)+t_2(y_2=2,y_3=2,x,i=3)\\ &=0+0=0 \end{aligned} i=23t2(yi1,yi,x,i)=t2(y1=1,y2=2,x,i=2)+t2(y2=2,y3=2,x,i=3)=0+0=0
k = 3 k=3 k=3时:
∑ i = 2 3 t 3 ( y i − 1 , y i , x , i ) = t 3 ( y 1 = 1 , y 2 = 2 , x , i = 2 ) + t 3 ( y 2 = 2 , y 3 = 2 , x , i = 3 ) = 0 + 0 = 0 \begin{aligned}\sum\limits_{i=2}^3t_3(y_{i-1,y_i,x,i})&=t_3(y_1=1,y_2=2,x,i=2)+t_3(y_2=2,y_3=2,x,i=3)\\&=0+0=0\end{aligned} i=23t3(yi1,yi,x,i)=t3(y1=1,y2=2,x,i=2)+t3(y2=2,y3=2,x,i=3)=0+0=0
k = 4 k=4 k=4时:
∑ i = 2 3 t 4 ( y i − 1 , y i , x , i ) = t 4 ( y 1 = 1 , y 2 = 2 , x , i = 2 ) + t 4 ( y 2 = 2 , y 3 = 2 , x , i = 3 ) = 0 + 0 = 0 \begin{aligned}\sum\limits_{i=2}^3t_4(y_{i-1,y_i,x,i})&=t_4(y_1=1,y_2=2,x,i=2)+t_4(y_2=2,y_3=2,x,i=3)\\&=0+0=0\end{aligned} i=23t4(yi1,yi,x,i)=t4(y1=1,y2=2,x,i=2)+t4(y2=2,y3=2,x,i=3)=0+0=0
k = 5 k=5 k=5时:
∑ i = 2 3 t 5 ( y i − 1 , y i , x , i ) = t 5 ( y 1 = 1 , y 2 = 2 , x , i = 2 ) + t 5 ( y 2 = 2 , y 3 = 2 , x , i = 3 ) = 0 + 1 = 1 \begin{aligned}\sum\limits_{i=2}^3t_5(y_{i-1,y_i,x,i})&=t_5(y_1=1,y_2=2,x,i=2)+t_5(y_2=2,y_3=2,x,i=3)\\&=0+1=1\end{aligned} i=23t5(yi1,yi,x,i)=t5(y1=1,y2=2,x,i=2)+t5(y2=2,y3=2,x,i=3)=0+1=1
所以:
∑ k = 1 5 λ k ∑ i = 2 3 t k ( y i − 1 , y i , x , i ) = λ 1 ∑ i = 2 3 t 1 ( y i − 1 , y i , x , i ) + λ 5 ∑ i = 2 3 t 5 ( y i − 1 , y i , x , i ) = 1 × 1 + 0.2 × 1 = 1.2 \begin{aligned} \sum\limits_{k=1}^5\lambda_k\sum\limits_{i=2}^3t_k(y_{i-1,y_i,x,i})&=\lambda_1\sum\limits_{i=2}^3t_1(y_{i-1,y_i,x,i})+\lambda_5\sum\limits_{i=2}^3t_5(y_{i-1,y_i,x,i})\\ &=1\times 1+0.2\times 1\\ &=1.2 \end{aligned} k=15λki=23tk(yi1,yi,x,i)=λ1i=23t1(yi1,yi,x,i)+λ5i=23t5(yi1,yi,x,i)=1×1+0.2×1=1.2
同理:

l = 1 l=1 l=1时:
∑ i = 1 3 s l ( y i , x , i ) = s 1 ( y 1 = 1 , x , i = 1 ) + s 1 ( y 2 = 2 , x , i = 2 ) + s 1 ( y 3 = 2 , x , i = 3 ) = 1 + 0 + 0 = 1 \begin{aligned} \sum\limits_{i=1}^3s_l(y_i,x,i)&=s_1(y_1=1,x,i=1)+s_1(y_2=2,x,i=2)+s_1(y_3=2,x,i=3)\\ &=1+0+0\\ &=1 \end{aligned} i=13sl(yi,x,i)=s1(y1=1,x,i=1)+s1(y2=2,x,i=2)+s1(y3=2,x,i=3)=1+0+0=1
l = 2 l=2 l=2时:
∑ i = 1 3 s l ( y i , x , i ) = s 2 ( y 1 = 1 , x , i = 1 ) + s 2 ( y 2 = 2 , x , i = 2 ) + s 2 ( y 3 = 2 , x , i = 3 ) = 0 + 1 + 0 = 1 \begin{aligned}\sum\limits_{i=1}^3s_l(y_i,x,i)&=s_2(y_1=1,x,i=1)+s_2(y_2=2,x,i=2)+s_2(y_3=2,x,i=3)\\ &=0+1+0\\ &=1\end{aligned} i=13sl(yi,x,i)=s2(y1=1,x,i=1)+s2(y2=2,x,i=2)+s2(y3=2,x,i=3)=0+1+0=1
l = 3 l=3 l=3时:
∑ i = 1 3 s l ( y i , x , i ) = s 3 ( y 1 = 1 , x , i = 1 ) + s 3 ( y 2 = 2 , x , i = 2 ) + s 3 ( y 3 = 2 , x , i = 3 ) = 0 + 0 + 0 = 0 \begin{aligned}\sum\limits_{i=1}^3s_l(y_i,x,i)&=s_3(y_1=1,x,i=1)+s_3(y_2=2,x,i=2)+s_3(y_3=2,x,i=3)\\ &=0+0+0\\ &=0 \end{aligned} i=13sl(yi,x,i)=s3(y1=1,x,i=1)+s3(y2=2,x,i=2)+s3(y3=2,x,i=3)=0+0+0=0
l = 4 l=4 l=4时:
∑ i = 1 3 s l ( y i , x , i ) = s 4 ( y 1 = 1 , x , i = 1 ) + s 4 ( y 2 = 2 , x , i = 2 ) + s 4 ( y 3 = 2 , x , i = 3 ) = 0 + 0 + 1 = 1 \begin{aligned} \sum\limits_{i=1}^3s_l(y_i,x,i)&=s_4(y_1=1,x,i=1)+s_4(y_2=2,x,i=2)+s_4(y_3=2,x,i=3)\\ &=0+0+1\\ &=1 \end{aligned} i=13sl(yi,x,i)=s4(y1=1,x,i=1)+s4(y2=2,x,i=2)+s4(y3=2,x,i=3)=0+0+1=1
所以:
∑ l = 1 4 μ l ∑ i = 1 3 s l ( y i , x , i ) = μ 1 s 1 + μ 2 s 2 + μ 4 s 4 = 1 × 1 + 0.5 × 1 + 0.5 × 1 = 2 \begin{aligned} \sum\limits_{l=1}^4\mu_l\sum\limits_{i=1}^3s_l(y_i,x,i)&=\mu_1s_1+\mu_2s_2+\mu_4s_4\\ &=1\times 1+0.5\times 1+0.5\times 1\\ &=2 \end{aligned} l=14μli=13sl(yi,x,i)=μ1s1+μ2s2+μ4s4=1×1+0.5×1+0.5×1=2
故:
P ( y ∣ x ) ∝ exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) ∝ exp ⁡ [ ∑ 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 ) ] ∝ exp ⁡ ( 1.2 + 2 ) = exp ⁡ ( 3.2 ) \begin{aligned} P(y|x)&\propto\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)}\\ &\propto \exp{[\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)}]\\ &\propto\exp(1.2+2)=\exp(3.2) \end{aligned} P(yx)exp(i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i))exp[k=15λki=23tk(yi1,yi,x,i)+l=14μli=13sl(yi,x,i)]exp(1.2+2)=exp(3.2)

2.4 条件随机场的简化形式

​ 条件随机场还可以由简化形式表示.注意到条件随机场因子分解式中,同一特征在各个位置都有定义,可以对同一个特征在各个位置求和,将局部特征函数转化为一个全局特征函数,这样就可以将条件随机场写成权值向量和特征向量的内积形式,即条件随机场的简化形式。

​ 为简便起见,首先将转移特征和状态特征及其权值用统一的符号表示,设有 K 1 K_1 K1个转移特征, K 2 K_2 K2个状态特征, K = K 1 + K 2 K=K_1+K_2 KK1K2,记
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;\quad 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
然后,对转移与状态特征在各个位置 i i i求和,记作:
f k ( y , x ) = ∑ i = 1 n f k ( y i − 1 , y i , x , i ) , k = 1 , 2 , . . . , K f_k(y,x)=\sum\limits_{i=1}^nf_k(y_{i-1},y_i,x,i),\quad k=1,2,...,K fk(y,x)=i=1nfk(yi1,yi,x,i),k=1,2,...,K
w k w_k wk表示特征 f k ( y , x ) f_k(y,x) fk(y,x)的权值,即:
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=K1+l;\quad l=1,2,...,K_2 \end{cases} wk={λk,μl,k=1,2,...,K1k=K1+l;l=1,2,...,K2
于是,条件随机场就可以表示成:
P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ∑ k = 1 K w k f k ( y , x ) Z ( x ) = ∑ y exp ⁡ ∑ k = 1 K w k f k ( y , x ) \begin{aligned} P(y|x)&=\frac{1}{Z(x)}\exp{\sum\limits_{k=1}^Kw_kf_k(y,x)}\\ Z(x)&=\sum\limits_y\exp{\sum\limits_{k=1}^Kw_kf_k(y,x)} \end{aligned} P(yx)Z(x)=Z(x)1expk=1Kwkfk(y,x)=yexpk=1Kwkfk(y,x)
若以 w \boldsymbol{w} w表示权值向量,即 w = ( w 1 , w 2 , . . . , w k ) T \boldsymbol{w}=(w_1,w_2,...,w_k)^T w=(w1,w2,...,wk)T,以 F ( y , x ) F(\boldsymbol{y},\boldsymbol{x}) F(y,x)来表示全局特征向量,即 F ( y , x ) = ( f 1 ( y , x ) , f 2 ( y , x ) , . . . , f k ( y , x ) ) T F(\boldsymbol{y},\boldsymbol{x})=(f_1(\boldsymbol{y},\boldsymbol{x}),f_2(\boldsymbol{y},\boldsymbol{x}),...,f_k(\boldsymbol{y},\boldsymbol{x}))^T F(y,x)=(f1(y,x),f2(y,x),...,fk(y,x))T

则条件随机场可以写成向量 w \boldsymbol{w} w F ( y , x ) F(\boldsymbol{y},\boldsymbol{x}) F(y,x)的内积的形式:
P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ( w ⋅ F ( y , x ) ) Z ( x ) = ∑ y exp ⁡ ( w ⋅ F ( y , x ) ) \begin{aligned} P(y|x)&=\frac{1}{Z(x)}\exp{(\boldsymbol{w}\cdot F(\boldsymbol{y},\boldsymbol{x}))}\\ Z(x)&=\sum\limits_y\exp{(\boldsymbol{w}\cdot F(\boldsymbol{y},\boldsymbol{x}))} \end{aligned} P(yx)Z(x)=Z(x)1exp(wF(y,x))=yexp(wF(y,x))

符号“ ⋅ \cdot ”点积表示对应元素相乘后再相加。

2.5 条件随机场的矩阵形式

​ 条件随机场还可以用矩阵来表示,假设 P w ( y ∣ x ) P_w(\boldsymbol{y}|\boldsymbol{x}) Pw(yx)是由
P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ∑ k = 1 K w k f k ( y , x ) Z ( x ) = ∑ y exp ⁡ ∑ k = 1 K w k f k ( y , x ) \begin{aligned}P(y|x)&=\frac{1}{Z(x)}\exp{\sum\limits_{k=1}^Kw_kf_k(y,x)}\\Z(x)&=\sum\limits_y\exp{\sum\limits_{k=1}^Kw_kf_k(y,x)}\end{aligned} P(yx)Z(x)=Z(x)1expk=1Kwkfk(y,x)=yexpk=1Kwkfk(y,x)
给出的线性链条件随机场,表示对给定观测序列 x \boldsymbol{x} x,相应的标记序列 y \boldsymbol{y} y的条件概率。引进特殊的起点和终点状态标记 y 0 = s t a r t , y n + 1 = s t o p y_0=start,y_{n+1}=stop y0=start,yn+1=stop,这时 P w ( y ∣ x ) P_w(\boldsymbol{y}|\boldsymbol{x}) Pw(yx)可以通过矩阵形式表示。

​ 对观测序列 x \boldsymbol{x} x的每一个位置 i = 1 , 2 , . . . , n + 1 i=1,2,...,n+1 i=1,2,...,n+1,定义一个 m m m阶矩阵( m m m是标记 y \boldsymbol{y} y的取值的个数):

M i ( x ) = [ M i ( y i − 1 , y i ∣ x ) ] M i ( y i − 1 , y i ∣ x ) = exp ⁡ ( W i ( ( y i − 1 , y i ∣ x ) ) W i ( ( y i − 1 , y i ∣ x ) = ∑ i = 1 K w k f k ( y i − 1 , y i ∣ x ) \begin{aligned} M_i(x)&=[M_i(y_{i-1},y_i|x)]\\ M_i(y_{i-1},y_i|x)&=\exp(W_i((y_{i-1},y_i|x))\\ W_i((y_{i-1},y_i|x)&=\sum\limits_{i=1}^Kw_kf_k(y_{i-1},y_i|x) \end{aligned} Mi(x)Mi(yi1,yix)Wi((yi1,yix)=[Mi(yi1,yix)]=exp(Wi((yi1,yix))=i=1Kwkfk(yi1,yix)
​ 这样,给定观测序列 x \boldsymbol{x} x,标记序列 y \boldsymbol{y} y的非规范化概率可以通过 n + 1 n+1 n+1个矩阵的乘积 ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) \prod\limits_{i=1}^{n+1}M_i(y_{i-1},y_i|x) i=1n+1Mi(yi1,yix)表示,每一次乘就代表了一次状态转移,于是,条件概率 P w ( y ∣ x ) P_w(\boldsymbol{y}|\boldsymbol{x}) Pw(yx)是:
P w ( y ∣ x ) = 1 Z w ( x ) ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) P_w(\boldsymbol{y}|\boldsymbol{x})=\frac{1}{Z_w(x)}\prod\limits_{i=1}^{n+1}M_i(y_{i-1},y_i|x) Pw(yx)=Zw(x)1i=1n+1Mi(yi1,yix)
其中, Z w ( x ) Z_w(x) Zw(x)是规范化因子,是 n + 1 n+1 n+1个矩阵的乘积的(start,stop)元素:
Z w ( x ) = ( M 1 ( x ) M 2 ( x ) . . . M n + 1 ( x ) ) s t a r t , a t o p Z_w(x)=(M_1(x)M_2(x)...M_{n+1}(x))_{start,atop} Zw(x)=(M1(x)M2(x)...Mn+1(x))start,atop
注意, 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表示开始状态与终止状态,规范化因子 Z w ( x ) Z_w(x) Zw(x)是以start为起点stop为终点通过状态的所有路径 y 1 y 2 . . . y n y_1y_2...y_n y1y2...yn的非规范化概率 ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) \prod\limits_{i=1}^{n+1}M_i(y_{i-1},y_i|x) i=1n+1Mi(yi1,yix)之和。下面举个例子来说明。

例:给定一个由下图所示的线性链条件随机场,观测序列 x \boldsymbol{x} x,标记序列 y \boldsymbol{y} y i = 1 , 2 , 3 , n = 3 i=1,2,3,n=3 i=1,2,3,n=3,标记 y i ∈ { 1 , 2 } y_i\in\{1,2\} yi{1,2},假设 y 0 = s t a r t = 1 , y 4 = s t o p = 1 y_0=start=1,y_4=stop=1 y0=start=1,y4=stop=1,各个位置的随机矩阵为 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)分别是:
M 1 ( x ) = [ a 01 a 02 0 0 ] , M 2 ( x ) = [ b 11 b 12 b 21 b 22 ] , M 3 ( x ) = [ c 11 c 12 c 21 c 22 ] , M 4 ( x ) = [ 1 0 1 0 ] M_1(x)=\begin{bmatrix} a_{01} & a_{02}\\ 0 & 0 \end{bmatrix}, M_2(x)=\begin{bmatrix} b_{11} & b_{12}\\ b_{21} & b_{22} \end{bmatrix}, M_3(x)=\begin{bmatrix} c_{11} & c_{12}\\ c_{21} & c_{22} \end{bmatrix}, M_4(x)=\begin{bmatrix} 1 & 0\\ 1 & 0 \end{bmatrix} M1(x)=[a010a020],M2(x)=[b11b21b12b22],M3(x)=[c11c21c12c22],M4(x)=[1100]
试求状态序列 y \boldsymbol{y} y以start为起点stop为终点所有路径的非规范化概率及规范化因子。

在这里插入图片描述

解:

从start到stop一共有8条路径:
( 1 , 1 , 1 ) , ( 1 , 1 , 2 ) , ( 1 , 2 , 1 ) , ( 1 , 2 , 2 ) , ( 2 , 1 , 1 ) , ( 2 , 1 , 2 ) ( 2 , 2 , 1 ) , ( 2 , 2 , 2 ) (1,1,1),(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2)(2,2,1),(2,2,2) (1,1,1),(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2)(2,2,1),(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 02 b 21 c 11 , a 02 b 21 c 12 , a 02 b 22 c 21 , a 02 b 22 c 12 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_{12} a01b11c11,a01b11c12,a01b12c21,a01b12c22a02b21c11,a02b21c12,a02b22c21,a02b22c12
根据规范化因子公式求解:
Z w ( x ) = ( M 1 ( x ) M 2 ( x ) . . . M n + 1 ( x ) ) s t a r t , a t o p = M 1 ( x ) M 2 ( x ) M 3 ( x ) M 4 ( x ) = [ a 01 b 11 + a 02 b 21 a 01 b 12 + a 02 b 22 0 0 ] M 3 ( x ) M 4 ( x ) = [ a 01 b 11 c 11 + a 02 b 21 c 11 + a 01 b 12 c 21 + a 02 b 22 c 21 a 01 b 11 c 12 + a 02 b 21 c 12 + a 01 b 12 c 22 + a 02 b 22 c 22 0 0 ] [ 1 0 1 0 ] = [ a 01 b 11 c 11 + a 02 b 21 c 11 + a 01 b 12 c 21 + a 02 b 22 c 21 + a 01 b 11 c 12 + a 02 b 21 c 12 + a 01 b 12 c 22 + a 02 b 22 c 22 0 0 0 ] \begin{aligned}Z_w(x)&=(M_1(x)M_2(x)...M_{n+1}(x))_{start,atop}\\ &=M_1(x)M_2(x)M_3(x)M_4(x)\\ &=\begin{bmatrix}a_{01}b_{11}+a_{02}b_{21} & a_{01}b_{12}+a_{02}b_{22}\\ 0&0\end{bmatrix}M_3(x)M_4(x)\\ &=\begin{bmatrix}a_{01}b_{11}c_{11}+a_{02}b_{21}c_{11}+a_{01}b_{12}c_{21}+a_{02}b_{22}c_{21}&a_{01}b_{11}c_{12}+a_{02}b_{21}c_{12}+a_{01}b_{12}c_{22}+a_{02}b_{22}c_{22}\\ 0&0\end{bmatrix}\begin{bmatrix}1&0\\1&0\end{bmatrix}\\ &=\begin{bmatrix}a_{01}b_{11}c_{11}+a_{02}b_{21}c_{11}+a_{01}b_{12}c_{21}+a_{02}b_{22}c_{21}+a_{01}b_{11}c_{12}+a_{02}b_{21}c_{12}+a_{01}b_{12}c_{22}+a_{02}b_{22}c_{22}&0\\ 0&0\end{bmatrix} \end{aligned} Zw(x)=(M1(x)M2(x)...Mn+1(x))start,atop=M1(x)M2(x)M3(x)M4(x)=[a01b11+a02b210a01b12+a02b220]M3(x)M4(x)=[a01b11c11+a02b21c11+a01b12c21+a02b22c210a01b11c12+a02b21c12+a01b12c22+a02b22c220][1100]=[a01b11c11+a02b21c11+a01b12c21+a02b22c21+a01b11c12+a02b21c12+a01b12c22+a02b22c22000]
其第一行第一列的元素为
a 01 b 11 c 11 + a 02 b 21 c 11 + a 01 b 12 c 21 + a 02 b 22 c 21 + a 01 b 11 c 12 + a 02 b 21 c 12 + a 01 b 12 c 22 + a 02 b 22 c 22 a_{01}b_{11}c_{11}+a_{02}b_{21}c_{11}+a_{01}b_{12}c_{21}+a_{02}b_{22}c_{21}+a_{01}b_{11}c_{12}+a_{02}b_{21}c_{12}+a_{01}b_{12}c_{22}+a_{02}b_{22}c_{22} a01b11c11+a02b21c11+a01b12c21+a02b22c21+a01b11c12+a02b21c12+a01b12c22+a02b22c22
恰好是从start到stop的所有路径的非规范概率之和,即 Z ( x ) Z(x) Z(x)。从这个例子可以看出,要计算 Z ( x ) Z(x) Z(x)需要考虑到所有可能的路径,当序列长度增加,状态数量增加,计算很困难。

2.5 条件随机场的三个问题

类似HMM模型,条件随机场也有三个问题

  • 概率计算问题
  • 学习问题
  • 预测问题

3 条件随机场的概率计算问题

条件随机场的概率计算问题是给定条件随机场 P ( Y ∣ X ) P(Y|X) P(YX),输入序列 x \boldsymbol{x} x和输出序列 y \boldsymbol{y} y,计算条件概率 P ( Y i = y i ∣ x ) , P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) P(Y_i=y_i|x),P(Y_{i-1}=y_{i-1},Y_i=y_i|x) P(Yi=yix),P(Yi1=yi1,Yi=yix)以及相应的数学期望的问题。为了方便起见,像HMM模型那样,引进前向-后向向量,递归的计算以上概率及期望值,这个算法被称作前向-后向算法。这里的前向-后向算法和HMM模型很像,具体参考一文读懂NLP之隐马尔科夫模型

3.1 前向-后向算法

​ 对每个指标 i = 0 , 1 , 2 , . . . , n + 1 i=0,1,2,...,n+1 i=0,1,2,...,n+1,定义前向向量 α i ( x ) \alpha_i(x) αi(x):
α 0 ( y ∣ x ) = { 1 , y = s t a r t 0 , 否 则 \alpha_0(y|x)=\begin{cases}1,&y=start\\ 0,&否则 \end{cases} α0(yx)={1,0,y=start
​ 递推公式:
α i T ( y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) , i = 1 , 2 , 3 , . . . , n + 1 \alpha_i^T(y_i|x)=\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x),\quad i=1,2,3,...,n+1 αiT(yix)=αi1T(yi1x)Mi(yi1,yix),i=1,2,3,...,n+1
​ 也可以表示为:
α i T ( x ) = α i − 1 T ( x ) M i ( x ) \alpha_i^T(x)=\alpha_{i-1}^T(x)M_i(x) αiT(x)=αi1T(x)Mi(x)
α i ( y i ∣ x ) \alpha_i(y_i|x) αi(yix)表示在位置 i i i的标记是 y i y_i yi并且到位置 i i i前部分标记序列的非规范化概率(只是一个有概率意义的数值,不是真正意义的概率), y i y_i yi可取的值有 m m m个,所以 α i ( y i ∣ x ) \alpha_i(y_i|x) αi(yix)是m维列向量。

​ 同样,对每个指标 i = 0 , 1 , 2 , . . . , n + 1 i=0,1,2,...,n+1 i=0,1,2,...,n+1,定义后向向量 β i ( x ) \beta_i(x) βi(x):
β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 = s t o p 0 , 否 则 β i ( y i ∣ x ) = M i ( y i , y i + 1 ∣ x ) β i − 1 ( y i + 1 ∣ x ) \beta_{n+1}(y_{n+1}|x)=\begin{cases}1,&y_{n+1}=stop\\ 0,&否则\end{cases}\\ \beta_i(y_i|x)=M_i(y_i,y_{i+1}|x)\beta_{i-1}(y_{i+1}|x) βn+1(yn+1x)={1,0,yn+1=stopβi(yix)=Mi(yi,yi+1x)βi1(yi+1x)
​ 又可以表示为:
β i ( x ) = M i + 1 ( x ) β i + 1 ( x ) \beta_i(x)=M_{i+1}(x)\beta_{i+1}(x) βi(x)=Mi+1(x)βi+1(x)
β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)表示在位置 i i i的标记为 y i y_i yi并且从 i + 1 i+1 i+1 n n n的后部分标记序列的非规范化概率。

​ 由前向-后向向量定义可以得到:
Z ( x ) = α n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( x ) Z(x)=\alpha_n^T(x)\cdot \boldsymbol{1}=\boldsymbol{1}^T\cdot \beta_1(x) Z(x)=αnT(x)1=1Tβ1(x)
​ 这里, 1 \boldsymbol{1} 1是元素均为1的m维列向量。

3.2 概率计算

​ 按照前向-后向向量的定义,很容易计算标记序列在位置 i i i是标记 y i y_i yi的条件概率和在位置 i − 1 i-1 i1 i i i是标记 y i − 1 y_{i-1} yi1 y i y_i yi的条件概率:
P ( Y i = y i ∣ x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) \begin{aligned} P(Y_i=y_i|x)&=\frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)}\\ P(Y_{i-1}=y_{i-1},Y_i=y_i|x)&=\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} \end{aligned} P(Yi=yix)P(Yi1=yi1,Yi=yix)=Z(x)αiT(yix)βi(yix)=Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)
其中, Z ( x ) = α n T ( x ) ⋅ 1 Z(x)=\alpha_n^T(x)\cdot \boldsymbol{1} Z(x)=αnT(x)1

3.3 期望值的计算

​ 利用前向-后向向量,可以计算特征函数关于联合分布 P ( X , Y ) P(X,Y) P(X,Y)和条件分布 P ( Y ∣ X ) P(Y|X) P(YX)的数学期望。

​ 特征函数 f k f_k fk关于条件分布 P ( Y ∣ X ) P(Y|X) P(YX)的数学期望是:
E P ( Y ∣ X ) [ f k ] = ∑ y P ( y ∣ x ) f k ( y , x ) = ∑ i = 1 n + 1 ∑ y i − 1 y i f k ( y i − 1 , y i , x , i ) α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) , k = 1 , 2 , . . . , K \begin{aligned} E_{P(Y|X)}[f_k]&=\sum\limits_yP(y|x)f_k(y,x)\\ &=\sum\limits_{i=1}^{n+1}\sum\limits_{y_{i-1}y_i}f_k(y_{i-1},y_i,x,i)\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)},\quad k=1,2,...,K \end{aligned} EP(YX)[fk]=yP(yx)fk(y,x)=i=1n+1yi1yifk(yi1,yi,x,i)Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix),k=1,2,...,K
其中, Z ( x ) = α n T ( x ) ⋅ 1 Z(x)=\alpha_n^T(x)\cdot \boldsymbol{1} Z(x)=αnT(x)1,从公式来理解,对特征函数求期望,就是对图中的每条边求期望,而一条边的出现跟这条边上的两个节点有关,对应特征 f k ( y i − 1 , y i , x , i ) f_k(y_{i-1},y_i,x,i) fk(yi1,yi,x,i) i i i时刻的某条边,出现这条边的概率为 P ( y i − 1 , y 1 ∣ x ) P(y_{i-1},y_1|x) P(yi1,y1x)

​ 假设经验分布为 P ~ ( X ) \tilde P(X) P~(X),特征函数 f k f_k fk关于联合分布 P ( X , Y ) P(X,Y) P(X,Y)的数学期望是:
E P ( X , Y ) [ f k ] = ∑ x , y P ( x , y ) ∑ i = 1 n + 1 f k ( y i − 1 , y i , x , i ) = ∑ x P ~ ( x ) ∑ y P ( y ∣ x ) ∑ i = 1 n + 1 f k ( y i − 1 , y i , x , i ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 y i f k ( y i − 1 , y i , x , i ) α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) , k = 1 , 2 , . . . , K \begin{aligned} E_{P(X,Y)}[f_k]&=\sum\limits_{x,y}P(x,y)\sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i)\\ &=\sum\limits_x\tilde P(x)\sum\limits_yP(y|x)\sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i)\\ &=\sum\limits_x\tilde P(x)\sum\limits_{i=1}^{n+1}\sum\limits_{y_{i-1}y_i}f_k(y_{i-1},y_i,x,i)\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)},\quad k=1,2,...,K \end{aligned} EP(X,Y)[fk]=x,yP(x,y)i=1n+1fk(yi1,yi,x,i)=xP~(x)yP(yx)i=1n+1fk(yi1,yi,x,i)=xP~(x)i=1n+1yi1yifk(yi1,yi,x,i)Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix),k=1,2,...,K
其中, Z ( x ) = α n T ( x ) ⋅ 1 Z(x)=\alpha_n^T(x)\cdot \boldsymbol{1} Z(x)=αnT(x)1

​ 上两个式子是特征函数数学期望的一般计算公式。对于转移特征 t k t_k tk和状态特征 s l s_l sl,可以将 f k f_k fk换成 t k , s l t_k,s_l tk,sl求相应的特征函数期望。

4. 条件随机场的学习算法

​ 条件随机场的学习算法:给定训练数据集,估计条件随机场模型参数的问题,即条件随机场的学习问题。条件随机场模型实际上是定义在时序数据上的对数线性模型,其学习方法包括极大似然估计和正则化的极大似然估计。具体的优化实现算法有改进的迭代尺度法IIS、梯度下降法以及拟牛顿法。

4.1 改进的迭代尺度法

​ 已知训练数据集,由此可知经验概率分布 P ~ ( X , Y ) \tilde P(X,Y) P~(X,Y),可以通过极大化训练数据的对数似然函数来求模型参数。

​ 训练数据的对数似然函数为:
L ( w ) = L P ~ ( P w ) = log ⁡ ∏ x , y P w ( y ∣ x ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) log ⁡ P w ( y ∣ x ) L(w)=L_{\tilde P}(P_w)=\log{\prod \limits_{x,y}P_w(y|x)^{\tilde P(x,y)}}=\sum\limits_{x,y}\tilde P(x,y)\log{P_w(y|x)} L(w)=LP~(Pw)=logx,yPw(yx)P~(x,y)=x,yP~(x,y)logPw(yx)
P w P_w Pw是下列式子:
P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ∑ k = 1 K w k f k ( y , x ) Z ( x ) = ∑ y exp ⁡ ∑ k = 1 K w k f k ( y , x ) \begin{aligned} P(y|x)&=\frac{1}{Z(x)}\exp{\sum\limits_{k=1}^Kw_kf_k(y,x)}\\ Z(x)&=\sum\limits_y\exp{\sum\limits_{k=1}^Kw_kf_k(y,x)} \end{aligned} P(yx)Z(x)=Z(x)1expk=1Kwkfk(y,x)=yexpk=1Kwkfk(y,x)
给出的条件随机场模型时,对数似然函数为:
L ( w ) = ∑ x , y P ~ ( x , y ) log ⁡ P w ( y ∣ x ) = ∑ x , y [ P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) − P ~ ( x , y ) log ⁡ Z w ( x ) ] = ∑ j = 1 N ∑ k = 1 K w k f k ( y j , x j ) − ∑ j = 1 N Z w ( x j ) \begin{aligned} L(w)&=\sum\limits_{x,y}\tilde P(x,y)\log{P_w(y|x)}\\ &=\sum\limits_{x,y}[\tilde P(x,y)\sum\limits_{k=1}^Kw_kf_k(y,x)-\tilde P(x,y)\log{Z_w(x)}]\\ &=\sum\limits_{j=1}^N\sum\limits_{k=1}^Kw_kf_k(y_j,x_j)-\sum\limits_{j=1}^NZ_w(x_j) \end{aligned} L(w)=x,yP~(x,y)logPw(yx)=x,y[P~(x,y)k=1Kwkfk(y,x)P~(x,y)logZw(x)]=j=1Nk=1Kwkfk(yj,xj)j=1NZw(xj)
​ 改进的迭代尺度法通过迭代的方法不断优化对数似然函数改变量的下界,达到极大化对数似然函数的目的。假设模型的当前参数向量为 w = ( w 1 , w 2 , . . . , w K ) T \boldsymbol{w}=(w_1,w_2,...,w_K)^T w(w1,w2,...,wK)T,向量的增量为 δ = ( δ ) 1 , δ 2 , . . . , δ K ) T \boldsymbol{\delta}=(\delta)_1,\delta_2,...,\delta_K)^T δ(δ)1,δ2,...,δK)T,更新参数向量 w + δ = ( w 1 + δ 1 , w 2 + δ 2 , . . , w K + δ K ) \boldsymbol{w}+\boldsymbol{\delta}=(w_1+\delta_1,w_2+\delta_2,..,w_K+\delta_K) wδ(w1+δ1,w2+δ2,..,wK+δK)。在每步迭代过程中,改进的代尺度法通过依次求解下列式子 E P ~ [ t k ] E_{\tilde P}[t_k] EP~[tk] E P ~ [ s l ] E_{\tilde P}[s_l] EP~[sl]得到 δ = ( δ 1 , δ 2 , . . . , δ K ) T \boldsymbol{\delta}=(\delta_1,\delta_2,...,\delta_K)^T δ=(δ1,δ2,...,δK)T

​ 关于转移特征t的更新方程为:
E P ~ [ t k ] = ∑ x , y P ~ ( x , y ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ k T ( x , y ) ) , k = 1 , 2 , . . . , K 1 \begin{aligned} E_{\tilde P}[t_k]&=\sum\limits_{x,y}\tilde P(x,y)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\\ &=\sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp{(\delta_kT(x,y))},\quad k=1,2,...,K_1 \end{aligned} EP~[tk]=x,yP~(x,y)i=1n+1tk(yi1,yi,x,i)=x,yP~(x)P(yx)i=1n+1tk(yi1,yi,x,i)exp(δkT(x,y)),k=1,2,...,K1
​ 关于状态特征s的更新方程为:
E P ~ [ s l ] = ∑ x , y P ~ ( x , y ) ∑ i = 1 n + 1 s l ( y i , x , i ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 s l ( y i , x , i ) exp ⁡ ( δ K 1 + l T ( x , y ) ) , k = 1 , 2 , . . . , K 2 \begin{aligned} E_{\tilde P}[s_l]&=\sum\limits_{x,y}\tilde P(x,y)\sum\limits_{i=1}^{n+1}s_l(y_i,x,i)\\ &=\sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}s_l(y_i,x,i)\exp{(\delta_{K_1+l}T(x,y))},\quad k=1,2,...,K_2 \end{aligned} EP~[sl]=x,yP~(x,y)i=1n+1sl(yi,x,i)=x,yP~(x)P(yx)i=1n+1sl(yi,x,i)exp(δK1+lT(x,y)),k=1,2,...,K2
这里, T ( x , y ) T(x,y) T(x,y)是在数据 ( x , y ) (x,y) (x,y)中出现的所有特征数的总和:
T ( x , y ) = ∑ k f k ( y , x ) = ∑ k = 1 K ∑ i = 1 n + 1 f k ( y i − 1 , y i , x , i ) T(x,y)=\sum\limits_kf_k(y,x)=\sum\limits_{k=1}^K\sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i) T(x,y)=kfk(y,x)=k=1Ki=1n+1fk(yi1,yi,x,i)
算法过程:

  • 输入:特征函数 t 1 , t 2 , . . . , t K 1 , s 1 , s 2 , . . . , s K 2 t_1,t_2,...,t_{K_1},s_1,s_2,...,s_{K_2} t1,t2,...,tK1,s1,s2,...,sK2;经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y);
  • 输出:餐数据及值 w ^ \hat{w} w^;模型 P w ^ P_{\hat{w}} Pw^
  1. 对所有 k ∈ 1 , 2 , . . . , K k\in{1,2,...,K} k1,2,...,K,取初值 w k = 0 w_k=0 wk=0

  2. 对每一 k ∈ 1 , 2 , . . . , K k\in{1,2,...,K} k1,2,...,K

    (a). 当 k = 1 , 2 , . . . , K 1 k=1,2,...,K_{1} k=1,2,...,K1时,令 δ k \delta_k δk是方程
    ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ k T ( x , y ) ) = E P ~ [ t k ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp{(\delta_kT(x,y))}=E_{\tilde P}[t_k] x,yP~(x)P(yx)i=1n+1tk(yi1,yi,x,i)exp(δkT(x,y))=EP~[tk]
    的解

    ​ 当 k = K 1 + l , l = 1 , 2 , . . . , K 2 k=K_1+l,l=1,2,...,K_2 k=K1+l,l=1,2,...,K2时,令 δ k + l \delta_{k+l} δk+l是方程
    ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 s l ( y i , x , i ) exp ⁡ ( δ K 1 + l T ( x , y ) ) = E P ~ [ s l ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}s_l(y_i,x,i)\exp{(\delta_{K_1+l}T(x,y))}=E_{\tilde P}[s_l] x,yP~(x)P(yx)i=1n+1sl(yi,x,i)exp(δK1+lT(x,y))=EP~[sl]
    (b). 更新 w k w_k wk值: w k ← w k + δ k w_k\leftarrow w_k+\delta_k wkwk+δk

  3. 如果不是所有 w k w_k wk都收敛,重复步骤2.

    上式中, T ( x , y ) T(x,y) T(x,y)表示数据 ( x , y ) (x,y) (x,y)中的特征总数,对不同的数据 ( x , y ) (x,y) (x,y)取值可能不同,为了处理这个问题,定义松弛特征 s ( x , y ) = S − ∑ i = 1 n + 1 ∑ k = 1 K f k ( y i − 1 , y i , x , i ) s(x,y)=S-\sum\limits_{i=1}^{n+1}\sum\limits_{k=1}^Kf_k(y_{i-1},y_i,x,i) s(x,y)=Si=1n+1k=1Kfk(yi1,yi,x,i),其中S是一个常数,选择足够大的常数S使得对训练数据集的所有数据 ( x , y ) (x,y) (x,y) s ( x , y ) ≥ 0 s(x,y)\geq 0 s(x,y)0成立,这是特征总数可取S。

    因此,对于转移特征 t k , δ k t_k,\delta_k tk,δk的更新方程是:
    ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ K S ) = E P ~ [ t k ] δ k = 1 S log ⁡ E P ~ [ t k ] E P [ t k ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp{(\delta_{K}S)}=E_{\tilde P}[t_k]\\ \delta_k=\frac{1}{S}\log\frac{E_{\tilde P}[t_k]}{E_P[t_k]} x,yP~(x)P(yx)i=1n+1tk(yi1,yi,x,i)exp(δKS)=EP~[tk]δk=S1logEP[tk]EP~[tk]
    其中,
    E P ( t k ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 y i t k ( y i − 1 , y i , x , i ) α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) E_P(t_k)=\sum\limits_x\tilde P(x)\sum\limits_{i=1}^{n+1}\sum\limits_{y_{i-1}y_i}t_k(y_{i-1},y_i,x,i)\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} EP(tk)=xP~(x)i=1n+1yi1yitk(yi1,yi,x,i)Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)
    同样,对于状态特征 s l , δ k s_l,\delta_k sl,δk的更新方程是:

    ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 s l ( y i − 1 , y i , x , i ) exp ⁡ ( δ K + l S ) = E P ~ [ s l ] δ k + l = 1 S log ⁡ E P ~ [ s l ] E P [ s l ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}s_l(y_{i-1},y_i,x,i)\exp{(\delta_{K+l}S)}=E_{\tilde P}[s_l]\\\delta_{k+l}=\frac{1}{S}\log\frac{E_{\tilde P}[s_l]}{E_P[s_l]} x,yP~(x)P(yx)i=1n+1sl(yi1,yi,x,i)exp(δK+lS)=EP~[sl]δk+l=S1logEP[sl]EP~[sl]
    其中,
    E P ( s l ) = ∑ x P ~ ( x ) ∑ i = 1 n ∑ y i s l ( y i , x , i ) α i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) E_P(s_l)=\sum\limits_x\tilde P(x)\sum\limits_{i=1}^{n}\sum\limits_{y_i}s_l(y_i,x,i)\frac{\alpha_{i}^T(y_{i}|x)\beta_i(y_i|x)}{Z(x)} EP(sl)=xP~(x)i=1nyisl(yi,x,i)Z(x)αiT(yix)βi(yix)
    以上算法称为算法S,在算法S中需要是常数S取足够大,这样一来,每部迭代的增量向量会变大,算法收敛会变慢。

    算法T视图解决这个问题,算法T对每个观测序列 x x x计算其特征总数最大值 T ( x ) T(x) T(x):
    T ( x ) = max ⁡ y T ( x , y ) T(x)=\max\limits_yT(x,y) T(x)=ymaxT(x,y)
    利用前向-后向递推公式,可以很容易地计算 T ( x ) = t T(x)=t T(x)=t

    这时关于转移特征参数的更新方程可以写成:
    E P ~ [ t k ] = ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ K T ( x ) ) = ∑ x P ~ ( x ) ∑ y P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ K T ( x ) ) = ∑ x P ~ ( x ) a k , t exp ⁡ ( δ k ⋅ t ) = ∑ t = 0 max ⁡ a k , t β k t \begin{aligned}E_{\tilde P}[t_k]&=\sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp{(\delta_{K}T(x))}\\ &=\sum\limits_{x}\tilde P(x)\sum\limits_{y}P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp{(\delta_{K}T(x))}\\ &=\sum\limits_{x}\tilde P(x)a_{k,t}\exp(\delta_k\cdot t)\\ &=\sum\limits_{t=0}^{\max}a_{k,t}\beta_k^t \end{aligned} EP~[tk]=x,yP~(x)P(yx)i=1n+1tk(yi1,yi,x,i)exp(δKT(x))=xP~(x)yP(yx)i=1n+1tk(yi1,yi,x,i)exp(δKT(x))=xP~(x)ak,texp(δkt)=t=0maxak,tβkt
    这里, a k , t a_{k,t} ak,t是特征 t k t_k tk的期待值, δ k = log ⁡ β k , β k \delta_k=\log{\beta_k},\beta_k δk=logβk,βk是上述多项式方程唯一的实根,可以用牛顿法求得,从而得到相关的 δ k \delta_k δk

    同样,可以用于关于状态特征的参数更新。

4.2 拟牛顿法

​ 条件随机场模型学习还可以应用牛顿法或拟牛顿法。对于条件随机场模型
P w ( y ∣ x ) = exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) P_w(y|x)=\frac{\exp{(\sum\limits_{i=1}^nw_if_i(x,y))}}{\sum\limits_y\exp{(\sum\limits_{i=1}^nw_if_i(x,y))}} Pw(yx)=yexp(i=1nwifi(x,y))exp(i=1nwifi(x,y))
学习的优化目标函数是:
min ⁡ w ∈ R n f ( w ) = ∑ x P ~ ( x ) log ⁡ ∑ y e x p ( ∑ i = 1 n w i f i ( x , y ) ) \min\limits_{w\in R^n}f(w)=\sum\limits_x\tilde P(x)\log \sum\limits_yexp(\sum\limits_{i=1}^nw_if_i(x,y)) wRnminf(w)=xP~(x)logyexp(i=1nwifi(x,y))
其梯度函数是:
g ( w ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f ( x , y ) − E P ~ ( f ) g(w)=\sum\limits_{x,y}\tilde P(x)P_w(y|x)f(x,y)-E_{\tilde P}(f) g(w)=x,yP~(x)Pw(yx)f(x,y)EP~(f)
拟牛顿法的BFGS算法如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cNyvgEa2-1584953186799)(F:\Markdown\image\image-20200323164004538.png)]

​ 条件随机场的预测问题是给定条件随机场 P ( Y ∣ X ) P(Y|X) P(YX)和输入序列(观测序列) x x x,求条件概率最大的输出序列(标记序列) y ∗ y^* y,即对观测序列进行标注。条件随机场的预测算法是注明的维特比算法,参考一文读懂NLP之隐马尔科夫模型
y ∗ = arg ⁡ max ⁡ y P ( y ∣ x ) = arg ⁡ max ⁡ y exp ⁡ ( w ⋅ F ( y , x ) ) Z w ( x ) = arg ⁡ max ⁡ y exp ⁡ ( w ⋅ F ( y , x ) ) = arg ⁡ max ⁡ y ( w ⋅ F ( y , x ) ) \begin{aligned} y^*&=\arg\max_yP(y|x)\\ &=\arg\max_y\frac{\exp(w\cdot F(y,x))}{Z_w(x)}\\ &=\arg\max_y\exp(w\cdot F(y,x))\\ &=\arg\max_y(w\cdot F(y,x)) \end{aligned} y=argymaxP(yx)=argymaxZw(x)exp(wF(y,x))=argymaxexp(wF(y,x))=argymax(wF(y,x))
​ 于是,条件随机场的预测问题称为求非规范化概率最大的最优路径问题: max ⁡ y ( w ⋅ F ( y , x ) ) \max\limits_y(w\cdot F(y,x)) ymax(wF(y,x)),这里,路径表示标记序列。其中,
w = ( w 1 , w 2 , . . . , w K ) T F ( y , x ) = ( f 1 ( y , x ) , f 2 ( y , x ) , . . . , f K ( y , x ) ) T f k ( y , x ) = ∑ i = 1 n f k ( y i − 1 , y i , x , i ) , k = 1 , 2 , . . . , K \begin{aligned} \boldsymbol{w}&=(w_1,w_2,...,w_K)^T\\ F(y,x)&=(f_1(y,x),f_2(y,x),...,f_K(y,x))^T\\ f_k(y,x)&=\sum\limits_{i=1}^nf_k(y_{i-1},y_i,x,i),\quad k=1,2,...,K \end{aligned} wF(y,x)fk(y,x)=(w1,w2,...,wK)T=(f1(y,x),f2(y,x),...,fK(y,x))T=i=1nfk(yi1,yi,x,i),k=1,2,...,K
注意,这时只需计算飞归发话概率,而不必计算概率,可以大大提高效率。为了求解最优路径,可以将 max ⁡ y ( w ⋅ F ( y , x ) ) \max\limits_y(w\cdot F(y,x)) ymax(wF(y,x))写成以下形式:
max ⁡ y ( w ⋅ F i ( y i − 1 , y i , x ) ) \max\limits_y(w\cdot F_i(y_{i-1},y_i,x)) ymax(wFi(yi1,yi,x))
其中, F i ( y i − 1 , y i , x ) = ( f 1 ( y i − 1 , y i , x , i ) , f 2 ( y i − 1 , y i , x , i ) , . . . , f K ( y i − 1 , y i , x , i ) ) T F_i(y_{i-1},y_i,x)=(f_1(y_{i-1},y_i,x,i),f_2(y_{i-1},y_i,x,i),...,f_K(y_{i-1},y_i,x,i))^T Fi(yi1,yi,x)=(f1(yi1,yi,x,i),f2(yi1,yi,x,i),...,fK(yi1,yi,x,i))T是局部特征向量。

5.1 维特比算法

首先求出位置1的各个标记 j = 1 , 2 , . . . , m j=1,2,...,m j=1,2,...,m的非规范化概率:
δ 1 ( j ) = w ⋅ F 1 ( y 0 = s t a r t , y 1 = j , x ) , j = 1 , 2 , . . . m \delta_1(j)=w\cdot F_1(y_0=start,y_1=j,x),\quad j=1,2,...m δ1(j)=wF1(y0=start,y1=j,x),j=1,2,...m
一般的,由递推公式,求出到位置 i i i的各个标记 l = 1 , 2 , . . . , m l=1,2,...,m l=1,2,...,m的非规范化概率的最大值,同时记录非规范化概率最大值的路径
δ i ( l ) = max ⁡ 1 ≤ j ≤ m { δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m Ψ i ( l ) = arg ⁡ max ⁡ 1 ≤ j ≤ m { δ i − 1 ( j ) + w ⋅ F i ( y i 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m \delta_i(l)=\max\limits_{1\leq j\leq m}\{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)\},\quad l=1,2,...,m\\ \Psi_i(l)=\arg\max\limits_{1\leq j\leq m}\{\delta_{i-1}(j)+w\cdot F_i(y_{i_1}=j,y_i=l,x)\},\quad l=1,2,...,m δi(l)=1jmmax{δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,...,mΨi(l)=arg1jmmax{δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,...,m
知道 i = n i=n i=n时终止,这时求得非规范化概率的最大值为 max ⁡ y ( w ⋅ F ( y , x ) ) = max ⁡ 1 ≤ j ≤ m δ n ( j ) \max\limits_y(w\cdot F(y,x))=\max\limits_{1\leq j\leq m}\delta_n(j) ymax(wF(y,x))=1jmmaxδn(j)及最优路径的终点 y ∗ = arg ⁡ max ⁡ 1 ≤ j ≤ m δ n ( j ) y^*=\arg\max\limits_{1\leq j\leq m}\delta_n(j) y=arg1jmmaxδn(j),再由此最优路径终点依次往前回溯 y i ∗ = Ψ i + 1 ( y i + 1 ∗ ) , i = n − 1 , n − 2 , . . . , 1 y_i^*=\Psi_{i+1}(y_{i+1}^*),i=n-1,n-2,...,1 yi=Ψi+1(yi+1),i=n1,n2,...,1求得最优路径 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y n ∗ ) T y^*=(y_1^*,y_2^*,...,y_n^*)^T y=(y1,y2,...,yn)T。以上就是维特比算法的思路流程。

在这里插入图片描述

5.2 维特比算法举例

​ 设有一标注问题:输入观测序列为 X = ( X 1 , X 2 , X 3 ) \boldsymbol{X}=(X_1,X_2,X_3) X=(X1,X2,X3),输出标记序列为 Y = ( Y 1 , Y 2 , Y 3 ) \boldsymbol{Y}=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3) Y 1 , Y 2 , Y 3 Y_1,Y_2,Y_3 Y1,Y2,Y3取值空间为 { 1 , 2 } \{1,2\} {1,2}。假设特征函数 t k , s l t_k,s_l tk,sl和对应的权值 λ k \lambda_k λk μ l \mu_l μl如下:
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),\quad i=2,3,\quad \lambda_1=1 t1=t1(yi1=1,yi=2,x,i),i=2,3,λ1=1
这表示当当前位置 y y y取值为2,上一位置为1,则特征函数 t t t取值为1,取值为0的条件省略,即:
t 1 ( y i − 1 = 1 , y i = 2 , x , i ) = { 1 , y i − 1 = 1 , y i = 2 , x , i , ( i = 2 , 3 ) 0 , 其 他 t_1(y_{i-1}=1,y_i=2,x,i)=\begin{cases}1,& y_{i-1}=1,y_i=2,x,i,(i=2,3)\\ 0,& 其他\end{cases} t1(yi1=1,yi=2,x,i)={1,0,yi1=1,yi=2,x,i,(i=2,3)
在这里插入图片描述

一共有5个特征函数 t t t,4个特征函数 s s s

用i特比算法求给定输入序列 x x x对应的最有输出序列 y ∗ = ( y 1 ∗ , y 2 ∗ , y 3 ∗ ) y^*=(y_1^*,y_2^*,y_3^*) y=(y1,y2,y3)

求解最优路径,即求解 max ⁡ ∑ i = 1 3 w ⋅ F i ( y i − 1 , y i , x ) \max\sum\limits_{i=1}^3w\cdot F_i(y_{i-1},y_i,x) maxi=13wFi(yi1,yi,x)

  1. 初始化

δ 1 ( j ) = w ⋅ F 1 ( y 0 = s t a r t , y 1 = j , x ) , j = 1 , 2 \delta_1(j)=w\cdot F_1(y_0=start,y_1=j,x),\quad j=1,2 δ1(j)=wF1(y0=start,y1=j,x),j=1,2

64422.png" style=“zoom:75%;” />

5.2 维特比算法举例

​ 设有一标注问题:输入观测序列为 X = ( X 1 , X 2 , X 3 ) \boldsymbol{X}=(X_1,X_2,X_3) X=(X1,X2,X3),输出标记序列为 Y = ( Y 1 , Y 2 , Y 3 ) \boldsymbol{Y}=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3) Y 1 , Y 2 , Y 3 Y_1,Y_2,Y_3 Y1,Y2,Y3取值空间为 { 1 , 2 } \{1,2\} {1,2}。假设特征函数 t k , s l t_k,s_l tk,sl和对应的权值 λ k \lambda_k λk μ l \mu_l μl如下:
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),\quad i=2,3,\quad \lambda_1=1 t1=t1(yi1=1,yi=2,x,i),i=2,3,λ1=1
这表示当当前位置 y y y取值为2,上一位置为1,则特征函数 t t t取值为1,取值为0的条件省略,即:
t 1 ( y i − 1 = 1 , y i = 2 , x , i ) = { 1 , y i − 1 = 1 , y i = 2 , x , i , ( i = 2 , 3 ) 0 , 其 他 t_1(y_{i-1}=1,y_i=2,x,i)=\begin{cases}1,& y_{i-1}=1,y_i=2,x,i,(i=2,3)\\ 0,& 其他\end{cases} t1(yi1=1,yi=2,x,i)={1,0,yi1=1,yi=2,x,i,(i=2,3)
在这里插入图片描述

一共有5个特征函数 t t t,4个特征函数 s s s

用i特比算法求给定输入序列 x x x对应的最有输出序列 y ∗ = ( y 1 ∗ , y 2 ∗ , y 3 ∗ ) y^*=(y_1^*,y_2^*,y_3^*) y=(y1,y2,y3)

求解最优路径,即求解 max ⁡ ∑ i = 1 3 w ⋅ F i ( y i − 1 , y i , x ) \max\sum\limits_{i=1}^3w\cdot F_i(y_{i-1},y_i,x) maxi=13wFi(yi1,yi,x)

  1. 初始化

δ 1 ( j ) = w ⋅ F 1 ( y 0 = s t a r t , y 1 = j , x ) , j = 1 , 2 \delta_1(j)=w\cdot F_1(y_0=start,y_1=j,x),\quad j=1,2 δ1(j)=wF1(y0=start,y1=j,x),j=1,2
在这里插入图片描述
代码实现见我的Github

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值