查看原文
其他

【源头活水】Very Deep VAE



“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—Zhifeng
地址:https://zhuanlan.zhihu.com/p/433717892

本文使用 Zhihu On VSCode   创作并发布

本文介绍发表在 ICLR 2021 上的 Very Deep VAEs Generalize Autoregressive Models and Can Outperform Them on Images  . 这篇文章非常精彩,论证了增加 VAE 的层数能够在保证生成速度的情况下,实现超过自回归模型 (AR) 的 NLL (negative log-likelihood). 具体来说,文章分析了为什么更多层数的 VAE 能超过 AR, 如何在增加 VAE 层数的时候保证生成速度,究竟需要多少层,能好多少,以及好在什么方面。


01

关于 VAE 的层数 - 理论分析

首先,我们 motivate 为什么要研究 VAE 的层数。当我们对比 VAE 和 AR 模型在比较大的数据集上的 NLL, 我们发现 AR 模型比如 PixelCNN++ 能达到远超过非 AR 的模型如 GLOW, 而即使较新的 Flow++ 甚至还不如 PixelRNN. 因此,我们有如下两个猜测:

逐个像素的生成方式 (即 AR) 能带来神秘但有效的 inductive bias, 或者

我们还没有找到更好的训练 VAE 的方法。

本文便针对第二个猜测给出了假设:

我们可以通过增加 VAE 的层数获得更好 (超过 AR) 的 VAE.

加层数这个想法并非凭空产生,而是基于一个有趣的事实:AR 本质上等价于某种    层 VAE, 其中    是数据的维度。在此,我们简单介绍一种 VAE 称为 LVAE (Ladder VAE)  . 其也被称为 top-down VAE, 原因在于它拥有若干层 latent layers:   . 这些随机变量在某种程度上条件独立。在图像生成中,latent variable 通常对应 feature map 中的不同分辨率,如    对应网络顶端特征图中低分辨率部分,   对应网络底端特征图中高分辨率部分。在 LVAE 中,encoder 和 decoder 分别是

我们观察到,如果我们通过如下方式固定 encoder   :

么有   , 此时 log-likelihood = ELBO. 由于    被固定,我们只剩下 ELBO 中的 log-likelihood 一项,即此时 VAE 优化的就是 log-likelihood. 同时,decoder    的形式和 AR 完全一致,因此我们认为,任何 AR 都可以被表示成    层 LVAE.

然而,即使在 CIFAR 数据集上,  , 但现有 VAE 的层数不超过 15 层,两者之间的差别确实太大了。因此,本文猜测:VAE 的层数根本就不够! 但是,如果将 VAE 增加到 3072 层,尽管它等价于一个 AR, 但是它很可能也需要相似或者更多的计算资源,这就失去了意义。幸运的是,我们有两点理由相信 VAE 不需要达到    层:

根据 Diagnosing and Enhancing VAE Models  , 如果数据集只分布于    维空间上的    维流形,那么 VAE 的 latent space 能够很聪明地 activate 这    个维度。

在 LVAE 中不同的 latent variables 存在某种条件独立性,这使得一层 decoder 能够并行运算一组条件独立的 latent variables, 因此我们不需要    层 decoder.

于此,本文提出:   层 VAE 能够实现非常好的 NLL 而同时保留快速生成的能力。


02

网络结构

首先,本文采用类似 LVAE 的并行化生成,示意图如下。

Parallel Generation

对于大部分现有的 VAE 单纯增加层数是不可行的,因此文章基于 IAF-VAE   进行了少量改进。简单来说,这些包括减少 residual block 的维度,将残差乘以一个常数,去掉 weight normalization, 使用 nearest-neighbour upsampling, skip 较大的 gradient 等。示意图如下所示,具体的细节见文章以及官方代码   。

Architecture


03

实验验证

为了支持本文提出的猜想,作者通过实验验证了一下三个问题:

Q1: 当保持参数量不变的时候,增加 VAE 的层数能否带来更好的 NLL?

Q2: 更深的 VAE 能否在 NLL 和生成速度两个指标上同时超过 AR?

Q3: 如果 Q1 和 Q2 正确,我们能否证明更深的 VAE 相比 AR 确实学习到了更好的生成过程?

Q1

作者在固定参数数量的同时改变 VAE 的层数,并查看在 ImageNet-32 上得到的 NLL.

可以看出,层数的增加确实能带来 NLL 的提升。

Q2

作者在不同数据集上测试了 Very Deep VAE 的 NLL, 均达到了接近 SOTA 的 NLL, 这也是本文在实验上的主要贡献与结果。

Main Results

Q3

我们想知道 Very Deep VAE 能否针对条件独立的 latent variables 学到一个很好的 latent hierarchy, 使得网络能够 (针对这些 latent variables) 并行化生成。作者选取不超过 1% 的前几层 latent variables, 它们对应低分辨率的全局特征,在实际实验中,只利用这些 latent variables 便能够生成具有全局特征的人脸。当增加 latent variables 的比例后,我们有更多的 latent variables 对应高分辨率的局部特征,因此利用它们生成能得到更精细的人脸。在逐步增加比例的时候,生成图片的细节的增加是近乎独立的,因此我们认为 Very Deep VAE 确实学习到了一个很好的 latent hierarchy, 而不像一些其它工作需要手动设计。该实验的示意图如下。

Latent Hierarchy

最后,文章提到,在 Very Deep VAE 中,只需要适量增加 upsampling layers 的数量便能够应用在更高分辨率的图像上,这不仅节约了计算资源,也使得模型的架构优化十分简单。


04

总结

Very Deep VAE 是一篇非常精彩的工作,结论简单,但是论证过程十分严谨而又直观,读起来非常通透。我相信它的结论也会对 VAE 以及 AR /Flow 甚至 DDPM 这些模型的研究十分有帮助。在应用层面,将其部分技术应用到更前沿的 VAE 比如 VQ-VAE2   或者 language models 里的 VAE 也是很有前景的方向。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存