条件随机场
我们知道,分类问题可以分为硬分类和软分类两种,其中硬分类有 SVM,PLA,LDA 等。软分类问题大体上可以分为概率生成和概率判别模型,其中较为有名的概率判别模型有 Logistic 回归,生成模型有朴素贝叶斯模型。Logistic 回归模型的损失函数为交叉熵,这类模型也叫对数线性模型,一般地,又叫做最大熵模型,这类模型和指数族分布的概率假设是一致的。对朴素贝叶斯假设,如果将其中的单元素的条件独立性做推广到一系列的隐变量,那么,由此得到的模型又被称为动态模型,比较有代表性的如 HMM,从概率意义上,HMM也可以看成是 GMM 在时序上面的推广。
我们看到,一般地,如果将最大熵模型和 HMM相结合,那么这种模型叫做最大熵 Markov 模型(MEMM):
这个图就是将 HMM 的图中观测变量和隐变量的边方向反向,应用在分类中,隐变量就是输出的分类,这样 HMM 中的两个假设就不成立了,特别是观测之间不是完全独立的了。
HMM 是一种生成式模型,其建模对象为 p ( X , Y ∣ λ ) p(X,Y|\lambda) p(X,Y∣λ),根据 HMM 的概率图, p ( X , Y ∣ λ ) = ∏ t = 1 T p ( x t , y t ∣ λ , y t − 1 ) p(X,Y|\lambda)=\prod\limits_{t=1}^Tp(x_t,y_t|\lambda,y_{t-1}) p(X,Y∣λ)=t=1∏Tp(xt,yt∣λ,yt−1)。我们看到,观测独立性假设是一个很强的假设,如果我们有一个文本样本,那么观测独立性假设就假定了所有的单词之间没有关联。
在 MEMM 中,建模对象是 p ( Y ∣ X , λ ) p(Y|X,\lambda) p(Y∣X,λ),我们看概率图,给定 y t y_t yt, x t , x t − 1 x_t,x_{t-1} xt,xt−1 是不独立的,这样,观测独立假设就不成立了。根据概率图, p ( Y ∣ X , λ ) = ∏ t = 1 T p ( y t ∣ y t − 1 , X , λ ) p(Y|X,\lambda)=\prod\limits_{t=1}^Tp(y_t|y_{t-1},X,\lambda) p(Y∣X,λ)=t=1∏Tp(yt∣yt−1,X,λ)。
MEMM 的缺陷是其必须满足局域的概率归一化(Label Bias Problem),我们看到,在上面的概率图中, p ( y t ∣ y t − 1 , x t ) p(y_t|y_{t-1},x_t) p(yt∣yt−1,xt), 这个概率,如果 p ( y t ∣ y t − 1 ) p(y_t|y_{t-1}) p(yt∣yt−1) 非常接近1,那么事实上,观测变量是什么就不会影响这个概率了。
对于这个问题,我们将 y y y 之间的箭头转为直线转为无向图(线性链条件随机场),这样就只要满足全局归一化了(破坏齐次 Markov 假设)。
CRF 的 PDF
线性链的 CRF 的 PDF 为 p ( Y ∣ X ) = 1 Z exp ∑ t = 1 T ( F t ( y t − 1 , y t , x 1 : T ) ) p(Y|X)=\frac{1}{Z}\exp\sum\limits_{t=1}^T(F_t(y_{t-1},y_t,x_{1:T})) p(Y∣X)=Z1expt=1∑T(Ft(yt−1,yt,x1:T)),两两形成了最大团,其中 y 0 y_0 y0 是随意外加的一个元素。作为第一个简化,我们假设每个团的势函数相同 F t = F F_t=F Ft=F。
对于这个 F F F,我们进一步,可以将其写为 F ( y t − 1 , y t , X ) = Δ y t − 1 , X + Δ y t , X + Δ y t , y t − 1 , X F(y_{t-1},y_t,X)=\Delta_{y_{t-1},X}+\Delta_{y_{t},X}+\Delta_{y_t,y_{t-1},X} F(yt−1,yt,X)=Δyt−1,X+Δyt,X+Δyt,yt−1,X这三个部分,分别表示状态函数已经转移函数,由于整体的求和,可以简化为 $ F(y_{t-1},y_t,X)=\Delta_{y_{t},X}+\Delta_{y_t,y_{t-1},X}$。
我们可以设计一个表达式将其参数化:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \Delta_{y_t,y_…
其中 $g,f $ 叫做特征函数,对于
y
y
y 有
S
S
S 种元素,那么
K
≤
S
2
,
L
≤
S
K\le S^2,L\le S
K≤S2,L≤S。
代入概率密度函数中:
p
(
Y
∣
X
)
=
1
Z
exp
∑
t
=
1
T
[
∑
k
=
1
K
λ
k
f
k
(
y
t
−
1
,
y
t
,
X
)
+
∑
l
=
1
L
η
l
g
l
(
y
t
,
X
)
]
p(Y|X)=\frac{1}{Z}\exp\sum\limits_{t=1}^T[\sum\limits_{k=1}^K\lambda_kf_k(y_{t-1},y_t,X)+\sum\limits_{l=1}^L\eta_lg_l(y_t,X)]
p(Y∣X)=Z1expt=1∑T[k=1∑Kλkfk(yt−1,yt,X)+l=1∑Lηlgl(yt,X)]
对于单个样本,将其写成向量的形式。定义
y
=
(
y
1
,
y
2
,
⋯
,
y
T
)
T
,
x
=
(
x
1
,
x
2
,
⋯
,
x
T
)
T
,
λ
=
(
λ
1
,
λ
2
,
⋯
,
λ
K
)
T
,
η
=
(
η
1
,
η
2
,
⋯
,
η
L
)
T
y=(y_1,y_2,\cdots,y_T)^T,x=(x_1,x_2,\cdots,x_T)^T,\lambda=(\lambda_1,\lambda_2,\cdots,\lambda_K)^T,\eta=(\eta_1,\eta_2,\cdots,\eta_L)^T
y=(y1,y2,⋯,yT)T,x=(x1,x2,⋯,xT)T,λ=(λ1,λ2,⋯,λK)T,η=(η1,η2,⋯,ηL)T。并且有
f
=
(
f
1
,
f
2
,
⋯
,
f
K
)
T
,
g
=
(
g
1
,
g
2
,
⋯
,
g
L
)
T
f=(f_1,f_2,\cdots,f_K)^T,g=(g_1,g_2,\cdots,g_L)^T
f=(f1,f2,⋯,fK)T,g=(g1,g2,⋯,gL)T。于是:
p
(
Y
=
y
∣
X
=
x
)
=
1
Z
exp
∑
t
=
1
T
[
λ
T
f
(
y
t
−
1
,
y
t
,
x
)
+
η
T
g
(
y
t
,
x
)
]
p(Y=y|X=x)=\frac{1}{Z}\exp\sum\limits_{t=1}^T[\lambda^Tf(y_{t-1},y_t,x)+\eta^Tg(y_t,x)]
p(Y=y∣X=x)=Z1expt=1∑T[λTf(yt−1,yt,x)+ηTg(yt,x)]
不妨记:
θ
=
(
λ
,
η
)
T
,
H
=
(
∑
t
=
1
T
f
,
∑
t
=
1
T
g
)
T
\theta=(\lambda,\eta)^T,H=(\sum\limits_{t=1}^Tf,\sum\limits_{t=1}^Tg)^T
θ=(λ,η)T,H=(t=1∑Tf,t=1∑Tg)T:
p
(
Y
=
y
∣
X
=
x
)
=
1
Z
(
x
,
θ
)
exp
[
θ
T
H
(
y
t
,
y
t
−
1
,
x
)
]
p(Y=y|X=x)=\frac{1}{Z(x,\theta)}\exp[\theta^TH(y_t,y_{t-1},x)]
p(Y=y∣X=x)=Z(x,θ)1exp[θTH(yt,yt−1,x)]
上面这个式子是一个指数族分布,于是
Z
Z
Z 是配分函数。
CRF 需要解决下面几个问题:
-
Learning:参数估计问题,对 N N N 个 T T T 维样本, θ ^ = a r g m a x θ ∏ i = 1 N p ( y i ∣ x i ) \hat{\theta}=\mathop{argmax}\limits_{\theta}\prod\limits_{i=1}^Np(y^i|x^i) θ^=θargmaxi=1∏Np(yi∣xi),这里用上标表示样本的编号。
-
Inference:
- 边缘概率:
p ( y t ∣ x ) p(y_t|x) p(yt∣x)
- 边缘概率:
-
条件概率:一般在生成模型中较为关注,CRF 中不关注
-
MAP 推断:
y ^ = a r g m a x p ( y ∣ x ) \hat{y}=\mathop{argmax}p(y|x) y^=argmaxp(y∣x)
边缘概率
边缘概率这个问题描述为,根据学习任务得到的参数,给定了
p
(
Y
=
y
∣
X
=
x
)
p(Y=y|X=x)
p(Y=y∣X=x),求解
p
(
y
t
=
i
∣
x
)
p(y_t=i|x)
p(yt=i∣x)。根据无向图可以给出:
p
(
y
t
=
i
∣
x
)
=
∑
y
1
:
t
−
1
,
y
t
+
1
:
T
p
(
y
∣
x
)
=
∑
y
1
:
t
−
1
∑
y
t
+
1
:
T
1
Z
∏
t
′
=
1
T
ϕ
t
′
(
y
t
′
−
1
,
y
t
′
,
x
)
p(y_t=i|x)=\sum\limits_{y_{1:t-1},y_{t+1:T}}p(y|x)=\sum\limits_{y_{1:t-1}}\sum\limits_{y_{t+1:T}}\frac{1}{Z}\prod\limits_{t'=1}^T\phi_{t'}(y_{t'-1},y_{t'},x)
p(yt=i∣x)=y1:t−1,yt+1:T∑p(y∣x)=y1:t−1∑yt+1:T∑Z1t′=1∏Tϕt′(yt′−1,yt′,x)
我们看到上面的式子,直接计算的复杂度很高,这是由于求和的复杂度在
O
(
S
T
)
O(S^T)
O(ST),求积的复杂度在
O
(
T
)
O(T)
O(T),所以整体复杂度为
O
(
T
S
T
)
O(TS^T)
O(TST)。我们需要调整求和符号的顺序,从而降低复杂度。
首先,将两个求和分为:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲&p(y_t=i|x)=\fr…
对于
Δ
l
\Delta_l
Δl,从左向右,一步一步将
y
t
y_t
yt 消掉:
Δ
l
=
∑
y
t
−
1
ϕ
t
(
y
t
−
1
,
y
t
=
i
,
x
)
∑
y
t
−
2
ϕ
t
−
1
(
y
t
−
2
,
y
t
−
1
,
x
)
⋯
∑
y
0
ϕ
1
(
y
0
,
y
1
,
x
)
\Delta_l=\sum\limits_{y_{t-1}}\phi_t(y_{t-1},y_t=i,x)\sum\limits_{y_{t-2}}\phi_{t-1}(y_{t-2},y_{t-1},x)\cdots\sum\limits_{y_0}\phi_1(y_0,y_1,x)
Δl=yt−1∑ϕt(yt−1,yt=i,x)yt−2∑ϕt−1(yt−2,yt−1,x)⋯y0∑ϕ1(y0,y1,x)
引入:
α
t
(
i
)
=
Δ
l
\alpha_t(i)=\Delta_l
αt(i)=Δl
于是:
α
t
(
i
)
=
∑
j
∈
S
ϕ
t
(
y
t
−
1
=
j
,
y
t
=
i
,
x
)
α
t
−
1
(
j
)
\alpha_{t}(i)=\sum\limits_{j\in S}\phi_t(y_{t-1}=j,y_t=i,x)\alpha_{t-1}(j)
αt(i)=j∈S∑ϕt(yt−1=j,yt=i,x)αt−1(j)
这样我们得到了一个递推式。
类似地, Δ r = β t ( i ) = ∑ j ∈ S ϕ t + 1 ( y t = i , y t + 1 = j , x ) β t + 1 ( j ) \Delta_r=\beta_t(i)=\sum\limits_{j\in S}\phi_{t+1}(y_t=i,y_{t+1}=j,x)\beta_{t+1}(j) Δr=βt(i)=j∈S∑ϕt+1(yt=i,yt+1=j,x)βt+1(j)。这个方法和 HMM 中的前向后向算法类似,就是概率图模型中精确推断的变量消除算法(信念传播)。
参数估计
在进行各种类型的推断之前,还需要对参数进行学习:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲\hat{\theta}&=\…
上面的式子中,第一项是对数配分函数,根据指数族分布的结论:
∇
λ
(
log
Z
(
x
i
,
λ
,
η
)
)
=
E
p
(
y
i
∣
x
i
)
[
∑
t
=
1
T
f
(
y
t
−
1
,
y
t
,
x
i
)
]
\nabla_\lambda(\log Z(x^i,\lambda,\eta))=\mathbb{E}_{p(y^i|x^i)}[\sum\limits_{t=1}^Tf(y_{t-1},y_t,x^i)]
∇λ(logZ(xi,λ,η))=Ep(yi∣xi)[t=1∑Tf(yt−1,yt,xi)]
其中,和
η
\eta
η 相关的项相当于一个常数。求解这个期望值:
E
p
(
y
i
∣
x
i
)
[
∑
t
=
1
T
f
(
y
t
−
1
,
y
t
,
x
i
)
]
=
∑
y
p
(
y
∣
x
i
)
∑
t
=
1
T
f
(
y
t
−
1
,
y
t
,
x
i
)
\mathbb{E}_{p(y^i|x^i)}[\sum\limits_{t=1}^Tf(y_{t-1},y_t,x^i)]=\sum\limits_{y}p(y|x^i)\sum\limits_{t=1}^Tf(y_{t-1},y_t,x^i)
Ep(yi∣xi)[t=1∑Tf(yt−1,yt,xi)]=y∑p(y∣xi)t=1∑Tf(yt−1,yt,xi)
第一个求和号的复杂度为
O
(
S
T
)
O(S^T)
O(ST),重新排列求和符号:
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲\mathbb{E}_{p(y…
和上面的边缘概率类似,也可以通过前向后向算法得到上面式子中的边缘概率。
于是:
∇
λ
L
=
∑
i
=
1
N
∑
t
=
1
T
[
f
(
y
t
−
1
,
y
t
,
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 L=\sum\limits_{i=1}^N\sum\limits_{t=1}^T[f(y_{t-1},y_t,x^i)-\sum\limits_{y_{t-1}}\sum\limits_{y_t}p(y_{t-1},y_t|x^i)f(y_{t-1},y_t,x^i)]
∇λL=i=1∑Nt=1∑T[f(yt−1,yt,xi)−yt−1∑yt∑p(yt−1,yt∣xi)f(yt−1,yt,xi)]
利用梯度上升算法可以求解。对于
η
\eta
η 也是类似的过程。
译码
译码问题和 HMM 中的 Viterbi 算法类似,同样采样动态规划的思想一层一层求解最大值。