条件随机场(CRF)详解

文章目录

  • 形式与定义
    • 什么是条件随机场
    • 简化形式
    • 矩阵形式
  • 学习算法
  • 概率计算
    • 前向后向概率概述
    • 前向后向概率计算
    • 期望计算
  • 预测算法—维特比算法
    • 维特比算法流程
    • 维特比算法实例
  • LR & CRF & HMM

形式与定义

什么是条件随机场

条件随机场(conditional random field) 是给定随机变量X的条件下,随机变量Y 的马尔可夫随机场。常用于标注、实体识别等问题。

接下来我们通过命名实体识别来介绍crf。

先介绍实体识别:

给定一个句子:我爱天安门。实体识别的任务是从句子中识别出地点实体:天安门。

由于汉字不能直接作为模型的输入,我们先构造一个简单的实体识别的模型输入与label:

word_alphabet: {0: ‘我’, 1: ‘爱’, 2: ‘天’, 3: ‘安’, 4:‘门’}

label_alphabet: {0: b, 1: m, 2: e, 3: s,4: o, 5: ‘start’, 6: ‘pad’ }

label_alphabet中的b 代表实体的开始(begin),m代表实体的中间部分(middle),e代表尸体的结束(end),o代表不是实体(none),start、pad分别表示这个label序列的开始和结束。

所以有:
条件随机场(CRF)详解_第1张图片

我们将构造的word_index作为模型的输入,label_index作为数据的label。我们希望实体识别模型能过通过word_index 预测出label_index,进而得到实体。

对于每一个字来说label有7种可能,为了数字化这些可能,我们从word_index到label_index设置一种分数,叫做状态分数,每一个字对应7种状态,如下图的红色箭头所示。

条件随机场(CRF)详解_第2张图片

把状态分数记作: μ 1 − 4 \mu_{1-4} μ14,表示’爱’对应状态4的得分是多少。

同时因为这是一个序列,label_index 的状态应该应该还与前一个状态有关,比如状态4(o: 不是实体)的后面不可能是状态1(m:实体的中间部分),也不可能是状态3(e:实体的结束)。所以这个时候需要一个转移分数代表前一个label到后一个label的分数。

条件随机场(CRF)详解_第3张图片

把转移分数记作: λ 4 − 4 \lambda_{4-4} λ44,表示从状态4转移到状态4的得分是多少。 所以我们得到word_index=1到label_index=4的分数为 μ 1 − 4 + λ 4 − 4 \mu_{1-4}+\lambda_{4-4} μ14+λ44,CRF考虑了全局:将前一个分数累加到当前分数上,将其作为已经预测的序列的整体分数。所以当前得分为:
s c o r e s = μ 0 − 4 + λ 5 − 4 + μ 1 − 4 + λ 4 − 4 + μ 2 − 0 + λ 4 − 0 + μ 3 − 1 + λ 0 − 1 + μ 4 − 3 + λ 1 − 3 + λ 3 − 6 scores = \mu_{0-4}+\lambda_{5-4} +\mu_{1-4}+\lambda_{4-4} + \mu_{2-0}+\lambda_{4-0} +\mu_{3-1}+\lambda_{0-1} + \mu_{4-3}+\lambda_{1-3}+\lambda_{3-6} scores=μ04+λ54+μ14+λ44+μ20+λ40+μ31+λ01+μ43+λ13+λ36
即:
s c o r e ( x , y ) = ∑ i = 0 n λ y i − 1 , y i + ∑ i = 0 n μ i , y i score(x,y) = \sum_{i=0}^n \lambda_{y_{i-1},y_i} + \sum_{i=0}^n \mu_{i,y_i} score(x,y)=i=0nλyi1,yi+i=0nμi,yi

因为这个预测序列有很多种,种类为label的排列组合大小。其中只有一种组合是对的,我们想通过模型训练使得对的score的比重在总体的所有score的越大越好。而这个时候我们一般softmax化,即:
P ( y ∣ x ) = e s c o r e ( x , y ) ∑ y e s c o r e ( x , y ) P(y|x) = \frac{e^{score(x,y)}}{\sum_y e^{score(x,y)}} P(yx)=yescore(x,y)escore(x,y)
上面这个实体识别中,X和Y有相同的图结构,其条件随机场的概率图模型应该长这样:

条件随机场(CRF)详解_第4张图片

在一些问题种 X 和Y结构不同,其概率图模型如下图所示:

条件随机场(CRF)详解_第5张图片

上面的例子有这样一个问题:有些组合根本不存在,如:状态4(o: 不是实体)的后面不可能是状态1(m:实体的中间部分),也不可能是状态3(e:实体的结束), 因此我们不能单纯的求分数的相加,需要引入一些限制。即引入转移特征函数 t k t_k tk 和状态特征函数 s l s_l sl ,取值为0或者1,当满足条件时取值1,否则取值0。

