6

VAE(三)——VAE vs GAN, Normalizing Flow, Diffusion Model, VAE参考资源

 2 years ago
source link: http://antkillerfarm.github.io/gan%20&%20vae/2019/05/05/VAE_3.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Vanilla VAE

VAE的另一个介绍(续)

举个例子,假设我们已经在一个大型人脸数据集上训练了一个Autoencoder模型, encoder的维度是6。理想情况下, 我们希望自编码器学习面部的描述性属性,比如肤色,人是否戴眼镜,从而能够用一些特征值来表示这些属性。

在上面的示例中,我们使用单个值来描述输入图像的隐属性。 但是,我们其实更愿意用一个分布去表示每个隐属性。 比如, 输入蒙娜丽莎的照片,我们很难非常自信的为微笑属性分配一个具体值, 但是用了变分自编码器, 我们就能比较自信的说微笑属性服从什么分布。

通过这种方法,我们现在将给定输入的每个隐属性表示为概率分布。 当从隐状态解码时,我们将从每个隐状态分布中随机采样,来生成向量作为解码器的输入。

通过构造我们的编码器来输出一系列可能的值(统计分布),然后随机采样该值作为解码器的输入,我们能够学习到一个连续,平滑的隐空间。因此,在隐空间中彼此相邻的值应该与非常类似的重建相对应。而从隐分布中采样到的任何样本,我们都希望解码器理解, 并准确重构出来。

我们可以进一步将此模型构造成神经网络架构:

下图是VAE的结构图:

Reparameterization Trick的图示:

从上面两图可以看出如下几点:

1.mean tensor和variance tensor都是从上一层经FC计算得到。

2.两者的差异主要是由生成z时候的角色决定的:做加法的就是mean tensor,做乘法的就是variance tensor。

Reparameterization Trick的反向传播:

数值计算 vs 采样计算

VAE的基本概念到此差不多了,苏剑林趁热打铁又写了以下理论文章:

https://kexue.fm/archives/5343

变分自编码器(二):从贝叶斯观点出发

特将要点摘录如下。

对于不是很熟悉概率统计的读者,容易混淆数值计算和采样计算的概念。

已知概率密度函数p(x),那么x的期望也就定义为:

(1)E[x]=∫xp(x)dx

如果要对它进行数值计算,也就是数值积分,那么可以选若干个有代表性的点x0<x1<⋯<xn,然后得到:

(2)E[x]≈∑i=1nxip(xi)(xi−xi−1xn−x0)

如果从p(x)中采样若干个点x1,x2,…,xn,那么我们有:

(3)E[x]≈1n∑i=1nxi,xi∼p(x)

我们可以比较(2)跟(3),它们的主要区别是(2)中包含了概率的计算而(3)中仅有x的计算,这是因为在(3)中xi是从p(x)中依概率采样出来的,概率大的xi出现的次数也多,所以可以说采样的结果已经包含了p(x)在里边,就不用再乘以p(xi)了。

生成模型近似

对于二值数据,我们可以对decoder用sigmoid函数激活,然后用交叉熵作为损失函数,这对应于q(x∣z)为伯努利分布;而对于一般数据,我们用MSE作为损失函数,这对应于q(x∣z)为固定方差的正态分布。

苏剑林稍后还写了以下两文,都很值得一看:

https://kexue.fm/archives/5332

基于CNN和VAE的作诗机器人:随机成诗

https://kexue.fm/archives/5383

变分自编码器:这样做为什么能成?

VAE vs AE

VAE和AE的差异在于:

1.两者虽然都是X->Z->X’的结构,但是AE寻找的是单值映射关系,即:z=f(x)。

2.而VAE寻找的是分布的映射关系,即:DX→DZ。

为什么会有这个差别呢?我们不妨从生成模型的角度考虑一下。既然AE的decoder做的是Z->X’的变换,那么理论上它也可以作为生成器使用。但这里有个问题,显然不是所有的RZ都是有效的Z,或者可以说Z只占了高维空间RZ的一部分。Z的边界在哪里?如何得到有效的z,从而生成x?这些都不是AE能解决的。

VAE映射的是分布,而分布可以通过采样得到有效的z,从而生成相应的x。

https://mp.weixin.qq.com/s/COtuXSpIcujE-pxfeAbTAQ

《变分自编码器(VAE)导论》93页书册

https://mp.weixin.qq.com/s/TqZnlXLKHhZn3U29PlqetA

变分自编码器VAE面临的挑战与发展方向

https://mp.weixin.qq.com/s/mtZ4_pwl8_GhitgImAU0VA

一文读懂什么是变分自编码器

https://mp.weixin.qq.com/s/LQFuXgI7uZK2UKRfZvlVbA

Variational AutoEncoder

https://jaan.io/what-is-variational-autoencoder-vae-tutorial/

Tutorial - What is a variational autoencoder?

https://mp.weixin.qq.com/s/lnSMdOk8fYfdU4aGeI5j7Q

未标注的数据如何处理?一文读懂变分自编码器VAE

https://mp.weixin.qq.com/s/ELdemKdQixXgBAmlhagDAg

基于可变自动编码器(VAE)的生成建模,理解可变自动编码器背后的原理

https://zhuanlan.zhihu.com/p/27549418

花式解释AutoEncoder与VAE

https://mp.weixin.qq.com/s/TJDGZvAvT7KamR_WN-oYYw

如何使用变分自编码器VAE生成动漫人物形象

