1、前言
本篇文章,我们来讲一下条件VAE,也就是CVAE。主要是下一期内容需要用到这个东西,而我们之前又没有讲过。所以来简单推导一下
2、CVAE
2.1、目标函数推导
对于CVAE的内容,其实跟VAE都差不多,因此,你必须要看懂了VAE原理解析之后,再来看这个东西
下面我们来开始推导(直接从单个样本的对数极大似然开始)
log
P
(
x
∣
c
)
=
log
P
(
x
,
z
∣
c
)
P
(
z
∣
x
,
c
)
\begin{aligned}\log P(x|c)=&\log\frac{P(x,z|c)}{P(z|x,c)}\end{aligned}
logP(x∣c)=logP(z∣x,c)P(x,z∣c)
等式左右同时对
q
(
z
∣
x
,
c
)
q(z|x,c)
q(z∣x,c)积分
左边:
∫
z
log
P
(
x
∣
c
)
q
(
z
∣
x
,
c
)
d
z
=
log
P
(
x
∣
c
)
∫
z
q
(
z
∣
x
,
c
)
d
z
=
log
P
(
x
∣
c
)
\begin{aligned}&\mathbf{左边:}\int_z \log P(x|c)q(z|x,c)dz=\log P(x|c)\int_z q(z|x,c)dz=\log P(x|c) \\\end{aligned}
左边:∫zlogP(x∣c)q(z∣x,c)dz=logP(x∣c)∫zq(z∣x,c)dz=logP(x∣c)
右边: ∫ z q ( z ∣ x , c ) log P ( x , z ∣ c ) P ( z ∣ x , c ) d z \mathbf{右边:}\int_z q(z|x,c)\log\frac{P(x,z|c)}{P(z|x,c)} dz 右边:∫zq(z∣x,c)logP(z∣x,c)P(x,z∣c)dz
等式左边等于右边
log
P
(
x
∣
c
)
=
∫
z
q
(
z
∣
x
,
c
)
log
P
(
x
,
z
∣
c
)
P
(
z
∣
x
,
c
)
d
z
=
∫
z
q
(
z
∣
x
,
c
)
log
P
(
x
,
z
∣
c
)
/
q
(
z
∣
x
,
c
)
P
(
z
∣
x
,
c
)
/
q
(
z
∣
x
,
c
)
d
z
=
∫
z
(
log
P
(
x
,
z
∣
c
)
q
(
z
∣
x
,
c
)
−
log
P
(
z
∣
x
,
c
)
q
(
z
∣
x
,
c
)
)
q
(
z
∣
x
,
c
)
d
z
=
∫
z
q
(
z
∣
x
,
c
)
log
P
(
x
,
z
∣
c
)
q
(
z
∣
x
,
c
)
d
z
−
∫
z
q
(
z
∣
x
,
c
)
log
P
(
z
∣
x
,
c
)
q
(
z
∣
x
,
c
)
d
z
=
∫
z
q
(
z
∣
x
,
c
)
log
P
(
x
,
z
∣
c
)
q
(
z
∣
x
,
c
)
d
z
⏟
①
+
K
L
(
q
(
z
∣
x
,
c
)
∣
∣
P
(
z
∣
x
,
c
)
)
⏟
②
\begin{align}\log P(x|c)=&\int_z q(z|x,c)\log\frac{P(x,z|c)}{P(z|x,c)} dz\\=&\int_z q(z|x,c)\log\frac{P(x,z|c)/q(z|x,c)}{P(z|x,c)/q(z|x,c)} dz\\=&\int_z (\log \frac{P(x,z|c)}{q(z|x,c)}-\log \frac{P(z|x,c)}{q(z|x,c)})q(z|x,c)dz\tag{b}\\=&\int_{z}q(z|x,c)\log\frac{P(x,z|c)}{q(z|x,c)}dz-\int_zq(z|x,c)\log\frac{P(z|x,c)}{q(z|x,c)}dz\nonumber\\=&\underbrace{\int_{z}q(z|x,c)\log\frac{P(x,z|c)}{q(z|x,c)}dz}_{①}+\underbrace{KL(q(z|x,c)||P(z|x,c))}_{②}\nonumber\end{align}
logP(x∣c)=====∫zq(z∣x,c)logP(z∣x,c)P(x,z∣c)dz∫zq(z∣x,c)logP(z∣x,c)/q(z∣x,c)P(x,z∣c)/q(z∣x,c)dz∫z(logq(z∣x,c)P(x,z∣c)−logq(z∣x,c)P(z∣x,c))q(z∣x,c)dz∫zq(z∣x,c)logq(z∣x,c)P(x,z∣c)dz−∫zq(z∣x,c)logq(z∣x,c)P(z∣x,c)dz①
∫zq(z∣x,c)logq(z∣x,c)P(x,z∣c)dz+②
KL(q(z∣x,c)∣∣P(z∣x,c))(b)
由于第②项的
P
(
z
∣
x
,
c
)
P(z|x,c)
P(z∣x,c)无法求解,所以关于
ϕ
\phi
ϕ最小化第②项(以让第二项为0,即可达到使用
q
(
z
∣
x
,
c
)
q(z|x,c)
q(z∣x,c)去近似
P
(
z
∣
x
,
c
)
P(z|x,c)
P(z∣x,c)的目的)。在
θ
,
x
,
c
\theta,x,c
θ,x,c给定的情况下,最小化第②项相当于最大化第一项。故而,最终变成求取变分下界
log
P
(
x
∣
c
)
≥
∫
z
q
(
z
∣
x
,
c
)
log
P
(
x
,
z
∣
c
)
q
(
z
∣
x
,
c
)
d
z
=
∫
z
q
(
z
∣
x
,
c
)
log
P
(
x
,
z
∣
c
)
q
(
z
∣
x
,
c
)
d
z
=
∫
z
q
(
z
∣
x
,
c
)
log
P
(
x
∣
z
,
c
)
P
(
z
∣
c
)
q
(
z
∣
x
,
c
)
d
z
=
∫
z
q
(
z
∣
x
,
c
)
(
log
P
(
z
∣
c
)
q
(
z
∣
x
,
c
)
+
log
P
(
x
∣
z
,
c
)
)
d
z
=
∫
z
log
P
(
x
∣
z
,
c
)
q
(
z
∣
x
,
c
)
d
z
−
∫
log
q
(
z
∣
x
,
c
)
P
(
z
∣
c
)
q
(
z
∣
x
,
c
)
d
z
=
E
z
∼
q
(
z
∣
x
,
c
)
[
log
P
(
x
∣
z
,
c
)
]
⏟
①
−
K
L
(
q
(
z
∣
x
,
c
)
∣
∣
P
(
z
∣
c
)
)
⏟
②
\begin{aligned}\log P(x|c)\ge &\int_{z}q(z|x,c)\log\frac{P(x,z|c)}{q(z|x,c)}dz\\=& \int_{z}q(z|x,c)\log\frac{P(x,z|c)}{q(z|x,c)}dz\\=& \int_zq(z|x,c)\log \frac{P(x|z,c)P(z|c)}{q(z|x,c)}dz\\=& \int_z q(z|x,c)\left(\log \frac{P(z|c)}{q(z|x,c)}+\log P(x|z,c)\right)dz\\=& \int_z\log P(x|z,c)q(z|x,c)dz-\int \log \frac{q(z|x,c)}{P(z|c)}q(z|x,c)dz\\=& \underbrace{\mathbb{E}_{z\sim q(z|x,c)}\left[\log P(x|z,c)\right]}_{①} -\underbrace{KL(q(z|x,c)||P(z|c))}_{②}\end{aligned}
logP(x∣c)≥=====∫zq(z∣x,c)logq(z∣x,c)P(x,z∣c)dz∫zq(z∣x,c)logq(z∣x,c)P(x,z∣c)dz∫zq(z∣x,c)logq(z∣x,c)P(x∣z,c)P(z∣c)dz∫zq(z∣x,c)(logq(z∣x,c)P(z∣c)+logP(x∣z,c))dz∫zlogP(x∣z,c)q(z∣x,c)dz−∫logP(z∣c)q(z∣x,c)q(z∣x,c)dz①
Ez∼q(z∣x,c)[logP(x∣z,c)]−②
KL(q(z∣x,c)∣∣P(z∣c))
其中,第一项就是重构项,他与普通的VAE的唯一区别,其实就是多了一个条件c
对于 q ( z ∣ x , c ) q(z|x,c) q(z∣x,c),我们大可理解为给定x、c的情况下,z的概率。
对于P(x|z,c),我们也可理解为给定z、c的情况下,x的概率。
而对于P(z|c),就是给定条件c的情况下,z的概率。
3.2、VAE与CVAE的一致性解释
我们大可直接假设 P ( z ∣ c ) P(z|c) P(z∣c)是正态分布
最小化第②项【让 q ( z ∣ x , c ) q(z|x,c) q(z∣x,c)分布靠近 P ( z ∣ c ) P(z|c) P(z∣c)】,而 P ( z ∣ c ) P(z|c) P(z∣c)是标准正太,所以 q ( z ∣ x , c ) q(z|x,c) q(z∣x,c)也假设为正太。
那 q ( z ∣ x , c ) q(z|x,c) q(z∣x,c)与 q ( z ∣ x ) q(z|x) q(z∣x)的区别是什么呢?区别就是它接收多一个c的输入。在VAE中, q ( z ∣ x ) q(z|x) q(z∣x)是用神经网络去逼近的,神经网络接收x作为输入。而对于 q ( z ∣ x , c ) q(z|x,c) q(z∣x,c),就是把x、c作为神经网络的输入。
所以,对于第②项,其实它与VAE的优化目标是一样的
那么对于第一项,其实也是同理, q ( z ∣ x , c ) q(z|x,c) q(z∣x,c)可以用神经网络去逼近;而 P ( x ∣ z , c ) P(x|z,c) P(x∣z,c)也是用神经网络去逼近,在 P ( x ∣ z ) P(x|z) P(x∣z)的时候,神经网络接收z,输出x。所以 P ( x ∣ z , c ) P(x|z,c) P(x∣z,c)就是接收z、c两个输入,然后输出x。
总的来说,上面的东西,可以总结成下面这样
假设 q ( z ∣ x , c ) q(z|x,c) q(z∣x,c)和 q ( z ∣ x ) q(z|x) q(z∣x)都是正态分布,但是用神经网络逼近 q ( z ∣ x , c ) q(z|x,c) q(z∣x,c)的时候,要给神经网络多输入一个条件c;
假设 P ( x ∣ z , c ) P(x|z,c) P(x∣z,c)也和 P ( x ∣ z ) P(x|z) P(x∣z)是正太(或伯努利等其他分布),但是用神经网络逼近 P ( z ∣ x , c ) P(z|x,c) P(z∣x,c)的时候,要给神经网络多输入一个条件c;
假设 P ( z ∣ c ) P(z|c) P(z∣c)也和 P ( z ) P(z) P(z)一样,服从标准正太分布;
用图像来表示流程图,则表示为
3、结束
好了·,很简单,就这样把。本篇文章到此结束,如有问题,还望指出,阿里嘎多!