说明:因为状态4(o: 不是实体)的后面不可能是状态1(m:实体的中间部分),即:
t 1 = t 1 ( y i − 1 = 4 , y i = 1 , x , i ) = 0 , i = 1 , 2 … 6 t_1 = t_1(y_{i-1}=4,y_i=1,x,i)=0, i=1,2\ldots6 t1=t1(yi1=4,yi=1,x,i)=0,i=1,26
此时某一转移可能性的得分也更新为: t k λ k t_k\lambda_k tkλk 如果 t k = 0 t_k=0 tk=0则此种转移不存在,转移得分为0,对于状态得分也存在这样的情况。

此时CRF的参数化形式定义如下:
P ( y ∣ x ) = 1 Z 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}\exp\left(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i+\sum_{i,l}\mu_ls_l(y_i,x,i)\right) P(yx)=Z1expi,kλktk(yi1,yi,x,i+i,lμlsl(yi,x,i)

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 ) ) Z(x)=\sum_y exp \left(\sum_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i)\right) Z(x)=yexpi,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) 是规范化因子,求和是在所有可能的输出序列上进行的 。

至此我们已经了解了CRF基本的思想了。

下面来看一个简单得例子深入了解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 i Y_i Yi 的取值为1或2。假设 t k , s l t_k,s_l tk,sl 和对应的权值 λ k , μ l \lambda_k,\mu_l λk,μl 如下:
t 1 = t 1 ( y i − 1 = 1 , y i = 2 , x , i ) , i = 2 , 3 , λ 1 = 1 t 2 = t 2 ( y i − 1 = 1 , y i = 1 , x , i ) , i = 2 , λ 2 = 0.5 t 3 = t 3 ( y i − 1 = 2 , y i = 1 , x , i ) , i = 3 , λ 3 = 1 t 4 = t 4 ( y i − 1 = 2 , y i = 1 , x , i ) , i = 2 , λ 4 = 1 t 5 = t 5 ( y i − 1 = 2 , y i = 2 , x , i ) , i = 3 , λ 5 = 0.2 s 1 = s 1 ( y i = 1 , x , i ) , i = 1 , μ 1 = 1 s 2 = s 2 ( y i = 1 , x , i ) , i = 1 , 2 , μ 2 = 0.5 s 3 = s 3 ( y i = 1 , x , i ) , i = 2 , 3 , μ 3 = 0.8 s 4 = s 4 ( y i = 2 , x , i ) , i = 3 μ 4 = 0.5 \begin{aligned} t_1&=t_1(y_{i-1}=1,y_i=2,x,i),&i&=2,3,&\lambda_1&=1 \\ t_2&=t_2(y_{i-1}=1,y_i=1,x,i),&i&=2,&\lambda_2&=0.5\\ t_3&=t_3(y_{i-1}=2,y_i=1,x,i),&i&=3,&\lambda_3&=1\\ t_4&=t_4(y_{i-1}=2,y_i=1,x,i),&i&=2,&\lambda_4&=1\\ t_5&=t_5(y_{i-1}=2,y_i=2,x,i),&i&=3,&\lambda_5&=0.2\\ s_1&=s_1(y_i=1,x,i),&i&=1,&\mu_1&=1\\ s_2&=s_2(y_i=1,x,i),&i&=1,2,&\mu_2&=0.5\\ s_3&=s_3(y_i=1,x,i),&i&=2,3,&\mu_3&=0.8\\ s_4&=s_4(y_i=2,x,i),&i&=3&\mu_4&=0.5\\ \end{aligned} t1t2t3t4t5s1s2s3s4=t1(yi1=1,yi=2,x,i),=t2(yi1=1,yi=1,x,i),=t3(yi1=2,yi=1,x,i),=t4(yi1=2,yi=1,x,i),=t5(yi1=2,yi=2,x,i),=s1(yi=1,x,i),=s2(yi=1,x,i),=s3(yi=1,x,i),=s4(yi=2,x,i),iiiiiiiii=2,3,=2,=3,=2,=3,=1,=1,2,=2,3,=3λ1λ2λ3λ4λ5μ1μ2μ3μ4=1=0.5=1=1=0.2=1=0.5=0.8=0.5
这里只注明特征值取1的条件,取值为0的省略。

对于给定的观测序列 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) 的非规范化条件概率。

根据 t k , s l t_k,s_l tk,sl 和对应的权值 λ k , μ l \lambda_k,\mu_l λk,μl ,我们可以画出转移图如下:

条件随机场(CRF)详解_第6张图片

