变分自编码器(VAE)
从EM到变分推断
我们假设有一个隐变量z,我们的样本 x ( i ) x^{( i)} x(i)是从 p θ ( x ∣ z ) p_{\theta }( x|z) pθ(x∣z)中产生,因为有隐变量的存在,通常 p θ ( x ) = ∫ p θ ( z ) p θ ( x ∣ z ) d z p_{\theta }( x) =\int p_{\theta }( z) p_{\theta }( x|z) dz pθ(x)=∫pθ(z)pθ(x∣z)dz的边缘分布是没法算的。
所以传统来说,我们会构造出一个下界:
log
p
(
x
)
=
E
z
∼
q
(
z
)
(
log
p
(
x
,
z
)
)
−
H
(
q
)
⏟
E
L
B
O
+
K
L
(
q
(
z
)
∣
∣
p
(
z
∣
x
)
)
\begin{aligned} \log p( x) & =\underbrace{E_{z\sim q( z)}(\log p( x ,z)) -H( q)}_{ELBO} +KL( q( z) ||p( z |x)) \end{aligned}
logp(x)=ELBO
Ez∼q(z)(logp(x,z))−H(q)+KL(q(z)∣∣p(z∣x))
因此当我们最大化下界(ELBO)时,就相当于在最小化
K
L
(
q
(
z
)
∣
∣
p
(
z
∣
x
)
)
KL( q( z) ||p( z |x))
KL(q(z)∣∣p(z∣x))
而EM算法,就是通过精心选择这个下界中的q,从而使得下界最大化,也就是计算 q ( z ) = p ( z ∣ x ) q( z) =p( z|x) q(z)=p(z∣x)来近似该模型的似然度。进一步可以参考我之前写的文章《带你理解EM算法》
然而如果我们令 q ( z ) = p ( z ∣ x ) = p θ ( x ∣ z ) p θ ( z ) p θ ( x ) q( z) =p( z|x) =\frac{p_{\theta }( x|z) p_{\theta }( z)}{p_{\theta }( x)} q(z)=p(z∣x)=pθ(x)pθ(x∣z)pθ(z)也是不可计算的呢,比如你的z有很多很多维,那么你在算那个期望的时候就会出现一堆积分,这是非常难算的。
此时我们可以使用变分推断的方法,那就是,我们不直接令
q
(
z
)
=
p
(
z
∣
x
)
q( z) =p( z|x)
q(z)=p(z∣x)了,而是选一个相对简单的分布
q
(
z
)
q(z)
q(z)去近似
p
(
z
∣
x
)
p( z|x)
p(z∣x),(注意,这个q不一定是q(z)还可以是q(z|x),这种情况称为amortized variational),这个“近似”的数学形式写作
min
q
K
L
(
q
(
z
)
∥
p
(
z
∣
x
)
)
\min_q KL(q(z)\| p(z|x))
minqKL(q(z)∥p(z∣x))或
min
q
K
L
(
q
(
z
∣
x
)
∥
p
(
z
∣
x
)
)
\min_q KL(q(z|x)\| p(z|x))
minqKL(q(z∣x)∥p(z∣x))。那么简单的q怎么来?最常用的就是对q作平均场(mean-field)假设,即,我们可以认为:
q
(
z
)
=
∏
i
q
i
(
z
i
)
q(\mathbf{z}) =\prod _{i} q_{i}( z_{i})
q(z)=i∏qi(zi)
这个假设的意思是,虽然你的z有很多维,但是他们都是相互独立的,也就是说,你算很多很多积分的时候,每个
z
i
z_{i}
zi可以分别积分,所以一个联合积分的问题就简化成了仅需一个积分的问题,于是我们在优化ELBO的时候,只需分别优化
q
i
q_{i}
qi就可以了。将平均场假设代进ELBO中,化简可以得到
E
L
B
O
=
∫
z
j
q
j
(
z
j
)
[
∫
…
∫
z
i
≠
j
q
(
z
)
log
p
(
x
,
z
)
d
z
i
]
d
z
j
−
∑
i
∫
z
i
q
i
(
z
i
)
log
q
i
(
z
i
)
d
z
i
=
∫
z
j
q
j
(
z
j
)
E
i
≠
j
[
log
p
(
x
,
z
)
]
d
z
j
−
∫
z
j
q
j
(
z
j
)
log
q
j
(
z
j
)
d
z
j
−
∑
i
≠
j
∫
z
i
q
i
(
z
i
)
log
q
i
(
z
i
)
d
z
i
⏟
C
o
n
s
t
f
o
r
j
=
∫
z
j
q
j
(
z
j
)
log
E
i
≠
j
[
log
p
(
x
,
z
)
]
q
j
(
z
j
)
d
z
j
−
∑
i
≠
j
M
∫
z
i
q
i
(
z
i
)
log
q
i
(
z
i
)
d
z
i
⏟
C
o
n
s
t
f
o
r
j
=
−
K
L
(
E
i
≠
j
[
log
p
(
x
,
z
)
∣
∣
q
j
(
z
j
)
]
)
+
c
o
n
s
t
\begin{aligned} ELBO & =\int _{z_{j}} q_{j}( z_{j})\left[\underset{z_{i\neq j}}{\int \dotsc \int } q( z)\log p( x,z) dz_{i}\right] dz_{j} -\sum _{i}\int _{z_{i}} q_{i}( z_{i})\log q_{i}( z_{i}) dz_{i}\\ & =\int _{z_{j}} q_{j}( z_{j}) E_{i\neq j}[\log p( x,z)] dz_{j} -\int _{z_{j}} q_{j}( z_{j})\log q_{j}( z_{j}) dz_{j} -\underbrace{\sum _{i\neq j}\int _{z_{i}} q_{i}( z_{i})\log q_{i}( z_{i}) dz_{i}}_{Const\ for\ j}\\ & =\int _{z_{j}} q_{j}( z_{j})\log\frac{E_{i\neq j}[\log p( x,z)]}{q_{j}( z_{j})} dz_{j} -\underbrace{\sum ^{M}_{i\neq j}\int _{z_{i}} q_{i}( z_{i})\log q_{i}( z_{i}) dz_{i}}_{Const\ for\ j}\\ & =-KL( E_{i \neq j}[\log p( x,z) ||q_{j}( z_{j})]) +const \end{aligned}
ELBO=∫zjqj(zj)⎣⎢⎡zi=j∫…∫q(z)logp(x,z)dzi⎦⎥⎤dzj−i∑∫ziqi(zi)logqi(zi)dzi=∫zjqj(zj)Ei=j[logp(x,z)]dzj−∫zjqj(zj)logqj(zj)dzj−Const for j
i=j∑∫ziqi(zi)logqi(zi)dzi=∫zjqj(zj)logqj(zj)Ei=j[logp(x,z)]dzj−Const for j
i=j∑M∫ziqi(zi)logqi(zi)dzi=−KL(Ei=j[logp(x,z)∣∣qj(zj)])+const
因为每个
z
j
z_{j}
zj都是相互独立,于是,只需分别最大化每个
z
j
z_{j}
zj的ELBO就可以实现ELBO最大化,而其他的项都视作了常数,此时,ELBO就简单地变成了一个负的KL距离,所以,想要最大化这个ELBO,我们只需要令
q
j
(
z
j
)
=
E
i
≠
j
[
log
p
(
x
,
z
)
]
q_{j}( z_{j}) =E_{i\neq j}[\log p( x,z)]
qj(zj)=Ei=j[logp(x,z)]
就可以了。这实际上是一个迭代的问题,因为在constant中,包含了其他的项的q,所以,我们只需不断地更新各个元素q的分布直到收敛就可以了。
从变分推断到VAE
但是,如果即使用了平均场假设也没法算,而使用MCMC又太慢怎么办?为了解决这个问题,我们回到最初的那个下界的表达式中
log
p
(
x
∣
θ
)
=
E
z
∼
q
(
z
)
(
log
p
(
x
,
z
)
)
−
H
(
q
)
⏟
E
L
B
O
+
K
L
(
q
(
z
)
∣
∣
p
(
z
∣
x
)
)
\begin{aligned} \log p( x |\theta ) & =\underbrace{E_{z\sim q( z)}(\log p( x ,z)) -H( q)}_{ELBO} +KL( q( z) ||p( z |x)) \end{aligned}
logp(x∣θ)=ELBO
Ez∼q(z)(logp(x,z))−H(q)+KL(q(z)∣∣p(z∣x))
实际上ELBO有几种不同的,但是等价的表达方式:
KL form :
L
(
θ
;
x
)
=
E
z
∼
q
(
z
)
(
log
p
θ
(
x
∣
z
)
)
−
K
L
(
q
(
z
)
∣
∣
p
θ
(
z
)
)
\mathcal{L}( \theta ;x) =E_{z\sim q( z)}(\log p_{\theta }( x|z)) -KL( q( z) ||p_{\theta }( z))
L(θ;x)=Ez∼q(z)(logpθ(x∣z))−KL(q(z)∣∣pθ(z))
Entropy form:
L
(
θ
;
x
)
=
E
z
∼
q
(
z
)
(
log
p
θ
(
x
,
z
)
)
−
H
(
q
)
\mathcal{L}( \theta ;x) =E_{z\sim q( z)}(\log p_{\theta }( x ,z)) -H( q)
L(θ;x)=Ez∼q(z)(logpθ(x,z))−H(q)
Fully Monte Carlo(FMC) form:
L
(
θ
;
x
)
=
E
z
∼
q
(
z
)
[
log
p
θ
(
x
,
z
)
−
log
q
(
z
)
]
\mathcal{L}( \theta ;x) =E_{z\sim q( z)}[\log p_{\theta }( x,z) -\log q( z)]
L(θ;x)=Ez∼q(z)[logpθ(x,z)−logq(z)]
其中q是一个任意的分布,那么现在,我们令
q
(
z
)
≜
q
ϕ
(
z
∣
x
)
q( z) \triangleq q_{\phi }( z|x)
q(z)≜qϕ(z∣x),用KL形式的下界可以得到:
L
(
θ
,
ϕ
;
x
)
=
E
z
∼
q
ϕ
(
z
∣
x
)
(
log
p
θ
(
x
∣
z
)
)
−
K
L
(
q
ϕ
(
z
∣
x
)
∣
∣
p
θ
(
z
)
)
\mathcal{L}( \theta ,\phi ;x) =E_{z\sim q_{\phi }( z|x)}(\log p_{\theta }( x|z)) -KL( q_{\phi }( z|x) ||p_{\theta }( z))
L(θ,ϕ;x)=Ez∼qϕ(z∣x)(logpθ(x∣z))−KL(qϕ(z∣x)∣∣pθ(z))
现在引入了一个带参数的
q
ϕ
q_{\phi }
qϕ来表示这个上界,如果要最大化这个上界,我们只要用梯度上升不断更新参数
ϕ
\phi
ϕ就可以了。一般情况下,KL距离的那一项是有解析解的,所以梯度很好求。然而对第一项求梯度则没那么简单,一个常用的方法是
∇
ϕ
E
z
∼
q
ϕ
(
z
)
(
f
(
z
)
)
=
E
z
∼
q
ϕ
(
z
)
[
f
(
z
)
∇
ϕ
log
q
ϕ
(
z
)
]
≃
1
L
∑
l
=
1
L
f
(
z
l
)
∇
ϕ
log
q
ϕ
(
z
l
)
\nabla _{\phi } E_{z\sim q_{\phi }( z)}( f( z)) =E_{z\sim q_{\phi }( z)}[ f( z) \nabla _{\phi }\log q_{\phi }( z)] \simeq \frac{1}{L}\sum ^{L}_{l=1} f\left( z^{l}\right) \nabla _{\phi }\log q_{\phi }\left( z^{l}\right)
∇ϕEz∼qϕ(z)(f(z))=Ez∼qϕ(z)[f(z)∇ϕlogqϕ(z)]≃L1∑l=1Lf(zl)∇ϕlogqϕ(zl),但是这么做的方差太高。
如上图,我们可以用reparameterize trick来解决这个问题,这时z对于x来说就是一个固定的值,只要我们从
ϵ
\epsilon
ϵ中抽样后,固定住就可以了,设
z
=
g
ϕ
(
ϵ
,
x
)
,
ϵ
∼
p
(
ϵ
)
z=g_{\phi }( \epsilon ,x) ,\epsilon \sim p( \epsilon )
z=gϕ(ϵ,x),ϵ∼p(ϵ)
其中$\epsilon $是一个已知的简单分布,比如说标准正态分布,次数z的产生就变成了从某个固定的标准分布中采样,于是下界中的期望那一项可以改写成:
E
z
∼
q
ϕ
(
z
∣
x
)
(
log
p
θ
(
x
∣
z
)
)
=
E
ϵ
∼
p
(
ϵ
)
(
log
p
θ
(
x
∣
g
ϕ
(
ϵ
,
x
)
)
)
≃
1
L
∑
l
=
1
L
log
p
θ
(
x
∣
g
ϕ
(
ϵ
,
x
)
)
E_{z\sim q_{\phi }( z|x)}(\log p_{\theta }( x|z)) =E_{\epsilon \sim p( \epsilon )}(\log p_{\theta }( x|g_{\phi }( \epsilon ,x))) \simeq \frac{1}{L}\sum ^{L}_{l=1}\log p_{\theta }( x|g_{\phi }( \epsilon ,x))
Ez∼qϕ(z∣x)(logpθ(x∣z))=Eϵ∼p(ϵ)(logpθ(x∣gϕ(ϵ,x)))≃L1l=1∑Llogpθ(x∣gϕ(ϵ,x))
于是对于一个样本
x
(
i
)
x^{( i)}
x(i)的下界可以写作:
L
(
θ
,
ϕ
;
x
(
i
)
)
=
1
L
∑
l
=
1
L
log
p
θ
(
x
(
i
)
∣
z
(
i
,
l
)
)
−
K
L
(
q
ϕ
(
z
(
i
)
∣
x
(
i
)
)
∣
∣
p
θ
(
z
(
i
)
)
)
\mathcal{L}\left( \theta ,\phi ;x^{( i)}\right) =\frac{1}{L}\sum ^{L}_{l=1}\log p_{\theta }\left( x^{( i)} |z^{( i,l)}\right) -KL\left( q_{\phi }\left( z^{( i)} |x^{( i)}\right) ||p_{\theta }\left( z^{( i)}\right)\right)
L(θ,ϕ;x(i))=L1l=1∑Llogpθ(x(i)∣z(i,l))−KL(qϕ(z(i)∣x(i))∣∣pθ(z(i)))
其中
z
(
i
,
l
)
=
g
ϕ
(
ϵ
(
i
,
l
)
,
x
(
i
)
)
,
ϵ
(
l
)
∼
p
(
ϵ
)
z^{( i,l)} =g_{\phi }\left( \epsilon ^{( i,l)} ,x^{( i)}\right) ,\epsilon ^{( l)} \sim p( \epsilon )
z(i,l)=gϕ(ϵ(i,l),x(i)),ϵ(l)∼p(ϵ)
在这里,如果我们用一个MLP来表示
p
θ
p_{\theta }
pθ和
q
ϕ
q_{\phi }
qϕ和就可以对用这个目标函数求梯度来最大化了,注意产生z的分布
q
ϕ
q_{\phi }
qϕ其实是由一个标准正态分布的
ϵ
\epsilon
ϵ和一个用MLP表示的映射函数
g
ϕ
g_{\phi }
gϕ构成的,所以训练过程实际上是更新
p
θ
p_{\theta }
pθ和
g
ϕ
g_{\phi }
gϕ这两个MLP的参数,我们称
p
θ
p_\theta
pθ为encoder network,
q
ϕ
q_{\phi }
qϕ为decoder network。而z的产生则是从
p
(
ϵ
)
p( \epsilon )
p(ϵ)抽一个样本,然后经过一个确定性
g
ϕ
g_{\phi }
gϕ来产生。
更直观一点,如果我们假设先验分布
p
(
z
)
p( z)
p(z),
p
(
ϵ
)
p( \epsilon )
p(ϵ)服从标准正态分布,
z
=
q
ϕ
(
z
∣
x
)
=
g
ϕ
(
ϵ
,
x
)
=
μ
ϕ
(
x
)
+
Σ
ϕ
1
/
2
(
x
)
ϵ
z=q_{\phi }( z|x) =g_{\phi }( \epsilon ,x) =\mu _{\phi }( x) +\Sigma _{\phi }^{1/2}( x) \epsilon
z=qϕ(z∣x)=gϕ(ϵ,x)=μϕ(x)+Σϕ1/2(x)ϵ
也就是说,
q
ϕ
(
z
∣
x
)
∼
N
(
μ
ϕ
(
x
)
,
Σ
ϕ
1
/
2
(
x
)
)
q_{\phi }( z|x) \sim N\left( \mu _{\phi }( x) ,\Sigma _{\phi }^{1/2}( x)\right)
qϕ(z∣x)∼N(μϕ(x),Σϕ1/2(x))也是正态分布,不过其参数由x决定。于是对于两个正态分布的KL距离,对于有J个维度的z,我们完全可以算出其解析解:
−
K
L
(
q
ϕ
(
z
∣
x
)
∣
∣
p
θ
(
z
)
)
=
−
K
L
(
N
(
μ
ϕ
,
σ
ϕ
)
∣
∣
N
(
0
,
I
)
)
=
1
2
∑
j
=
1
J
(
(
1
+
log
σ
j
2
)
−
μ
j
2
−
σ
j
2
)
\begin{aligned} -KL( q_{\phi }(\mathbf{z} |\mathbf{x}) ||p_{\theta }(\mathbf{z})) & =-KL( N(\mathbf{\mu }_{\phi } ,\mathbf{\sigma }_{\phi }) ||N(\mathbf{0} ,\mathbf{I}))\\ & =\frac{1}{2}\sum ^{J}_{j=1}\left(\left( 1+\log \sigma ^{2}_{j}\right) -\mu ^{2}_{j} -\sigma ^{2}_{j}\right) \end{aligned}
−KL(qϕ(z∣x)∣∣pθ(z))=−KL(N(μϕ,σϕ)∣∣N(0,I))=21j=1∑J((1+logσj2)−μj2−σj2)
这个公式其实来自于两个n元高斯分布的KL距离,他的详细推导过程如下:
D
(
P
1
∥
P
2
)
=
E
P
1
[
log
P
1
−
log
P
2
]
=
1
2
E
P
1
[
−
log
det
Σ
1
−
(
x
−
μ
1
)
T
Σ
1
−
1
(
x
−
μ
1
)
+
log
det
Σ
2
+
(
x
−
μ
2
)
T
Σ
2
−
1
(
x
−
μ
2
)
]
=
1
2
log
det
Σ
2
det
Σ
1
+
1
2
E
P
1
[
−
(
x
−
μ
1
)
T
Σ
1
−
1
(
x
−
μ
1
)
+
(
x
−
μ
2
)
T
Σ
2
−
1
(
x
−
μ
2
)
]
=
1
2
log
det
Σ
2
det
Σ
1
+
1
2
E
P
1
[
−
tr
(
Σ
1
−
1
(
x
−
μ
1
)
(
x
−
μ
1
)
T
)
+
tr
(
Σ
2
−
1
(
x
−
μ
2
)
(
x
−
μ
2
)
T
)
]
=
1
2
log
det
Σ
2
det
Σ
1
+
1
2
E
P
1
[
−
tr
(
Σ
1
−
1
Σ
1
)
+
tr
(
Σ
2
−
1
(
x
x
T
−
2
x
μ
2
T
+
μ
2
μ
2
T
)
)
]
=
1
2
log
det
Σ
2
det
Σ
1
−
1
2
n
+
1
2
tr
(
Σ
2
−
1
(
Σ
1
+
μ
1
μ
1
T
−
2
μ
2
μ
1
T
+
μ
2
μ
2
T
)
)
=
1
2
(
log
det
Σ
2
det
Σ
1
−
n
+
tr
(
Σ
2
−
1
Σ
1
)
+
tr
(
μ
1
T
Σ
2
−
1
μ
1
−
2
μ
1
T
Σ
2
−
1
μ
2
+
μ
2
T
Σ
2
−
1
μ
2
)
)
=
1
2
(
log
det
Σ
2
det
Σ
1
−
n
+
tr
(
Σ
2
−
1
Σ
1
)
+
(
μ
2
−
μ
1
)
T
Σ
2
−
1
(
μ
2
−
μ
1
)
)
\begin{aligned} & D( P_{1} \| P_{2})\\ = & \ \mathrm{E}_{P_{1}}[\log P_{1} -\log P_{2}]\\ = & \frac{1}{2}\mathrm{E}_{P_{1}}\left[ -\log\operatorname{det} \Sigma _{1} -( x-\mu _{1})^{T} \Sigma ^{-1}_{1}( x-\mu _{1}) +\log\operatorname{det} \Sigma _{2} +( x-\mu _{2})^{T} \Sigma ^{-1}_{2}( x-\mu _{2})\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} +\frac{1}{2}\mathrm{E}_{P_{1}}\left[ -( x-\mu _{1})^{T} \Sigma ^{-1}_{1}( x-\mu _{1}) +( x-\mu _{2})^{T} \Sigma ^{-1}_{2}( x-\mu _{2})\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} +\frac{1}{2}\mathrm{E}_{P_{1}}\left[ -\operatorname{tr}\left( \Sigma ^{-1}_{1}( x-\mu _{1})( x-\mu _{1})^{T}\right) +\operatorname{tr}\left( \Sigma ^{-1}_{2}( x-\mu _{2})( x-\mu _{2})^{T}\right)\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} +\frac{1}{2}\mathrm{E}_{P_{1}}\left[ -\operatorname{tr}\left( \Sigma ^{-1}_{1} \Sigma _{1}\right) +\operatorname{tr}\left( \Sigma ^{-1}_{2}\left( xx^{T} -2x\mu ^{T}_{2} +\mu _{2} \mu ^{T}_{2}\right)\right)\right]\\ = & \frac{1}{2}\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -\frac{1}{2} n+\frac{1}{2}\operatorname{tr}\left( \Sigma ^{-1}_{2}\left( \Sigma _{1} +\mu _{1} \mu ^{T}_{1} -2\mu _{2} \mu ^{T}_{1} +\mu _{2} \mu ^{T}_{2}\right)\right)\\ = & \frac{1}{2}\left(\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -n+\operatorname{tr}\left( \Sigma ^{-1}_{2} \Sigma _{1}\right) +\operatorname{tr}\left( \mu ^{T}_{1} \Sigma ^{-1}_{2} \mu _{1} -2\mu ^{T}_{1} \Sigma ^{-1}_{2} \mu _{2} +\mu ^{T}_{2} \Sigma ^{-1}_{2} \mu _{2}\right)\right)\\ = & \frac{1}{2}\left(\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -n+\operatorname{tr}\left( \Sigma ^{-1}_{2} \Sigma _{1}\right) +( \mu _{2} -\mu _{1})^{T} \Sigma ^{-1}_{2}( \mu _{2} -\mu _{1})\right) \end{aligned}
========D(P1∥P2) EP1[logP1−logP2]21EP1[−logdetΣ1−(x−μ1)TΣ1−1(x−μ1)+logdetΣ2+(x−μ2)TΣ2−1(x−μ2)]21logdetΣ1detΣ2+21EP1[−(x−μ1)TΣ1−1(x−μ1)+(x−μ2)TΣ2−1(x−μ2)]21logdetΣ1detΣ2+21EP1[−tr(Σ1−1(x−μ1)(x−μ1)T)+tr(Σ2−1(x−μ2)(x−μ2)T)]21logdetΣ1detΣ2+21EP1[−tr(Σ1−1Σ1)+tr(Σ2−1(xxT−2xμ2T+μ2μ2T))]21logdetΣ1detΣ2−21n+21tr(Σ2−1(Σ1+μ1μ1T−2μ2μ1T+μ2μ2T))21(logdetΣ1detΣ2−n+tr(Σ2−1Σ1)+tr(μ1TΣ2−1μ1−2μ1TΣ2−1μ2+μ2TΣ2−1μ2))21(logdetΣ1detΣ2−n+tr(Σ2−1Σ1)+(μ2−μ1)TΣ2−1(μ2−μ1))
我们可以稍微试验一下,设 Σ 2 = α E , μ 2 = 0 \displaystyle \Sigma _{2} =\alpha E,\mu _{2} =0 Σ2=αE,μ2=0,并且 Σ 1 \displaystyle \Sigma _{1} Σ1是对角矩阵,于是
1 2 ( log det Σ 2 det Σ 1 − n + tr ( Σ 2 − 1 Σ 1 ) + ( μ 2 − μ 1 ) T Σ 2 − 1 ( μ 2 − μ 1 ) ) = 1 2 ( n log α − log det Σ 1 − n + α − 1 tr ( Σ 1 ) + α − 1 μ 1 T μ 1 ) = 1 2 ( ∑ j = 1 n ( log α − log σ j − 1 + α − 1 σ j + α − 1 μ j 2 ) ) \begin{aligned} & \frac{1}{2}\left(\log\frac{\operatorname{det} \Sigma _{2}}{\operatorname{det} \Sigma _{1}} -n+\operatorname{tr}\left( \Sigma ^{-1}_{2} \Sigma _{1}\right) +(\mu _{2} -\mu _{1} )^{T} \Sigma ^{-1}_{2} (\mu _{2} -\mu _{1} )\right)\\ = & \frac{1}{2}\left( n\log \alpha -\log\operatorname{det} \Sigma _{1} -n+\alpha ^{-1}\operatorname{tr}( \Sigma _{1}) +\alpha ^{-1} \mu ^{T}_{1} \mu _{1}\right)\\ = & \frac{1}{2}\left(\sum ^{n}_{j=1}\left(\log \alpha -\log \sigma _{j} -1+\alpha ^{-1} \sigma _{j} +\alpha ^{-1} \mu _{j}^2\right)\right) \end{aligned} ==21(logdetΣ1detΣ2−n+tr(Σ2−1Σ1)+(μ2−μ1)TΣ2−1(μ2−μ1))21(nlogα−logdetΣ1−n+α−1tr(Σ1)+α−1μ1Tμ1)21(j=1∑n(logα−logσj−1+α−1σj+α−1μj2))
接下来我们看看这个网络的架构
encoder network将一只喵星人映射成一个均值和一个方差,然后产生一个z样本,通过decoder network再变成一只喵~
然而VAE对比GAN确实存在一些问题。
可以看到VAE的“拟合”能力没有GAN的强,VAE会趋于平滑而GAN则不会。而且VAE产生的图像会比较模糊,这似乎所有优化对数似然的目标函数 K L ( p d a t a ∣ ∣ p m o d e l ) KL(p_{data}||p_{model}) KL(pdata∣∣pmodel)都有这问题(《Deep learning》),这一点,或许与KL距离的性质有关系,可以看我的另外一篇文章,《正向跟反向KL距离到底有什么区别?》
参考资料
Auto-encoding variational bayes
Tutorial on variational autoencoders
How does the reparameterization trick for VAEs work and why is it important?
Variational Autoencoders Explained
Deep learning
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者Jie Qiao专栏:http://blog.csdn.net/a358463121,如果涉及源代码请注明GitHub地址:https://github.com/358463121/。商业使用请联系作者。