这篇文章简单列举一下我认为最近这段时间中比较重要的GAN进展论文,这基本也是我在学习GAN的过程中主要去研究的论文清单。

生成模型之味 #

GAN是一个大坑,尤其像我这样的业余玩家,一头扎进去很久也很难有什么产出,尤其是各个大公司拼算力搞出来一个个大模型,个人几乎都没法玩了。但我总觉得,真的去碰了生成模型,才觉得自己碰到了真正的机器学习。这一点,不管在图像中还是文本中都是如此。所以,我还是愿意去关注生成模型。

当然,GAN不是生成模型的唯一选择,却是一个非常有趣的选择。在图像中至少有GAN、flow、pixelrnn/pixelcnn这几种选择,但要说潜力,我还是觉得GAN才是最具前景的,不单是因为效果,主要是因为它那对抗的思想。而在文本中,事实上seq2seq机制就是一个概率生成模型了,而pixelrnn这类模型,实际上就是模仿着seq2seq来做的,当然也有用GAN做文本生成的研究(不过基本上都涉及到了强化学习)。也就是说,其实在NLP中,生成模型也有很多成果,哪怕你主要是研究NLP的,也终将碰到生成模型。

好了,话不多说,还是赶紧把清单列一列,供大家参考,也作为自己的备忘。

拿效果来说话 #

话在前头 #

不严谨地说,目前在GAN中,基本上都是效果说话。不管你多么完美的理论,只要你实验不能生成高清图,都很难被人接受;你再丑陋的结果,只要你实验效果够好,能生成高清大图,大家都得围着你转。

GAN模型的一个标志性事件,是NVIDIA去年搞出来的Progressive Growing GANs,它首次实现了1024*1024的高清人脸生成。要知道,一般的GAN在生成128*128人脸时就会有困难,所以1024分辨率的生成称得上是一个突破。而下面列举的一些论文,都是在自己的实验中做到了1024的人脸生成。单是这个实验结果,就值得我们去关注一下这些论文。

当然,生成1024图除了需要模型的进步,还需要很大的算力,因此一般人/实验室都很难做到。关注这些论文,并不是要我们去复现这么大的图生成,而是因为这些模型能生成这么大的图,必然有它值得我们借鉴的地方,甚至我们可以从中明白到GAN的瓶颈所在,从而让我们在自己的研究中少走弯路。

论文清单 #

《Progressive Growing of GANs for Improved Quality, Stability, and Variation》
论文地址:https://arxiv.org/abs/1710.10196
参考实现:https://github.com/tkarras/progressive_growing_of_gans
简单介绍:这篇文章就是前面说的首次实现了1024人脸生成的Progressive Growing GANs,简称PGGAN,来自NVIDIA。顾名思义,PGGAN通过一种渐进式的结构,实现了从低分辨率到高分辨率的过渡,从而能平滑地训练出高清模型出来。论文还提出了自己对正则化、归一化的一些理解和技巧,值得思考。当然,由于是渐进式的,所以相当于要串联地训练很多个模型,所以PGGAN很慢...

《Which Training Methods for GANs do actually Converge?》
论文地址:https://arxiv.org/abs/1801.04406
参考实现:https://github.com/LMescheder/GAN_stability
简单介绍:这篇文章有很多对GAN训练稳定性的数学推导,最终得到了比WGAN-GP更简单的梯度惩罚项,关注GAN训练稳定性的同学可以参考。除了1024人脸,这篇文章也做了很多其他数据集的实验,效果都挺不错,而且都是直接端到端训练,不需要渐进式结构。我唯一困惑的是,这个惩罚项,不就是WGAN-div中的一个特例吗?为什么论文没有提到这一点?

《IntroVAE: Introspective Variational Autoencoders for Photographic Image Synthesis》
论文地址:https://arxiv.org/abs/1807.06358
参考实现:(目前还没有看到效果好的开源/复现)
简单介绍:这是个会“反省”的VAE,通过对抗来改进了VAE,从而能生成高清图片,并且能同时得到编码器和生成器。除了能生成1024的高清图,更值得一提的是,这篇文章在构思上非常精妙。因为能同时得到编码器和生成器的模型不算独特,比如BiGAN就能做到,但是IntroVAE独特之处在于它能直接利用了encoder作为判别器,不需要额外的判别器,也就是直接省去了1/3的参数量。这背后更深层次的原因,值得我们去细细分析和回味。

《Large Scale GAN Training for High Fidelity Natural Image Synthesis》
论文地址:https://arxiv.org/abs/1809.11096
参考实现:https://github.com/AaronLeong/BigGAN-pytorch
简单介绍:这就是大名鼎鼎的BigGAN。这篇文章虽然没有提供1024的人脸生成结果,但是它提供了128、256、512的自然场景图片的生成结果。要知道自然场景图片的生成可是比CelebA的人脸生成要难上很多倍,既然它连512的自然场景图片都可以生成了,我们自然不怀疑它能轻松生成1024的人脸。BigGAN在网上已经有很多科普介绍了,不再重复。论文还提出了自己的一些正则化技巧,并分享了大量的调参经验(调整哪些参数会有好的/坏的改变),非常值得参考。