图中红色路径的得分即为 y = ( 1 , 2 , 2 ) y=(1,2,2) y=(1,2,2) 的非规范化条件概率。即:
P ( y 1 = 1 , y 2 = 2 , y 3 = 2 ∣ x ) → e ( λ 1 t 1 + λ 5 t 5 + μ 1 s 1 + μ 2 s 2 + μ 4 s 4 ) = e 3.2 P(y_1=1,y_2=2,y_3=2|x) \rightarrow e^{(\lambda_1t_1 + \lambda_5 t_5 +\mu_1s_1+\mu_2s_2 + \mu_4s_4)} = e^{3.2} P(y1=1,y2=2,y3=2x)e(λ1t1+λ5t5+μ1s1+μ2s2+μ4s4)=e3.2
从公式的角度看:
P ( y ∣ x ) → exp ⁡ ( ∑ k = 1 5 λ k ∑ i = 2 3 t k ( y i − 1 , y i , x , i ) + ∑ k = 1 4 μ l ∑ i = 1 3 s l ( y i , x , i ) ) \begin{aligned} P(y|x) &\rightarrow \exp\left(\sum_{k=1}^5\lambda_k \sum_{i=2}^3t_k(y_{i-1},y_i,x,i)+\sum_{k=1}^4\mu_l\sum_{i=1}^3 s_l(y_i,x,i)\right) \end{aligned} P(yx)exp(k=15λki=23tk(yi1,yi,x,i)+k=14μli=13sl(yi,x,i))
其中:
∑ k = 1 5 λ k ∑ i = 2 3 t k ( y i − 1 , y i , x , i ) = λ 1 ( t 1 ( y 1 , y 2 , x , 2 ) + t 1 ( y 2 , y 3 , x , 3 ) ) + λ 2 ( t 2 ( y 1 , y 2 , x , 2 ) + t 2 ( y 2 , y 3 , x , 3 ) ) + λ 3 ( t 3 ( y 1 , y 2 , x , 2 ) + t 3 ( y 2 , y 3 , x , 3 ) ) + λ 4 ( t 4 ( y 1 , y 2 , x , 2 ) + t 4 ( y 2 , y 3 , x , 3 ) ) + λ 5 ( t 5 ( y 1 , y 2 , x , 2 ) + t 5 ( y 2 , y 3 , x , 3 ) ) = λ 1 t 1 ( y 1 = 1 , y 2 = 2 , x , 2 ) + λ 5 t 5 ( y 2 = 2 , y 3 = 2 , x , 3 ) \begin{aligned} &\sum_{k=1}^5\lambda_k \sum_{i=2}^3t_k(y_{i-1},y_i,x,i) \\ =&\lambda_1 (t_1(y_{1},y_2,x,2)+t_1(y_{2},y_3,x,3)) + \lambda_2 (t_2(y_{1},y_2,x,2)+t_2(y_{2},y_3,x,3)) \\ &+\lambda_3 (t_3(y_{1},y_2,x,2)+t_3(y_{2},y_3,x,3))+\lambda_4 (t_4(y_{1},y_2,x,2)+t_4(y_{2},y_3,x,3)) \\ &+\lambda_5 (t_5(y_{1},y_2,x,2)+t_5(y_{2},y_3,x,3))\\ =&\lambda_1 t_1(y_{1}=1,y_2=2,x,2) + \lambda_5 t_5(y_{2}=2,y_3=2,x,3) \end{aligned} ==k=15λki=23tk(yi1,yi,x,i)λ1(t1(y1,y2,x,2)+t1(y2,y3,x,3))+λ2(t2(y1,y2,x,2)+t2(y2,y3,x,3))+λ3(t3(y1,y2,x,2)+t3(y2,y3,x,3))+λ4(t4(y1,y2,x,2)+t4(y2,y3,x,3))+λ5(t5(y1,y2,x,2)+t5(y2,y3,x,3))λ1t1(y1=1,y2=2,x,2)+λ5t5(y2=2,y3=2,x,3)

∑ l = 1 4 μ l ∑ i = 1 3 s l ( y i , x , i ) = μ 1 ( s 1 ( y 1 , x , 1 ) + s 1 ( y 2 , x , 2 ) + s 1 ( y 3 , x , 3 ) ) + μ 2 ( s 2 ( y 1 , x , 1 ) + s 2 ( y 2 , x , 2 ) + s 2 ( y 3 , x , 3 ) ) + μ 3 ( s 3 ( y 1 , x , 1 ) + s 3 ( y 2 , x , 2 ) + s 3 ( y 3 , x , 3 ) ) + μ 4 ( s 4 ( y 1 , x , 1 ) + s 4 ( y 2 , x , 2 ) + s 4 ( y 3 , x , 3 ) ) = μ 1 s 1 ( y 1 = 1 , x , 1 ) + μ 2 s 2 ( y 2 = 1 , x , 2 ) + μ 4 s 4 ( y 3 = 3 , x , 3 ) \begin{aligned} &\sum_{l=1}^4\mu_l\sum_{i=1}^3 s_l(y_i,x,i) \\ =&\mu_1(s_1(y_1,x,1)+s_1(y_2,x,2)+s_1(y_3,x,3))+\mu_2(s_2(y_1,x,1)+s_2(y_2,x,2)+s_2(y_3,x,3)) \\ &+\mu_3(s_3(y_1,x,1)+s_3(y_2,x,2)+s_3(y_3,x,3))+\mu_4(s_4(y_1,x,1)+s_4(y_2,x,2)+s_4(y_3,x,3))\\ =&\mu_1s_1(y_1=1,x,1)+\mu_2s_2(y_2=1,x,2)+\mu_4s_4(y_3=3,x,3) \end{aligned} ==l=14μli=13sl(yi,x,i)μ1(s1(y1,x,1)+s1(y2,x,2)+s1(y3,x,3))+μ2(s2(y1,x,1)+s2(y2,x,2)+s2(y3,x,3))+μ3(s3(y1,x,1)+s3(y2,x,2)+s3(y3,x,3))+μ4(s4(y1,x,1)+s4(y2,x,2)+s4(y3,x,3))μ1s1(y1=1,x,1)+μ2s2(y2=1,x,2)+μ4s4(y3=3,x,3)

