AI机动队
首发于AI机动队
生成模型综述——深度学习第二十章(一)

生成模型综述——深度学习第二十章(一)

这是《深度学习》花书最后一章,内容也比较多,所以准备分为四篇总结:1. 生成模型综述,比较一下常见的几种生成模型。 2. 详解玻尔兹曼机,GSN以及Fully Visible Belief Network如PixelRNN/PixelCNN。3.详解变分自编码器Variational Autoencoder。4.详解生成对抗网络Generative Adversarial Network。另外,由于部分内容其他资料会梳理的更清晰,所以会结合Ian在2016 NIPS的GAN tutorial NIPS 2016 tutorial: Generative Adversarial Networks和斯坦福Syllabus | CS 231N中与Generative Model相关的内容一起总结。

这一篇先来综述一下什么是生成模型,我们为什么要研究生成模型以及常见生成模型谱系及比较。

什么是生成模型

生成模型(generative model)描述的是这一类的模型:我们接收了从分布 p_{data} 取样的若干样本构成我们的训练集,我们的模型会学习到一个模拟这一分布的概率分布 p_{model} ,在有些情况下,我们可以直接的估计概率分布,如下图所示的密度概率分布模型:

有些情况,我们需要从p_{model}中生成一些样本,如下图所示训练数据为ImageNet中的样本,训练的生成模型可以生成以假乱真的图片:

为什么要研究生成模型

那么研究生成模型的意义何在呢?尤其是对于非直接密度估计而只能从模型中生成样本的一类情况,特别是对于图像,这类模型只能提供更多的图像,而我们并不缺少海量的图像。

主要原因如下:

  • 这是对我们能够表示和操控高维概率分布的能力的有效检验。
  • 我们可以将生成模型结合到强化学习(reinforcement learning)中,例如对于model-based RL可用生成模型来模拟可能发生的未来情况,以便RL算法进行规划(planning),例如这篇论文[1610.00696] Deep Visual Foresight for Planning Robot Motion
  • 生成模型可以用有损失(部分样本无标记)的数据进行训练,进行半监督学习(semi-supervised learning),降低了我们获得数据样本的难度。
  • 生成模型可以处理多峰值(multi-modal)的输出。对于很多任务,一个输入可能对应多个可能的输出,一些传统的机器学习模型只能学到一种输出而无法学习多种可能的输出。
  • 还有一些任务需要产生看起来真实的样本。如由低分辨率图片产生高分辨率图片,图像转换等等。

输入低分辨率图片,生成模型产生接近原分辨率的图片。

从街道轮廓图生成真实图,从卫星图片生成地图,从草图生成真实图片

生成模型谱系及比较

那么生成模型是如何工作的呢?为了简化讨论,我们这里考虑符合最大似然(maximum likelihood)原则(可参考最大似然法与最大后验概率估计——深度学习花书第五章(三))的生成模型。其基本思想是模型是带有参数 \theta 的概率分布的估计,则模型给予m个训练样本的似然率为 \prod_{i=1}^{m}p_{model}(x^{(i)};\theta) ,最大似然原则就是选择使该概率最大的参数。即 \theta^* = \underset{\theta}{\mathrm{argmax}}\prod_{i=1}^{m}p_{model}(x^{(i)};\theta) \\ =\underset{\theta}{\mathrm{argmax}}\,log\prod_{i=1}^{m}p_{model}(x^{(i)};\theta)\\ =\underset{\theta}{\mathrm{argmax}}\sum_{i=1}^{m}logp_{model}(x^{(i)};\theta)

其过程如下图所示,模型会逐渐将训练数据所处的概率增大。

另一方面,我们也可以将最大似然近似看做是使模型与数据分布KL divergence(可参考概率论——深度学习花书第三章)最小的参数, \theta^* = \underset{\theta}{\mathrm{argmin}}\,D_{KL}(p_{data}(x)||p_{model}(x;\theta))

了解了最大似然原则之后,我们就可以从似然率及其梯度的计算方法或是近似方法来比较几个常见的生成模型,如图中的树状结构所示:

之后几篇会详细总结这些模型如何工作的,这里我们先看一看如何从似然率计算方面将他们区分开来。

先来看看左边一支Explicit density显性密度模型,即显性的定义密度分布 p_{model}(x;\theta) ,对于这类模型,似然率最大化的过程比较直接:我们将密度分布代入到似然率的表达式中,然后沿着梯度上升的方向更新模型即可,但其难点在于如何定义模型使得其既能表达数据的复杂度同时又方便计算。大致有两种方式:

  • Tractable explicit model(易解显性模型),即定义一个方便计算的密度分布,主要一类模型是Fully visible belief nets,简称FVBN,也被称作Auto-Regressive Network,这一类模型利用了概率的链式法则,转化为条件概率的联乘积形式,即 p_{model}(\vec{x})=\prod_{i=1}^{n}p_{model}(x_i|x_1,...,x_{i-1}) ,NADE,PixelRNN,PixelCNN都属于这一类模型,许多更复杂的模型也是基于这一类模型,例如DeepMind的语音合成模型WaveNet。这类模型一大缺点是模型之后的元素值值得生成依赖于之前的元素值,即我们需要先生成 x_1 再生成 x_2 ,其效率较低。其优点是由于直接定义了可解的密度分布,我们可直接应用基于训练数据对数似然率的优化模型,但同时这也限制了可供选择的密度分布类型。
  • Approximate explicit model(近似显性模型)可以避免需要设定可解的密度分布的限制,其密度分布可以是那一计算的,但可用一些近似方法来求最大似然率。这又可以分为两类,即确定性近似(deterministic approximation),通常是指变分近似(可参考变分推断——深度学习第十九章),即转化为Evidence lower bound的极值问题,之后会详细总结变分自编码器VAE。这一方法的缺点是现在VAE生成的图片都比较模糊,对于这一现象暂时还没有很好的解释。另一类是随机近似(stochastic approximation),如MCMC方法(可参考蒙特卡罗方法——深度学习第十七章),如果样本可以较快的产生且各样本之间的方差较小,可以利用MCMC,但我们之前在第十七章也看到这一方法混合时间较长且没有很好的方法判断是否已经converge,所以效率较低。

再来看右边一支Implicit density model隐性密度模型,即不明确定义模型密度分布,而是非直接的与 p_{model} 作用,即从中取样,也可以分为两类:

  • 也是利用达到平稳分布后的马尔科夫链来取样,如generative stochastic network(生成随机网络),简称GSN。马尔科夫链的缺点如难以拓展到高维空间,巨大的计算量等缺点也适用于这种模型。
  • Generative Adversarial Network(生成对抗网络),简称GAN,这一模型取样时只需要进行一步,而不需要利用马尔科夫链运行若干次直至达到平稳分布,所以采样效率很高。其基本思想是利用生成神经网络和鉴别神经网络两个网络相互对抗,达到纳什均衡。其优点是可以并行的产生样本,不需要马尔科夫链,效率高;生成函数没有限制,可以表达很多种分布;实际中GAN生成的样本视觉上较其他方法好。当然,由于它不再是优化问题,而是需要找到纳什均衡,所以训练过程不够稳定。

总结

这一篇从对最大似然率的计算与近似角度将常见的生成模型做了较为清晰的分类比较,有利于我们在各种模型间进行合理的区分与选择,现在比较常用的是FVBN,VAE与GAN,之后会分别详细总结这几种模型,to be continued。


注:截图均来自NIPS 2016 tutorial: Generative Adversarial Networks,推荐阅读原论文。

编辑于 2018-12-03

文章被以下专栏收录