【源头活水】Very Deep VAE
“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。
本文使用 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
首先,我们 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 的并行化生成,示意图如下。
对于大部分现有的 VAE 单纯增加层数是不可行的,因此文章基于 IAF-VAE 进行了少量改进。简单来说,这些包括减少 residual block 的维度,将残差乘以一个常数,去掉 weight normalization, 使用 nearest-neighbour upsampling, skip 较大的 gradient 等。示意图如下所示,具体的细节见文章以及官方代码 。
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, 这也是本文在实验上的主要贡献与结果。
Q3
我们想知道 Very Deep VAE 能否针对条件独立的 latent variables 学到一个很好的 latent hierarchy, 使得网络能够 (针对这些 latent variables) 并行化生成。作者选取不超过 1% 的前几层 latent variables, 它们对应低分辨率的全局特征,在实际实验中,只利用这些 latent variables 便能够生成具有全局特征的人脸。当增加 latent variables 的比例后,我们有更多的 latent variables 对应高分辨率的局部特征,因此利用它们生成能得到更精细的人脸。在逐步增加比例的时候,生成图片的细节的增加是近乎独立的,因此我们认为 Very Deep VAE 确实学习到了一个很好的 latent hierarchy, 而不像一些其它工作需要手动设计。该实验的示意图如下。
最后,文章提到,在 Very Deep VAE 中,只需要适量增加 upsampling layers 的数量便能够应用在更高分辨率的图像上,这不仅节约了计算资源,也使得模型的架构优化十分简单。
04
Very Deep VAE 是一篇非常精彩的工作,结论简单,但是论证过程十分严谨而又直观,读起来非常通透。我相信它的结论也会对 VAE 以及 AR /Flow 甚至 DDPM 这些模型的研究十分有帮助。在应用层面,将其部分技术应用到更前沿的 VAE 比如 VQ-VAE2 或者 language models 里的 VAE 也是很有前景的方向。
本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。
“源头活水”历史文章
联合意图识别和槽位填充,Slot-Gated机制
[ACM MM 2021] 基于深度学习的图像水印去除
SIGIR'21微软|基于自监督图学习的推荐系统
驾驶行为预测方法:分层自适应可迁移网络HATN
无监督异常检测场景下如何自动选择模型?
Graphormer:融合GNN与Transformer
[NAS论文][Transformer][预训练模型]精读NAS-BERT
NeurIPS 2021 | 助力半监督学习:一种课程伪标签方法FlexMatch和统一开源库TorchSSL
CPT:兼顾理解和生成的中文预训练模型
PointNet系列论文阅读与理解
基于视觉的在线地图:一种Transformer网络方法
VirTex:多模态预训练模型
CAMoE——屠榜video retrieval challenge
YOLOX解读与感想
ICCV‘21论文:通过概率建模深度检测目标的主动学习法
更多源头活水专栏文章,
请点击文章底部“阅读原文”查看
分享、在看,给个三连击呗!