带入数值即可。

简化形式

上述公式中,有两个特征函数,两个权值,为了简化,我们首先将转移特征和状态特征及其权值用统一的符号表示。假设有 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 ) = { 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 \color{red} f_k(y_{i-1},y_i,x,i)= \begin{cases} t_k(y_{i-1},y_i,x,i),&k=1,2,\dots,K_1\\ s_l(y_i,x,i),&k=K_1+l;l=1,2,\dots,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 ) = { ∑ i = 1 n t k ( y i − 1 , y i , x , i ) , k < K 1 ∑ i = 1 n s l ( y i , x , i ) , K 1 < k < K f_k(y,x)=\sum_{i=1}^nf_k(y_{i-1},y_i,x,i)=\begin{cases} \sum_{i=1}^n t_k(y_{i-1},y_i,x,i),&kfk(y,x)=i=1nfk(yi1,yi,x,i)={i=1ntk(yi1,yi,x,i),i=1nsl(yi,x,i),k<K1K1<k<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,\dots,K_1\\ \mu_l,&k=K_1+l;l=1,2,\dots,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_{k=1}^Kw_kf_k(y,x)\\ Z(x)&=\sum_y\exp\sum_{k=1}^Kw_kf_k(y,x) \end{aligned} P(yx)Z(x)=Z(x)1expk=1Kwkfk(y,x)=yexpk=1Kwkfk(y,x)
若以 w w w表示权值向量, 即
w = ( w 1 , w 2 , … , w K ) T w=(w_1,w_2,\dots,w_K)^T w=(w1,w2,,wK)T
F F F表示全局特征向量,即
F ( y , x ) = ( f 1 ( y , x ) , f 2 ( y , x ) , … , f K ( y , x ) ) T F(y,x)=(f_1(y,x),f_2(y,x),\dots,f_K(y,x))^T F(y,x)=(f1(y,x),f2(y,x),,fK(y,x))T
条件随机场可以表示成向量内积的形式
P w ( y ∣ x ) = exp ⁡ ( w ⋅ F ( y , x ) ) Z w ( x ) Z w ( x ) = ∑ y exp ⁡ ( w ⋅ F ( y , x ) ) \begin{aligned} P_w(y|x)&=\frac{\exp(w\cdot F(y,x))}{Z_w(x)}\\ Z_w(x)&=\sum_y\exp\left(w\cdot F(y,x)\right) \end{aligned} Pw(yx)Zw(x)=Zw(x)exp(wF(y,x))=yexp(wF(y,x))

矩阵形式

针对线性链条件随机场引入起点和终点状态标记 y 0 = s t a r t , y n + 1 = e n d y_0=start,y_{n+1}=end y0=start,yn+1=end, 这时 P w ( y ∣ x ) P_w(y|x) Pw(yx)可以矩阵形式表示。

对观测序列 x x x 的每一个位置 i = 1 , 2 , … , n + 1 i = 1,2,\ldots,n+1 i=1,2,,n+1 ,由于 y i − 1 y_{i-1} yi1 y i y_i yi 在m个标记中取值,可以定义一个m 阶矩阵:
M i ( x ) = [ M i ( y i − 1 , y i ∣ x ) ] \begin{aligned} M_i(x)&=\left[M_i(y_{i-1},y_i|x)\right]\\ \end{aligned} Mi(x)=[Mi(yi1,yix)]
矩阵随机变量的元素为:
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 ) = ∑ k = 1 K w k f k ( y i − 1 , y i ∣ x ) \begin{aligned} M_i(y_{i-1},y_i|x)&=\exp\left(W_i(y_{i-1},y_i|x)\right)\\ W_i(y_{i-1},y_i|x)&=\sum_{k=1}^Kw_kf_k(y_{i-1},y_i|x) \end{aligned} Mi(yi1,yix)Wi(yi1,yix)=exp(Wi(yi1,yix))=k=1Kwkfk(yi1,yix)
举例:假设 y 1 ∈ { 1 , 2 } y_1 \in \{1,2\} y1{1,2}
W 2 ( y 1 , y 2 ∣ x ) = ∑ k = 1 K w k f k ( y 1 , y 2 ∣ x ) = ∑ k = 1 K 1 λ k t k ( y 1 , y 2 , x , 2 ) + ∑ l = 1 K − K 1 μ l s l ( y 2 , x , 2 ) \begin{aligned} W_2(y_{1},y_2|x)&=\sum_{k=1}^Kw_kf_k(y_{1},y_2|x) \\ &= \sum_{k=1}^{K_1}\lambda_kt_k(y_{1},y_2,x,2)+\sum_{l=1}^{K-K_1} \mu_ls_l(y_2,x,2) \end{aligned} W2(y1,y2x)=k=1Kwkfk(y1,y2x)=k=1K1λktk(y1,y2,x,2)+l=1KK1μlsl(y2,x,2)
则可以求得: W 2 ( y 1 = 1 , y 2 = 1 ∣ x ) , W 2 ( y 1 = 1 , y 2 = 2 ∣ x ) , W 2 ( y 1 = 2 , y 2 = 1 ∣ x ) , W 2 ( y 1 = 2 , y 2 = 2 ∣ x ) W_2(y_{1}=1,y_2=1|x),W_2(y_{1}=1,y_2=2|x),W_2(y_{1}=2,y_2=1|x),W_2(y_{1}=2,y_2=2|x) W2(y1=1,y2=1x),W2(y1=1,y2=2x),W2(y1=2,y2=1x),W2(y1=2,y2=2x)

取对数,构成 2 × 2 2\times2 2×2矩阵矩阵 M 2 ( x ) M_2(x) M2(x),分别表示 y 1 y_1 y1 转移到 y 2 y_2 y2 的可能性的大小。

这样给定观测序列 x x x,相应的标记序列 y y 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 ) = 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(yx)=Zw(x)1i=1n+1Mi(yi1,yix)
其中, Z w Z_w Zw为规范化因子,是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)=(M_1(x)M_2(x)\dots M_{n+1}(x))_{start,stop} Zw(x)=(M1(x)M2(x)Mn+1(x))start,stop
注: 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 表示开始状态和终止状态,规范化因子 Z w ( x ) Z_w(x) Zw(x) 是以start为起点,end为终点通过状态的所有路径 y 1 y 2 … y n y_1y_2\ldots y_n y1y2yn 的非规范化概率 ∏ 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) 之和。

