一、前言
概率模型的中心任务就是求潜变量的后验概率分布
p
(
Z
∣
X
)
p(Z|X)
p(Z∣X),以及关于该后验的期望。前者是推断,后者是决策。
为什么决策是关于后验的期望? 见如下推导:
p
(
x
~
∣
X
)
=
∫
Z
p
(
x
~
∣
Z
)
p
(
Z
∣
X
)
d
Z
=
E
p
(
Z
∣
X
)
[
p
(
x
~
∣
Z
)
]
\begin{align*} p(\tilde{x}|X) &= \int_{Z}p(\tilde{x}|Z)p(Z|X)\,{\rm d}Z \\ &= \mathbb{E}_{p(Z|X)}\,[p(\tilde{x}|Z)] \end{align*}
p(x~∣X)=∫Zp(x~∣Z)p(Z∣X)dZ=Ep(Z∣X)[p(x~∣Z)]由此可见,对于后验概率分布的求解是十分重要的。但是,实际上后验分布很难求,原因主要有两点:潜在空间维度过高;后验分布形式复杂。具体地,对于连续型随机变量,积分可能没有解析解,同时由于空间维度过高和被积函数复杂导致没有数值解;对于离散型随机变量,理论上是可以计算的,但是隐含状态的数量可能有指数多个,从而导致精确计算的计算代价过大。
因此精确推断一般是不可行的,需要使用近似推断。大体分为随机近似和确定近似:
(1)随机近似 :这种近似方法的特点是假如我们能给无限的计算资源,他可以生成精确的结果。马尔科夫链蒙特卡洛方法就是一种随机近似。
(2)确定近似:这种方法的特点是永远无法生成精确的解。该方法一般假设后验分布可以通过一种特定的方式分解,或者有一个具体的参数形式(例如,高斯分布)。本节介绍的变分推断就是一种确定近似。
二、变分推断
在进行推导之前,需要明确两个概念:泛函和变分。
泛函: 简单来说,泛函就是一个映射,该映射接受一个函数作为输入,返回一个值作为输出。机器学习中一个典型的例子就是熵
H
[
p
]
H[p]
H[p]。
H
[
P
]
=
−
∫
p
(
x
)
l
n
p
(
x
)
d
x
H[P]=-\int p(x){\rm ln}p(x)\,{\rm d}x
H[P]=−∫p(x)lnp(x)dx变分法: 传统的微积分中,我们讨论的是
x
x
x值的微小变化对函数
y
(
x
)
y(x)
y(x)的影响。在变分法中,我们关心的是函数
y
(
x
)
y(x)
y(x)的微小变化对泛函
F
(
y
)
F(y)
F(y)的影响。从而,在变分法中,我们可以寻找一个
y
(
x
)
y(x)
y(x)来最大化或者最小化泛函
F
(
y
)
F(y)
F(y)。
现在,我们利用变分法的思想,将后验概率分布看做是一类函数,我们的目的在于寻找一个后验概率分布,使得其对应的泛函最大或最小。从而我们关注,这个泛函具体是什么? 很自然地,在概率角度,我们一般都是希望对数似然能够最大,所以我们先将对数似然作为泛函,然后看看是否能够进一步化简。
我们定义
X
X
X为观测变量,
Z
Z
Z为潜在变量和参数,推导如下:
l
o
g
p
(
X
)
=
l
o
g
p
(
X
,
Z
)
−
l
o
g
p
(
Z
∣
X
)
=
l
o
g
p
(
X
,
Z
)
q
(
Z
)
−
l
o
g
p
(
Z
∣
X
)
q
(
Z
)
\begin{align*} {\rm log}\,p(X)&={\rm log}\,p(X,Z)-{\rm log}\,p(Z|X) \\ &={\rm log}\,\frac {p(X,Z)}{q(Z)}-{\rm log}\,\frac {p(Z|X)}{q(Z)} \end{align*}
logp(X)=logp(X,Z)−logp(Z∣X)=logq(Z)p(X,Z)−logq(Z)p(Z∣X)等式两边同时对
q
(
Z
)
q(Z)
q(Z)求期望
左边
=
∫
Z
q
(
Z
)
l
o
g
p
(
X
)
d
Z
=
l
o
g
p
(
X
)
∫
Z
q
(
Z
)
d
Z
=
l
o
g
p
(
X
)
左边=\int_{Z}q(Z){\rm log}\,p(X)\,{\rm d}Z={\rm log}\,p(X)\int_{Z}q(Z)\,{\rm d}Z={\rm log}\,p(X)
左边=∫Zq(Z)logp(X)dZ=logp(X)∫Zq(Z)dZ=logp(X)
右边
=
∫
Z
q
(
Z
)
l
o
g
p
(
X
,
Z
)
q
(
Z
)
d
Z
⏟
E
L
B
O
−
∫
Z
q
(
Z
)
l
o
g
p
(
Z
∣
X
)
q
(
Z
)
d
Z
⏟
K
L
(
q
∣
∣
p
)
\begin{matrix} 右边= \underbrace{ \int_{Z}q(Z){\rm log}\,\frac {p(X,Z)}{q(Z)}\,{\rm d}Z }_{ELBO} \underbrace{ -\int_{Z}q(Z){\rm log}\,\frac {p(Z|X)}{q(Z)}\,{\rm d}Z }_{KL(q||p)} \end{matrix}
右边=ELBO
∫Zq(Z)logq(Z)p(X,Z)dZKL(q∣∣p)
−∫Zq(Z)logq(Z)p(Z∣X)dZ因此
l
o
g
p
(
X
)
=
E
L
B
O
+
K
L
(
q
∣
∣
p
)
{\rm log}\,p(X)=ELBO+KL(q||p)
logp(X)=ELBO+KL(q∣∣p)
由KL Divergence的性质可知,其大于等于0。当且仅当两个分布相等时,KL Divergence为0。所以,当KL Divergence最小时,
E
L
B
O
ELBO
ELBO最大。那么换句话说,只要我们取一个
q
(
Z
)
q(Z)
q(Z)使得
E
L
B
O
ELBO
ELBO最大,那么此时的KL Divergence最小,即可以认为
q
(
Z
)
q(Z)
q(Z)接近于
p
(
Z
∣
X
)
p(Z|X)
p(Z∣X)。从而,我们的泛函由对数似然变为了
E
L
B
O
ELBO
ELBO。
即,此时我们的目标为
q
(
Z
)
=
arg
max
q
E
L
B
O
q(Z) = \mathop{\arg\max}\limits_{q}\,ELBO
q(Z)=qargmaxELBO从而,我们需要限制
q
(
Z
)
q(Z)
q(Z)的类别范围,使得其能够被我们计算,并使得这个范围足够大,能够对后验分布进行较好的近似。限制范围的方法有很多,本文只介绍经典的变分推断。
我们假设随机变量
Z
Z
Z可以划分为若干个互不相关、彼此独立的组,即
Z
=
{
Z
i
∣
i
=
1
,
2
,
.
.
.
,
M
}
Z=\{Z_i|i=1,2,...,M\}
Z={Zi∣i=1,2,...,M}。该假设的这种分解形式在统计物理学中对应于平均场理论。
则
q
(
Z
)
q(Z)
q(Z)可以表示为
q
(
Z
)
=
∏
i
=
1
M
q
i
q(Z)=\prod_{i=1}^M\,q_i
q(Z)=i=1∏Mqi式中,我们将
q
i
(
Z
i
)
q_i(Z_i)
qi(Zi)记为
q
i
q_i
qi。
因此,我们现在目的是找一系列的
q
i
q_i
qi使得
E
B
L
O
EBLO
EBLO达到最大。在变分推断中,我们对每个
q
i
q_i
qi进行最优化,从而完成整体的最优化。因此,我们在一次优化过程中,只需要关注一个因子就可以,假设当前我们关注的因子是
q
j
q_j
qj,我们将
E
L
B
O
ELBO
ELBO进行如下化简
E
L
B
O
=
∫
Z
∏
i
=
1
M
q
i
[
l
o
g
p
(
X
,
Z
)
−
l
o
g
∏
k
=
1
M
q
k
]
d
Z
=
∫
Z
q
j
[
∏
i
≠
j
q
i
l
o
g
p
(
X
,
Z
)
]
d
Z
⏟
L
e
f
t
−
∫
Z
∏
i
=
0
M
q
i
∑
k
=
1
M
l
o
g
q
k
d
Z
⏟
R
i
g
h
t
\begin{align*} ELBO &= \int_Z \prod_{i=1}^M q_i [{\rm log}\,p(X,Z)-{\rm log}\prod_{k=1}^M q_k]\,{\rm d}Z \\ &\begin{matrix}\,\,= \underbrace{ \int_Z q_j[\prod_{i \neq j}q_i {\rm log}\,p(X,Z)]\,{\rm d}Z}_{Left} - \underbrace{\int_Z \prod_{i=0}^M q_i \sum_{k=1}^M {\rm log}\,q_k\,{\rm d}Z}_{Right} \end{matrix} \end{align*}
ELBO=∫Zi=1∏Mqi[logp(X,Z)−logk=1∏Mqk]dZ=Left
∫Zqj[i=j∏qilogp(X,Z)]dZ−Right
∫Zi=0∏Mqik=1∑MlogqkdZ我们分别对
L
e
f
t
Left
Left和
R
i
g
h
t
Right
Right进行计算
L
e
f
t
=
∫
Z
j
q
j
[
∫
Z
i
≠
j
∏
i
≠
j
q
i
l
o
g
p
(
X
,
Z
)
d
Z
i
≠
j
]
d
Z
j
=
∫
Z
j
q
j
E
i
≠
j
[
l
o
g
p
(
X
,
Z
)
]
d
Z
j
R
i
g
h
t
=
∫
Z
∏
i
=
0
M
q
i
l
o
g
q
j
d
Z
+
C
1
=
∫
Z
j
q
j
l
o
g
q
j
d
Z
j
∏
i
≠
j
∫
Z
i
q
i
d
Z
i
+
C
1
=
∫
Z
j
q
j
l
o
g
q
j
d
Z
j
+
C
1
\begin{align*} Left &= \int_{Z_j} q_j[\int_{Z_{i \neq j}}\prod_{i \neq j}q_i {\rm log}\,p(X,Z)\,{\rm d}Z_{i \neq j}]\,{\rm d}Z_j \\ &= \int_{Z_j}q_j \mathbb{E}_{i \neq j}[{\rm log}\,p(X,Z)]\,{\rm d}Z_j \\ Right &= \int_Z \prod_{i=0}^M q_i {\rm log}\,q_j\,{\rm d}Z+C_1 \\ &= \int_{Z_j}q_j{\rm log} \, q_j \, {\rm d}Z_j \prod_{i \neq j}\int_{Z_i}q_i\,{\rm d}Z_i +C_1 \\ &= \int_{Z_j}q_j{\rm log} \, q_j \, {\rm d}Z_j+C_1 \end{align*}
LeftRight=∫Zjqj[∫Zi=ji=j∏qilogp(X,Z)dZi=j]dZj=∫ZjqjEi=j[logp(X,Z)]dZj=∫Zi=0∏MqilogqjdZ+C1=∫ZjqjlogqjdZji=j∏∫ZiqidZi+C1=∫ZjqjlogqjdZj+C1其中,
C
1
=
−
∫
Z
∏
i
=
0
M
q
i
∑
i
≠
j
l
o
g
q
j
d
Z
C_1=-\int_Z \prod_{i=0}^M q_i \sum_{i \neq j} {\rm log}\,q_j\,{\rm d}Z
C1=−∫Z∏i=0Mqi∑i=jlogqjdZ
同时,我们令
l
o
g
p
~
(
X
,
Z
j
)
=
E
i
≠
j
[
l
o
g
p
(
X
,
Z
)
]
+
C
2
{\rm log}\,\tilde{p}(X,Z_j)=\mathbb{E}_{i \neq j}[{\rm log}\,p(X,Z)]+C_2
logp~(X,Zj)=Ei=j[logp(X,Z)]+C2(注意这里的
C
2
C_2
C2是用于归一化的,因为等式左边是对一个概率取对数,所以需要保证概率的性质,后面也会展示
C
2
C_2
C2的值),则
E
L
B
O
ELBO
ELBO最终化为
E
L
B
O
=
∫
Z
j
q
j
E
i
≠
j
[
l
o
g
p
(
X
,
Z
)
]
d
Z
j
−
∫
Z
j
q
j
l
o
g
q
j
d
Z
j
−
C
1
=
∫
Z
j
q
j
l
o
g
p
~
(
X
,
Z
j
)
q
j
d
Z
j
+
C
3
=
−
K
L
(
q
j
∣
∣
p
~
(
X
,
Z
j
)
)
+
C
3
\begin{align*} ELBO &= \int_{Z_j}q_j \mathbb{E}_{i \neq j}[{\rm log}\,p(X,Z)]\,{\rm d}Z_j-\int_{Z_j}q_j{\rm log} \, q_j \, {\rm d}Z_j-C_1 \\ &= \int_{Z_j}q_j {\rm log}\frac{\tilde{p}(X,Z_j)}{q_j}\, {\rm d}Z_j + C_3 \\ &=-KL(q_j||\tilde{p}(X,Z_j)) +C_3 \end{align*}
ELBO=∫ZjqjEi=j[logp(X,Z)]dZj−∫ZjqjlogqjdZj−C1=∫Zjqjlogqjp~(X,Zj)dZj+C3=−KL(qj∣∣p~(X,Zj))+C3显然,当
q
j
q_j
qj逼近于
p
~
(
X
,
Z
j
)
\tilde{p}(X,Z_j)
p~(X,Zj)时,
E
L
B
O
ELBO
ELBO能够取得最大值,即
l
o
g
q
j
∗
(
Z
j
)
=
E
i
≠
j
[
l
o
g
p
(
X
,
Z
)
]
+
C
2
{\rm log}\,q_j^*(Z_j)=\mathbb{E}_{i \neq j}[{\rm log}\,p(X,Z)]+C_2
logqj∗(Zj)=Ei=j[logp(X,Z)]+C2式中,
q
j
∗
(
Z
j
)
q_j^*(Z_j)
qj∗(Zj)为当前时刻
q
j
q_j
qj的最优解。
注意到,上式中有一个归一化常数,我们推导一下他的表达式:
q
j
∗
(
Z
j
)
=
e
x
p
{
E
i
≠
j
[
l
o
g
p
(
X
,
Z
)
]
+
C
2
}
∫
Z
j
q
j
∗
(
Z
j
)
d
Z
j
=
e
x
p
{
C
2
}
∫
Z
j
e
x
p
{
E
i
≠
j
[
l
o
g
p
(
X
,
Z
)
]
}
d
Z
j
C
2
=
l
o
g
1
∫
Z
j
e
x
p
{
E
i
≠
j
[
l
o
g
p
(
X
,
Z
)
]
}
d
Z
j
\begin{align*} q_j^*(Z_j) &=exp\{ \mathbb{E}_{i \neq j}[{\rm log}\,p(X,Z)]+C_2\} \\ \int_{Z_j} q_j^*(Z_j) {\rm d}Z_j &= exp\{ C_2 \} \int_{Z_j} exp\{ \mathbb{E}_{i \neq j}[{\rm log}\,p(X,Z)]\}{\rm d}Z_j \\ C_2&= {\rm log} \frac{1}{ \int_{Z_j} exp\{ \mathbb{E}_{i \neq j}[{\rm log}\,p(X,Z)]\}{\rm d}Z_j} \\ \end{align*}
qj∗(Zj)∫Zjqj∗(Zj)dZjC2=exp{Ei=j[logp(X,Z)]+C2}=exp{C2}∫Zjexp{Ei=j[logp(X,Z)]}dZj=log∫Zjexp{Ei=j[logp(X,Z)]}dZj1至此
q
j
q_j
qj求解完毕。
最后,我们使用坐标上升(Coordinate Ascent)法更新所有的因子。即
- 初始化所有的 q i q_i qi,令 t = 0 t=0 t=0
- 第
t
t
t次迭代:
固定 q 2 ( t − 1 ) , q 3 ( t − 1 ) , . . . , q M ( t − 1 ) q_2^{(t-1)}, q_3^{(t-1)},...,q_M^{(t-1)} q2(t−1),q3(t−1),...,qM(t−1),计算 q 1 ( t ) q_1^{(t)} q1(t)
固定 q 1 ( t ) , q 3 ( t − 1 ) , . . . , q M ( t − 1 ) q_1^{(t)}, q_3^{(t-1)},...,q_M^{(t-1)} q1(t),q3(t−1),...,qM(t−1),计算 q 2 ( t ) q_2^{(t)} q2(t)
固定 q 1 ( t ) , q 2 ( t ) , q 4 ( t − 1 ) . . . , q M ( t − 1 ) q_1^{(t)}, q_2^{(t)},q_4^{(t-1)}...,q_M^{(t-1)} q1(t),q2(t),q4(t−1)...,qM(t−1),计算 q 3 ( t ) q_3^{(t)} q3(t)
⋮ \vdots ⋮
固定 q 1 ( t ) , q 2 ( t ) , . . . , q M − 1 ( t ) q_1^{(t)}, q_2^{(t)},...,q_{M-1}^{(t)} q1(t),q2(t),...,qM−1(t),计算 q M ( t ) q_M^{(t)} qM(t) - 回到第2步,进行第
t
+
1
t+1
t+1次迭代,直至收敛
该算法能够保证收敛,因为下界关于每个 q i q_i qi都是一个凸函数。
但是经典的基于平均场理论的变分推断仍然存在问题:
- 平均场理论假设过强
- 期望的计算在某些情况下仍然是不可行的
参考资料
《Pattern Recognition and Machine Learning》
机器学习(白板推导系列)
如有错误,感谢指正!!!