概率无向图模型又称为马尔可夫随机场(Markov random field),是一个可以由无向图表示的联合概率分布。
图是由结点及连接结点的边组成的集合。结点和边分别记作 v 和 e ,结点和边的集合分别记作 V 和 E ,图记作 G=(V,E) ,无向图是指边没有方向的图。概率图模型(PGM) 是由图表示的概率分布。设有联合概率分布 P(Y) , Y ∈ Y Y \in \mathcal{Y} Y∈Y 是一组随机变量。由无向图 G 表示概率分布,即在图 G 中,结点 v∈V 表示一个随机变量 Y v Y_v Yv, Y = Y v ∣ v ∈ V Y = Y_v|_{v \in V} Y=Yv∣v∈V;边 e∈E 表示随机变量之间的概率依赖关系。
给定一个联合概率分布 P(Y) 和表示它的无向图 G。首先定义无向图表示的随机变量之间存在的成对马尔可夫性局、部马尔可夫性和全局马尔可夫性。分别介绍一下三个概念:
成对马尔可夫性:设 u 和 v 是无向图G中任意两个没有边连接的结点,结点u和v分别对应随机变量 Yu 和 Yv。其他所有结点为 O(集合),对应的随机变量组是 YO。成对马尔可夫性是指给定随机变量组 YO 的条件下随机变量 Yu 和 Yv 是条件独立的,其实意思就是说没有直连边的任意两个节点是独立的,即
P ( Y v , Y O ∣ Y W ) = P ( Y v ∣ Y W ) P ( Y O ∣ Y W ) P(Y_v,Y_O |Y_W) = P(Y_v|Y_W)P(Y_O|Y_W) P(Yv,YO∣YW)=P(Yv∣YW)P(YO∣YW)
局部马尔可夫性:设 v \in V 是无向图 G 中任意一个结点,W 是与 v 有边连接的所有结点,O 是 v,W 以外的其他所有结点。v 表示的随机变量是 Yv ,W 表示的随机变量组是 Y_w,O 表示的随机变量组是 Y_O。局部马尔可夫性是指在给定随机变量组 Y_W 的条件下随机变量 v 与随机变量组 Y_O 是独立的,即
P ( Y v , Y O ∣ Y W ) = P ( Y v ∣ Y W ) P ( Y O ∣ Y W ) P(Y_v,Y_O |Y_W) = P(Y_v|Y_W)P(Y_O|Y_W) P(Yv,YO∣YW)=P(Yv∣YW)P(YO∣YW)
在 P ( Y O ∣ Y W ) > 0 P(Y_O|Y_W) >0 P(YO∣YW)>0 时,等价地
p ( Y v ∣ Y W ) = P ( Y v ∣ Y W , Y O ) p(Y_v |Y_W) = P(Y_v|Y_W,Y_O) p(Yv∣YW)=P(Yv∣YW,YO)
下图表示了局部马尔可夫性
全局马尔可夫性:设结点集合 A,B 是在无向图 G 中被结点集合 C 分开的任意结点集合,如图所示。结点集合 A,B 和 C 所对应的随机变量组分别是 YA,YB 和 YC。全局马尔可夫性是指给定随机变量组条件下随机变量组 YA 和 YB 是条件独立的,即
P ( Y A , Y B ∣ Y C ) = P ( Y A ∣ Y C ) P ( Y B ∣ Y C ) P(Y_A,Y_B|Y_C) = P(Y_A|Y_C)P(Y_B|Y_C) P(YA,YB∣YC)=P(YA∣YC)P(YB∣YC)
设有联合概率分布 P(Y) ,由无向图 G=(V,E) 表示,在图 G 中,结点表示随机变量,边表示随机变量之间的依赖关系。如果联合概率分布 P(Y) 满足成对、局部或全局马尔可夫性,就称此联合概率分布为概率无向图模型或马尔可夫随机场。
以上是概率无向图模型的定义,实际上,我们更关心的是如何求其联合概率分布。对给定的概率无向图模型,我们希望将整体的联合概率写成若干子联合概率的乘积的形式,也就是将联合概率进行因子分解,这样便于模型的学习与计算。事实上,概率无向图模型的最大特点就是易于因子分解。下面介绍这一结果。
首先给出无向图中的团与最大团的定义,无向图 G 中任何两个结点均有边连接的结点子集称为团(clique)。若 C 是无向图 G 的一个团,并且不能再加进任何一个 G 的结点使其成为一个更大的团,则称此 C 为最大团(maximal clique)。
下图 (a) 表示由4个结点组成的无向图。图中由2个结点组成的团有5个:{ Y 1 , Y 2 Y_1,Y_2 Y1,Y2}, { Y 2 , Y 3 Y_2,Y_3 Y2,Y3}, { Y 3 , Y 4 Y_3,Y_4 Y3,Y4},{ Y 4 , Y 2 Y_4,Y_2 Y4,Y2},{ Y 1 , Y 3 Y_1,Y_3 Y1,Y3}.有2个最大团:{ Y 1 , Y 2 , Y 3 Y_1,Y_2,Y_3 Y1,Y2,Y3},{ Y 2 , Y 3 , Y 4 Y_2,Y_3,Y_4 Y2,Y3,Y4},而 { Y 1 , Y 2 , Y 3 , Y 4 Y_1,Y_2,Y_3,Y_4 Y1,Y2,Y3,Y4} 不是一个团,因为 Y1 和 Y4 没有边连接。
将概率无向图模型的联合概率分布表示为其最大团上的随机变量的函数的乘积形式的操作,称为概率无向图模型的因子分解,譬如在解高次方程的时候,我们非常希望方程能够分解为多个低次方程的乘积。那么,对于概率分布函数而言,我们也希望能够这样做,即给定概率无向图模型,设无向图为 G , C 为 G 上的最大团, YC 表示 C 对应的随机变量。那么概率无向图模型的联合概率分布 P(Y) 可分解为图中所有最大团 C 上的函数 Ψ C ( Y C ) \Psi_C(Y_C) ΨC(YC) 的乘积形式,分解后的因子图如 (b) 所示,每个黑色的正方形便代表一个函数,图中将无向图拆分为两个最大团上势函数的乘积,具体的拆分公式为:
P ( Y ) = 1 Z ∏ C Ψ C ( Y C ) P(Y) = \frac{1}{Z} \prod_C \Psi_C(Y_C) P(Y)=Z1C∏ΨC(YC)
其中,Z 是规范化因子(normalization factor),形式如下: Z = ∑ Y ∏ C Ψ C ( Y C ) Z = \sum_Y\prod_C \Psi_C(Y_C) Z=Y∑C∏ΨC(YC)
规范化因子保证 P(Y) 构成一个概率分布。 Ψ C ( Y C ) \Psi_C(Y_C) ΨC(YC)→R 称为势函数 (potential function)。这里要求势函数 Ψ C ( Y C ) \Psi_C(Y_C) ΨC(YC) 是严格正的,通常定义为指数函数 Ψ C ( Y C ) = exp { − E ( Y C ) } \Psi_C(Y_C) = \exp \left \{-E(Y_C) \right \} ΨC(YC)=exp{−E(YC)}
总结一下,便得到 Hammersley-Clifford定理 ,概率无向图模型的联合概率分布可以表示为如下形式:
P ( Y ) = 1 Z ∏ C Ψ C ( Y C ) Z = ∑ Y ∏ C Ψ C ( Y C ) \begin{aligned} P(Y) &= \frac{1}{Z} \prod_C \Psi_C(Y_C) \\ Z &= \sum_Y\prod_C \Psi_C(Y_C) \end{aligned} P(Y)Z=Z1C∏ΨC(YC)=Y∑C∏ΨC(YC)
其中,C 是无向图的最大团, YC 是 C 的结点对应的随机变量, ΨC(YC) 是 C 上定义的严格正函数,乘积是在无向图所有的最大团上进行的。
条件随机场(conditional random field)是给定随机变量 X 条件下,随机变量 Y 的马尔可夫随机场。本文主要介绍定义在线性链上的特殊的条件随机场,称为线性链条件随机场(linear-chain CRF)。线性链条件随机场可以用于机器学习里的标注问题。这时,在条件概率模型 P(Y|X) 中,Y 是输出变量,表示标记序列,也把标记序列称为状态序列(同 HMM 中的状态序列);X 是输入变量,表示观测序。学习时,利用训练数据集通过极大似然估计或正则化的极大似然估计得到条件概率模型 P ^ ( Y ∣ X ) \hat{P}(Y|X) P^(Y∣X) ;然后使用该模型预测即可。
设 X 与 Y 是随机变量,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 \ne v) =P(Y_v|X,Y_w,w \sim v) P(Yv∣X,Yw,w̸=v)=P(Yv∣X,Yw,w∼v)
对任意结点 v 成立,则称条件概率分布 P(Y|X) 为条件随机场。式中 w∼v 表示在图 G = (V,E) 中与结点 v 有边连接的所有结点 w, w≠v 表示结点 v 以外的所有结点, Y u , Y v , Y w Y_u,Y_v,Y_w Yu,Yv,Yw 为结点 u,v,w 对应的随机变量,从定义来看,左边到右边点的数量大大减小,w≠v 的点有 |V|−1 个,而 w∼v 就少了,其实就是说当前变量只跟与之相邻的变量有关系,而独立于没有直接连接的变量。
在定义中并没有要求 X 和 Y 具有相同的结构。现实中,一般假设 X 和 Y 有相同的图结构。本书主要考虑无向图为线性链的情况,即对于节点 1 到 n,边的情为: E = { ( i , i + 1 ) } i = 1 n − 1 E = \left \{ (i,i+1) \right \}_{i=1}^{n-1} E={(i,i+1)}i=1n−1 ,在此情况下 X = { X i } i = 1 n , Y = { Y i } i = 1 n X =\left \{ X_i \right \}_{i=1}^{n} ,Y =\left \{ Y_i \right \}_{i=1}^{n} X={Xi}i=1n,Y={Yi}i=1n,最大团是相邻两个结点的集合,下图即为 liner-chain CRF:
线性链条件随机场的定义:设 X = { X i } i = 1 n , Y = { Y i } i = 1 n X =\left \{ X_i \right \}_{i=1}^{n} ,Y =\left \{ Y_i \right \}_{i=1}^{n} X={Xi}i=1n,Y={Yi}i=1n均为线性链表示的随机变量序列,若在给定随机变量序列 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 ) P(Y_i | X,Y_1,…,Y_{i-1},Y_{i+1},…,Y_n) = P(Y_i | X,Y_{i-1},Y_{i+1}) P(Yi∣X,Y1,…,Yi−1,Yi+1,…,Yn)=P(Yi∣X,Yi−1,Yi+1)
则称 P(Y|X) 为线性链条件随机场。注意当 i=1 或 i=n 时只考虑一侧,在标注问题中,X 表示输入观测序列,Y 表示对应的输出标记序列或状态序列。
根据 Hammersley-Clifford 定理,可以给出线性链条件随机场 P(Y|X)的因子分解式,各因子是定义在相邻两个结点上的函数。在随机变量 X 取值为 x 的条件下,随机变量 Y 取值为 y 的条件概率具有如下形式:
P ( y ∣ x ) = 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 ) } P(y|x) = \frac{1}{Z(x)}\exp \left \{ \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) \right \} P(y∣x)=Z(x)1exp{∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i)}
其中 Z(x) 为归一化项: Z ( x ) = ∑ y { ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) } Z(x) = \sum_y \left \{ \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) \right \} Z(x)=y∑⎩⎨⎧i,k∑λktk(yi−1,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) 是规范化因子,求和是在所有可能的输出序列上进行的。以上两个式子是线性链条件随机场模型的基本形式,表示给定输入序列 x ,对输出序列 y 预测的条件概率。其中 t k t_k tk 是定义在边上的特征函数,称为转移特征( t 是transition的缩写),依赖于当前和前一个位置, s l s_l sl是定义在结点上的特征函数,称为状态特征(s 是status的缩写),依赖于当前位置(无论哪种特征函数,都将当前可能的 yi 作为数)。 t k t_k tk 和 s l s_l sl 都依赖于位置,是局部特征函数。通常,特征函数 t k t_k tk 和 s l s_l sl 取值为 1 或 0 ;当满足特征条件时取值为 1 ,否则为 0 。CRF 完全由特征函数和对应的权值 λ k \lambda_k λk, μ l \mu_l μl确定,线性链条件随机场也是对数线性模型(loglinear model)。
CRF 还可以由简化形式表示。注意到条件随机场式中同一特征在各个位置都有定义,可以对同一个特征在各个位置求和,将局部特征函数转化为一个全局特征函数,这样就可以将条件随机场写成权值向量和特征向量的内积形式,即条件随机场的简化形式,为简便起见,首先将转移特征和状态特征及其权值用统一的符号表示。设有 K1 个转移特征,K2 个状态特征,记 f k ( y i − 1 , y i , x , i ) = { t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , . . . , K 1 s t ( y i , x , i ) , k = K 1 + l ; l = 1 , 2 , . . . , K 2 f_k(y_{i-1},y_i,x,i) = \left \{ \begin{aligned} &t_k(y_{i-1},y_i,x,i), \ \ k = 1,2,...,K_1 \\ &s_t(y_i,x,i), \ \ \ \ \ \ \ \ \ \ k = K_1 + l ; l = 1,2,...,K_2 \end{aligned}\right. fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i), k=1,2,...,K1st(yi,x,i), k=K1+l;l=1,2,...,K2
上式其实是对特征函数进行编码,编号的前 K1 个属于转移特征,后 K2 个属于状态特征。记 K=K1+K2 ,编号统一了,后面就可以放到同一个矩阵里了。
然后,对转移与状态特征在各个位置 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_{i=1}^nf_k(y_{i-1},y_i,x,i), \ \ \ k = 1,2,…,K fk(y,x)=i=1∑nfk(yi−1,yi,x,i), k=1,2,…,K
上式的特征函数虽然都写成接受 4 个参数的形式,但对状态特征函数而言, y i − 1 y_{i-1} yi−1是会被忽略掉的,用 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 = \left \{ \begin{aligned} &\lambda_k, \ \ k = 1,2,...,K_1 \\ &\mu_l, \ \ k = K_1 + l ; l = 1,2,...,K_2 \end{aligned}\right. wk={λk, k=1,2,...,K1μl, k=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 \left \{ \sum_{k=1}^K w_k f_k(y,x) \right \}\\ Z(x) &= \sum_y \exp \left \{ \sum_{k=1}^Kw_kf_k(y,x)\right \} \end{aligned} P(y∣x)Z(x)=Z(x)1exp{k=1∑Kwkfk(y,x)}=y∑exp{k=1∑Kwkfk(y,x)}
若 w 表示权值向量,即
w = ( w 1 , w 2 , … , w K ) T w= (w_1,w_2,…,w_K)^T w=(w1,w2,…,wK)T
以 F(y,x) 表示全局特征向量,即: F ( y , x ) = { f 1 ( y , x ) , f 2 ( y , x ) , … , f K ( y , x ) } T F(y,x) = \left \{ f_1(y,x), f_2(y,x),…,f_K(y,x) \right \}^T F(y,x)={f1(y,x),f2(y,x),…,fK(y,x)}T
则条件随机场可以写成向量 w 与 F(y,x) 的内积的形式:
P w ( y ∣ x ) = exp { w ⋅ F ( y , x ) } Z w ( x ) P_w(y|x) = \frac{\exp\left \{w \cdot F(y,x)\right \} }{Z_w(x)} Pw(y∣x)=Zw(x)exp{w⋅F(y,x)}
其中,
Z w ( x ) = ∑ y exp { w ⋅ F ( y , x ) } Z_w(x) = \sum_y \exp \left \{ w \cdot F(y,x) \right \} Zw(x)=y∑exp{w⋅F(y,x)}
条件随机场还可以由矩阵表示。假设 P w ( y ∣ x ) P_w(y|x) Pw(y∣x)是由内积形式给出的线性链条件随机场,表示对给定观测序列 x ,相应的标记序列 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(y|x) Pw(y∣x)可以通过矩阵形式表示。
对观测序列 x 的每一个位置 i = 1 , 2 , … , n + 1 i=1,2,…,n+1 i=1,2,…,n+1,定义一个 m 阶矩阵(m 是标记 yi 取值的个数,因为 x 是给定的,$ i-1 和位置 i 各有 m 种可能,所以是 m 阶矩阵):
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 ) } M i ( y i − 1 , y i ∣ x ) = ∑ k = 1 K w k ⋅ f k ( y i − 1 , y i , x , i ) \begin{aligned} M_i(x) &= \left \{ M_i(y_{i-1},y_i|x)\right \} \\ M_i(y_{i-1},y_i|x)&= \exp \left \{ W_i(y_{i-1} ,y_i|x)\right \}\\ M_i(y_{i-1},y_i|x)&= \sum_{k=1}^Kw_k \cdot f_k(y_{i-1},y_i,x,i) \end{aligned} Mi(x)Mi(yi−1,yi∣x)Mi(yi−1,yi∣x)={Mi(yi−1,yi∣x)}=exp{Wi(yi−1,yi∣x)}=k=1∑Kwk⋅fk(yi−1,yi,x,i)
其实矩阵定义了一个 状态 yi−1 的 m 种状态到 yi 的 m 种状态的转移的概率:
M i ( y i − 1 , y i ∣ x ) = exp { ∑ k λ k f k ( y i − 1 , y i , x , i ) } = exp { ∑ k λ k t k ( y i − 1 , y i , x , i ) + ∑ l μ l s l ( y i , x , i ) } \begin{aligned} M_i(y_{i-1} ,y_i|x) &= \exp\left\{ \sum_k\lambda_kf_k(y_{i-1},y_i,x,i)\right\} \\ &=\exp\left\{ \sum_k\lambda_kt_k(y_{i-1},y_i,x,i) + \sum_l\mu_l s_l(y_i,x,i) \right\} \end{aligned} Mi(yi−1,yi∣x)=exp{k∑λkfk(yi−1,yi,x,i)}=exp{k∑λktk(yi−1,yi,x,i)+l∑μlsl(yi,x,i)}
举例来说,当 m = 3 时,除了 i =1 或者 i = n-1 ,每个矩阵 M i ( x ) ∈ R 3 × 3 M_i(x) \in\mathbb{R}^{3 \times 3} Mi(x)∈R3×3, 如下图所示
矩阵的形式类似于 HMM 中的转移矩阵,代表了状态之间转移的概率,其形式是这样的:
M 1 ( x ) = [ M 1 ( y 0 , y 1 ∣ x ) M 1 ( y 0 , y 3 ∣ x ) M 1 ( y 0 , y 3 ∣ x ) ] M 2 ( x ) = [ M 2 ( y 1 , y 1 ∣ x ) M 2 ( y 1 , y 2 ∣ x ) M 2 ( y 1 , y 3 ∣ x ) M 2 ( y 2 , y 1 ∣ x ) M 2 ( y 2 , y 2 ∣ x ) M 2 ( y 2 , y 3 ∣ x ) M 2 ( y 3 , y 1 ∣ x ) M 2 ( y 3 , y 2 ∣ x ) M 2 ( y 3 , y 3 ∣ x ) ] M i ( x ) h a s t h e s a m e f o r m w i t h M 2 ( X ) , i = 3 , . . . , n M n + 1 ( x ) = [ M n + 1 ( y 1 , y n ∣ x ) M n + 1 ( y 2 , y n ∣ x ) M n + 1 ( y 3 , y n ∣ x ) ] \begin{aligned} M_1(x) &= \begin{bmatrix} M_1(y_0,y_1|x) & M_1(y_0,y_3|x) &M_1(y_0,y_3|x) \end{bmatrix} \\ \\ M_2(x) &=\begin{bmatrix} M_2(y_1,y_1|x) & M_2(y_1,y_2|x) & M_2(y_1,y_3|x)\\ M_2(y_2,y_1|x) & M_2(y_2,y_2|x) & M_2(y_2,y_3|x)\\ M_2(y_3,y_1|x) & M_2(y_3,y_2|x) & M_2(y_3,y_3|x) \end{bmatrix} \\ \\ M_i(x) \ &\mathbf{has \ the \ same \ form \ with} \ M_2(X), \ i = 3,...,n\\ \\ M_{n+1}(x) &=\begin{bmatrix} M_{n+1}(y_1,y_n|x)& \\ M_{n+1}(y_2,y_n|x) & \\ M_{n+1}(y_3,y_n|x)& \end{bmatrix} \\ \end{aligned} M1(x)M2(x)Mi(x) Mn+1(x)=[M1(y0,y1∣x)M1(y0,y3∣x)M1(y0,y3∣x)]=⎣⎡M2(y1,y1∣x)M2(y2,y1∣x)M2(y3,y1∣x)M2(y1,y2∣x)M2(y2,y2∣x)M2(y3,y2∣x)M2(y1,y3∣x)M2(y2,y3∣x)M2(y3,y3∣x)⎦⎤has the same form with M2(X), i=3,...,n=⎣⎡Mn+1(y1,yn∣x)Mn+1(y2,yn∣x)Mn+1(y3,yn∣x)⎦⎤
这样,给定观测序列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(yi−1,yi∣x)表示,于是,条件概率 Pw(y|x) 是:
P w ( y ∣ x ) = 1 Z w ( x ) ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) P_w(y|x) = \frac{1}{Z_w(x)} \prod_{i=1}^{n+1} M_i(y_{i-1},y_i|x) Pw(y∣x)=Zw(x)1i=1∏n+1Mi(yi−1,yi∣x)
其中,Zw(x) 为规范化因子,是 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 Z_w(x) = \left \{M_1(x),M_2(x)…M_{n+1}(x) \right \} _{start}^{stop} Zw(x)={M1(x),M2(x)…Mn+1(x)}startstop
注意, 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 表示开始状态与终止状态,规范化因子 Zw(x) 是以 start 为起点 stop 为终点通过状态的所有路径的非规范化概率 y1,y2,…,yn 之和。
这里的 M 矩阵像极了 HMM 中的转移概率矩阵,因为链式 CRF 中只有相邻两个节点间才有连接边。
条件随机场的概率计算问题是给定条件随机场 P(Y|X) ,输入序列 x 和输出序列 y ,计算条件概率 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(Yi−1=yi−1Yi=yi∣x) , P ( Y i = y i ∣ x ) P(Y_i = y_i|x) P(Yi=yi∣x) 以及相应的数学期望的问题。为了方便起见,像 HMM 那样,引进前向-后向向量,递归地计算以上概率及期望值。这样的算法称为前向-后向算法。
对每个指标 i = 0 , 1 , … , n + 1 i = 0,1,…,n+1 i=0,1,…,n+1 ,定义前向向量 a i ( x ) a_i(x) ai(x) ,对于起始状态 i=0:
a 0 ( y ∣ x ) = { 1 , y = s t a r t 0 , e l s e a_0(y|x) = \left \{ \begin{aligned} &1, \ \ y = start \\ &0, \ \ else \end{aligned}\right. a0(y∣x)={1, y=start0, else
对于之后的状态 i = 1 , 2 , … , n + 1 i = 1,2,…,n+1 i=1,2,…,n+1 ,递推公式为:
a i T ( y i ∣ x ) = a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) a_i^T(y_i|x) = a^T_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x) aiT(yi∣x)=ai−1T(yi−1∣x)Mi(yi−1,yi∣x)
这里 M i ( y i − 1 , y i ∣ x ) M_i(y_{i-1},y_i|x) Mi(yi−1,yi∣x) 对应的是转移矩阵中的一列,转为向量形式可表示为
a i T ( x ) = a i − 1 T ( x ) M i ( x ) a^T_i(x) = a^T_{i-1}(x)M_i(x) aiT(x)=ai−1T(x)Mi(x)
a i ( y i ∣ x ) a_i(y_i|x) ai(yi∣x)表示在位置 i 的标记是 yi 并且到位置 i 的前部分标记序列的非规范化概率,yi 可取的值有 m 个,所以 ai(x) 是 m 维列向量。
同样,对每个指标 i = 0 , 1 , … , n + 1 i = 0,1,…,n+1 i=0,1,…,n+1 ,定义后向向量 β i ( x ) \beta_i(x) βi(x):
β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 = s t o p 0 , e l s e \beta_{n+1}(y_{n+1}|x) = \left \{ \begin{aligned} &1, \ \ y_{n+1} = stop \\ &0, \ \ else \end{aligned}\right. βn+1(yn+1∣x)={1, yn+1=stop0, else
往前递推:
β i ( y i ∣ x ) = M i ( y i , y i + 1 ∣ x ) β i + 1 ( y i + 1 ∣ x ) \beta_i(y_i|x) = M_i(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x) βi(yi∣x)=Mi(yi,yi+1∣x)βi+1(yi+1∣x)
又可以表示为:
β 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(yi∣x) 表示在位置 i 的标记为 y i y_i yi,并且从 i+1 到 n 的后部分标记序列的非规范化概率。
由前向-后向向量定义不难得到:
Z ( x ) = a n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( x ) Z(x) = a_n^T(x) \cdot \mathbf{1} = \mathbf{1}^T \cdot \beta_1(x) Z(x)=anT(x)⋅1=1T⋅β1(x)
这里,1 是元素均为 1 的 m 维列向量。
按照前向-后向向量的定义,很容易计算标记序列在位置 i 是标记 yi 的条件概率和在位置 i-1 与 i 是标记 y i − 1 y_{i-1} yi−1 和 y i y_{i} yi的条件概率:
P ( Y i = y i ∣ x ) = a i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = a 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{a_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{a_{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=yi∣x)P(Yi−1=yi−1,Yi=yi∣x)=Z(x)aiT(yi∣x)βi(yi∣x)=Z(x)ai−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)
其中 Z ( x ) = a n T ( x ) ⋅ 1 Z(x) = a_n^T(x) \cdot \mathbf{1} Z(x)=anT(x)⋅1
利用前向-后向向量,可以计算特征函数关于联合分布 P(X,Y) 和条件分布 P(Y|X) 的数学期望。
特征函数 { f k } k = 1 K \left \{ f_k \right \}_{k=1}^K {fk}k=1K关于条件分布 P(Y|X) 的数学期望是
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 ) a i − 1 T M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) \begin{aligned} E_{p(Y|X)}[f_k] &= \sum_yP(y|x)f_k(y,x) \\ &=\sum_{i=1}^{n+1}\sum_{y_{i-1}\ y_i}f_k(y_{i-1},y_i,x,i) \frac{a_{i-1}^TM_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} \end{aligned} Ep(Y∣X)[fk]=y∑P(y∣x)fk(y,x)=i=1∑n+1yi−1 yi∑fk(yi−1,yi,x,i)Z(x)ai−1TMi(yi−1,yi∣x)βi(yi∣x)
其中 Z ( x ) = a n T ( x ) ⋅ 1 Z(x) = a_n^T(x) \cdot \mathbf{1} Z(x)=anT(x)⋅1
假设经验分布为 P˜(X) ,特征函数 { f k } k = 1 K \left \{ f_k \right \}_{k=1}^K {fk}k=1K 关于联合分布 P(Y|X) 的数学期望是:
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 ) a i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) \begin{aligned} E_{P(X,Y)}[f_k] &= \sum_{x,y}P(x,y)\sum_{i=1}^{n+1}f_k(y_{i-1}.y_i,x,i) \\ &= \sum_x\widetilde{P}(x) \sum_yP(y|x)\sum_{i=1}^{n+1}f_k(y_{i-1,}y_ix,i) \\ &= \sum_x\widetilde{P}(x) \sum_{i=1}^{n+1} \sum_{y_{i-1} \ y_i}f_k(y_{i-1,}y_ix,i)\frac{a_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x) \beta_i(y_i|x)}{Z(x)} \end{aligned} EP(X,Y)[fk]=x,y∑P(x,y)i=1∑n+1fk(yi−1.yi,x,i)=x∑P (x)y∑P(y∣x)i=1∑n+1fk(yi−1,yix,i)=x∑P (x)i=1∑n+1yi−1 yi∑fk(yi−1,yix,i)Z(x)ai−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)
其中 Z ( x ) = a n T ( x ) ⋅ 1 Z(x) = a_n^T(x) \cdot \mathbf{1} Z(x)=anT(x)⋅1
这个式子是特征函数数学期望的一般计算公式。对于转移特征 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,可以将式中的 f k f_k fk换成 t k t_k tk ;对于状态特征,可以将式中的 f k f_k fk 换成 s l s_l sl , 表示为 s l ( y i , x , i ) , k = K 1 + 1 ; l = 1 , 2 , … , K 2 s_l(y_i,x,i),k = K_1+1;l=1,2,…,K_2 sl(yi,x,i),k=K1+1;l=1,2,…,K2 。
有了这些式子,对于给定的观测序列 x 与标记序列 y ,可以通过一次前向扫描计算 a i a_i ai及 Z ( x ) Z(x) Z(x) ,通过一次后向扫描计算 β i \beta_i βi,从而计算所有的概率和特征的期望。
本节讨论给定训练数据集估计条件随机场模型参数的问题,即条件随机场的学习问题。条件随机场模型实际上是定义在时序数据上的对数线形模型,其学习方法包括极大似然估计和正则化的极大似然估计。具体的优化实现算法有改进的迭代尺度法IIS、梯度下降法以及 L-BFGS 算法。(crf++ 采用了 L-BFGS 优化的方式,所以着重看这种训练方法即可)
对于条件随机场模型:
P w ( y ∣ x ) = exp { ∑ k = 1 K w k f k ( x , y ) } ∑ y { exp ∑ i = 1 n w i f i ( x , y ) } P_w(y|x) = \frac{\exp \left \{ \sum_{k=1}^K w_kf_k(x,y)\right \}}{ \sum_y \left \{ \exp \sum_{i=1}^n w_if_i(x,y)\right \}} Pw(y∣x)=∑y{exp∑i=1nwifi(x,y)}exp{∑k=1Kwkfk(x,y)}
已知训练数据集,由此可知经验概率分布 P ~ ( X , Y ) \widetilde{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_{\widetilde{P}}(P_w) = \log \prod_{x,y}P_w(y|x)^{\widetilde{P}(x,y)} = \sum_{x,y}\widetilde{P}(x,y) \log P_w(y|x) L(w)=LP (Pw)=logx,y∏Pw(y∣x)P (x,y)=x,y∑P (x,y)logPw(y∣x)
接下来给出 log 似然函数:
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 ) } = ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( x , y ) − ∑ x P ~ ( x ) log ∑ y exp { ∑ i = 1 n w i f i ( x , y ) } \begin{aligned} L(w) &= \sum_{x,y} \widetilde{P}(x,y) \log P_w(y|x) \\ &= \sum_{x,y} \left \{ \widetilde{P}(x,y)\sum_{k=1}^Kw_kf_k(y,x)-\widetilde{P}(x,y) \log Z_w(x) \right \} \\ &= \sum_{x,y} \widetilde{P}(x,y) \sum_{k=1}^K w_kf_k(x,y) - \sum_x\widetilde{P}(x)\log\sum_y\exp\left \{ \sum_{i=1} ^nw_if_i(x,y)\right \} \end{aligned} L(w)=x,y∑P (x,y)logPw(y∣x)=x,y∑{P (x,y)k=1∑Kwkfk(y,x)−P (x,y)logZw(x)}=x,y∑P (x,y)k=1∑Kwkfk(x,y)−x∑P (x)logy∑exp{i=1∑nwifi(x,y)}
对目标进行 MLE 等价于极小化以下优化目标函数:
min w f ( w ) = ∑ x P ~ ( x ) log ∑ y exp { ∑ i = 1 n w i f i ( x , y ) } − ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) \min_w f(w) = \sum_x\widetilde{P}(x) \log \sum_y \exp \left \{ \sum_{i=1}^n w_if_i(x,y)\right \} -\sum_{x,y}\widetilde{P}(x,y)\sum_{i=1}^nw_i f_i(x,y) wminf(w)=x∑P (x)logy∑exp{i=1∑nwifi(x,y)}−x,y∑P (x,y)i=1∑nwifi(x,y)
其一阶梯度函数在 BFGS 算法的过程中有用到,形式如下:
g ( w ) = { ∂ f ( w ) ∂ w 1 , ∂ f ( w ) ∂ w 2 , … , ∂ f ( w ) ∂ w n } g(w) = \left \{ \frac{\partial f(w)}{\partial w_1},\frac{\partial f(w)}{\partial w_2},…,\frac{\partial f(w)}{\partial w_n} \right \} g(w)={∂w1∂f(w),∂w2∂f(w),…,∂wn∂f(w)}
具体其形式如下:
g ( w ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f ( x , y ) − E P ~ ( f ) = E P ( f ) − E P ~ ( f ) g(w) = \sum_{x,y}\widetilde{P}(x)P_w(y|x)f(x,y)-E_{\widetilde{P}}(f) = E_P(f) - E_{\widetilde{P}}(f) g(w)=x,y∑P (x)Pw(y∣x)f(x,y)−EP (f)=EP(f)−EP (f)
可以看到,这是要使得真实期望与经验期望的差值尽可能小,也正是我们的初衷,还可以为目标函数加上一个权重为 1 / δ 2 1/ \delta^2 1/δ2 的 L2 正则项(贝叶斯先验),因此 g(w) 的形式变为
g ( w ) = E P ( f ) − E P ~ ( f ) + w δ 2 g(w) = E_P(f) - E_{\widetilde{P}}(f) + \frac{w}{\delta^2} g(w)=EP(f)−EP (f)+δ2w
总结一下便得到求解 CRF 的 BFGS 算法:
输入:特征函数 f 1 , f 2 , … , f n f_1,f_2,…,f_n f1,f2,…,fn;经验分布 P ~ ( X , Y ) \widetilde{P}(X,Y) P (X,Y);
输出:最优参数值 w ^ \hat{w} w^;最优模型 P w ^ ( y ∣ x ) P_{\hat{w}}(y|x) Pw^(y∣x)。
(1) 选定初始点 w ( 0 ) w^{(0)} w(0),取 B0 为正定对称矩阵,置 k=0;
(2) 计算 g k = g ( w ( k ) ) g_k = g(w^{(k)}) gk=g(w(k))。若 gk=0 ,则停止计算;否则转(3)
(3) 由拟牛顿条件 B k p k = – g k B_kp_k = –g_k Bkpk=–gk 求出 p k p_k pk
(4) 线性搜索:求 λ k \lambda_k λk使得:
f ( w ( k ) + λ k p k ) = min λ ≥ 0 f ( w ( k ) + λ p k ) f(w^{(k)} + \lambda_kp_k) = \min_{\lambda \ge 0}f(w^{(k)} + \lambda p_k) f(w(k)+λkpk)=λ≥0minf(w(k)+λpk)
(5) 置 w ( k + 1 ) = w ( k ) + λ k p k w^{(k+1)} = w^{(k)} + \lambda_k p_k w(k+1)=w(k)+λkpk
(6) 计算 g k + 1 = g ( w ( k + 1 ) ) g_{k+1} = g(w^{(k+1)}) gk+1=g(w(k+1)),若 g k = 0 g_k = 0 gk=0则停止计算;否则,按下式求出 B k + 1 B_{k+1} Bk+1:
B k + 1 = B k + y k y k T y k T δ k – B k δ k δ k T B k δ k T B k δ k B_{k+1} = B_k + \frac{y_ky_k^T}{y_k^T \delta_k} – \frac{B_k \delta_k \delta_k^TB_k}{\delta_k^TB_k\delta_k} Bk+1=Bk+ykTδkykykT–δkTBkδkBkδkδkTBk
其中:
y k = g k + 1 − g k , δ k = w ( k + 1 ) − w ( k ) y_k = g_{k+1}-g_k , \ \ \delta_k = w^{(k+1)} - w^{(k)} yk=gk+1−gk, δk=w(k+1)−w(k)
(7) 置 k = k+1,转(3)
CRF 的预测问题是给定模型参数和输入序列(观测序列)x, 求条件概率最大的输出序列(标记序列)y∗,即对观测序列进行标注。条件随机场的预测算法同 HMM 还是维特比算法,根据 CRF模型可得:
y ∗ = arg max y P w ( 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_w(y|x) \\ &= \arg \max_y\frac{ \exp \left \{w \cdot F(y,x) \right\}}{Z_w(x)} \\ &= \arg \max_y \exp \left \{w \cdot F(y,x) \right\} \\ &= \arg \max_y \ w \cdot F(y,x) \end{aligned} y∗=argymaxPw(y∣x)=argymaxZw(x)exp{w⋅F(y,x)}=argymaxexp{w⋅F(y,x)}=argymax w⋅F(y,x)
于是,条件随机场的预测问题成为求非规范化概率最大的最优路径问题
arg max y w ⋅ F ( y , x ) \arg \max_y \ w \cdot F(y,x) argymax w⋅F(y,x)
其中
F i ( y i − 1 , y i , x ) = { f 1 ( y i − 1 , y i , x ) , f 2 ( y i − 1 , y i , x ) , … , F K ( y i − 1 , y i , x ) } T F_i(y_{i-1},y_i,x) = \left \{f_1(y_{i-1},y_i,x),f_2(y_{i-1},y_i,x),…,F_K(y_{i-1},y_i,x) \right \}^T Fi(yi−1,yi,x)={f1(yi−1,yi,x),f2(yi−1,yi,x),…,FK(yi−1,yi,x)}T
为局部特征向量。
下面叙述维特比算法。首先求出位置 1 的各个标记 j=1,2,…,m 的非规范化概率:
δ 1 ( j ) = w ⋅ F 1 ( y 0 = s t a r t , y 1 = j , x ) \delta_1(j) = w \cdot F_1(y_0 = start,y_1 = j,x) δ1(j)=w⋅F1(y0=start,y1=j,x)
一般地,由递推公式,求出到位置 i 的各个标记 l=1,2,…m 的非规范化概率的最大值,同时记录非规范化概率最大值的路径:
δ i ( l ) = max 1 ≤ j ≤ m { δ i ( l − 1 ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m Ψ i ( l ) = arg max 1 ≤ j ≤ m { δ i − 1 ( l ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m \begin{aligned} \delta_i(l) &= \max_{1 \le j \le m} \left \{\delta_i(l-1) + w \cdot F_i(y_{i-1} = j,y_i = l,x) \right\}, &\ l= 1,2,...,m\\ \Psi_i(l) &=\arg\max_{1 \le j \le m} \left \{\delta_{i-1}(l) + w \cdot F_i(y_{i-1} = j,y_i = l,x) \right\}, & \ l= 1,2,...,m \end{aligned} δi(l)Ψi(l)=1≤j≤mmax{δi(l−1)+w⋅Fi(yi−1=j,yi=l,x)},=arg1≤j≤mmax{δi−1(l)+w⋅Fi(yi−1=j,yi=l,x)}, l=1,2,...,m l=1,2,...,m
直到i = n 时终止。这时求得非规范化概率的最大值为
max y ( w ⋅ F ( y , x ) ) = max 1 ≤ j ≤ m δ n ( j ) \max_y(w \cdot F(y,x)) = \max_{1 \le j \le m} \delta_n(j) ymax(w⋅F(y,x))=1≤j≤mmaxδn(j)
及最优路径的终点
y n ∗ = arg max 1 ≤ j ≤ m δ n ( j ) y_n^* = \arg \max_{1 \le j \le m} \delta _n(j) yn∗=arg1≤j≤mmaxδ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=n−1,n−2,…,1
以上便是一条最优路径了,求得该最优路径:
y ∗ = ( y 1 ∗ , y 2 ∗ , … , y n ∗ ) T y^* = (y_1^*,y_2^*,…,y_n^*)^T y∗=(y1∗,y2∗,…,yn∗)T
这便为条件随机场预测的维特比算法。