举例如下:

给定下图的线性链条件随机场,观测序列x,状态序列y,假设 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

条件随机场(CRF)详解_第7张图片

各个位置的随机矩阵(可以理解为状态转移矩阵)为:
M 1 ( x ) = [ a 11 a 12 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 ] \begin{aligned} M_1(x)= \begin{bmatrix} &a_{11}&a_{12}\\ &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} \end{aligned} M1(x)=[a110a120]M3(x)=[c11c21c12c22],M2(x)=[b11b21b12b22],M4(x)=[1100]
其中:
M i ( x ) = [ exp ⁡ ( ∑ k = 1 K w k f k ( y i − 1 , y i ∣ x ) ) ] , i = 1 , 2 , … , n + 1 M_i(x)=\left[\exp\left(\sum_{k=1}^Kw_kf_k(y_{i-1},y_i|x)\right)\right],i=1,2,\dots,n+1 Mi(x)=[exp(k=1Kwkfk(yi1,yix))],i=1,2,,n+1
例如 M 1 ( x ) M_1(x) M1(x)
M 1 ( x ) = [ a 11 = exp ⁡ ( ∑ k = 1 K w k f k ( y 0 = 1 , y 1 = 1 ∣ x ) ) a 12 = exp ⁡ ( ∑ k = 1 K w k f k ( y 0 = 1 , y 1 = 2 ∣ x ) ) a 21 = exp ⁡ ( ∑ k = 1 K w k f k ( y 0 = 2 , y 1 = 1 ∣ x ) ) a 22 = exp ⁡ ( ∑ k = 1 K w k f k ( y 0 = 2 , y 2 = 1 ∣ x ) ) ] M_1(x)= \begin{bmatrix} &a_{11} =\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=1,y_1=1|x)\right)&a_{12}=\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=1,y_1=2|x)\right)\\ &a_{21}=\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=2,y_1=1|x)\right)&a_{22}=\exp\left(\sum_{k=1}^Kw_kf_k(y_{0}=2,y_2=1|x)\right) \end{bmatrix} M1(x)=a11=exp(k=1Kwkfk(y0=1,y1=1x))a21=exp(k=1Kwkfk(y0=2,y1=1x))a12=exp(k=1Kwkfk(y0=1,y1=2x))a22=exp(k=1Kwkfk(y0=2,y2=1x))
显然, a 21 , a 22 a_{21}, a_{22} a21,a22为0。

