17 条件随机场

17 条件随机场——CRF(Condition Random Field)

17.1 背景介绍

从分类问题开始探讨,分类问题包含两部分,硬分类和软分类问题:

  • 硬分类:
    1. SVM:通过几何间隔最大化实现分类
    2. PLA:通过错误驱动的感知机
    3. Linear Discriminant Analysis:类内小类间大的思想分类
  • 软分类:又分成了概率判别模型与概率生成模型
    • 概率判别模型
      1. Logistic Regression:通过对P(Z|X)建模进行求解
      2. Maximum Entropy Model:最大熵原理证明是指数族分布
    • 概率生成模型
      1. Naives Bayes:通过朴素贝叶斯假设减少计算量
      2. Gaussian Mixture Model:将数据看为由多个高斯分布组成的混合模型
      3. Hidden Markov Model:建立齐次Markov假设+观测独立假设实现时间序列的模型

本章通过打破了HMM的观测独立假设,实现了MEMM的概率判别模型,将数据关系变成如下图的形式:

但MEMM本身由于局部归一化的问题,会有标注偏差问题(label bias problem),所以为了解决这个问题提出了CRF的概率判别模型,数据关系转变为无向图,如下:

17.2 HMM与MEMM的区别

这一节主要讲我们是怎么从HMM过渡到MEMM的,以及我们为什么要过渡到MEMM。

首先我们分点介绍一下HMM:

  1. HMM构造了两个假设:齐次一阶Markov假设(齐次是指隐状态变化与时间无关,只与转移矩阵相关,一阶是指链式)、观测独立假设

  2. HMM中我们对 P ( X , Z ∣ λ ) P(X, Z| \lambda) P(X,Zλ)建模,是概率生成模型

  3. 通过因子分解,我们可以讲HMM的联合概率公式简化为:
    P ( X , Z ∣ λ ) = ∏ t = 1 T P ( x t , z t ∣ λ ) = P ( x 1 ∣ z 1 , λ ) ∏ t = 2 T P ( z t ∣ z t − 1 , λ ) P ( x t ∣ z t , λ ) P(X, Z| \lambda) = \prod_{t=1}^T P(x_t, z_t| \lambda) = P(x_1| z_{1}, \lambda)\prod_{t=2}^T P(z_t| z_{t-1}, \lambda)P(x_t| z_{t}, \lambda) P(X,Zλ)=t=1TP(xt,ztλ)=P(x1z1,λ)t=2TP(ztzt1,λ)P(xtzt,λ)

但是为让模型更加精确,我们提出了MEMM模型,然后介绍一下MEMM:

  1. MEMM中我们打破了观测独立假设,每个隐状态都与全部观测变量相关:

  2. MEMM是概率判别模型,对 P ( Z ∣ X , λ ) P(Z|X, \lambda) P(ZX,λ)建模

  3. 同样通过因子分解,MEMM的先验公式为:
    P ( Z ∣ X , λ ) = P ( Z 1 ∣ x 1 : T , λ ) ⋅ ∏ t = 2 T P ( z t ∣ z t − 1 , x 1 : T , λ ) P(Z| X, \lambda) = P(Z_1| x_{1:T}, \lambda) \cdot \prod_{t=2}^T P(z_t| z_{t-1}, x_{1:T}, \lambda) P(ZX,λ)=P(Z1x1:T,λ)t=2TP(ztzt1,x1:T,λ)

相较于HMM,MEMM有两个主要的优点:

  1. 观测独立假设本身就是为了便于计算提出的,打破后更加合理
  2. 在链式模型中,概率判别模型更合适,也可以节省计算

17.3 MEMM与CRF的区别

在通过17.2中,打破了观测独立假设,使得模型更加合理。我们自然就会想到,齐次Markov假设是否也需要打破呢?MEMM又有什么缺点,又会出现什么问题呢?

