21[NLP训练营]CRF

CRF与HMM对比解析
本文深入探讨了条件随机场(CRF)与隐马尔科夫模型(HMM)的区别,详细讲解了CRF在处理时序数据上的优势,包括线性链CRF的推导过程、参数估计与推断问题的解决方案。


公式输入请参考: 在线Latex公式

起源(HMM vs CRF)

可以看到下图中横向变化,和纵向的对比(有向图和无向图)。
在这里插入图片描述

求有向图和无向图联合概率

在这里插入图片描述
有向图的联合概率等于各个节点的条件概率的乘积,当然, x 4 , x 5 x_4,x_5 x4,x5由于没有入度,所以不用条件。
注意,在计算条件概率的时候,只需要考虑局部的取值类型即可,例如: p ( x 2 ∣ x 3 ) p(x_2|x_3) p(x2x3),只用考虑 x 3 x_3 x3的取值(假设它是离散型),如果有两种值,就只用考虑两种情况。
无向图相对而言麻烦点:
在这里插入图片描述
这里要引入factor/feature function,这里引入这个东西就是要把上面的无向图进行拆分。拆分的结果就是上图中的绿色圈圈,三个三个一组。这样的一组也叫做clique(可以一个点做一个clique,可以两个点做一个clique,当然也可以三个做一个clique,但是必须是两两相互关联的。)拆分好后,联合概率就可以写为:
p ( x 1 , x 2 , x 3 , x 4 , x 5 ) = ϕ 1 ( x 1 , x 2 , x 3 ) ϕ 2 ( x 2 , x 3 , x 5 ) ϕ 3 ( x 3 , x 4 , x 5 ) p(x_1,x_2,x_3,x_4,x_5)=\phi_1(x_1,x_2,x_3)\phi_2(x_2,x_3,x_5)\phi_3(x_3,x_4,x_5) p(x1,x2,x3,x4,x5)=ϕ1(x1,x2,x3)ϕ2(x2,x3,x5)ϕ3(x3,x4,x5)
ϕ \phi ϕ就是feature function
由于联合概率也是概率,为了保证概率的值域是[0,1],我们需要对上面的式子进行归一化,除以一个normalization term z ( x ) z(x) z(x),也叫做partition function:
p ( x 1 , x 2 , x 3 , x 4 , x 5 ) = ϕ 1 ( x 1 , x 2 , x 3 ) ϕ 2 ( x 2 , x 3 , x 5 ) ϕ 3 ( x 3 , x 4 , x 5 ) z ( x ) p(x_1,x_2,x_3,x_4,x_5)=\cfrac{\phi_1(x_1,x_2,x_3)\phi_2(x_2,x_3,x_5)\phi_3(x_3,x_4,x_5)}{z(x)} p(x1,x2,x3,x4,x5)=z(x)ϕ1(x1,x2,x3)ϕ2(x2,x3,x5)ϕ3(x3,x4,x5)
partition function不好求。。。因为它是依赖于全局的变量(有向图是局部依赖)。

Log-Linear Model

逻辑回归和CRF都属于Log-Linear Model的一个特例,因此我们先来看看Log-Linear Model是什么。
p ( y ∣ x ; w ) = e x p ∑ j = 1 J w j F j ( x , y ) Z ( x , w ) p(y|x;w)=\cfrac{exp\sum_{j=1}^Jw_jF_j(x,y)}{Z(x,w)} p(yx;w)=Z(x,w)expj=1JwjFj(x,y)
其中:
左边是条件概率,是一个判别模型。
F j ( x , y ) F_j(x,y) Fj(x,y)是feature function(通常是手工设置,给定数据集后,这项相当与已知条件), w j w_j wj是模型参数, Z ( x , w ) Z(x,w) Z(x,w)是normalization term。

Multinomial Logistic Regression

给出feature function的定义:
F j ( x , y ) = x i ⋅ I ( y = c ) F_j(x,y)=x_i\cdot I(y=c) Fj(x,y)=xiI(y=c)
x是d维的特征向量
y是分类,取值范围: { 1 , 2 , . . . , c } \{1,2,...,c\} {1,2,...,c}
I是indicator function,意思是当函数中的条件满足的时候函数取值为1,否则取值为0.
假设现在 c = 3 c=3 c=3,那么特征函数的维度是 3 × d 3\times d 3×d也就是 j ∈ 1 , 2 , 3 , . . . , 3 d j\in1,2,3,...,3d j1,2,3,...,3d,同样的参数 w w w的维度也是 3 × d 3\times d 3×d
下面是不同的分类的时候,特征函数的取值情况如下:
y = 1 y=1 y=1
F 1 ( x , y ) = x 1 F 2 ( x , y ) = x 2 ⋮ F d ( x , y ) = x d F d + 1 ( x , y ) = 0 ⋮ F 2 d ( x , y ) = 0 ⋮ F 3 d ( x , y ) = 0 \begin{matrix} F_1(x,y)=x_1 \\ F_2(x,y)=x_2 \\ \vdots\\ F_d(x,y)=x_d \\ F_{d+1}(x,y)=0 \\ \vdots\\ F_{2d}(x,y)=0\\ \vdots\\ F_{3d}(x,y)=0 \end{matrix} F1(x,y)=x1F2(x,y)=x2Fd(x,y)=xdFd+1(x,y)=0F2d(x,y)=0F3d(x,y)=0
y = 2 y=2 y=2