将上述矩阵相乘:
∏ i = 1 4 M i ( y i − 1 , y i ∣ x ) \prod_{i=1}^{4}M_i(y_{i-1},y_i|x) i=14Mi(yi1,yix)
可以得到各个路径的非规范化概率为:
a 11 b 11 c 11 , a 11 b 11 c 12 , a 11 b 12 c 21 , a 11 b 12 c 22 , a 12 b 21 c 11 , a 12 b 21 c 12 , a 12 b 22 c 21 , a 12 b 22 c 22 , a_{11}b_{11}c_{11},\quad a_{11}b_{11}c_{12},\quad a_{11}b_{12}c_{21},\quad a_{11}b_{12}c_{22},\quad \\ a_{12}b_{21}c_{11},\quad a_{12}b_{21}c_{12},\quad a_{12}b_{22}c_{21},\quad a_{12}b_{22}c_{22},\quad a11b11c11,a11b11c12,a11b12c21,a11b12c22,a12b21c11,a12b21c12,a12b22c21,a12b22c22,
规范化因子,即最终计算结果左上角的元素,为:
a 11 b 11 c 11 + a 11 b 11 c 12 + a 11 b 12 c 21 + a 11 b 12 c 22 + a 12 b 21 c 11 + a 12 b 21 c 12 + a 12 b 22 c 21 + a 12 b 22 c 22 a_{11}b_{11}c_{11}+ a_{11}b_{11}c_{12}+ a_{11}b_{12}c_{21}+ a_{11}b_{12}c_{22}+ \\ a_{12}b_{21}c_{11}+ a_{12}b_{21}c_{12}+ a_{12}b_{22}c_{21}+ a_{12}b_{22}c_{22} a11b11c11+a11b11c12+a11b12c21+a11b12c22+a12b21c11+a12b21c12+a12b22c21+a12b22c22

学习算法

条件随机场模型的学习通过拟牛顿法进行。

CRF的模型:
P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ∑ i = 1 n w i f i ( y , x ) Z ( x ) = ∑ y exp ⁡ ∑ i = 1 n w i f i ( y , x ) \begin{aligned}P(y|x)&=\frac{1}{Z(x)}\exp\sum_{i=1}^nw_if_i(y,x)\\Z(x)&=\sum_y\exp\sum_{i=1}^nw_if_i(y,x) \end{aligned} P(yx)Z(x)=Z(x)1expi=1nwifi(y,x)=yexpi=1nwifi(y,x)
已知训练数据的经验概率分布 P ~ ( x , y ) \widetilde {P}(x,y) P (x,y),条件概率分布的对数似然函数表示为:
L P ~ ( P w ) = l o g ∏ x , y P ( y ∣ x ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) log ⁡ P ( y ∣ x ) L_{\widetilde {P}}(P_w)=log \prod_{x,y}{P}(y|x)^{\widetilde {P}(x,y)} =\sum \limits_{x,y}\widetilde {P}(x,y)\log{P}(y|x) LP (Pw)=logx,yP(yx)P (x,y)=x,yP (x,y)logP(yx)
所以
L P ~ ( P w ) = ∑ x , y P ~ ( x , y ) log ⁡ P ( y ∣ x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x , y P ~ ( x , y ) log ⁡ ( Z w ( x ) ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x , y P ~ ( x ) P ( y ∣ x ) log ⁡ ( Z w ( x ) ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x P ~ ( x ) log ⁡ ( Z w ( x ) ) ∑ y P ( y ∣ x ) = ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) − ∑ x P ~ ( x ) log ⁡ ( Z w ( x ) ) \begin{aligned} L_{\widetilde {P}}(P_w)&=\sum \limits_{x,y}\widetilde {P}(x,y)\log{P}(y|x)\\ &=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x,y}\widetilde{P}(x,y)\log{(Z_w(x))}\\ &=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x,y}\widetilde{P}(x)P(y|x)\log{(Z_w(x))}\\ &=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x}\widetilde{P}(x)\log{(Z_w(x))}\sum_{y}P(y|x)\\ &=\sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) -\sum \limits_{x}\widetilde{P}(x)\log{(Z_w(x))} \end{aligned} LP (Pw)=x,yP (x,y)logP(yx)=x,yP (x,y)i=1nwifi(x,y)x,yP (x,y)log(Zw(x))=x,yP (x,y)i=1nwifi(x,y)x,yP (x)P(yx)log(Zw(x))=x,yP (x,y)i=1nwifi(x,y)xP (x)log(Zw(x))yP(yx)=x,yP (x,y)i=1nwifi(x,y)xP (x)log(Zw(x))
以上推导用到了 ∑ y P ( y ∣ x ) = 1 \sum\limits_yP(y|x)=1 yP(yx)=1

要极大化似然函数,即极小化 − L P ~ ( P w ) -L_{\widetilde {P}}(P_w) LP (Pw)