https://mp.weixin.qq.com/s/1q36Cb4Fy4Mg7DcrAcJv3A

双人协作游戏带你理解变分自编码器-Part1

https://mp.weixin.qq.com/s/zJf-dWsMe5WELgDz7TlivA

双人协作游戏带你理解变分自编码器-Part2

VAE的发展

https://zhuanlan.zhihu.com/p/68903857

一文看懂AutoEncoder模型演进图谱

VAE vs GAN

VAE是直接计算生成图片和原始图片的均方误差而不是像GAN那样去对抗来学习,这就使得生成的图片会有点模糊。但是VAE的收敛性要优于GAN。因此又有GAN hybrids:一方面可以提高VAE的采样质量和改善表示学习,另一方面也可以提高GAN的稳定性和丰富度。

上图给出了VAE和GAN的联系和区别。

无论是VAE还是GAN,我们在接触一个新模型的时候都需要注意以下几点:

1.网络结构和训练流程。

2.Loss。

3.随机性的引入方法。

其中,第3点是生成模型特有的,必须加倍重视。

https://mp.weixin.qq.com/s/d_P-4uQx0kC2w6J69OZIAw

Deepmind研究科学家最新演讲:VAEs and GANs

https://mp.weixin.qq.com/s/9N_3JkNEPdXQgFn0S7MqnA

走进深度生成模型:变分自动编码器(VAE)和生成对抗网络(GAN)

《Adversarial Autoencoders》

http://kissg.me/2017/12/17/papernotes03/

AAE, ALI, BiGAN

VAE-GAN

《Autoencoding beyond pixels using a learned similarity metric》

而关于VAEGAN,有趣的一点是,我们不仅可以用GANs来提升VAE,也可以用VAE来提升GANs。如果是被用作后者的话,“GANVAE”其实就等效为CycleGAN的一部分。

https://mp.weixin.qq.com/s/fzadP8NwPTxuhEB0O4GU8g

漫谈生成模型,从AE到CVAE-GAN

BiGAN

《Adversarial Feature Learning》

BiVAE

《A Variational Autoencoding Approach for Inducing Cross-lingual WordEmbeddings》

Big transformation

我们前面提到的风格转换都是比较小幅度的风格转换,有的时候我们会需要做非常大的风格转换,譬如把真人照片转成动漫照片。

Normalizing Flow

Normalizing Flow是GAN和VAE之外的另一大类生成模型方法。

https://zhuanlan.zhihu.com/p/44304684

Normalizing Flow小结

https://www.jianshu.com/p/66393cebe8ba

标准化流(Normalizing Flow)教程(一)

https://www.jianshu.com/p/db72c38233f3

标准化流(Normalizing Flow)(二):现代标准化流技术

https://mp.weixin.qq.com/s/oUQuHvy0lYco4HsocqvH3Q

Normalizing Flows入门(上)

https://mp.weixin.qq.com/s/XtlK3m-EHgFRKrtcwJHZCw

Normalizing Flows入门(中)

https://mp.weixin.qq.com/s/TRgTFBz_NmBJygQjOYwdqw

GAN/VAE地位难保?Flow在零样本识别任务上大显身手

https://mp.weixin.qq.com/s/xMO9jhzQH6P5NEA_D-uyIA

这个模型的脑补能力比GAN更强,ETH提出新型超分辨率模型SRFlow

https://zhuanlan.zhihu.com/p/279121569

Flow-based Generative Model流的生成模型

https://mp.weixin.qq.com/s/KrvW16GAxSGAPOCYYKbGUg

生成模型:标准化流(Normalized Flow)

Diffusion Model

Diffusion Model也是一类生成模型方法。

Diffusion Model主要通过采样的方法,不断逼近模型的数据分布,从而生成数据。基本原理和VAE一样仍然是Markov Chain Monte Carlo。

Diffusion Model由于天生就是渐变的迭代过程,因此在流程的可控性上很有优势。当时间宽裕时可以通过高轮次的迭代获得高质量的合成样本,同时较低轮次的快速合成也可以得到没有明显瑕疵的合成样本。而高低轮次迭代之间完全不需要重新训练模型,只用手动调整一些轮次相关的参数。

因此,很自然的又有了Cascaded Diffusion Models。

《Cascaded Diffusion Models for High Fidelity Image Generation》

https://lilianweng.github.io/lil-log/2021/07/11/diffusion-models.html

What are Diffusion Models?

https://zhuanlan.zhihu.com/p/366004028

另辟蹊径—Denoising Diffusion Probabilistic一种从噪音中剥离出图像/音频的模型

https://zhuanlan.zhihu.com/p/384144179

Denoising Diffusion Probabilistic Model(DDPM)

https://zhuanlan.zhihu.com/p/377603135

Diffusion Probabilistic Model

https://yang-song.github.io/blog/2021/score/

Generative Modeling by Estimating Gradients of the Data Distribution

VAE参考资源

https://mp.weixin.qq.com/s/6G1y2xMclUyzz_GQzKDrIw

变分U-Net,可按条件独立变换目标的外观和形状

https://zhuanlan.zhihu.com/p/88750084

从自编码器(AE)到变分自编码器(VAE)再到条件变分自编码器(CVAE):一份小白入门基础总结

https://mp.weixin.qq.com/s/ZlLuhu08m_RnD-h86df8sA

清华大学提出SA-VAE框架,通过单样本/少样本学习生成任意风格的汉字


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK