17 条件随机场

文章目录

  • 17 条件随机场——CRF(Condition Random Field)
    • 17.1 背景介绍
    • 17.2 HMM与MEMM的区别
    • 17.3 MEMM与CRF的区别
    • 17.4 CRF模型
      • 17.4.1 CRF的概率密度函数
      • 17.4.2 CRF概率密度函数简化(向量形式)
    • 17.5 CRF需要解决的问题
    • 17.6 边缘概率计算——marginal问题
    • 17.7 参数估计——Learning问题

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))
但实际过程中,使用梯度上升的收敛速度比较慢,会采用别的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27180.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

测试者必知—如何做Web测试?常见测试点总结

目录 前言: 一、Web应用程序 二、功能测试 三、易用性测试(界面测试) 四、兼容性测试 五、安全性测试 六、性能测试 前言: Web测试是指对基于Web技术的应用程序进行测试,以测试其功能、性能、安全和稳定性等方面的表…

【图书推荐 | 12】前端系列

【赠书活动第十二期 】 图书推荐 本期书籍:前端系列 图书列表: Vue.js核心技术解析Nuxt.js实战Nuxt.js Web开发实战HTML5CSS 从入门到精通Flutter2 开发实例精解Electron项目开发实战 Vue.js核心技术解析 Nuxt.js实战 Nuxt.js Web开发实战 HTML5CSS 从入…

【业务功能篇20】Springboot java逻辑实现动态行转列需求

在此前,我也写过一个行转列的文章,是用存储过程sql处理的一个动态的逻辑 Mysql 存储过程\Mybatis框架call调用 实现动态行转列 那么后面我们同样又接收了业务的一个新需求,针对的是不同的业务数据,做的同样的一个展示数据报表&…

VueX使用简明笔记

1、作用: vuex是使用vue中必不可少的一部分,基于父子、兄弟组件,我们传值可能会很方便,但是如果是没有关联的组件之间要使用同一组数据,就显得很无能为力,那么vuex就很好的解决了我们这种问题,…

MySQL数据库 – node使用

1 MySQL查询对象 2 MySQL查询数组 3 mysql2库介绍使用 4 mysql2预处理语句 5 mysql2连接池使用 6 mysql2的Promi 这里仅说明如何使用服务器连接数据库并进行操作。 预处理语句就是可以输入变量的语句(表现形式是有符号:?)。需…

portraiture宿主插件最新v4中文版本下载及使用教程

自拍怎么可以不修图呢?如果要修图的话,磨皮就是其中非常重要的一环。皮肤看起来细腻光滑了,整个人的颜值都会瞬间拉高。下面就让我们介绍一下磨皮用什么软件好用,什么软件可以手动磨皮的相关内容。portraiture是ps人像修图中常用的…

为何唐宋诗词鼎盛,而到了明清变成了小说

我国是一个历史悠久的国家,在漫长的历史长河中,随着朝代的更替,很多事也发生了有趣的变化。 例如唐宋时期盛行的是诗词,而到了明清时代,小说又开始盛行了起来,那么造成这种文风改变的原因是什么呢&#xf…

Java版本spring cloud 工程管理系统软件 系统源代码 自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…

实战案例|黑灰产肆虐,腾讯ACE一键打造清朗游戏世界

随着游戏行业的快速发展,相关黑色产业链的问题日益严重,各种外挂、违规内容、非法交易现象的出现破坏着游戏的生态,为行业带来诸多安全挑战,也影响着玩家们的游戏体验。越来越多游戏厂商开始重视游戏安全问题,并探索全…

华为OD机试真题 JavaScript 实现【最远足迹】【2022Q4 100分】,附详细解题思路

一、题目描述 某探险队负责对地下洞穴进行探险。探险队成员在进行探险任务时,随身携带的记录器会不定期地记录自身的坐标,但在记录的间隙中也会记录其他数据。探索工作结束后,探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足…

Mujoco210 Ubuntu 22.04配置安装(一)

目录 .1 下载 1.1 解压 1.2 许可问题 1.3 环境配置 1.4 测试mujoco .2 安装mujoco-py 2.1 conda激活虚拟环境\或新创建一个环境 2.2 下载mujoco-py ​编辑 2.3 配置环境变量 2.4 测试mujoco-py 2.5 测试时的一些报错处理 2.5.0 command /usr/bin/gcc failed with…

读写ini配置文件(C++)

文章目录 1、为什么要使用ini或者其它(例如xml,json)配置文件?2、ini文件基本介绍3、ini配置文件的格式4、C读写ini配置文件5、 代码示例6、 配置文件的解析库 文章转载于:https://blog.csdn.net/weixin_44517656/article/details/109014236 1、为什么要…

docker harbor私有仓库部署

docker harbor私有仓库部署 docker system prune -a 删除停掉的服务,自定义网络等。 docker 私有仓库 docker配置文件 vim /etc/docker.daemon.josn { “insecury-registries”: ["192.168.232.10:5000],#指定私有仓库 } docker pull/push 19…

防雪崩利器之Hystrix

Hystrix作为一个容错组件,本文从它的作用、熔断设计、工作流程和应用方面一一道来,帮助大家了解如何使用。 1、什么是灾难性雪崩效应 要讲Hystrix,我们就要讲一种场景,在微服务架构中,如果底层服务出现故障&#xff0…

BBA EDI 项目数据库方案开源介绍

近期为了帮助广大用户更好地使用 EDI 系统,我们根据以往的项目实施经验,将成熟的 EDI 项目进行开源。用户安装好知行之桥EDI系统之后,只需要下载我们整理好的示例代码,并放置在知行之桥指定的工作区中,即可开始使用。 …

Linux操作系统——第三章 基础IO

目录 接口介绍 open 文件描述符fd 0 & 1 & 2 文件描述符的分配规则 重定向 FILE 理解文件系统 inode ​编辑 理解硬链接 软链接 动态库和静态库 静态库与动态库 生成静态库 库搜索路径 生成动态库 使用动态库 运行动态库 使用外部库 接口介绍 o…

让小白也能看懂,ChatGPT入门级科普“十问十答”

由于现在GPT火热,360老板已经开始总动员. 白领的日常工作肯定是要发生颠覆性变化的。下面我们就通过自问自答的方式带领小白用户了解一下ChatGPT. 1、ChatGPT到底是什么? ChatGPT 是一个由美国人工智能公司 OpenAI 开发的自然语言处理(NLP&…

湖南大学OS-2019期末考试解析

【特别注意】 答案来源于@wolf以及网络 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 这张卷子有点老了,部分题目可能有用。如果仔细研究应该会有所收获。 【试卷与答案】 一、选择题(15%) 1、下面哪些行为会导致CPU进入内核模式 C (1)…

信噪比对重构算法的影响

前面分析了MP算法、OPM算法和SP算法的原理以及采样率对三种算法的影响。在实际的应用中,会混入噪声,没有噪声那是理想的情况,这里就研究一下信噪比对重构信号产生的MSE的影响。 1、 信噪比对MP算法的影响 首先研究信噪比对MP算法产生的影响…

基于VITS-fast-fine-tuning构建多speaker语音训练

1 VITS模型介绍 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)是一种语音合成方法,它使用预先训练好的语音编码器 (vocoder声码器) 将文本转化为语音。 VITS 的工作流程如下: &#xff0…