《Variational Discriminator Bottleneck: Improving Imitation Learning, Inverse RL, and GANs by Constraining Information Flow》
论文地址:https://arxiv.org/abs/1810.00821
参考实现:https://github.com/akanimax/Variational_Discriminator_Bottleneck
简单介绍:这篇文章通过信息瓶颈来控制判别器的拟合能力,从而起到正则作用,稳定了GAN的训练。信息瓶颈的简介可以参考我的这篇文章。总的来说,在普通有监督训练中一切防止过拟合的手段,理论上都可以用在判别器中,而信息瓶颈也算是防止过拟合的一种手段。当然,从标题就可以知道,论文也不满足于只用在GAN中,除了1024的人脸图生成实验,论文还做了仿真学习、强化学习等实验。

《A Style-Based Generator Architecture for Generative Adversarial Networks》
论文地址:https://arxiv.org/abs/1812.04948
参考实现:(目前还没有看到效果好的开源/复现)
简单介绍:这就是前几天发出来的新GAN生成器架构,被很多文章称之为GAN 2.0,依旧是NVIDIA,依旧是PGGAN的作者,依旧是PGGAN的模式,只不过生成器的架构换了,人家在一年前就已经生成了1024图,这次肯定也不例外了。这个新的生成器架构,据说是借鉴了风格迁移的模型,所以叫Style-Based Generator。我读了一下,其实它差不多就是条件GAN(CGAN)的架构,但是把条件和噪声互换了。简单来说,就是把噪声当作条件,把条件当作噪声,然后代入到CGAN中。看论文的效果图,这种思维上的转换的效果还是很不错的,我自己也试着实现了一下,能work,但是有点mode collapse,大家还是等开源吧。顺便一提的是,一年前也是PGGAN的作者给我们带来了CelebA HQ数据集,现在还是他们给我们带来了新数据集FFHQ。据说数据集和代码都将在明年一月开源,让我们拭目以待。

稳住训练再说 #

话在前头 #

与有监督学习的任务不同,有监督学习中,一般只要设计好模型,然后有足够多的数据,足够的算力,就可以得到足够好的模型;但GAN从来都不是设计模型就完事了,它是一个理论、模型、优化一体的事情。从框架的角度来看,发展到WGAN后GAN的理论框架基本也就完备了,后面都只是不痛不痒的修补(包括我的GAN-QP);从模型架构来看,DCGAN奠定了基础,后来发展的ResNet + Upsampling也成为了标准框架之一,至于刚出来的Style-Based Generator就不说了,所以说模型架构基本上也成熟了。那剩下的是什么呢?

是优化,也就是训练过程。我觉得,要想真正掌握GAN,就得仔细研究它的优化过程,也许得从动力学角度来仔细分析它的训练轨迹。这可能涉及到微分方程解的存在性、唯一性、稳定性等性质,也可能涉及到随机优化过程的知识。总而言之,需要把优化过程也纳入到GAN的分析中,GAN才可能真正完备起来。

下面的这些论文,从不同的角度分析了GAN的训练问题,并给出了自己的解决方案,值得一读。

论文清单 #

《Stabilizing Training of Generative Adversarial Networks through Regularization》
论文地址:https://arxiv.org/abs/1705.09367
简单介绍:通过加噪声的方式推导出了GAN的正则项,推导过程理论上适用于一切f-GAN。从论文效果图看,结果还是不错的。

《GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium》
论文地址:https://arxiv.org/abs/1706.08500
简单介绍:提出了TTUR的训练策略,大概意思就是:原来我们每次迭代都是用相同的学习率将判别器和生成器交替训练不同的次数,现在可以考虑用不同的学习率将各自训练一次,这样显然训练起来会更省时。不过我粗略看了一下,尽管论文理论多,但是它理论基础却是另外一篇现成的文章《stochastic approximation with two time scales》,可以说论文只是反复在用这个现成的理论基础,略微单调。

《Which Training Methods for GANs do actually Converge?》
论文地址:https://arxiv.org/abs/1801.04406
简单介绍:在前面已经介绍过这篇文章了,但这里还是再放一次,因为实在是太经典~感觉是研究GAN训练稳定性必看的文章,从微分方程角度来理解GAN的训练问题。在稳定性分析的过程中,这篇文章主要还引用了两篇文章,一篇是它的“前传”(同一作者),叫做《The Numerics of GANs》,另一篇是《Gradient descent GAN optimization is locally stable》,都是经典之作。

《Spectral Normalization for Generative Adversarial Networks》
论文地址:https://arxiv.org/abs/1802.05957
简单介绍:通过谱归一化给判别器实现L约束,应该说是目前实现L约束最漂亮的方法了,目前谱归一化也用得很广,所以值得一提。相关介绍也可以参考我之前的文章

《Improving the Improved Training of Wasserstein GANs: A Consistency Term and Its Dual Effect》
论文地址:https://arxiv.org/abs/1803.01541
简单介绍:往WGAN-GP中添加了一个新的正则项,这个正则项的想法很朴素,就是直接把L约束(差分形式)作为正则项,跟GAN-QP的判别器多出来的二次项差不多。看论文的曲线图,训练比纯WGAN-GP要稳定些。

欢迎继续补充 #

这次的论文清单就这么多了,刚好凑够了十篇。限于笔者阅读量,不排除有疏漏之处,如果还有其他推荐的,欢迎在评论中提出。

PS:只关心NLP的读者也不用无奈,很快就会有一些NLP的博文出来了(^_^)

转载到请包括本文地址:https://kexue.fm/archives/6240

如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。

如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!

如果您需要引用本文,请参考:

苏剑林. (2018, Dec 26). 《【学习清单】最近比较重要的GAN进展论文 》[Blog post]. Retrieved from https://kexue.fm/archives/6240