文章目录
- 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 背景介绍
从分类问题开始探讨,分类问题包含两部分,硬分类和软分类问题:
- 硬分类:
- SVM:通过几何间隔最大化实现分类
- PLA:通过错误驱动的感知机
- Linear Discriminant Analysis:类内小类间大的思想分类
- 软分类:又分成了概率判别模型与概率生成模型
- 概率判别模型
- Logistic Regression:通过对P(Z|X)建模进行求解
- Maximum Entropy Model:最大熵原理证明是指数族分布
- 概率生成模型
- Naives Bayes:通过朴素贝叶斯假设减少计算量
- Gaussian Mixture Model:将数据看为由多个高斯分布组成的混合模型
- Hidden Markov Model:建立齐次Markov假设+观测独立假设实现时间序列的模型
- 概率判别模型
本章通过打破了HMM的观测独立假设,实现了MEMM的概率判别模型,将数据关系变成如下图的形式:
但MEMM本身由于局部归一化的问题,会有标注偏差问题(label bias problem),所以为了解决这个问题提出了CRF的概率判别模型,数据关系转变为无向图,如下:
17.2 HMM与MEMM的区别
这一节主要讲我们是怎么从HMM过渡到MEMM的,以及我们为什么要过渡到MEMM。
首先我们分点介绍一下HMM:
-
HMM构造了两个假设:齐次一阶Markov假设(齐次是指隐状态变化与时间无关,只与转移矩阵相关,一阶是指链式)、观测独立假设
-
HMM中我们对 P ( X , Z ∣ λ ) P(X, Z| \lambda) P(X,Z∣λ)建模,是概率生成模型
-
通过因子分解,我们可以讲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=1∏TP(xt,zt∣λ)=P(x1∣z1,λ)t=2∏TP(zt∣zt−1,λ)P(xt∣zt,λ)
但是为让模型更加精确,我们提出了MEMM模型,然后介绍一下MEMM:
-
MEMM中我们打破了观测独立假设,每个隐状态都与全部观测变量相关:
-
MEMM是概率判别模型,对 P ( Z ∣ X , λ ) P(Z|X, \lambda) P(Z∣X,λ)建模
-
同样通过因子分解,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(Z∣X,λ)=P(Z1∣x1:T,λ)⋅t=2∏TP(zt∣zt−1,x1:T,λ)
相较于HMM,MEMM有两个主要的优点:
- 观测独立假设本身就是为了便于计算提出的,打破后更加合理
- 在链式模型中,概率判别模型更合适,也可以节省计算
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,y3∣rib) -
在给出rib的条件后会得出rob的结果。
而CRF解决了这个问题
17.4 CRF模型
上文一直是在介绍为什么要用CRF,以及CRF的合理性。本节开始介绍具体的CRF模型。
17.4.1 CRF的概率密度函数
CRF也叫条件随机场:
- 条件:概率判别式模型 P ( Y ∣ X ) P(Y|X) P(Y∣X)
- 随机场: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=1∏Kφi(XCi)=Z1i=1∏Kexp[−Ei(XCi)]=Z1expi=1∑KFi(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(Y∣X)写为:
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(Y∣X)=Z1expi=1∑KFi(XCi)
此时我们的应用场景是CRF,CRF的无向图是链式的,所以在
N
N
N个节点的情况下,最大团是
N
−
1
N-1
N−1个,为了简化公式,我们假设节点有
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(Y∣X)=Z1expt=1∑TF(yt−1,yt,x1:T)
为了继续简化,我们给出一些方法:
简化到这里,我们觉得 F ( y t − 1 , y t , x 1 : T ) F(y_{t-1}, y_t, x_{1:T}) F(yt−1,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(yt−1,yt,x1:T)=Δyt−1,x1:T+Δyt,x1:T+Δyt−1,yt,x1:T
我们发现,其实 Δ y t − 1 , x 1 : T \Delta_{y_{t-1}, x_{1:T}} Δyt−1,x1:T的部分,也会表示在 F ( y t − 2 , y t − 1 , x 1 : T ) F(y_{t-2}, y_{t-1}, x_{1:T}) F(yt−2,yt−1,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(yt−1,yt,x1:T)=Δyt,x1:T+Δyt−1,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}} Δyt−1,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} {Δyt−1,yt,x1:T=∑k=1Kλkfk(yt−1,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(Y∣X)=Z1expt=1∑T[k=1∑Kλkfk(yt−1,yt,x1:T)+l=1∑Lη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=
y1y2…yT
x=
x1x2…xT
λ=
λ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= f1f2…fK =f(yt−1,yt,x1:T)g= g1g2…gL =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=y∣X=x)=Z1expt=1∑T[k=1∑Kλkfk(yt−1,yt,x1:T)+l=1∑Lηlgl(yt,x1:T)]=Z(x,λ,η)1expt=1∑T[λTf(yt−1,yt,x1:T)+ηTg(yt,x1:T)]=Z(x,λ,η)1exp[λTt=1∑Tf(yt−1,yt,x1:T)+ηTt=1∑Tg(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=1Tf∑t=1Tg)K+L=H(yt,yt−1,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=y∣X=x)=Z(x,θ)1exp⟨θ,H⟩
17.5 CRF需要解决的问题
要求解CRF,还就是要求解概率图模型中的两大问题:
- Learning问题:
- parameter estimation——参数估计
- Inference问题:
- marginal problem——边缘概率求解:求 P ( y t ) P(y_t) P(yt)
- conditional problem——后验求解:求 P ( Y ∣ X ) P(Y|X) P(Y∣X)
- MAP Inference——decoding问题:求解最大后验概率状态序列,如HMM中
针对CRF来说,这些问题主要是求解:
-
Learning问题:
- 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)}) θ^=argmax∏i=1NP(y(i),x(i))
-
Inference问题:
- marginal problem:求 P ( y t ∣ x ) P(y_t|x) P(yt∣x)
- conditional problem:针对生成模型,因为 P ( Y ∣ X ) P(Y|X) P(Y∣X)就是CRF的假设的分布,所以这个问题不用求
- MAP Inference:求解 y ^ = a r g max y P ( Y ∣ X ) {\hat y} = arg\max_{y} P(Y|X) y^=argmaxyP(Y∣X),与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(Y∣X)=Z1t=1∏Tφ(yt−1,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=i∣X)=y1…yt−1yt+1…yT∑P(Y∣X)=y1…yt−1∑yt+1…yT∑Z1t=1∏Tφ(yt−1,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=i∣X)=y1…yt−1∑yt+1…yT∑Z1t=1∏Tφ(yt−1,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=y1…yt−1∑φ1(y0,y1,X)⋯⋅φt(yt−1,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=yt−1∑(φt(yt−1,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)=j∈S∑[φt(yt−1=j,yt=i,X)⋅αt−1(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)⋯yT−1∑(φT−1(yT−2,yT−1,X)yT∑φT(yT−1,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)=j∈S∑[φ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=i∣X)=Z1αt(i)βt(i)αt(i)=∑j∈S[φt(yt−1=j,yt=i,X)⋅αt−1(j)]βt(i)=∑j∈S[φ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=1∏NP(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(Y∣X)=Z(x,λ,η)1exp∑t=1T[λTf(yt−1,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=1∏NP(Y(i),X(i))=argλ,ηmaxi=1∑NlogP(Y(i),X(i))=argλ,ηmaxi=1∑N(−logZ(X(i),λ,η)+t=1∑T[λTf(yt−1(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(yt−1(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=1∑N(t=1∑Tf(yt−1(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),λ,η)EY∣X(i)[f(yt−1,yt,X(i))]Y∑[P(Y∣X(i))⋅t=1∑Tf(yt−1,yt,X(i))]t=1∑TY∑[P(Y∣X(i))⋅f(yt−1,yt,X(i))]t=1∑Ty1,…,yt−2∑yt−1∑yt∑yt+1,…,yT∑[P(Y∣X(i))⋅f(yt−1,yt,X(i))]t=1∑Tyt−1∑yt∑[(y1,…,yt−2∑yt+1,…,yT∑P(Y∣X(i)))⋅f(yt−1,yt,X(i))]t=1∑Tyt−1∑yt∑[P(yt−1,yt∣X(i))⋅f(yt−1,yt,X(i))]
化简到这一步我们就发现,
P
(
y
t
−
1
,
y
t
∣
X
(
i
)
)
P(y_{t-1}, y_t|X^{(i)})
P(yt−1,yt∣X(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=1∑Nt=1∑T[f(yt−1(i),yt(i),X(i))−yt−1∑yt∑(P(yt−1,yt∣X(i))⋅f(yt−1,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))
但实际过程中,使用梯度上升的收敛速度比较慢,会采用别的方法。