所以学习的优化目标是:
min ⁡ w ∈ R n f ( w ) = ∑ x P ~ ( x ) log ⁡ ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( y , x ) ) − ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) \min\limits_{w \in \R^n} f(w) =\sum \limits_{x}\widetilde{P}(x)\log{\sum_y\exp \left(\sum_{i=1}^nw_if_i(y,x)\right)} - \sum \limits_{x,y}\widetilde {P}(x,y)\sum \limits_{i=1}^{n}w_if_i(x,y) wRnminf(w)=xP (x)logyexp(i=1nwifi(y,x))x,yP (x,y)i=1nwifi(x,y)
其梯度函数是
g ( w ) = ( ∂ f ( w ) ∂ w 1 , ∂ f ( w ) ∂ w 2 , … ∂ f ( w ) ∂ w n ) T g(w) = \left( \frac{\partial f(w)}{\partial w_1},\frac{\partial f(w)}{\partial w_2},\ldots \frac{\partial f(w)}{\partial w_n}\right)^T g(w)=(w1f(w),w2f(w),wnf(w))T
其中:
∂ f ( w ) ∂ w i = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( y , x ) − ∑ x , y P ~ ( x , y ) f i ( x , y ) \frac{\partial f(w)}{\partial w_i}=\sum \limits_{x,y}\widetilde{P}(x)P_w(y|x)f_i(y,x) - \sum \limits_{x,y}\widetilde {P}(x,y)f_i(x,y) wif(w)=x,yP (x)Pw(yx)fi(y,x)x,yP (x,y)fi(x,y)
向量化:
∂ f ( w ) ∂ w = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f ( y , x ) − ∑ x , y P ~ ( x , y ) f ( x , y ) \frac{\partial f(w)}{\partial w}=\sum \limits_{x,y}\widetilde{P}(x)P_w(y|x)f(y,x) - \sum \limits_{x,y}\widetilde {P}(x,y)f(x,y) wf(w)=x,yP (x)Pw(yx)f(y,x)x,yP (x,y)f(x,y)

条件随机场学习的BFGS算法

输入:特征函数 f 1 , f 2 , … , f n f_1,f_2,\ldots,f_n f1,f2,,fn ;经验分布 P ~ ( x , y ) \widetilde P(x,y) P (x,y);

输出:最优参数 w ^ \hat w w^ ; 最优模型 P w ( y ∣ x ) P_w(y|x) Pw(yx)

(1)选定初始点 w ( 0 ) w^{(0)} w(0) B 0 \mathbf B_0 B0 为正定对称矩阵, k = 0 k=0 k=0

