前面介绍了CNN(Convolutional Neural Network)、BNN(Binarized
neural network)
dual-learning
NMT
DBN以及深度学习优化算法Batch
Normalization和Layer Normalization。
感兴趣的同学可以添加微信公众号深度学习与NLP,回复关键词“CNN”、“BNN“dual”DBN”、BN和LN获取对应文章链接。今天介绍GAN及其一些变体模型。

今天主要介绍2016年深度学习最火的模型生成对抗网络(Generative
Adversarial Net
-GANGAN是由现任谷歌大脑科学家的Ian
Goodfellow
2014年提出来的一种基于对抗训练(Adversarial
training
)过程来训练生成模型(Generative Model)的一种新的深度学习框架。GAN是由两个模型组成:一个生成模型G,用于获得输入样本x的分布(表示学习representation
learning
观点认为,深度学习对输入样本对(xy)关系拟合过程,其实就是在学习输入样本x的分布),一个判别模型(Discriminative
Model
D,用于估计一个样本是真实的样本而不是由G生成的样本的概率。

先简单介绍下传统深度学习模型的分类。深度学习产生之初被分为生成模型和判别模型两大类。生成模型典型网络有深度信念网络(Deep
Belief NetworkDBN)、堆叠自动编码器(Stacked
Auto-Encoder
SAE)和深度玻尔兹曼机(Deep
Boltzmann Machine,DBM
),生成模型认为模型的输出样本y是由模型的输入样本x生成的,一定存在一个最优的输入样本x*使得输出的y的值最大化,通过生成模型可以学习到输入样本x的表示representation。它的最大优势就是直接从输入样本x中进行无监督或半监督的学习,减少了对带标注样本的需求。判别模型认为模型的输入样本x是由输出样本y决定的,典型的网络如卷积神经网络(Convolution
Neural Network
CNN)。个人认为,GAN的产生将二者结合起来,生成模型G根据输入x产生输出y’,并传递给判别模型D判断是否是真实得数据。

 

GAN:Generative Adversarial Nets.Ian J. Goodfellow, Jean Pouget-Abadie.2014.06.10

 NIPS 2016 TutorialGenerative
Adversarial Networks
.Ian Goodfellow.2017.01.09

GAN的训练:GAN的训练分为两个部分:G的训练目标是最大化D做出错误识别的概率,就是尽可能让D判别出错;D的训练目标则是尽可能把G生成的样本找出来。极限情况下,当G能够完全恢复输入样本X的分布的时候,D已经把G生成的样本识别出来,所以G的输出概率处处为1/2。与传统的生成模型,如DBN相比,通过这种方式来训练生成模型,不需要计算复杂的马尔科夫链或者像CD-K算法那样进行展开的近似推理过程。

目标函数的构造,基于带有噪声的输入变量pz)定义了一个先验得到输入z,然后用GzQ)把输入z映射到生成器输出y’,G是处处可导的且采用一个多层神经网络来表示,用它的参数Q来拟合输入样本x的分布。再用一个多层网络来表示D,输出一个标量,表示来源于x而不是pz)的概率。对于G来说等价于最小化log1-D(G(z)))期望;对于D来说,等价于最大logDx)的期望,类似于一个minimax的游戏。由此可以得到GAN的目标函数VGD):

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

Outer loop训练完一次G之后,inner
loop
再去训练D,非常耗时,而且一直在一个训练集上训练容易造成过拟合。因此,在实际GAN训练过程中,D训练K次之后再训练G,这样做的目的是使D保持在一个optimum的状态,让G逐步慢慢变化。得到训练算法:

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

Ian GoodFellow所提出的生成对抗网络或对抗训练的理论是一个通用的框架,基于GAN也产生了很多变体,适用于各种场景中解决实际问题,展示了GAN家族的强大威力,下面简要介绍其中比较有代表一些模型。

 

CGAN:Conditional
generative adversarial nets for convolutional face generation
.Jon
Gauthier
.2015.03

 Conditional
Generative Adversarial Nets
.Mehdi
Mirza
.2014.11.06

解决什么问题:图像标注、图像分类和图像生成过程中,存在两类问题:其一、输出图像的label比较多,成千上万类别;其二、对于一个输入x,对应合适输出ylabel)的类别multi-modal(多个),怎么样选择一个合适类别是个问题。CGAN尝试在生成器G和判别器端加入额外的条件信息(additional
information
)来指导GAN两个模型的训练。

怎么做:条件化(conditionalGAN做法就是直接把额外的信息(y)直接添加到生成器G和判别器D的的目标函数中,与输入ZX中构成条件概率,如下图所示:

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

用于指导GD训练的额外信息可以是各种类型(multi-modal)的数据,已图像分类为例,可以是label标签,也可以是关于图像类别或其他信息的text文本描述。

 

DCGANUNSUPERVISED
REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS.Alec Radford & Luke Metz.2016.01.07

解决什么问题:把有监督学习的CNN与无监督学习的GAN整合到一起提出了Deep
Convolutional Generative Adversarial Networks - DCGANs
,是生成器和判别器分别学到对输入图像层次化的表示。

本文的最大贡献:1、将CNNGAN结合在一起提出了DCGANs,使用DCGANs从大量的无标记数据(图像、语音)学习到有用的特征,相当于利用无标记数据初始化DCGANs的生成器和判别器的参数,在用于有监督场景,比如,图像分类。2、表示学习representation
learning
的工作:尝试理解和可视化GAN是如何工作的,多层的GAN的中间表示intermediate
representation 
是什么。3
出了一些稳定训练DCGANsguidelines

DCGAN的网络结构:

生成器构G的造:

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

四个堆叠的卷积操作来构成生成器G,没有采用全连接层。

 

InfoGAN: Interpretable Representation Learning by Information Maximizing
Generative Adversarial Nets.Xi Chen, Yan Duan, Rein Houthooft, John Schulman.2016.06.12

解决什么问题:无监督学习或表示学习(representation
learning)可以看做是从大量无标记数据中抽取有价值的特征、或学习一种重要的隐特征(semantic features)表示(representation)的问题。但无监督学习又是ill-posed,因为很多与无监督学习相关的下游的任务在训练时是未知的,而务监督学习也是一种分离/拆解
表示(
disentangled representation),有助于下游相关但未知任务的学习,因为disentangled
representation
可以学习到输入样本的salient attribute。无监督学习中最重要的的模型就是生成模型Generative
model
,比如,生成对抗网络GAN和变分自动编码器()VAE。本文从disentangled
representation
角度出发,把信息理论(Information-theoretic)与GAN相结合提出InfoGAN,采用无监督的方式学习到输入样本X的可解释且有意义的表示(representation)。

怎么做:通过最大化隐变量(latent
variable)的一个子集与observation之间的互信息

 

SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient.Lantao
Yuy, Weinan Zhangy, Jun Wangz, Yong Yuy.2016.12.09

解决什么问题:GAN:用一个判别模型D去指导生成模型G的训练,在generating
real-valued
打他取得巨大成功,但处理的都是连续可导的数据,比如图像,鲜有涉及离散数据,如文本。原因有两个:其一,梯度从判别器D没有办法反向传递会生成器GG离散不可导;其二,判别器D可以评测一个完整序列的score,但没法评测只生成了一部分的partially
sequence
现在和未来的score。因此,本文提出SeqGAN解决这两个问题。

怎么做:借鉴了强化学习中的reward的思想,在判别器D端,通过一个完整的sequence序列构造一个reward反馈会生成器G来指导生成器G的训练,通过RL中的策略梯度算法(policy
gradient method
)来优化G的参数,绕过了上面两个问题。

SeqGAN的结构:

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative
Adversarial Networks.Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang.2016.12.10

解决什么问题:根据text
description生成图像有很多应用场景,比如图片辅助裁剪、计算机辅助设计等。但最大的问题是符合text描述的场景有很多(multi-modle),如何从中选择最佳的场景,生成高清晰的图片是个问题。本文基于GAN来做这个问题,原来方法只能生成64X64low
resolution
图片,本文使用Stack GAN生成了256X256的高清晰度图片,并且在CUBOxford-102数据集取得了比现有方法分别高28.47%20.30%improvement,这真的很厉害,也展示了GAN的强大功能。

怎么做:提出了一个堆叠的GAN模型用于“text-to-image”中生成高分辨率的图像,stack-1
GAN
生成一张包含text文本所描述物体的初级形状和基本颜色的,像素为64X64的低分辨率图片,stack-2
GAN 
根据GAN-1输出的低分辨率图片做为输入,加上text文本描述,进一步rectify
defects
和添加一些细节信息,进行refinement过程后生成一张256X256的高分辨率图片。

Stack GAN的网络结构:

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

关键点在于Stack-GAN的两个GAN做么构建,怎么训练

 

WGAN:Wasserstein GAN.Martin Arjovsky, Soumith Chintala, and Lon Bottou.2017.03.09

  Improved
Training of Wasserstein GANs
.Ishaan
Gulrajani1, Faruk Ahmed1, Martin Arjovsky2
.2017.03.31

解决什么问题:GAN在训练很麻烦,需要精心设计生成器G和判别器D的网络结构,调整很多的超参数,经常不收敛。为了解决这个问题,让GAN训练起来更容易,本文提出了Wasserstein
GAN
WGAN)。

怎么做:深入分析由GAN所优化的值函数(value
function
)的收敛特性,指出传统GAN不稳定是因为其基于Jensen-Shannon 差异(divergence)构造的值函数在某一地方不可导,导致生成器G训练不稳定。因此,提出了Earth-Mover距离,又称Wasserstein-1 距离Wq,p),基于Wasserstein
distance
来构造值函数,代替传统GAN中基于Jensen-Shannon 差异(divergence)的值函数。Wasserstein
distance
具有更好的特性,Jensen-Shannon divergence可能不连续,在不连续的地方不能提供稳定的梯度用于生成器G的参数优化;相比之下,Earth-Mover距离处处连续,处处可导。

Jensen-Shannon距离与Wassertein距离对比:

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

WGAN的训练算法:

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN

更多深度学习在NLP方面应用的经典论文、实践经验和最新消息,欢迎关注微信公众号“深度学习与NLPDeepLearning_NLP”或扫描二维码添加关注。

<模型汇总_5>生成对抗网络GAN及其变体SGAN_WGAN_CGAN_DCGAN_InfoGAN_StackGAN