首先我们来介绍一下MEMM究竟会有什么问题:

  • MEMM的缺点是label bias problem(标注偏差问题),这个问题由John Lafferty在关于CRF的论文中提出。

  • 问题出现的原因是每次到了新的时间后,会进行归一化,减少了多样性。

  • 假设有这样一个具体的例子,我们在给单词做训练:

  • 我们在训练集中,给出了3个rob和1个rib,训练的结果自然是:
    { P ( 1 ∣ 0 , r ) = 0.25 P ( 3 ∣ 0 , r ) = 0.75 \begin{cases} P(1|0, r) = 0.25 \\ P(3|0, r) = 0.75 \end{cases} {P(1∣0,r)=0.25P(3∣0,r)=0.75
    但由于前面的情况都是 r r r​,所以在1、3处做归一化后,后面使得(不太清楚为啥):
    { P ( 2 ∣ 1 , r ) = 1 P ( 5 ∣ 2 , r ) = 1 P ( 4 ∣ 3 , r ) = 1 P ( 5 ∣ 4 , r ) = 1 \begin{cases} P(2|1, r) = 1 & P(5|2, r) = 1 \\ P(4|3, r) = 1 & P(5|4, r) = 1 \end{cases} {P(2∣1,r)=1P(4∣3,r)=1P(5∣2,r)=1P(5∣4,r)=1

  • 所以如果当前有一个Decoding问题:
    Y ^ = a r g max ⁡ y 1 , y 2 , y 3 P ( y 1 , y 2 , y 3 ∣ r i b ) {\hat Y} = arg\max_{y_1, y_2, y_3} P(y_1, y_2, y_3|rib) Y^=argy1,y2,y3maxP(y1,y2,y3rib)

  • 在给出rib的条件后会得出rob的结果。

而CRF解决了这个问题

17.4 CRF模型

上文一直是在介绍为什么要用CRF,以及CRF的合理性。本节开始介绍具体的CRF模型。

17.4.1 CRF的概率密度函数

CRF也叫条件随机场:

  • 条件:概率判别式模型 P ( Y ∣ X ) P(Y|X) P(YX)
  • 随机场:Markov随机场——无向图模型
  • 图像表示为:

所以现在的重要任务就是将条件概率的表示方法写出来。回忆我们在Markov Random Field中学习的因子分解:

  • 将无向图模型分解为最大团的集合(因为无向图的节点只与邻居相关):
    P ( X ) = 1 Z ∏ i = 1 K φ i ( X C i ) = 1 Z ∏ i = 1 K exp ⁡ [ − E i ( X C i ) ] = 1 Z exp ⁡ ∑ i = 1 K F i ( X C i ) P(X) = \frac{1}{Z} \prod_{i=1}^K \varphi_i(X_{C_i}) = \frac{1}{Z} \prod_{i=1}^K \exp[-E_i(X_{C_i})] = \frac{1}{Z} \exp{\sum_{i=1}^K F_i(X_{C_i})} P(X)=Z1i=1Kφi(XCi)=Z1i=1Kexp[Ei(XCi)]=Z1expi=1KFi(XCi)
    其中 φ i ( X C i ) \varphi_i(X_{C_i}) φi(XCi)表示势函数, E i ( X C i ) E_i(X_{C_i}) Ei(XCi)表示能量函数

根据上文的因式分解,可以将 P ( Y ∣ X ) P(Y|X) P(YX)​写为:
P ( Y ∣ X ) = 1 Z exp ⁡ ∑ i = 1 K F i ( X C i ) P(Y|X) = \frac{1}{Z} \exp{\sum_{i=1}^K F_i(X_{C_i})} P(YX)=Z1expi=1KFi(XCi)
此时我们的应用场景是CRF,CRF的无向图是链式的,所以在 N N N个节点的情况下,最大团是 N − 1 N-1 N1个,为了简化公式,我们假设节点有 y 0 y_0 y0​的存在:
P ( Y ∣ X ) = 1 Z exp ⁡ ∑ t = 1 T F ( y t − 1 , y t , x 1 : T ) P(Y|X) = \frac{1}{Z} \exp{\sum_{t=1}^T F(y_{t-1}, y_t, x_{1:T})} P(YX)=Z1expt=1TF(yt1,yt,x1:T)
为了继续简化,我们给出一些方法:

简化到这里,我们觉得 F ( y t − 1 , y t , x 1 : T ) F(y_{t-1}, y_t, x_{1:T}) F(yt1,yt,x1:T)还是太大了,所以我们想要把ta划分为几个部分(用 Δ \Delta Δ​表示某一部分的函数):
F ( y t − 1 , y t , x 1 : T ) = Δ y t − 1 , x 1 : T + Δ y t , x 1 : T + Δ y t − 1 , y t , x 1 : T F(y_{t-1}, y_t, x_{1:T}) = \Delta_{y_{t-1}, x_{1:T}} + \Delta_{y_t, x_{1:T}} + \Delta_{y_{t-1}, y_t, x_{1:T}} F(yt1,yt,x1:T)=Δyt1,x1:T+Δyt,x1:T+Δyt1,yt,x1:T
我们发现,其实 Δ y t − 1 , x 1 : T \Delta_{y_{t-1}, x_{1:T}} Δyt1,x1:T的部分,也会表示在 F ( y t − 2 , y t − 1 , x 1 : T ) F(y_{t-2}, y_{t-1}, x_{1:T}) F(yt2,yt1,x1:T)中,为求简化,我们删除这一部分( Δ y t , x 1 : T \Delta_{y_t, x_{1:T}} Δyt,x1:T​系数不变是因为可以放在函数里面所以不表示):
F ( y t − 1 , y t , x 1 : T ) = Δ y t , x 1 : T + Δ y t − 1 , y t , x 1 : T F(y_{t-1}, y_t, x_{1:T}) = \Delta_{y_t, x_{1:T}} + \Delta_{y_{t-1}, y_t, x_{1:T}} F(yt1,yt,x1:T)=Δyt,x1:T+Δyt1,yt,x1:T
然后就是将 Δ y t , x 1 : T \Delta_{y_t, x_{1:T}} Δyt,x1:T Δ y t − 1 , y t , x 1 : T \Delta_{y_{t-1}, y_t, x_{1:T}} Δyt1,yt,x1:T通过函数表示出来,我们这样假设:
{ Δ y t − 1 , y t , x 1 : T = ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) Δ y t , x 1 : T = ∑ l = 1 L η l g l ( y t , x 1 : T ) \begin{cases} \Delta_{y_{t-1}, y_t, x_{1:T}} = \sum_{k=1}^K \lambda_k f_k(y_{t-1}, y_t, x_{1:T}) \\ \Delta_{y_t, x_{1:T}} = \sum_{l=1}^L \eta_l g_l(y_t, x_{1:T}) \end{cases} {Δyt1,yt,x1:T=k=1Kλkfk(yt1,yt,x1:T)Δyt,x1:T=l=1Lηlgl(yt,x1:T)
其中 λ k \lambda_k λk η l \eta_l ηl表示我们需要学习的参数, f k f_k fk g l g_l gl表示给定的特征函数(根据一定条件给出特定值的函数,如sigmoid函数), K K K L L L是已知的(因为他表示特征函数的可能性)。
例如:问题是一句话“我爱中国”,特征函数 f k f_k fk表示其中词语的词性{名词、动词、副词、···},K就表示集合的大小。

根据以上方法,我们可以得到公式:
P ( Y ∣ X ) = 1 Z exp ⁡ ∑ t = 1 T [ ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) + ∑ l = 1 L η l g l ( y t , x 1 : T ) ] P(Y|X) = \frac{1}{Z} \exp{\sum_{t=1}^T \left[ \sum_{k=1}^K \lambda_k f_k(y_{t-1}, y_t, x_{1:T}) + \sum_{l=1}^L \eta_l g_l(y_t, x_{1:T}) \right]} P(YX)=Z1expt=1T[k=1Kλkfk(yt1,yt,x1:T)+l=1Lηlgl(yt,x1:T)]
至此我们给出了CRF的概率密度函数。

17.4.2 CRF概率密度函数简化(向量形式)

首先要讲一下为什么要简化?

  • 矩阵运算相较于一般的累加运算要更快
  • 在实际使用上看起来更清晰简单

然后我们简化的核心目的是什么?

  • 删除所有的累加运算

所以首先我们可以将所有的变量都写成向量的形式:
y = ( y 1 y 2 … y T ) x = ( x 1 x 2 … x T ) λ = ( λ 1 λ 2 … λ T ) η = ( η 1 η 2 … η K ) y = \begin{pmatrix} y_1 \\ y_2 \\ \dots \\ y_T \\ \end{pmatrix} \quad x = \begin{pmatrix} x_1 \\ x_2 \\ \dots \\ x_T \\ \end{pmatrix} \quad \lambda = \begin{pmatrix} \lambda_1 \\ \lambda_2 \\ \dots \\ \lambda_T \\ \end{pmatrix} \quad \eta = \begin{pmatrix} \eta_1 \\ \eta_2 \\ \dots \\ \eta_K \\ \end{pmatrix} y= y1y2yT x= x1x2xT λ= λ1λ2λT η= η1η2ηK

f = ( f 1 f 2 … f K ) = f ( y t − 1 , y t , x 1 : T ) g = ( g 1 g 2 … g L ) = g ( y t , x 1 : T ) f = \begin{pmatrix} f_1 \\ f_2 \\ \dots \\ f_K \\ \end{pmatrix} = f(y_{t-1}, y_t, x_{1:T}) \quad g = \begin{pmatrix} g_1 \\ g_2 \\ \dots \\ g_L \\ \end{pmatrix} = g(y_t, x_{1:T}) f= f1f2fK =f(yt1,yt,x1:T)g= g1g2gL =g(yt,x1:T)

所以原公式可以如此简化:
P ( Y = y ∣ X = x ) = 1 Z exp ⁡ ∑ t = 1 T [ ∑ k = 1 K λ k f k ( y t − 1 , y t , x 1 : T ) + ∑ l = 1 L η l g l ( y t , x 1 : T ) ] = 1 Z ( x , λ , η ) exp ⁡ ∑ t = 1 T [ λ T f ( y t − 1 , y t , x 1 : T ) + η T g ( y t , x 1 : T ) ] = 1 Z ( x , λ , η ) exp ⁡ [ λ T ∑ t = 1 T f ( y t − 1 , y t , x 1 : T ) + η T ∑ t = 1 T g ( y t , x 1 : T ) ] \begin{align} P(Y=y|X=x) & = \frac{1}{Z} \exp{\sum_{t=1}^T \left[ \sum_{k=1}^K \lambda_k f_k(y_{t-1}, y_t, x_{1:T}) + \sum_{l=1}^L \eta_l g_l(y_t, x_{1:T}) \right]} \\ & = \frac{1}{Z(x, \lambda, \eta)} \exp{\sum_{t=1}^T \left[ \lambda^T f(y_{t-1}, y_t, x_{1:T}) + \eta^T g(y_t, x_{1:T}) \right]} \\ & = \frac{1}{Z(x, \lambda, \eta)} \exp{\left[ \lambda^T \sum_{t=1}^T f(y_{t-1}, y_t, x_{1:T}) + \eta^T \sum_{t=1}^T g(y_t, x_{1:T}) \right]} \end{align} P(Y=yX=x)=Z1expt=1T[k=1Kλkfk(yt1,yt,x1:T)+l=1Lηlgl(yt,x1:T)]=Z(x,λ,η)1expt=1T[λTf(yt1,yt,x1:T)+ηTg(yt,x1:T)]=Z(x,λ,η)1exp[λTt=1Tf(yt1,yt,x1:T)+ηTt=1Tg(yt,x1:T)]
如此便将求和符号删除,为了进一步简化公式,我们给出定义:
θ = ( λ η ) K + L H = ( ∑ t = 1 T f ∑ t = 1 T g ) K + L = H ( y t , y t − 1 , x 1 : T ) \theta = \begin{pmatrix} \lambda \\ \eta \end{pmatrix}_{K+L} \qquad H = \begin{pmatrix} \sum_{t=1}^T f \\ \sum_{t=1}^T g \end{pmatrix}_{K+L} = H(y_t, y_{t-1}, x_{1:T}) θ=(λη)K+LH=(t=1Tft=1Tg)K+L=H(yt,yt1,x1:T)
所以可以最终简化为:
P ( Y = y ∣ X = x ) = 1 Z ( x , θ ) exp ⁡ ⟨ θ , H ⟩ P(Y=y|X=x) = \frac{1}{Z(x, \theta)} \exp{\langle \theta, H \rangle} P(Y=yX=x)=Z(x,θ)1expθ,H

17.5 CRF需要解决的问题

要求解CRF,还就是要求解概率图模型中的两大问题:

  • Learning问题:
    1. parameter estimation——参数估计
  • Inference问题:
    1. marginal problem——边缘概率求解:求 P ( y t ) P(y_t) P(yt)
    2. conditional problem——后验求解:求 P ( Y ∣ X ) P(Y|X) P(YX)
    3. MAP Inference——decoding问题:求解最大后验概率状态序列,如HMM中

针对CRF来说,这些问题主要是求解:

  • Learning问题:

    1. parameter estimation:在给定N组数据 { ( x ( i ) , y ( i ) ) } i = 1 N {\lbrace (x^{(i)}, y^{(i)}) \rbrace}_{i=1}^N {(x(i),y(i))}i=1N的条件下求 θ ^ = a r g max ⁡ ∏ i = 1 N P ( y ( i ) , x ( i ) ) {\hat \theta} = arg\max \prod_{i=1}^N P(y^{(i)}, x^{(i)}) θ^=argmaxi=1NP(y(i),x(i))
  • Inference问题:

    1. marginal problem:求 P ( y t ∣ x ) P(y_t|x) P(ytx)
    2. conditional problem:针对生成模型,因为 P ( Y ∣ X ) P(Y|X) P(YX)就是CRF的假设的分布,所以这个问题不用求
    3. MAP Inference:求解 y ^ = a r g max ⁡ y P ( Y ∣ X ) {\hat y} = arg\max_{y} P(Y|X) y^=argmaxyP(YX),与HMM相同

17.6 边缘概率计算——marginal问题

在一般情况下,若要求解边缘概率,只需要将其他的未知量积分掉就行了,如:

  • 已知后验为:
    P ( Y ∣ X ) = 1 Z ∏ t = 1 T φ ( y t − 1 , y t , X ) P(Y|X) = \frac{1}{Z} \prod_{t=1}^{T} \varphi(y_{t-1}, y_t, X) P(YX)=Z1t=1Tφ(yt1,yt,X)

  • 则通过积分求解边缘概率的结果为:
    P ( y t = i ∣ X ) = ∑ y 1 … y t − 1 y t + 1 … y T P ( Y ∣ X ) = ∑ y 1 … y t − 1 ∑ y t + 1 … y T 1 Z ∏ t = 1 T φ ( y t − 1 , y t , X ) \begin{align} P(y_t = i|X) & = \sum_{y_1 \dots y_{t-1} y_{t+1} \dots y_T} P(Y|X) \\ & = \sum_{y_1 \dots y_{t-1}} \sum_{ y_{t+1} \dots y_T} \frac{1}{Z} \prod_{t=1}^{T} \varphi(y_{t-1}, y_t, X) \end{align} P(yt=iX)=y1yt1yt+1yTP(YX)=y1yt1yt+1yTZ1t=1Tφ(yt1,yt,X)

其实到这一步已经可以求解了,但是积分的层次过高,连加与连乘的时间复杂度已经达到了指数级,所以基本等于无法求解。本节的主要工作就是通过递推的方法简化计算。


为简化计算,我们现在分析一下上面的公式,先做一些简单的变换:
P ( y t = i ∣ X ) = ∑ y 1 … y t − 1 ∑ y t + 1 … y T 1 Z ∏ t = 1 T φ ( y t − 1 , y t , X ) = 1 Z Δ l e f t Δ r i g h t \begin{align} P(y_t = i|X) & = \sum_{y_1 \dots y_{t-1}} \sum_{ y_{t+1} \dots y_T} \frac{1}{Z} \prod_{t=1}^{T} \varphi(y_{t-1}, y_t, X) \\ & = \frac{1}{Z} \Delta_{left} \Delta_{right} \end{align} P(yt=iX)=y1yt1yt+1yTZ1t=1Tφ(yt1,yt,X)=Z1ΔleftΔright
我们先分析一下左边的公式 Δ l e f t \Delta_{left} Δleft
Δ l e f t = ∑ y 1 … y t − 1 φ 1 ( y 0 , y 1 , X ) ⋯ ⋅ φ t ( y t − 1 , y t = i , X ) \Delta_{left} = \sum_{y_1 \dots y_{t-1}} \varphi_1(y_{0}, y_{1}, X) \dots \cdot \varphi_t(y_{t-1}, y_{t} = i, X) Δleft=y1yt1φ1(y0,y1,X)φt(yt1,yt=i,X)
我们发现,一个积分最多与两个公式相关,所以可以把 Δ l e f t \Delta_{left} Δleft写为:
Δ l e f t = ∑ y t − 1 ( φ t ( y t − 1 , y t = i , X ) ⋯ ∑ y 1 ( φ 2 ( y 1 , y 2 , X ) ∑ y 0 φ 1 ( y 0 , y 1 , X ) ) ) \Delta_{left} = \sum_{y_{t-1}} \left( \varphi_t(y_{t-1}, y_{t} = i, X) \dots \sum_{y_1} \left( \varphi_2(y_{1}, y_{2}, X) \sum_{y_0} \varphi_1(y_{0}, y_{1}, X) \right) \right) Δleft=yt1(φt(yt1,yt=i,X)y1(φ2(y1,y2,X)y0φ1(y0,y1,X)))
这里就能看出来 Δ l e f t \Delta_{left} Δleft是嵌套关系,可以通过递推求解,我们假设 Δ l e f t = α t ( i ) \Delta_{left} = \alpha_t(i) Δleft=αt(i)表示 t t t时刻 y t = i y_t=i yt=i的情况,有:(其中 S S S表示状态集合—— y y y的所有情况)
α t ( i ) = ∑ j ∈ S [ φ t ( y t − 1 = j , y t = i , X ) ⋅ α t − 1 ( j ) ] \alpha_t(i) = \sum_{j \in S} \big[ \varphi_t(y_{t-1} = j, y_{t} = i, X) \cdot \alpha_{t-1}(j) \big] αt(i)=jS[φt(yt1=j,yt=i,X)αt1(j)]
与此相同,我们可以发现 Δ r i g h t \Delta_{right} Δright​可以写成:
Δ r i g h t = ∑ y t + 1 ( φ t + 1 ( y t = i , y t + 1 , X ) ⋯ ∑ y T − 1 ( φ T − 1 ( y T − 2 , y T − 1 , X ) ∑ y T φ T ( y T − 1 , y T , X ) ) ) \Delta_{right} = \sum_{y_{t+1}} \left( \varphi_{t+1}(y_{t} = i, y_{t+1}, X) \dots \sum_{y_{T-1}} \left( \varphi_{T-1}(y_{T-2}, y_{T-1}, X) \sum_{y_T} \varphi_T(y_{T-1}, y_{T}, X) \right) \right) Δright=yt+1(φt+1(yt=i,yt+1,X)yT1(φT1(yT2,yT1,X)yTφT(yT1,yT,X)))
Δ l e f t \Delta_{left} Δleft相比,仅仅是反过来了而已,我们假设 Δ r i g h t = β t ( i ) \Delta_{right} = \beta_t(i) Δright=βt(i)表示 t t t时刻 y t = i y_t=i yt=i的情况,有:
β t ( i ) = ∑ j ∈ S [ φ t ( y t = i , y t + 1 = j , X ) ⋅ β t + 1 ( j ) ] \beta_t(i) = \sum_{j \in S} \big[ \varphi_t(y_{t} = i, y_{t+1} = j, X) \cdot \beta_{t+1}(j) \big] βt(i)=jS[φt(yt=i,yt+1=j,X)βt+1(j)]
所以我们可以得到以下结论:
{ P ( y t = i ∣ X ) = 1 Z α t ( i ) β t ( i ) α t ( i ) = ∑ j ∈ S [ φ t ( y t − 1 = j , y t = i , X ) ⋅ α t − 1 ( j ) ] β t ( i ) = ∑ j ∈ S [ φ t ( y t = i , y t + 1 = j , X ) ⋅ β t + 1 ( j ) ] \begin{cases} P(y_t = i|X) = \frac{1}{Z} \alpha_t(i) \beta_t(i) \\ \alpha_t(i) = \sum_{j \in S} \big[ \varphi_t(y_{t-1} = j, y_{t} = i, X) \cdot \alpha_{t-1}(j) \big] \\ \beta_t(i) = \sum_{j \in S} \big[ \varphi_t(y_{t} = i, y_{t+1} = j, X) \cdot \beta_{t+1}(j) \big] \end{cases} P(yt=iX)=Z1αt(i)βt(i)αt(i)=jS[φt(yt1=j,yt=i,X)αt1(j)]βt(i)=jS[φt(yt=i,yt+1=j,X)βt+1(j)]

17.7 参数估计——Learning问题

Learning问题就是求解参数,原问题我们已经非常熟悉了:
θ ^ = a r g max ⁡ ∏ i = 1 N P ( y ( i ) , x ( i ) ) {\hat \theta} = arg\max \prod_{i=1}^N P(y^{(i)}, x^{(i)}) θ^=argmaxi=1NP(y(i),x(i))
根据这道题的实际参数可以写为:
{ λ ^ , η ^ = a r g max ⁡ λ , η ∏ i = 1 N P ( y ( i ) , x ( i ) ) P ( Y ∣ X ) = 1 Z ( x , λ , η ) exp ⁡ ∑ t = 1 T [ λ T f ( y t − 1 , y t , x 1 : T ) + η T g ( y t , x 1 : T ) ] \begin{cases} {\hat \lambda}, {\hat \eta} = arg\max_{\lambda, \eta} \prod_{i=1}^N P(y^{(i)}, x^{(i)}) \\ P(Y|X) = \frac{1}{Z(x, \lambda, \eta)} \exp{\sum_{t=1}^T \left[ \lambda^T f(y_{t-1}, y_t, x_{1:T}) + \eta^T g(y_t, x_{1:T}) \right]} \end{cases} {λ^,η^=argmaxλ,ηi=1NP(y(i),x(i))P(YX)=Z(x,λ,η)1expt=1T[λTf(yt1,yt,x1:T)+ηTg(yt,x1:T)]
由于问题中有连乘符号,所以我们改变一下形式:
λ ^ , η ^ = a r g max ⁡ λ , η ∏ i = 1 N P ( Y ( i ) , X ( i ) ) = a r g max ⁡ λ , η ∑ i = 1 N log ⁡ P ( Y ( i ) , X ( i ) ) = a r g max ⁡ λ , η ∑ i = 1 N ( − log ⁡ Z ( X ( i ) , λ , η ) + ∑ t = 1 T [ λ T f ( y t − 1 ( i ) , y t ( i ) , X ( i ) ) + η T g ( y t ( i ) , X ( i ) ) ] ) \begin{align} {\hat \lambda}, {\hat \eta} & = arg\max_{\lambda, \eta} \prod_{i=1}^N P(Y^{(i)}, X^{(i)}) \\ & = arg\max_{\lambda, \eta} \sum_{i=1}^N \log {P(Y^{(i)}, X^{(i)})} \\ & = arg\max_{\lambda, \eta} \sum_{i=1}^N \left( -\log{Z(X^{(i)}, \lambda, \eta)} + \sum_{t=1}^T \left[ \lambda^T f(y_{t-1}^{(i)}, y_t^{(i)}, X^{(i)}) + \eta^T g(y_t^{(i)}, X^{(i)}) \right] \right) \end{align} λ^,η^=argλ,ηmaxi=1NP(Y(i),X(i))=argλ,ηmaxi=1NlogP(Y(i),X(i))=argλ,ηmaxi=1N(logZ(X(i),λ,η)+t=1T[λTf(yt1(i),yt(i),X(i))+ηTg(yt(i),X(i))])
最终可以写成:
{ θ ^ = a r g max ⁡ λ , η L ( λ , η , X ( i ) ) L ( λ , η , X ( i ) ) = ∑ i = 1 N ( − log ⁡ Z ( X ( i ) , λ , η ) + ∑ t = 1 T [ λ T f ( y t − 1 ( i ) , y t ( i ) , X ( i ) ) + η T g ( y t ( i ) , X ( i ) ) ] ) \begin{cases} {\hat \theta} = arg\max_{\lambda, \eta} {\mathcal L}(\lambda, \eta, X^{(i)}) \\ {\mathcal L}(\lambda, \eta, X^{(i)}) = \sum_{i=1}^N \left( -\log{Z(X^{(i)}, \lambda, \eta)} + \sum_{t=1}^T \left[ \lambda^T f(y_{t-1}^{(i)}, y_t^{(i)}, X^{(i)}) + \eta^T g(y_t^{(i)}, X^{(i)}) \right] \right) \end{cases} {θ^=argmaxλ,ηL(λ,η,X(i))L(λ,η,X(i))=i=1N(logZ(X(i),λ,η)+t=1T[λTf(yt1(i),yt(i),X(i))+ηTg(yt(i),X(i))])
既然方程已经出来了,我们就可以用很多种方式对参数进行求解了,本节中我们使用梯度上升的方法对其进行求解。


若要迭代求解参数,则需要分别求出参数 ∇ λ L \nabla_{\lambda}L λL ∇ η L \nabla_{\eta}L ηL(求偏导),确定梯度方向。以下由于上文公式对于两个参数对称,下文只求 ∇ λ L \nabla_{\lambda}L λL作为样本。

首先化简 ∇ λ L \nabla_{\lambda}L λL​:
∇ λ L = ∑ i = 1 N ( ∑ t = 1 T f ( y t − 1 ( i ) , y t ( i ) , X ( i ) ) − ∇ λ log ⁡ Z ( X ( i ) , λ , η ) ) \nabla_{\lambda}{\mathcal L} = \sum_{i=1}^N \left( \sum_{t=1}^T f(y_{t-1}^{(i)}, y_t^{(i)}, X^{(i)}) - \nabla_{\lambda} \log{Z(X^{(i)}, \lambda, \eta)} \right) λL=i=1N(t=1Tf(yt1(i),yt(i),X(i))λlogZ(X(i),λ,η))
根据化简后的公式,我们知道只要能求出 ∇ λ log ⁡ Z ( X ( i ) , λ , η ) \nabla_{\lambda} \log{Z(X^{(i)}, \lambda, \eta)} λlogZ(X(i),λ,η),就能知道梯度方向了。这里我们发现, log ⁡ Z ( X ( i ) , λ , η ) \log{Z(X^{(i)}, \lambda, \eta)} logZ(X(i),λ,η)实际上是对数配分函数(log partition function)。在指数族分布的8.2中我们证明过对数配分函数的导数是其分布的期望

所以公式可以写为:
∇ λ log ⁡ Z ( X ( i ) , λ , η ) = E Y ∣ X ( i ) [ f ( y t − 1 , y t , X ( i ) ) ] = ∑ Y [ P ( Y ∣ X ( i ) ) ⋅ ∑ t = 1 T f ( y t − 1 , y t , X ( i ) ) ] = ∑ t = 1 T ∑ Y [ P ( Y ∣ X ( i ) ) ⋅ f ( y t − 1 , y t , X ( i ) ) ] = ∑ t = 1 T ∑ y 1 , … , y t − 2 ∑ y t − 1 ∑ y t ∑ y t + 1 , … , y T [ P ( Y ∣ X ( i ) ) ⋅ f ( y t − 1 , y t , X ( i ) ) ] = ∑ t = 1 T ∑ y t − 1 ∑ y t [ ( ∑ y 1 , … , y t − 2 ∑ y t + 1 , … , y T P ( Y ∣ X ( i ) ) ) ⋅ f ( y t − 1 , y t , X ( i ) ) ] = ∑ t = 1 T ∑ y t − 1 ∑ y t [ P ( y t − 1 , y t ∣ X ( i ) ) ⋅ f ( y t − 1 , y t , X ( i ) ) ] \begin{align} & \nabla_{\lambda} \log{Z(X^{(i)}, \lambda, \eta)} \\ = & E_{Y|X^{(i)}}[f(y_{t-1}, y_t, X^{(i)})] \\ = & \sum_Y \left[ P(Y|X^{(i)}) \cdot \sum_{t=1}^T f(y_{t-1}, y_t, X^{(i)}) \right] \\ = & \sum_{t=1}^T \sum_Y \left[ P(Y|X^{(i)}) \cdot f(y_{t-1}, y_t, X^{(i)}) \right] \\ = & \sum_{t=1}^T \sum_{y_1,\dots,y_{t-2}} \sum_{y_{t-1}} \sum_{y_{t}} \sum_{y_{t+1},\dots,y_{T}} \left[ P(Y|X^{(i)}) \cdot f(y_{t-1}, y_t, X^{(i)}) \right] \\ = & \sum_{t=1}^T \sum_{y_{t-1}} \sum_{y_{t}} \left[ \left( \sum_{y_1,\dots,y_{t-2}} \sum_{y_{t+1},\dots,y_{T}} P(Y|X^{(i)}) \right) \cdot f(y_{t-1}, y_t, X^{(i)}) \right] \\ = & \sum_{t=1}^T \sum_{y_{t-1}} \sum_{y_{t}} \left[ P(y_{t-1}, y_t|X^{(i)}) \cdot f(y_{t-1}, y_t, X^{(i)}) \right] \\ \end{align} ======λlogZ(X(i),λ,η)EYX(i)[f(yt1,yt,X(i))]Y[P(YX(i))t=1Tf(yt1,yt,X(i))]t=1TY[P(YX(i))f(yt1,yt,X(i))]t=1Ty1,,yt2yt1ytyt+1,,yT[P(YX(i))f(yt1,yt,X(i))]t=1Tyt1yt[(y1,,yt2yt+1,,yTP(YX(i)))f(yt1,yt,X(i))]t=1Tyt1yt[P(yt1,ytX(i))f(yt1,yt,X(i))]
化简到这一步我们就发现, P ( y t − 1 , y t ∣ X ( i ) ) P(y_{t-1}, y_t|X^{(i)}) P(yt1,ytX(i))​和17.6中的求边缘概率相同,用相同方法可以求出其结果,所以梯度方向就可以得到为:
∇ λ L = ∑ i = 1 N ∑ t = 1 T [ f ( y t − 1 ( i ) , y t ( i ) , X ( i ) ) − ∑ y t − 1 ∑ y t ( P ( y t − 1 , y t ∣ X ( i ) ) ⋅ f ( y t − 1 , y t , X ( i ) ) ) ] \nabla_{\lambda}{\mathcal L} = \sum_{i=1}^N \sum_{t=1}^T \left[ f(y_{t-1}^{(i)}, y_t^{(i)}, X^{(i)}) - \sum_{y_{t-1}} \sum_{y_{t} }\left( P(y_{t-1}, y_t|X^{(i)}) \cdot f(y_{t-1}, y_t, X^{(i)}) \right) \right] λL=i=1Nt=1T[f(yt1(i),yt(i),X(i))yt1yt(P(yt1,ytX(i))f(yt1,yt,X(i)))]
若采用梯度上升法,迭代公式就是:
{ λ ( t + 1 ) = λ ( t ) + s t e p ⋅ ∇ λ L ( λ ( t ) , η ( t ) ) η ( t + 1 ) = η ( t ) + s t e p ⋅ ∇ η L ( λ ( t ) , η ( t ) ) \begin{cases} \lambda^{(t+1)} = \lambda^{(t)} + step \cdot \nabla_{\lambda}{\mathcal L} (\lambda^{(t)}, \eta^{(t)}) \\ \eta^{(t+1)} = \eta^{(t)} + step \cdot \nabla_{\eta}{\mathcal L} (\lambda^{(t)}, \eta^{(t)}) \\ \end{cases} {λ(t+1)=λ(t)+stepλL(λ(t),η(t))η(t+1)=η(t)+stepηL(λ(t),η(t))
但实际过程中,使用梯度上升的收敛速度比较慢,会采用别的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值