CVAE条件生成原理推导

1、前言

本篇文章,我们来讲一下条件VAE,也就是CVAE。主要是下一期内容需要用到这个东西,而我们之前又没有讲过。所以来简单推导一下

视频:[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(xc)=logP(zx,c)P(x,zc)
等式左右同时对 q ( z ∣ x , c ) q(z|x,c) q(zx,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(xc)q(zx,c)dz=logP(xc)zq(zx,c)dz=logP(xc)

右边: ∫ 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(zx,c)logP(zx,c)P(x,zc)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(xc)=====zq(zx,c)logP(zx,c)P(x,zc)dzzq(zx,c)logP(zx,c)/q(zx,c)P(x,zc)/q(zx,c)dzz(logq(zx,c)P(x,zc)logq(zx,c)P(zx,c))q(zx,c)dzzq(zx,c)logq(zx,c)P(x,zc)dzzq(zx,c)logq(zx,c)P(zx,c)dz zq(zx,c)logq(zx,c)P(x,zc)dz+ KL(q(zx,c)∣∣P(zx,c))(b)
由于第②项的 P ( z ∣ x , c ) P(z|x,c) P(zx,c)无法求解,所以关于 ϕ \phi ϕ最小化第②项(以让第二项为0,即可达到使用 q ( z ∣ x , c ) q(z|x,c) q(zx,c)去近似 P ( z ∣ x , c ) P(z|x,c) P(zx,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(xc)=====zq(zx,c)logq(zx,c)P(x,zc)dzzq(zx,c)logq(zx,c)P(x,zc)dzzq(zx,c)logq(zx,c)P(xz,c)P(zc)dzzq(zx,c)(logq(zx,c)P(zc)+logP(xz,c))dzzlogP(xz,c)q(zx,c)dzlogP(zc)q(zx,c)q(zx,c)dz Ezq(zx,c)[logP(xz,c)] KL(q(zx,c)∣∣P(zc))
其中,第一项就是重构项,他与普通的VAE的唯一区别,其实就是多了一个条件c

对于 q ( z ∣ x , c ) q(z|x,c) q(zx,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(zc)是正态分布

最小化第②项【让 q ( z ∣ x , c ) q(z|x,c) q(zx,c)分布靠近 P ( z ∣ c ) P(z|c) P(zc)】,而 P ( z ∣ c ) P(z|c) P(zc)是标准正太,所以 q ( z ∣ x , c ) q(z|x,c) q(zx,c)也假设为正太。

q ( z ∣ x , c ) q(z|x,c) q(zx,c) q ( z ∣ x ) q(z|x) q(zx)的区别是什么呢?区别就是它接收多一个c的输入。在VAE中, q ( z ∣ x ) q(z|x) q(zx)是用神经网络去逼近的,神经网络接收x作为输入。而对于 q ( z ∣ x , c ) q(z|x,c) q(zx,c),就是把x、c作为神经网络的输入。

所以,对于第②项,其实它与VAE的优化目标是一样的

那么对于第一项,其实也是同理, q ( z ∣ x , c ) q(z|x,c) q(zx,c)可以用神经网络去逼近;而 P ( x ∣ z , c ) P(x|z,c) P(xz,c)也是用神经网络去逼近,在 P ( x ∣ z ) P(x|z) P(xz)的时候,神经网络接收z,输出x。所以 P ( x ∣ z , c ) P(x|z,c) P(xz,c)就是接收z、c两个输入,然后输出x。

总的来说,上面的东西,可以总结成下面这样

假设 q ( z ∣ x , c ) q(z|x,c) q(zx,c) q ( z ∣ x ) q(z|x) q(zx)都是正态分布,但是用神经网络逼近 q ( z ∣ x , c ) q(z|x,c) q(zx,c)的时候,要给神经网络多输入一个条件c;

假设 P ( x ∣ z , c ) P(x|z,c) P(xz,c)也和 P ( x ∣ z ) P(x|z) P(xz)是正太(或伯努利等其他分布),但是用神经网络逼近 P ( z ∣ x , c ) P(z|x,c) P(zx,c)的时候,要给神经网络多输入一个条件c;

假设 P ( z ∣ c ) P(z|c) P(zc)也和 P ( z ) P(z) P(z)一样,服从标准正太分布;

用图像来表示流程图,则表示为

在这里插入图片描述

3、结束

好了·,很简单,就这样把。本篇文章到此结束,如有问题,还望指出,阿里嘎多!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值