需要的基础:
本文仔细介绍条件场的提出及基础;下一文会介绍CRF如何应用在NER领域,以及CRF,LR和HMM之间的关系和比较。可以点击下面链接跳转
通过图表示概率分布。无向图 G = ( V , E ) G=(V,E) G=(V,E),节点是随机变量,边表示随机变量之间的概率依赖关系。
P ( Y u , Y v ∣ Y o ) = P ( Y u ∣ Y O ) P ( Y v ∣ Y O ) (1) P(Y_u,Y_v|Y_o)=P(Y_u|Y_O)P(Y_v|Y_O) \tag{1} P(Yu,Yv∣Yo)=P(Yu∣YO)P(Yv∣YO)(1)
P ( Y v , Y O ∣ Y w ) = P ( Y v ∣ Y w ) P ( Y O ∣ Y w ) (2) P(Y_v,Y_O|Y_w)=P(Y_v|Y_w)P(Y_O|Y_w) \tag{2} P(Yv,YO∣Yw)=P(Yv∣Yw)P(YO∣Yw)(2)
P ( Y A , Y B ∣ Y C ) = P ( Y A ∣ Y C ) P ( Y B ∣ Y C ) (3) P(Y_A,Y_B|Y_C)=P(Y_A|Y_C)P(Y_B|Y_C) \tag{3} P(YA,YB∣YC)=P(YA∣YC)P(YB∣YC)(3)
设有联合概率分布P(Y),由无向图G=(V,E)表示,在图G中,结点表示随机变量,边表示随机变量之间的依赖关系。如果联合概率分布P(Y)满足成对、局部或全局马尔可夫性,就称此联合概率分布为概率无向图模型(probability undirected graphical model),
以上是概率无向图模型的定义,实际上,我们更关心的是如何求其联合概率分布。对给定的概率无向图模型,我们希望将整体的联合概率写成若干子联合概率的乘积的形式,也就是将联合概率进行因子分解,这样便于模型的学习与计算。事实上,概率无向图模型的最大特点就是易于因子分解。下面介绍这一结果。
任何两个结点均有边连接的结点子集称为团(clique)。若C是无向图G的一个团,并且不能再加进任何一个G的结点使其成为一个更大的团,则称此C为最大团(maximal clique)。
2个结点组成的团有5个:{Y1,Y2},{Y2,Y3},{Y3,Y4},{Y4,Y2}、{Y1,Y3}。
2个最大团:{Y1,Y2,Y3}、{Y2,Y3,Y4}。
{Y1,Y2,Y3,Y4}不是一个团,因为Y1和Y4没有边连接。
因子分解:将概率无向图模型的联合概率分布表示为其最大团上的随机变量的函数的乘积形式的操作。
给定概率无向图模型,设其无向图为G,C为G上的最大团, Y C Y_C YC表示C对应的随机变量。那么概率无向图模型的联合概率分布P(Y)可写作图中所有最大团C上的函数 Ψ C ( Y C ) Ψ_C(Y_C) ΨC(YC)的乘积形式,Z是规范化因子。
P ( Y ) = 1 Z ∏ C Ψ C ( Y C ) (4) P(Y)=\frac{1}{Z}\prod_{C}\Psi_C(Y_C) \tag{4} P(Y)=Z1C∏ΨC(YC)(4)
Z = ∑ Y ∏ C Ψ C ( Y C ) (5) Z=\sum_{Y}\prod_{C}\Psi_C(Y_C) \tag{5} Z=Y∑C∏ΨC(YC)(5)
规范化因子Z保证P(Y)构成一个概率分布。函数 Ψ C ( Y C ) Ψ_C(Y_C) ΨC(YC)称为势函数(potential function)。这里要求势函数 Ψ C ( Y C ) Ψ_C(Y_C) ΨC(YC)是严格正的,通常定义为指数函数:
Ψ C ( Y C ) = e x p ( − E ( Y C ) ) (6) \Psi_C(Y_C)=exp(-E(Y_C)) \tag{6} ΨC(YC)=exp(−E(YC))(6)
问题:
假设你有许多小明一天内不同时段的照片,从小明提裤子起床到脱裤子睡觉各个时间段都有。现在的任务是对这些照片进行分类。比如有的照片是吃饭,那就给它打上吃饭的标签;有的照片是跑步时拍的,那就打上跑步的标签;有的照片是开会时拍的,那就打上开会的标签。问题来了,你准备怎么干?
一个简单直观的办法:
不管这些照片之间的时间顺序,想办法训练出一个多元分类器。就是用一些打好标签的照片作为训练数据,训练出一个模型,直接根据照片的特征来分类。例如,如果照片是早上6:00拍的,且画面是黑暗的,那就给它打上睡觉的标签;如果照片上有车,那就给它打上开车的标签。
可行吗?
乍一看可行,实际上没有考虑照片之间的时序关系。假如有一张小明张嘴的照片,怎么分类?是在说话呢还是在吃饭呢还是在唱歌呢?显然难以直接判断,需要参考闭嘴之前的照片。如果之前的照片显示小明在吃饭,那这个照片很可能是小明在吃饭张嘴,可以给它打上吃饭的标签;如果之前的照片显示小明在唱歌,那这个张嘴的照片很可能是小明正在唱歌,可以给它打上唱歌的标签。
所以为了使得分类器有更好表现,我们就需要考虑它相邻照片标签的信息。这就是CRF的作用。
根据李航的《统计学习方法》所描述:个人理解:CRF就是指出了,在图概率模型中,计算某个节点的条件概率的时候,只需要考虑与结点相关联的节点条件下的条件概率。
线性条件随机场:设X=(X1,X2,…,Xn),Y=(Y1,Y2,…,Yn)均为线性链表示的随机变量序列,若在给定随机变量序列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 ) (7) P(Y_i|X,Y_1,...,Y_{i-1},Y_{i+1},...,Y_n)=P(Y_i|X,Y_{i-1},Y_{i+1}) \tag{7} P(Yi∣X,Y1,...,Yi−1,Yi+1,...,Yn)=P(Yi∣X,Yi−1,Yi+1)(7)
则称P(Y|X)为线性链条件随机场。在标注问题中,X表示输入观测序列,Y表示对应的输出标记序列或状态序列。
两种线性链条件随机场:
根据概率无向图模型的因子分解定理,对式1进行参数化,得到条件随机场的参数化形式
P ( y ∣ x ) = 1 Z e x p ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , j u l s l ( y i , x , i ) ) P(y|x)=\frac{1}{Z}exp(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,j}u_ls_l(y_i,x,i)) P(y∣x)=Z1exp(i,k∑λktk(yi−1,yi,x,i)+i,j∑ulsl(yi,x,i))
Z ( x ) = ∑ y e x p { ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , j u l s l ( y i , x , i ) } Z(x)=\sum_{y}exp\{\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,j}u_ls_l(y_i,x,i)\} Z(x)=y∑exp{i,k∑λktk(yi−1,yi,x,i)+i,j∑ulsl(yi,x,i)}
其中: t k , s l t_k,s_l tk,sl是特征函数。 λ k , u l \lambda_k,u_l λk,ul是对应的权值。 Z ( x ) Z(x) Z(x)是规范化因子。
同样CRF还有简化形式和矩阵形式,可以见李航《统计学习方法》Chap11P221。
看不懂?根本看不懂,没事,来进一步的简化以上参数形式。
将转移特征和状态特征及其权值用统一的符号表示。设有K1个转移特征,K2个状态特征,K=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 l ( y i , x , i ) , k = K 1 + l ; l = 1 , 2 , . . . , K 2 (9) f_k(y_{i-1},y_i,x,i)= \begin{cases} t_k(y_{i-1},y_i,x,i), \quad k=1,2,...,K_1\\ s_l(y_i,x,i), \quad \quad \quad k=K_1+l;l=1,2,...,K_2 \tag{9} \end{cases} 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(9)
然后,对转移与状态特征在各个位置i求和,记作:
f k ( y , x ) = ∑ i = 1 n f k ( y i − 1 , y i , x , i ) f_k(y,x)= \sum_{i=1}^{n}f_k(y_{i-1},y_i,x,i) fk(y,x)=i=1∑nfk(yi−1,yi,x,i)
权重记作:
w k = { λ k , l = 1 , 2 , . . . , K 1 u l , k = K 1 + l ; l = 1 , 2 , . . . , K 2 w_k= \begin{cases} \lambda_k,\quad l=1,2,...,K_1 \\ u_l,\quad k=K_1+l;l=1,2,...,K_2 \end{cases} wk={λk,l=1,2,...,K1ul,k=K1+l;l=1,2,...,K2
则CRF可以表示为:
P ( y ∣ x ) = 1 Z ( x ) e x p ( ∑ k = 1 K w k f k ( y , x ) ) P(y|x)=\frac{1}{Z(x)}exp(\sum_{k=1}^{K}w_kf_k(y,x)) P(y∣x)=Z(x)1exp(k=1∑Kwkfk(y,x))
Z ( x ) = ∑ y e x p ( ∑ k = 1 K w k f k ( y , x ) ) Z(x)=\sum_{y}exp(\sum_{k=1}^{K}w_kf_k(y,x)) Z(x)=y∑exp(k=1∑Kwkfk(y,x))
看看哪个归一化因子的求和,那个指数函数,是不是有点眼熟了,在进一步化简。令:
F ( y , x ) = ( f 1 ( y , x ) , . . . , f K ( y , x ) ) T F(y,x)=(f_1(y,x),...,f_K(y,x))^T F(y,x)=(f1(y,x),...,fK(y,x))T
则CRF进一步得到:
P ( Y ∣ X ) = e x p ( w T F ( y , x ) ) Z ( x ) P(Y|X)=\frac{exp(w^TF(y,x))}{Z(x)} P(Y∣X)=Z(x)exp(wTF(y,x))
Z ( x ) = ∑ y e x p ( w T F ( y , x ) ) Z(x)=\displaystyle\sum_{y}exp(w^TF(y,x)) Z(x)=y∑exp(wTF(y,x))
看到这里是不是联想到了我们的逻辑回归,模型形式一样,将简化的crf模型和LR进行映射
w T → θ , f ( y , x ) → x w^T\to \theta,f(y,x)\to x wT→θ,f(y,x)→x
就可以发现CRF和LR(如下式)的共性,区别在于逻辑回归是用于二元分类,而在这里是多元分类(y有多个值)。逻辑回归看这里
P ( Y = 1 ∣ x ) = e x p ( θ ⋅ x ) 1 + e x p ( θ ⋅ x ) ; P ( Y = 0 ∣ x ) = 1 1 + e x p ( θ ⋅ x ) P(Y=1|x)=\frac{exp(\theta \cdot x)}{1+exp(\theta\cdot x)};\quad \quad P(Y=0|x)=\frac{1}{1+exp(\theta\cdot x)} P(Y=1∣x)=1+exp(θ⋅x)exp(θ⋅x);P(Y=0∣x)=1+exp(θ⋅x)1
特征函数一般都是通过人工构造的方式来获得,顾名思义,符合这个特征,则函数就取1,否则就取0。比如在词性标注任务中,出现了后缀ed,特征 f 1 f_1 f1就取1,否则为0;出现了后缀ing,特征 f 2 f_2 f2就取1,否则为0。
这些特征函数可以很细,只要人工经验想到的,都可以作为特征函数,所以这就必然导致速度慢的缺陷。
关于权值,就是理解为参数,通过不断的调整,找到最优权值。
给定:
计算:条件概率 P ( Y i = y i ∣ X = x i ) , P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) P(Y_i=y_i|X=x_i),P(Y_{i-1}=y_{i-1},Y_i=y_i|x) P(Yi=yi∣X=xi),P(Yi−1=yi−1,Yi=yi∣x)以及对应数学期望问题。
前向-后向算法。
给定:
学习:
实质上,CRF就是定义在时序数据上的对数线性模型,学习算法包括极大似然估计,正则化的极大似然估计。具体的优化算法有:改进的迭代尺度法,梯度下降法,拟牛顿法等等。由于逻辑回归和最大熵模型哦也都是对数线性模型,所以学习算法和优化算法可以详见这篇文章逻辑回归和最大熵模型
给定:
输出:
即对观测序列进行标注,条件随机场的预测问题成为求非规范化概率最大的最优路径问题。
依旧采用Viterbi算法。和HMM(hidden Markov Model)的预测算法类似。详见这里
关于条件随机场其他文章: