对于普通的函数f(x)
f
(
x
)
,我们可以认为f
f
是一个关于x的一个实数算子,其作用是将实数x
x
映射到实数f(x),那么可以类比这种模式,假设存在函数算子F
F
,它是关于f(x)的函数算子,可以将f(x)
f
(
x
)
映射成实数F(f(x))
F
(
f
(
x
)
)
,在机器学习中,常见的函数算子有信息熵H(p(x))
H
(
p
(
x
)
)
,它将概率密度函数p(x)
p
(
x
)
映射成一个具体值。用贴近程序语言的说法就是在变分法中,我们研究的对象是高阶函数,它接受一个函数作为参数,并返回一个值。
在求解函数f(x)
f
(
x
)
极值的时候,我们利用微分法,假设它存在极小值x0
x
0
,那么其导数f′(x0)=0
f
′
(
x
0
)
=
0
,并且对于任意接近0的数ϵ
ϵ
有:
f(x0)≤f(x0+ϵ)
f
(
x
0
)
≤
f
(
x
0
+
ϵ
)
如果定义函数
Φ(ϵ)=f(x0+ϵ)
Φ
(
ϵ
)
=
f
(
x
0
+
ϵ
)
,那么另一种说明函数
f
f
在x0处取得极值的说法就是:
Φ′(0)=dΦ(ϵ)dϵ∣∣∣ϵ=0=f′(x0+0)=f′(x0)=0
Φ
′
(
0
)
=
d
Φ
(
ϵ
)
d
ϵ
|
ϵ
=
0
=
f
′
(
x
0
+
0
)
=
f
′
(
x
0
)
=
0
J(y)=∫x2x1L(y(x),y′(x),x)dx
J
(
y
)
=
∫
x
1
x
2
L
(
y
(
x
)
,
y
′
(
x
)
,
x
)
d
x
其中
x1,x2
x
1
,
x
2
为常数,
y(x)
y
(
x
)
是连续二阶可导,
L
L
对于y,y′,x也是连续二阶可导。
假设该函数算子
J(y)
J
(
y
)
在
y=f
y
=
f
时存在极小值,那么对于任意函数
η
η
,只要其满足
η(x1)=0
η
(
x
1
)
=
0
且
η(x2)=0
η
(
x
2
)
=
0
,那么对于任意小的
ϵ
ϵ
如下不等式成立:
J(f)≤J(f+ϵη)
J
(
f
)
≤
J
(
f
+
ϵ
η
)
,其中
ϵη
ϵ
η
称为函数
f
f
的变分,记为δf。
考察函数
Φ(ϵ)=J(f+ϵη)
Φ
(
ϵ
)
=
J
(
f
+
ϵ
η
)
,同样的有:
Φ′(0)=dΦ(ϵ)dϵ∣∣∣ϵ=0=dJ(f+ϵη)dϵ∣∣∣ϵ=0=∫x2x1dLdϵ∣∣∣ϵ=0dx=0
Φ
′
(
0
)
=
d
Φ
(
ϵ
)
d
ϵ
|
ϵ
=
0
=
d
J
(
f
+
ϵ
η
)
d
ϵ
|
ϵ
=
0
=
∫
x
1
x
2
d
L
d
ϵ
|
ϵ
=
0
d
x
=
0
其中
dLdϵ=∂L∂y∂y∂ϵ+∂L∂y′∂y′∂ϵ
d
L
d
ϵ
=
∂
L
∂
y
∂
y
∂
ϵ
+
∂
L
∂
y
′
∂
y
′
∂
ϵ
又因为
y=f+ϵη
y
=
f
+
ϵ
η
,
y′=f′+ϵη′
y
′
=
f
′
+
ϵ
η
′
,因此
∂y∂ϵ=η∂y′∂ϵ=η′
∂
y
∂
ϵ
=
η
∂
y
′
∂
ϵ
=
η
′
代入可得:
dLdϵ=∂L∂yη+∂L∂y′η′
d
L
d
ϵ
=
∂
L
∂
y
η
+
∂
L
∂
y
′
η
′
,再根据
分部积分法可得:
∫x2x1dLdϵ∣∣∣ϵ=0dx=∫x2x1{∂L∂yη+∂L∂y′η′}∣∣∣ϵ=0dx=∫x2x1η{∂L∂f−ddx∂L∂f′}dx+∂L∂f′η∣∣∣x2x1=∫x2x1η{∂L∂f−ddx∂L∂f′}dx=0
∫
x
1
x
2
d
L
d
ϵ
|
ϵ
=
0
d
x
=
∫
x
1
x
2
{
∂
L
∂
y
η
+
∂
L
∂
y
′
η
′
}
|
ϵ
=
0
d
x
=
∫
x
1
x
2
η
{
∂
L
∂
f
−
d
d
x
∂
L
∂
f
′
}
d
x
+
∂
L
∂
f
′
η
|
x
1
x
2
=
∫
x
1
x
2
η
{
∂
L
∂
f
−
d
d
x
∂
L
∂
f
′
}
d
x
=
0
因为当
ϵ=0
ϵ
=
0
时,
y−>f
y
−
>
f
,
y′−>f′
y
′
−
>
f
′
,又由于
η
η
在
x1,x2
x
1
,
x
2
取值为0,所以
∂L∂f′η∣∣∣x2x1=0
∂
L
∂
f
′
η
|
x
1
x
2
=
0
。最后根据
变分法基本引理,我们最终可得
欧拉-拉格朗日方程:
In physics and probability theory, mean field theory (MFT also known as self-consistent field theory) studies the behavior of large and complex stochastic models by studying a simpler model. Such models consider a large number of small individual components which interact with each other. The effect of all the other individuals on any given individual is approximated by a single averaged effect, thus reducing a many-body problem to a one-body problem.
P(x1,x2,x3,...,xn)=P(x1)P(x2|x1)P(x3|x2,x1)...P(xn|xn−1,xn−2,xn−3,...,x1)
P
(
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
)
=
P
(
x
1
)
P
(
x
2
|
x
1
)
P
(
x
3
|
x
2
,
x
1
)
.
.
.
P
(
x
n
|
x
n
−
1
,
x
n
−
2
,
x
n
−
3
,
.
.
.
,
x
1
)
利用平均场理论我们可以找出另一个模型:
Q(x1,x2,x3,...,xn)=Q(x1)Q(x2)Q(x3)...Q(xn)
Q
(
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
)
=
Q
(
x
1
)
Q
(
x
2
)
Q
(
x
3
)
.
.
.
Q
(
x
n
)
使得
Q
Q
尽量和P一致,并可以来近似代替
p(x1,x2,x3,...,xn)
p
(
x
1
,
x
2
,
x
3
,
.
.
.
,
x
n
)
变分贝叶斯推断
在贝叶斯模型中,我们通常需要计算模型的后验概率P(Z|X)
P
(
Z
|
X
)
,然而许多实际模型中,想要计算出P(Z|X)
P
(
Z
|
X
)
通常是行不通的。利用平均场理论,我们通过找另一个模型Q(Z)=∏iQ(zi)
Q
(
Z
)
=
∏
i
Q
(
z
i
)
来近似代替P(Z|X)
P
(
Z
|
X
)
,这是变分贝叶斯推断的唯一假设!然后问题在于如何找出这样的模型Q(Z)
Q
(
Z
)
了。
熟悉信息理论的同学应该知道,想要衡量两个概率模型有多大差异,可以利用KL-Divergence。于是我们将问题转化为如何找到Q(Z)
Q
(
Z
)
使得
KL(Q||P)=∫Q(Z)logQ(Z)P(Z|X)dZ
K
L
(
Q
|
|
P
)
=
∫
Q
(
Z
)
l
o
g
Q
(
Z
)
P
(
Z
|
X
)
d
Z
最小。我们知道KL散度是非对称的,那么为什么要用
KL(Q||P)
K
L
(
Q
|
|
P
)
而不是
KL(P||Q)
K
L
(
P
|
|
Q
)
呢?我们先看看PRML第十章里面的一副图:
图中绿色图是P
P
的分布,图(a)红色线利用通过最小化KL(Q||P)也就是变分推断获得的结果,图(b)红色线是通过最小化KL(P||Q)
K
L
(
P
|
|
Q
)
的结果。如果选择最小化KL(P||Q)
K
L
(
P
|
|
Q
)
,那么其实是对应于另外一种近似框架——Expectation Propagation,超出本篇要讨论的,暂且搁置。
那么既然我们有了目标对象——最小化KL(Q||P)
K
L
(
Q
|
|
P
)
,接下来就是如何求得最小化时的Q
Q
了。我们将公式稍微变换一下:
令L(Q)=∫Q(Z)logP(Z,X)dZ−∫Q(Z)logQ(Z)dZ
L
(
Q
)
=
∫
Q
(
Z
)
l
o
g
P
(
Z
,
X
)
d
Z
−
∫
Q
(
Z
)
l
o
g
Q
(
Z
)
d
Z
, 那么有:
logP(X)=KL(Q||P)+L(Q)
l
o
g
P
(
X
)
=
K
L
(
Q
|
|
P
)
+
L
(
Q
)
我们目标是最小化
KL(Q||P)
K
L
(
Q
|
|
P
)
,由于
logP(X)
l
o
g
P
(
X
)
不依赖于
Z
Z
的数据似然函数,可以当作是常数。那么为了最小化KL(Q||P),反过来我们可以最大化
L(Q)
L
(
Q
)
,所以我们的目标可以转移为:
maxL(Q)
m
a
x
L
(
Q
)
因为
KL(Q||P)≥0
K
L
(
Q
|
|
P
)
≥
0
那么有
logP(X)≥L(Q)
l
o
g
P
(
X
)
≥
L
(
Q
)
所以
L(Q)
L
(
Q
)
可以看成是
logP(X)
l
o
g
P
(
X
)
的下界,通常称为:ELOB(Evidence Lower Bound)。也就是我们通过最大化对数数据似然函数
logP(X)
l
o
g
P
(
X
)
的下界来逼近对数似然函数的
logP(X)
l
o
g
P
(
X
)
。
好,现在目标函数是:
L(Q)=∫Q(Z)logP(Z,X)dZ−∫Q(Z)logQ(Z)dZ
L
(
Q
)
=
∫
Q
(
Z
)
l
o
g
P
(
Z
,
X
)
d
Z
−
∫
Q
(
Z
)
l
o
g
Q
(
Z
)
d
Z
平均场定理的假设为:
Q(Z)=∏iQ(zi)
Q
(
Z
)
=
∏
i
Q
(
z
i
)
先来等式右边后半部分:
∫Q(Z)logQ(Z)dZ=∫∏iQ(zi)log∏jQ(zj)dZ=∫∏iQ(zi)∑jlogQ(zj)dZ=∑j∫∏iQ(zi)logQ(zj)dZ=∑j∫Q(zj)logQ(zj)dzj∫∏i:i≠jQ(zi)dzi=∑j∫Q(zj)logQ(zj)dzj
∫
Q
(
Z
)
l
o
g
Q
(
Z
)
d
Z
=
∫
∏
i
Q
(
z
i
)
l
o
g
∏
j
Q
(
z
j
)
d
Z
=
∫
∏
i
Q
(
z
i
)
∑
j
l
o
g
Q
(
z
j
)
d
Z
=
∑
j
∫
∏
i
Q
(
z
i
)
l
o
g
Q
(
z
j
)
d
Z
=
∑
j
∫
Q
(
z
j
)
l
o
g
Q
(
z
j
)
d
z
j
∫
∏
i
:
i
≠
j
Q
(
z
i
)
d
z
i
=
∑
j
∫
Q
(
z
j
)
l
o
g
Q
(
z
j
)
d
z
j
神奇吧,仅仅有了平均场理论,我们便可将原本高维的复杂概率函数
Q(Z)
Q
(
Z
)
拆分成单变量形式。此处的变换需要注意的记号是
dZ=∏idzi
d
Z
=
∏
i
d
z
i
,而不是代表对向量的微分,并且注意到
∫Q(zi)dzi=1
∫
Q
(
z
i
)
d
z
i
=
1
,因此
∫∏i:i≠jQ(zi)dzi=∏i:i≠j∫Q(zi)dzi=1
∫
∏
i
:
i
≠
j
Q
(
z
i
)
d
z
i
=
∏
i
:
i
≠
j
∫
Q
(
z
i
)
d
z
i
=
1
。
再来看看另外一部分:
∫Q(Z)logP(Z,X)dZ=∫∏iQ(zi)logP(Z,X)dZ=∫Q(zj)(∏i:i≠jQ(zi)logP(Z,X)dzi)dzj=∫Q(zj)Ei≠j[logP(Z,X)]dzj=∫Q(zj)log{exp(Ei≠j[logP(Z,X)])}dzj=∫Q(zj)logexp(Ei≠j[logP(Z,X)])∫exp(Ei≠j[logP(Z,X)])dzj−C=∫Q(zj)logQ∗(zj)dzj−C
∫
Q
(
Z
)
l
o
g
P
(
Z
,
X
)
d
Z
=
∫
∏
i
Q
(
z
i
)
l
o
g
P
(
Z
,
X
)
d
Z
=
∫
Q
(
z
j
)
(
∏
i
:
i
≠
j
Q
(
z
i
)
l
o
g
P
(
Z
,
X
)
d
z
i
)
d
z
j
=
∫
Q
(
z
j
)
E
i
≠
j
[
l
o
g
P
(
Z
,
X
)
]
d
z
j
=
∫
Q
(
z
j
)
l
o
g
{
e
x
p
(
E
i
≠
j
[
l
o
g
P
(
Z
,
X
)
]
)
}
d
z
j
=
∫
Q
(
z
j
)
l
o
g
e
x
p
(
E
i
≠
j
[
l
o
g
P
(
Z
,
X
)
]
)
∫
e
x
p
(
E
i
≠
j
[
l
o
g
P
(
Z
,
X
)
]
)
d
z
j
−
C
=
∫
Q
(
z
j
)
l
o
g
Q
∗
(
z
j
)
d
z
j
−
C
合并两部分,可得:
L(Q)=∫Q(zj)logQ∗(zj)dzj−∑j∫Q(zj)logQ(zj)dzj−C=∫Q(zj)logQ∗(zj)Q(zj)dzj−∑i:i≠j∫Q(zi)logQ(zi)dzi−C=−KL(Q(zj)||Q∗(zj))+∏i:i≠jH(Q(zi))−C
L
(
Q
)
=
∫
Q
(
z
j
)
l
o
g
Q
∗
(
z
j
)
d
z
j
−
∑
j
∫
Q
(
z
j
)
l
o
g
Q
(
z
j
)
d
z
j
−
C
=
∫
Q
(
z
j
)
l
o
g
Q
∗
(
z
j
)
Q
(
z
j
)
d
z
j
−
∑
i
:
i
≠
j
∫
Q
(
z
i
)
l
o
g
Q
(
z
i
)
d
z
i
−
C
=
−
K
L
(
Q
(
z
j
)
|
|
Q
∗
(
z
j
)
)
+
∏
i
:
i
≠
j
H
(
Q
(
z
i
)
)
−
C
其中
H(Q(zi))=−∫Q(zi)logQ(zi)dzi
H
(
Q
(
z
i
)
)
=
−
∫
Q
(
z
i
)
l
o
g
Q
(
z
i
)
d
z
i
为信息熵,又由于
KL(Q(zj)||Q∗(zj))≥0
K
L
(
Q
(
z
j
)
|
|
Q
∗
(
z
j
)
)
≥
0
并且
H(Q(zi))≥0
H
(
Q
(
z
i
)
)
≥
0
,那么要最大化
L(Q(Z))
L
(
Q
(
Z
)
)
只需要令
−KL(Q(zj)||Q∗(zj))=0
−
K
L
(
Q
(
z
j
)
|
|
Q
∗
(
z
j
)
)
=
0
也就是只要使得
Q(zj)=Q∗(zj)=exp(Ei≠j[logP(Z,X)])normalizeconstant
Q
(
z
j
)
=
Q
∗
(
z
j
)
=
e
x
p
(
E
i
≠
j
[
l
o
g
P
(
Z
,
X
)
]
)
n
o
r
m
a
l
i
z
e
c
o
n
s
t
a
n
t
,如果想直接用变分法求得最优解也是可以的,结合拉格朗日乘子法:
δδQ(zj){∫Q(zj)logQ∗(zj)dzj−∫Q(zj)logQ(zj)dzj+λi(∫iQ(zi)dzi−1)}
δ
δ
Q
(
z
j
)
{
∫
Q
(
z
j
)
l
o
g
Q
∗
(
z
j
)
d
z
j
−
∫
Q
(
z
j
)
l
o
g
Q
(
z
j
)
d
z
j
+
λ
i
(
∫
i
Q
(
z
i
)
d
z
i
−
1
)
}