F 1 ( x , y ) = 0 F 2 ( x , y ) = 0 ⋮ F d ( x , y ) = 0 F d + 1 ( x , y ) = x 1 F d + 2 ( x , y ) = x 2 ⋮ F 2 d ( x , y ) = x d F 2 d + 1 ( x , y ) = 0 ⋮ F 3 d ( x , y ) = 0 \begin{matrix} F_1(x,y)=0 \\ F_2(x,y)=0 \\ \vdots\\ F_d(x,y)=0 \\ F_{d+1}(x,y)=x_1 \\ F_{d+2}(x,y)=x_2 \\ \vdots\\ F_{2d}(x,y)=x_d\\ F_{2d+1}(x,y)=0\\ \vdots\\ F_{3d}(x,y)=0 \end{matrix} F1(x,y)=0F2(x,y)=0Fd(x,y)=0Fd+1(x,y)=x1Fd+2(x,y)=x2F2d(x,y)=xdF2d+1(x,y)=0F3d(x,y)=0
y = 3 y=3 y=3
F 1 ( x , y ) = 0 F 2 ( x , y ) = 0 ⋮ F d ( x , y ) = 0 F d + 1 ( x , y ) = 0 F d + 2 ( x , y ) = 0 ⋮ F 2 d ( x , y ) = 0 F 2 d + 1 ( x , y ) = x 1 F 2 d + 2 ( x , y ) = x 2 ⋮ F 3 d ( x , y ) = x d \begin{matrix} F_1(x,y)=0 \\ F_2(x,y)=0 \\ \vdots\\ F_d(x,y)=0 \\ F_{d+1}(x,y)=0 \\ F_{d+2}(x,y)=0\\ \vdots\\ F_{2d}(x,y)=0\\ F_{2d+1}(x,y)=x_1\\ F_{2d+2}(x,y)=x_2\\ \vdots\\ F_{3d}(x,y)=x_d \end{matrix} F1(x,y)=0F2(x,y)=0Fd(x,y)=0Fd+1(x,y)=0Fd+2(x,y)=0F2d(x,y)=0F2d+1(x,y)=x1F2d+2(x,y)=x2F3d(x,y)=xd
总共有3d个feature function等式。
下面来看看当分类为1的时候模型概率的计算(2d~3d的项都去掉了,因为都为0):
p ( y = 1 ∣ x ; w ) = exp ⁡ ∑ j = 1 3 d w j F j ( x , y ) Z ( x , w ) = exp ⁡ ∑ j = 1 d w j x j Z ( x , w ) p(y=1|x;w)=\cfrac{\exp\sum_{j=1}^{3d}w_jF_j(x,y)}{Z(x,w)}=\cfrac{\exp\sum_{j=1}^{d}w_jx_j}{Z(x,w)} p(y=1x;w)=Z(x,w)expj=13dwjFj(x,y)=Z(x,w)expj=1dwjxj
下面来看看当分类为2的时候模型概率的计算:
p ( y = 2 ∣ x ; w ) = exp ⁡ ∑ j = 1 3 d w j F j ( x , y ) Z ( x , w ) = exp ⁡ ∑ j = d + 1 2 d w j x j − d Z ( x , w ) p(y=2|x;w)=\cfrac{\exp\sum_{j=1}^{3d}w_jF_j(x,y)}{Z(x,w)}=\cfrac{\exp\sum_{j=d+1}^{2d}w_jx_{j-d}}{Z(x,w)} p(y=2x;w)=Z(x,w)expj=13dwjFj(x,y)=Z(x,w)expj=d+12dwjxjd
注意这里的x的下标是j-d,因为x的下标范围是1-d,但是j是从d+1到2d,所以这里要减去一个d,避免数组越界。
下面来看看当分类为3的时候模型概率的计算:
p ( y = 3 ∣ x ; w ) = exp ⁡ ∑ j = 1 3 d w j F j ( x , y ) Z ( x , w ) = exp ⁡ ∑ j = 2 d + 1 3 d w j x j − 2 d Z ( x , w ) p(y=3|x;w)=\cfrac{\exp\sum_{j=1}^{3d}w_jF_j(x,y)}{Z(x,w)}=\cfrac{\exp\sum_{j=2d+1}^{3d}w_jx_{j-2d}}{Z(x,w)} p(y=3x;w)=Z(x,w)expj=13dwjFj(x,y)=Z(x,w)expj=2d+13dwjxj2d
为了进一步展开,我们把参数写开:
w = ( w 1 , w 2 , . . . , w d , w d + 1 , . . . , w 2 d , w 2 d + 1 , . . . , w 3 d ) T w=(w_1,w_2,...,w_d,w_{d+1},...,w_{2d},w_{2d+1},...,w_{3d})^T w=(w1,w2,...,wd,wd+1,...,w2d,w2d+1,...,w3d)T
把它每d个分一个段,写成:
w = ( w ( 1 ) , w ( 2 ) , w ( 3 ) ) T w=(w^{(1)},w^{(2)},w^{(3)})^T w=(w(1),w(2),w(3))T
那么,上面的分类的模型概率计算可以写为:
p ( y = 1 ∣ x ; w ) = exp ⁡ ( w ( 1 ) T ⋅ x ) Z ( x , w ) p(y=1|x;w)=\cfrac{\exp(w^{(1)T}\cdot x)}{Z(x,w)} p(y=1x;w)=Z(x,w)exp(w(1)Tx)
p ( y = 2 ∣ x ; w ) = exp ⁡ ( w ( 2 ) T ⋅ x ) Z ( x , w ) p(y=2|x;w)=\cfrac{\exp(w^{(2)T}\cdot x)}{Z(x,w)} p(y=2x;w)=Z(x,w)exp(w(2)Tx)
p ( y = 3 ∣ x ; w ) = exp ⁡ ( w ( 3 ) T ⋅ x ) Z ( x , w ) p(y=3|x;w)=\cfrac{\exp(w^{(3)T}\cdot x)}{Z(x,w)} p(y=3x;w)=Z(x,w)exp(w(3)Tx)
normalization term z ( x , w ) z(x,w) z(x,w)可以写成:
Z ( x , w ) = exp ⁡ ( w ( 1 ) T ⋅ x ) + exp ⁡ ( w ( 2 ) T ⋅ x ) + exp ⁡ ( w ( 3 ) T ⋅ x ) Z(x,w)=\exp(w^{(1)T}\cdot x)+\exp(w^{(2)T}\cdot x)+\exp(w^{(3)T}\cdot x) Z(x,w)=exp(w(1)Tx)+exp(w(2)Tx)+exp(w(3)Tx)
模型概率写成:
p ( y = 1 ∣ x ; w ) = e w ( 1 ) T ⋅ x ∑ i = 1 3 e w ( i ) T ⋅ x p(y=1|x;w)=\cfrac{e^{w^{(1)T\cdot x}}}{\sum_{i=1}^3e^{w^{(i)T\cdot x}}} p(y=1x;w)=i=13ew(i)Txew(1)Tx
p ( y = 2 ∣ x ; w ) = e w ( 2 ) T ⋅ x ∑ i = 1 3 e w ( i ) T ⋅ x p(y=2|x;w)=\cfrac{e^{w^{(2)T\cdot x}}}{\sum_{i=1}^3e^{w^{(i)T\cdot x}}} p(y=2x;w)=i=13ew(i)Txew(2)Tx
p ( y = 2 ∣ x ; w ) = e w ( 3 ) T ⋅ x ∑ i = 1 3 e w ( i ) T ⋅ x p(y=2|x;w)=\cfrac{e^{w^{(3)T\cdot x}}}{\sum_{i=1}^3e^{w^{(i)T\cdot x}}} p(y=2x;w)=i=13ew(i)Txew(3)Tx
以上实际上就是多元逻辑回归(Multinomial Logistic Regression)的形式。