(2)计算 g k = g ( w ( k ) ) g_k=g(w^{(k)}) gk=g(w(k)) 。若 g k = 0 g_k=0 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\limits_{\lambda \geq 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 + 1 = 0 g_{k+1} = 0 gk+1=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 \mathbf B_{k+1} = \mathbf B_{k}+\frac{y_ky_k^T}{y_k^T\delta_k}-\frac{\mathbf B_k\delta_k \delta_k^T\mathbf B_k}{\delta_k^T\mathbf B_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, \qquad\delta_k=w^{(k+1)} - w^{k} yk=gk+1gk,δk=w(k+1)wk
(7)置 k = k + 1 k=k+1 k=k+1 , 转(3)

概率计算

即给定 linear-CRF的条件概率分布P(y|x), 在给定输入序列x和输出序列y时,计算条件概率 P ( y i ∣ x ) P(y_i|x) P(yix) P ( y i − 1 , y i ∣ x ) P(y_i−1,y_i|x) P(yi1yix)以及对应的期望。

前向后向概率概述

要计算条件概率 P ( y i ∣ x ) P(y_i|x) P(yix) P ( y i − 1 , y i ∣ x ) P(y_{i-1},y_i|x) P(yi1yix),可以使用前向后向算法来完成。

前向概率

定义 α i ( y i ∣ x ) \alpha_i(y_i|x) αi(yix)表示序列位置i的标记是 y i y_i yi时,在位置i之前的部分标记序列的非规范化概率。

而我们在上面定义了:
M i ( y i − 1 , y i ∣ x ) = e x p ( ∑ k = 1 K w k f k ( y i − 1 , y i , x , i ) ) M_i(y_{i-1},y_i |x) = exp(\sum\limits_{k=1}^Kw_kf_k(y_{i-1},y_i, x,i)) Mi(yi1,yix)=exp(k=1Kwkfk(yi1,yi,x,i))
用于计算在给定 y i − 1 y_{i-1} yi1时,从 y i − 1 y_{i-1} yi1转移到 y i y_i yi的非规范化概率。

那么在得知在位置 i + 1 i+1 i+1处标记为 y i + 1 y_{i+1} yi+1时,位置 i + 1 i+1 i+1之前的标记序列非规范化概率 α i + 1 ( y i + 1 ∣ x ) \alpha_{i+1}(y_{i+1}|x) αi+1(yi+1x)的递推公式:
α i + 1 ( y i + 1 ∣ x ) = α i ( y i ∣ x ) M i + 1 ( y i + 1 , y i ∣ x )      i = 1 , 2 , . . . , n + 1 \alpha_{i+1}(y_{i+1}|x) = \alpha_i(y_i|x)M_{i+1}(y_{i+1},y_i|x) \;\; i=1,2,...,n+1 αi+1(yi+1x)=αi(yix)Mi+1(yi+1,yix)i=1,2,...,n+1
特别的,在起点处,我们令:
α 0 ( y 0 ∣ x ) = { 1 y 0 = s t a r t 0 e l s e \alpha_0(y_0|x)= \begin{cases} 1 & {y_0 =start}\\ 0 & {else} \end{cases} α0(y0x)={10y0=startelse
由于在位置 i + 1 i+1 i+1处, y i + 1 y_{i+1} yi+1的可能取值有m种,我们用 α i ( x ) \alpha_i(x) αi(x)表示这m个可能取值对应的前向向量:
α i ( x ) = ( α i ( y i = 1 ∣ x ) , α i ( y i = 2 ∣ x ) , . . . α i ( y i = m ∣ x ) ) T \alpha_i(x) = (\alpha_i(y_i=1|x), \alpha_i(y_i=2|x), ... \alpha_i(y_i=m|x))^T αi(x)=(αi(yi=1x),αi(yi=2x),...αi(yi=mx))T
则递推公式可以表示为:
α i + 1 T ( x ) = α i T ( x ) M i + 1 ( x ) \alpha_{i+1}^T(x) = \alpha_i^T(x)M_{i+1}(x) αi+1T(x)=αiT(x)Mi+1(x)
后向概率

同样定义 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)表示序列位置i的标记是 y i y_i yi时,在位置i之后的部分(i+1到n的部分)标记序列的非规范化概率。

那么在得知 i + 1 i+1 i+1处标记为 y ( i + 1 ) y_(i+1) y(i+1)时,位置i之后的部分标记序列的非规范化概率 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yix)的递推公式:
β i ( y i ∣ x ) = M i + 1 ( y i , y i + 1 ∣ x ) β i + 1 ( y i + 1 ∣ x ) \beta_{i}(y_{i}|x) = M_{i+1}(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x) βi(yix)=Mi+1(yi,yi+1x)βi+1(yi+1x)
特别的,在终点处定义:
β 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)= \begin{cases} 1 & {y_{n+1} =stop}\\ 0 & {else} \end{cases} βn+1(yn+1x)={10yn+1=stopelse
如果用向量表示则有:
β 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)
规范化因子 Z ( x ) Z(x) Z(x)的表达式为:
Z ( x ) = ∑ c = 1 m α n ( y c ∣ x ) = ∑ c = 1 m β 1 ( y c ∣ x ) Z(x) = \sum\limits_{c=1}^m\alpha_{n}(y_c|x) = \sum\limits_{c=1}^m\beta_{1}(y_c|x) Z(x)=c=1mαn(ycx)=c=1mβ1(ycx)
向量化的表示为:
Z ( x ) = α n T ( x ) ∙ 1 = 1 T ∙ β 1 ( x ) Z(x) = \alpha_{n}^T(x) \bullet \mathbf{1} = \mathbf{1}^T \bullet \beta_{1}(x) Z(x)=αnT(x)1=1Tβ1(x)
其中,1是m维全1向量。

前向后向概率计算

有了前向后向概率的定义和计算方法,我们就很容易计算序列位置i的标记是 y i y_i yi时的条件概率 P ( y i ∣ x ) P(y_i|x) P(yix)
P ( y i ∣ x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ∙ 1 P(y_i|x) = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)} = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} P(yix)=Z(x)αiT(yix)βi(yix)=αnT(x)1αiT(yix)βi(yix)
也容易计算序列位置i的标记是 y i y_i yi,位置 i − 1 i-1 i1的标记是 y i − 1 y_{i-1} yi1时的条件概率 P ( y i − 1 , y i ∣ x ) P(y_{i-1},y_i|x) P(yi1,yix):
P ( y i − 1 , y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ∙ 1 \begin{aligned} P(y_{i-1},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)} \\ &= \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{aligned} P(yi1,yix)=Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)=αnT(x)1αi1T(yi1x)Mi(yi1,yix)βi(yix)

期望计算

有了上一节计算的条件概率,我们也可以很方便的计算联合分布 P ( x , y ) P(x,y) P(x,y)与条件分布 P ( y ∣ x ) P(y|x) P(yx)的期望。

特征函数 f k ( x , y ) f_k(x,y) fk(x,y)关于条件分布 P ( y ∣ x ) P(y|x) P(yx)的期望表达式是:
E P ( y ∣ x ) [ f k ] = E P ( y ∣ x ) [ f k ( y , x ) ] = ∑ i = 1 n + 1 ∑ y i − 1      y i P ( y i − 1 , y i ∣ x ) f k ( y i − 1 , y i , x , i ) = ∑ 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 ) α n T ( x ) ∙ 1 \begin{aligned} E_{P(y|x)}[f_k] & = E_{P(y|x)}[f_k(y,x)] \\ & = \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1}\;\;y_i}P(y_{i-1},y_i|x)f_k(y_{i-1},y_i,x, i) \\ & = \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)}{ \alpha_{n}^T(x) \bullet \mathbf{1}} \end{aligned} EP(yx)[fk]=EP(yx)[fk(y,x)]=i=1n+1yi1yiP(yi1,yix)fk(yi1,yi,x,i)=i=1n+1yi1yifk(yi1,yi,x,i)αnT(x)1αi1T(yi1x)Mi(yi1,yix)βi(yix)
同样可以计算联合分布 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

你可能感兴趣的:(机器学习基础,算法,机器学习,python,人工智能)