Feature function

上面定义的feature function是:
F j ( x , y ) = x i ⋅ I ( y = c ) F_j(x,y)=x_i\cdot I(y=c) Fj(x,y)=xiI(y=c)
实际上,我们的feature function通常可以定义为(把上面的点乘左右分别看成AB):
F j ( x , y ) = A a ( x ) B b ( y ) F_j(x,y)=A_a(x)B_b(y) Fj(x,y)=Aa(x)Bb(y)
其中: B b ( y ) B_b(y) Bb(y)是标签。
A a ( x ) A_a(x) Aa(x)是特征,例如:
A 1 ( x ) A_1(x) A1(x):单词x是大写或小写
A 2 ( x ) A_2(x) A2(x):单词x的长度
A 3 ( x ) A_3(x) A3(x):单词x的前缀是否是xx

不同的feature function得到的模型也不一样。

CRF:Log-Linear Model for Sequential Data

CRF其实就是Log-Linear Model处理时序数据的特例,因此,我们把Log-Linear Model的条件概率模型写出来,然后假设数据x是一个序列,来进行推导。原型
p ( y ∣ x ; w ) = 1 Z ( x , w ) e x p ∑ j = 1 J w j F j ( x , y ) p(y|x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(x,y) p(yx;w)=Z(x,w)1expj=1JwjFj(x,y)
我们假设: x ˉ \bar x xˉ是观测到的时序数据,类似一句话。
相应的有: y ˉ \bar y yˉ是观测到的时序数据对应的标签。
新的模型:
p ( y ˉ ∣ x ˉ ; w ) = 1 Z ( x , w ) e x p ∑ j = 1 J w j F j ( x ˉ , y ˉ ) p(\bar y|\bar x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(\bar x,\bar y) p(yˉxˉ;w)=Z(x,w)1expj=1JwjFj(xˉ,yˉ)
由于不同的 F j ( x ˉ , y ˉ ) F_j(\bar x,\bar y) Fj(xˉ,yˉ)可以得到不同类型的模型,因此我们先从最简单的CRF来开始推。
linear chain CRF,考虑到时序数据的特征,对特征函数做相应的定义:
p ( y ˉ ∣ x ˉ ; w ) = 1 Z ( x , w ) e x p ∑ j = 1 J w j F j ( x ˉ , y ˉ ) = 1 Z ( x , w ) e x p ∑ j = 1 J w j ∑ i = 2 n f j ( y i − 1 , y i , x ˉ , i ) p(\bar y|\bar x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(\bar x,\bar y)\\ =\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_j\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i) p(yˉxˉ;w)=Z(x,w)1expj=1JwjFj(xˉ,yˉ)=Z(x,w)1expj=1Jwji=2nfj(yi1,yi,xˉ,i)
相当于把第j个特征函数看做是一个和时序有关的特征,然后把这个时序展开,并和 x ˉ \bar x xˉ组成之前说过的factor,这里的i是时间步
在这里插入图片描述
说人话就是本来是整个序列 y ˉ \bar y yˉ x ˉ \bar x xˉ的特征,现在把 y ˉ \bar y yˉ拆分成 y 1 , y 2 , ⋯   , y n y_1,y_2,\cdots,y_n y1,y2,,yn,然后分别将拆分后的y和 x ˉ \bar x xˉ设置feature function。这里怎么拆也是超参数,上图是两个y一组( y i − 1 , y i y_{i-1},y_i yi1,yi)。拆出来的y和 x ˉ \bar x xˉ计算出来的特征做加权求和,得到整个序列 y ˉ \bar y yˉ x ˉ \bar x xˉ的特征
接下来看linear chain CRF两个重要问题:inference和参数估计

Inference Problem

问题描述:给定 w , x ˉ w,\bar x w,xˉ,求 y ˉ \bar y yˉ
y ^ = a r g max ⁡ y ˉ p ( y ˉ ∣ x ˉ ; w ) = a r g max ⁡ y ˉ ∑ j = 1 J w j F j ( x ˉ , y ˉ ) \hat y=arg\underset{\bar y}{\max}p(\bar y|\bar x;w)=arg\underset{\bar y}{\max}\sum_{j=1}^Jw_jF_j(\bar x,\bar y) y^=argyˉmaxp(yˉxˉ;w)=argyˉmaxj=1JwjFj(xˉ,yˉ)
这里省略掉了normalization term,因为求极值的时候这个可以看做常量。继续写:
y ^ = a r g max ⁡ y ˉ ∑ j = 1 J w j ∑ i = 2 n f j ( y i − 1 , y i , x ˉ , i ) \hat y=arg\underset{\bar y}{\max}\sum_{j=1}^Jw_j\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i) y^=argyˉmaxj=1Jwji=2nfj(yi1,yi,xˉ,i)
我们定义:
g i ( y i − 1 , y i ) = ∑ j = 1 J w j f j ( y i − 1 , y i , x ˉ , i ) g_i(y_{i-1},y_i)=\sum_{j=1}^Jw_jf_j(y_{i-1},y_i,\bar x,i) gi(yi1,yi)=j=1Jwjfj(yi1,yi,xˉ,i)
因此:
y ^ = a r g max ⁡ y ˉ ∑ i = 2 n g i ( y i − 1 , y i ) \hat y=arg\underset{\bar y}{\max}\sum_{i=2}^ng_i(y_{i-1},y_i) y^=argyˉmaxi=2ngi(yi1,yi)
这里借鉴上节HMM中维特比算法,求当前点的最优解,是在前一个时刻的最优解的基础上进行求极值即可:
在这里插入图片描述
在这里插入图片描述
写成数学表达:
u ( k , v ) = max ⁡ y 1 , . . . , y k − 1 ∑ i = 1 k − 1 g i ( y i − 1 , y i ) + g k ( y k − 1 , v ) u(k,v)=\underset{y_1,...,y_{k-1}}{\max}\sum_{i=1}^{k-1}g_i(y_{i-1},y_i)+g_k(y_{k-1},v) u(k,v)=y1,...,yk1maxi=1k1gi(yi1,yi)+gk(yk1,v)
y k − 1 y_{k-1} yk1单独拿出来,中括号里面就是上面的子问题。
u ( k , v ) = max ⁡ y k − 1 [ max ⁡ y 1 , . . . , y k − 2 ∑ i = 1 k − 2 g i ( y i − 1 , y i ) + g k − 1 ( y k − 2 , y k − 1 ) ] + g k ( y k − 1 , v ) u(k,v)=\underset{y_{k-1}}{\max}\left[\underset{y_1,...,y_{k-2}}{\max}\sum_{i=1}^{k-2}g_i(y_{i-1},y_i)+g_{k-1}(y_{k-2},y_{k-1})\right]+g_k(y_{k-1},v) u(k,v)=yk1max[y1,...,yk2maxi=1k2gi(yi1,yi)+gk1(yk2,yk1)]+gk(yk1,v)
根据函数u的定义,上面可以写成(上面的中括号里面是子问题):
u ( k , v ) = max ⁡ u [ u ( k − 1 , u ) + g k ( u , v ) ] u(k,v)=\underset{u}{\max}\left[u(k-1,u)+g_k(u,v)\right] u(k,v)=umax[u(k1,u)+gk(u,v)]
所以整个u就可以做是一个序列的动态规划求解,填充以下矩阵:
在这里插入图片描述

估计参数w

大概思路是第一步先看按log-linear 模型如何来求w,然后第二步再看特例CRF的w怎么求。
先写出公式:
p ( y ∣ x ; w ) = 1 Z ( x , w ) e x p ∑ j = 1 J w j F j ( x , y ) (1) p(y|x;w)=\cfrac{1}{Z(x,w)}exp\sum_{j=1}^Jw_jF_j(x,y)\tag1 p(yx;w)=Z(x,w)1expj=1JwjFj(x,y)(1)
按梯度下降的思想来求w,实际上要计算梯度(条件概率p对 w j w_j wj的偏导)
∂ log p ( y ∣ x ; w ) ∂ w j (2) \cfrac{\partial{\text{log}p(y|x;w)}}{\partial{w_j}}\tag2 wjlogp(yx;w)(2)
这里加一个log对求梯度没有影响,方便去掉后面e。
把公式1带入公式2:
( 2 ) = ∂ ∂ w j log p ( y ∣ x ; w ) = ∂ ∂ w j [ ∑ j = 1 J w j F j ( x , y ) − log Z ( x , w ) ] (2)=\cfrac{\partial}{\partial{w_j}}\text{log}p(y|x;w)=\cfrac{\partial}{\partial{w_j}}\left[\sum_{j=1}^Jw_jF_j(x,y)-\text{log}Z(x,w)\right] (2)=wjlogp(yx;w)=wj[j=1JwjFj(x,y)logZ(x,w)]
然后中括号每项分别对w求导
( 2 ) = F j ( x , y ) − 1 Z ( x , w ) ⋅ ∂ ∂ w j Z ( x , w ) (3) (2)=F_j(x,y)-\cfrac{1}{Z(x,w)}\cdot\cfrac{\partial}{\partial{w_j}}Z(x,w)\tag3 (2)=Fj(x,y)Z(x,w)1wjZ(x,w)(3)
之前说过,Z是一个归一化项,因此可以按类别求和后,把它写出来
Z ( x , w ) = ∑ y ′ exp ⁡ ∑ j = 1 J w j F j ( x , y ′ ) (4) Z(x,w)=\sum_{y'}\exp\sum_{j=1}^Jw_jF_j(x,y')\tag4 Z(x,w)=yexpj=1JwjFj(x,y)(4)
然后我们根据公式4来对 Z ( x , w ) Z(x,w) Z(x,w)求w的偏导。
∂ ∂ w j Z ( x , w ) = ∂ ∂ w j ∑ y ′ exp ⁡ ∑ j = 1 J w j F j ( x , y ′ ) \cfrac{\partial}{\partial{w_j}}Z(x,w)=\cfrac{\partial}{\partial{w_j}}\sum_{y'}\exp\sum_{j=1}^Jw_jF_j(x,y') wjZ(x,w)=wjyexpj=1JwjFj(x,y)
上面的 y ′ y' y与求偏导的对象无关,可以挪到前面,并且为了和前面的 j j j区分,这里把求和的 j j j写成 j ′ j' j
= ∑ y ′ ∂ ∂ w j exp ⁡ ∑ j ′ w j ′ F j ′ ( x , y ′ ) = ∑ y ′ exp ⁡ ∑ j ′ w j ′ F j ′ ( x , y ′ ) ∂ ∂ w j ∑ j ′ w j ′ F j ′ ( x , y ′ ) =\sum_{y'}\cfrac{\partial}{\partial{w_j}}\exp\sum_{j'}w_{j'}F_{j'}(x,y')\\ =\sum_{y'}\exp\sum_{j'}w_{j'}F_{j'}(x,y')\cfrac{\partial}{\partial{w_j}}\sum_{j'}w_{j'}F_{j'}(x,y') =ywjexpjwjFj(x,y)=yexpjwjFj(x,y)wjjwjFj(x,y)
这里,因为 ∂ ∂ w j ∑ j ′ w j ′ F j ′ ( x , y ′ ) \cfrac{\partial}{\partial{w_j}}\sum_{j'}w_{j'}F_{j'}(x,y') wjjwjFj(x,y)求导过程中,只对第j个有结果,其他项对 w j w_j wj求导都变0了,所以上面:
= ∑ y ′ [ exp ⁡ ∑ j ′ w j ′ F j ′ ( x , y ′ ) ] F j ( x , y ′ ) (5) =\sum_{y'}\left[\exp\sum_{j'}w_{j'}F_{j'}(x,y')\right]F_{j}(x,y')\tag5 =yexpjwjFj(x,y)Fj(x,y)(5)
把公式5带入3:
= F j ( x , y ) − 1 Z ( x , w ) ∑ y ′ [ exp ⁡ ∑ j ′ w j ′ F j ′ ( x , y ′ ) ] F j ( x , y ′ ) = F j ( x , y ) − ∑ y ′ F j ( x , y ′ ) exp ⁡ ∑ j ′ w j ′ F j ′ ( x , y ′ ) Z ( x , w ) =F_j(x,y)-\cfrac{1}{Z(x,w)}\sum_{y'}\left[\exp\sum_{j'}w_{j'}F_{j'}(x,y')\right]F_{j}(x,y')\\ =F_j(x,y)-\sum_{y'}F_{j}(x,y')\cfrac{\exp\sum_{j'}w_{j'}F_{j'}(x,y')}{Z(x,w)} =Fj(x,y)Z(x,w)1yexpjwjFj(x,y)Fj(x,y)=Fj(x,y)yFj(x,y)Z(x,w)expjwjFj(x,y)
根据Log-Linear Model条件概率的定义最后一个分式可以写为 p ( y ′ ∣ x ; w ) p(y'|x;w) p(yx;w),因此上式写成:
= F j ( x , y ) − ∑ y ′ F j ( x , y ′ ) p ( y ′ ∣ x ; w ) =F_j(x,y)-\sum_{y'}F_{j}(x,y')p(y'|x;w) =Fj(x,y)yFj(x,y)p(yx;w)
后面这项是考虑了 y ′ y' y的各个可能,按期望的概念,可以写为:
= F j ( x , y ) − E y ′ ∼ p ( y ′ ∣ x ; w ) { F j ( x , y ′ ) } (6) =F_j(x,y)-\underset{y'\sim p(y'|x;w)}{E}\left\{F_{j}(x,y')\right\}\tag6 =Fj(x,y)yp(yx;w)E{Fj(x,y)}(6)
把这个结论先记下来。
在来看如何计算 Z ( x ˉ , w ) Z(\bar x,w) Z(xˉ,w),这个后面要用到。把它写为考虑所有的 y ˉ \bar y yˉ的情况(这个上面有推过):
Z ( x ˉ , w ) = ∑ y ˉ exp ⁡ ∑ j = 1 J w j F j ( x ˉ , y ˉ ) = ∑ y ˉ exp ⁡ ∑ j = 1 J w j ∑ i = 2 n f j ( y i − 1 , y i , x ˉ , i ) = ∑ y ˉ exp ⁡ ∑ i = 2 n g i ( y i − 1 , y i ) + \begin{aligned} Z(\bar x,w)&=\sum_{\bar y}\exp\sum_{j=1}^Jw_jF_j(\bar x,\bar y)\\ &=\sum_{\bar y}\exp\sum_{j=1}^Jw_j\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i)\\ &=\sum_{\bar y}\exp\sum_{i=2}^ng_i(y_{i-1},y_i)+ \end{aligned} Z(xˉ,w)=yˉexpj=1JwjFj(xˉ,yˉ)=yˉexpj=1Jwji=2nfj(yi1,yi,xˉ,i)=yˉexpi=2ngi(yi1,yi)+
要解这个,一种考虑所有的组合: O ( m n ) O(m^n) O(mn),其中n是序列的长度,m是状态个数
另外一种是用HMM里面的FB算法。
Forward algorithm:先定义
α ( k + 1 , v ) = ∑ y 1 , . . . , y k exp ⁡ [ ∑ i = 2 k g i ( y i − 1 , y i ) + g k + 1 ( y k , v ) ] \alpha(k+1,v)=\sum_{y_1,...,y_k}\exp[\sum_{i=2}^kg_i(y_{i-1},y_i)+g_{k+1}(y_{k},v)] α(k+1,v)=y1,...,ykexp[i=2kgi(yi1,yi)+gk+1(yk,v)]
意思是序列总长度为n,只考虑1到k+1的子序列,前面是1到k,后面一项是k+1项,我们把这项设置为v
在这里插入图片描述
再把 y k y_k yk分出来,变成 y 1 , . . . , y k − 1 y_1,...,y_{k-1} y1,...,yk1 y k y_k yk y k y_k yk设置为u:
α ( k + 1 , v ) = ∑ u ∑ y 1 , . . . , y k − 1 exp ⁡ [ ∑ i = 2 k − 1 g i ( y i − 1 , y i ) ] exp ⁡ [ g k ( y k − 1 , u ) ] exp ⁡ [ g k + 1 ( u , v ) ] \alpha(k+1,v)=\sum_u\sum_{y_1,...,y_{k-1}}\exp\left[\sum_{i=2}^{k-1}g_i(y_{i-1},y_i)\right]\exp\left[g_{k}(y_{k-1},u)\right]\exp\left[g_{k+1}(u,v)\right] α(k+1,v)=uy1,...,yk1exp[i=2k1gi(yi1,yi)]exp[gk(yk1,u)]exp[gk+1(u,v)]
上式中: ∑ y 1 , . . . , y k − 1 exp ⁡ [ ∑ i = 2 k − 1 g i ( y i − 1 , y i ) ] exp ⁡ [ g k ( y k − 1 , u ) ] \sum_{y_1,...,y_{k-1}}\exp\left[\sum_{i=2}^{k-1}g_i(y_{i-1},y_i)\right]\exp[g_{k}(y_{k-1},u)] y1,...,yk1exp[i=2k1gi(yi1,yi)]exp[gk(yk1,u)]实际上是 α ( k + 1 , v ) \alpha(k+1,v) α(k+1,v)的子问题。因此:
α ( k + 1 , v ) = ∑ u α ( k , u ) exp ⁡ [ g k + 1 ( u , v ) ] \alpha(k+1,v)=\sum_u\alpha(k,u)\exp[g_{k+1}(u,v)] α(k+1,v)=uα(k,u)exp[gk+1(u,v)]
类似的,Backward algorithm可以定义:
β ( u , k ) = ∑ v [ exp ⁡ g k + 1 ( u , v ) ] β ( v , k + 1 ) \beta(u,k)=\sum_v[\exp g_{k+1}(u,v)]\beta(v,k+1) β(u,k)=v[expgk+1(u,v)]β(v,k+1)
在这里插入图片描述
最后:
Z ( x ˉ , w ) = ∑ u α ( k , u ) β ( u , k ) Z(\bar x,w)=\sum_u\alpha(k,u)\beta(u,k) Z(xˉ,w)=uα(k,u)β(u,k)
这里是考虑离散型变量的序列的估计,如果是连续型,要使用蒙特卡洛方法进行估计。
有了上面的结论,我们可以很容易的计算出类似HMM某一个时刻隐变量的条件概率:
p ( y k = u ∣ x ˉ ; w ) = α ( k , u ) β ( u , k ) Z ( x ˉ , w ) p(y_k=u|\bar x;w)=\cfrac{\alpha(k,u)\beta(u,k)}{Z(\bar x,w)} p(yk=uxˉ;w)=Z(xˉ,w)α(k,u)β(u,k)
类似的,HMM中状态转移的条件概率可以表示为:
p ( y k = u , y k + 1 = v ∣ x ˉ ; w ) = α ( k , u ) [ exp ⁡ g k + 1 ( u , v ) ] β ( v , k + 1 ) Z ( x ˉ , w ) p(y_k=u,y_{k+1}=v|\bar x;w)=\cfrac{\alpha(k,u)[\exp g_{k+1}(u,v)]\beta(v,k+1)}{Z(\bar x,w)} p(yk=u,yk+1=vxˉ;w)=Z(xˉ,w)α(k,u)[expgk+1(u,v)]β(v,k+1)
下面可以开始解决公式6
∂ ∂ w j log p ( y ˉ ∣ x ˉ ; w ) = F j ( x ˉ , y ˉ ) − E y ′ ∼ p ( y ′ ∣ x ˉ ; w ) { F j ( x ˉ , y ′ ) } = F j ( x ˉ , y ˉ ) − E y ˉ [ ∑ i = 2 n f j ( y i − 1 , y i , x ˉ , i ) ] = F j ( x ˉ , y ˉ ) − ∑ i = 2 n E y ˉ [ f j ( y i − 1 , y i , x ˉ , i ) ] \begin{aligned}\cfrac{\partial}{\partial{w_j}}\text{log}p(\bar y|\bar x;w)&=F_j(\bar x,\bar y)-\underset{y'\sim p(y'|\bar x;w)}{E}\{F_{j}(\bar x,y')\}\\ &=F_j(\bar x,\bar y)-\underset{\bar y}{E}\left[\sum_{i=2}^nf_j(y_{i-1},y_i,\bar x,i)\right]\\ &=F_j(\bar x,\bar y)-\sum_{i=2}^n\underset{\bar y}{E}[f_j(y_{i-1},y_i,\bar x,i)]\end{aligned} wjlogp(yˉxˉ;w)=Fj(xˉ,yˉ)yp(yxˉ;w)E{Fj(xˉ,y)}=Fj(xˉ,yˉ)yˉE[i=2nfj(yi1,yi,xˉ,i)]=Fj(xˉ,yˉ)i=2nyˉE[fj(yi1,yi,xˉ,i)]
这里有个trick,期望本来是对于所有的y,也就是 y ˉ \bar y yˉ,但是这里的期望只依赖于 y i − 1 , y i y_{i-1},y_i yi1,yi,所以上面可以写为:
= F j ( x ˉ , y ˉ ) − ∑ i = 2 n E y i − 1 , y i [ f j ( y i − 1 , y i , x ˉ , i ) ] =F_j(\bar x,\bar y)-\sum_{i=2}^n\underset{ y_{i-1},y_i}{E}[f_j(y_{i-1},y_i,\bar x,i)] =Fj(xˉ,yˉ)i=2nyi1,yiE[fj(yi1,yi,xˉ,i)]
按期望展开:
= F j ( x ˉ , y ˉ ) − ∑ i = 2 n ∑ y i − 1 ∑ y i f j ( y i − 1 , y i , x ˉ , i ) ⋅ p ( y i , y i − 1 ∣ x ˉ ; w ) =F_j(\bar x,\bar y)-\sum_{i=2}^n\sum_{y_{i-1}}\sum_{y_i}f_j(y_{i-1},y_i,\bar x,i)\cdot p(y_i,y_{i-1}|\bar x;w) =Fj(xˉ,yˉ)i=2nyi1yifj(yi1,yi,xˉ,i)p(yi,yi1xˉ;w)
最后吧上面的 p ( y k = u , y k + 1 = v ∣ x ˉ ; w ) p(y_k=u,y_{k+1}=v|\bar x;w) p(yk=u,yk+1=vxˉ;w)带进来:
∂ ∂ w j log p ( y ˉ ∣ x ˉ ; w ) = F j ( x ˉ , y ˉ ) − ∑ i = 2 n ∑ y i − 1 ∑ y i f j ( y i − 1 , y i , x ˉ , i ) ⋅ α ( i − 1 , y i − 1 ) [ e x p g i ( y i − 1 , y i ) ] β ( y i , i ) Z ( x ˉ , w ) \cfrac{\partial}{\partial{w_j}}\text{log}p(\bar y|\bar x;w)=F_j(\bar x,\bar y)-\sum_{i=2}^n\sum_{y_{i-1}}\sum_{y_i}f_j(y_{i-1},y_i,\bar x,i)\cdot \cfrac{\alpha(i-1,y_{i-1})[expg_{i}(y_{i-1},y_i)]\beta(y_i,i)}{Z(\bar x,w)} wjlogp(yˉxˉ;w)=Fj(xˉ,yˉ)i=2nyi1yifj(yi1,yi,xˉ,i)Z(xˉ,w)α(i1,yi1)[expgi(yi1,yi)]β(yi,i)
有了上面的结果,我们就可以计算梯度:
w j t + 1 = w j t − η t ∂ ∂ w j log p ( y ˉ ∣ x ˉ ; w ) w_j^{t+1}=w_j^t-\eta_t\cfrac{\partial}{\partial{w_j}}\text{log}p(\bar y|\bar x;w) wjt+1=wjtηtwjlogp(yˉxˉ;w)
然后利用梯度下降来求参数w。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值