本文共 3309 字,大约阅读时间需要 11 分钟。
深度生成模型基本都是以某种方式寻找并表达(多变量)数据的概率分布。有基于无向图模型(马尔可夫模型)的联合概率分布模型,另外就是基于有向图模型(贝叶斯模型)的条件概率分布。前者的模型是构建隐含层(latent)和显示层(visible)的联合概率,然后去采样。基于有向图的则是寻找latent和visible之间的条件概率分布,也就是给定一个随机采样的隐含层,模型可以生成数据。
生成模型的训练是一个非监督过程,输入只需要无标签的数据。除了可以生成数据,还可以用于半监督的学习。比如,先利用大量无标签数据训练好模型,然后利用模型去提取数据特征(即从数据层到隐含层的编码过程),之后用数据特征结合标签去训练最终的网络模型。另一种方法是利用生成模型网络中的参数去初始化监督训练中的网络模型,当然,两个模型需要结构一致。
由于实际中,更多的数据是无标签的,因此非监督和半监督学习非常重要,因此生成模型也非常重要。本篇主要介绍一种基于对抗模式的生成模型,GAN - 从第一篇提出此模型的论文开始,之后紧接着两篇基于它的实现以及改进。三篇文章一脉相承,可以看到结合这种模型的研究进展及方向。
Generative Adversarial Nets
1
Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio
Universite of Montreal
生成模型 (Generative model)
NIPS 2014
通过模拟对抗过程,提出一种新的生成模型框架
1、建模
在对抗生成模型中,同时训练两个网络,第一个网络是生成网络,G(z),输入z一般是来自常见概率分布函数的样本向量,维度一般比较低,比如100。生成网络输入向量z,输出图片样例,如果使用卷机网实现的话,整个网络可以看过一个反向的CNN,其中的卷积层替换成 transposed convolution layer。第二个网络是识别网络discriminator net - D(x),输入为一张图片x,而输出为一个标量,用来代表x来自真实图片的概率。
2、训练
整个网络的loss定义为
V = E’[log D(x)] + E’’[log (1 - D(G(z)) )] E’ - 当x来自真实数据的期望 E’’ - 当x来自生成网络的期望
很显然,在对抗网络中,生成模型希望能够增大D(G(z)),即,希望生成的图片越真实而让识别模型“误以为”是来自真实的图片集。
如果生成网络G的参数用theta表示,识别模型的参数用theta_d表示,在使用SGD训练的时候,两组参数分别进行训练,对于D来说,需要对上面的公式求Gradient,但是只更新自己的参数。对G来说,只有第二项是相关的,而且可以等效的转换为maximize log D(G(z))。两个网络的参数更新交替进行。
网上有很多实现,比如:
: Theano GAN implementation released by the authors of the GAN paper.: Theano DCGAN implementation released by the authors of the DCGAN paper.: Unofficial TensorFlow DCGAN implementation.
这些实现一般都会包含MNIST测试集。
其他的生成模型包括restricted Boltzmann machine (RBM), deep Boltzmann machine (DBM) 以及 variational autoencoder
其他生成模型中训练过程涉及intractable的计算,在实际实现时往往采取马尔可夫链模特卡洛采样(MCMC)。对抗生成模型(GAN)则不需要,整个网络的训练可以使backpropagation来实现。缺点包括训练不稳定,生成网络会塌陷到某些数据点(比如这些数据点目前看最像真实数据,生成网络会不停生成这些数据点),接下来的几篇中将提及如何改进。
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 2Alec Radford, Luke Metz, Soumith Chintala
DCGAN, Representation Learning
ICLR 2016
基于深度卷积网络的生成对抗模型(DCGAN)实现
在GAN的论文中提出的对抗模型的原型,但是对抗模型是一个大的框架,并不局限于某种网络实现。本文给出了基于卷机网的实现。
生成网络
其中反卷积的过程是
识别网络是传统的CNN
本文紧密承接上篇论文,描述了实现过程中的细节,比如参数设置。也提到了解决GAN中训练不稳定的措施,但是并非完全解决。文中还提到利用对抗生成网络来做半监督学习。在训练结束后,识别网络可以用来提取图片特征,输入有标签的训练图片,可以将卷基层的输出特征作为X,标签作为y做训练。
Tim Salimans, Ian Goodfellow, Wojciech Zaremba, Vicki Cheung, Alec Radford, Xi Chen
OpenAI
DCGAN
ICLR 2016
提出改进DCGAN的措施
这篇论文同样跟前文非常紧密,具体针对DCGAN中的问题,提出了改进方法。具体有
1、feature matching 解决训练不稳定instability的问题
2、minibatch discrimination 解决生成网络生成图片集中的问题,原理是让识别网络一次看一组图片,而不是一张图片
3、如果对实现感兴趣,其他改进细节可以参见论文
对抗生成网络的模型很有意思,Bengio, Hinton等都表达了很高的评价。相对其他生成模式而言,对抗生成模式模型清晰简单,目前来看效果也比较不错。但是目前对抗生成网络也有很多问题,比如生成模型是通过来自概率分布的向量生成样本,而不是直接表示输入的概率分布,因此,生成的图片可能不稳定之类。此外,希望能看到GAN在语言模型中的应用。
总结
GAN这种模型非常新颖,从论文中的结果来看,在图像生成上取得了不错的效果,对于MNIST这种简单的图形数据集,生成的图片已经可以“以假乱真”。对于另外的图片,比如在第二篇论文中的LSUN bedroom图片集以及人脸图片集上,生成的图片效果也不错(分辨率64×64)。
GAN目前来看已经卷积网络图像生成中取得了不错的效果,但是还有很多问题需要继续研究改进, 比如:
1、如何生成高像素高质量的图片。目前一般像素不超过64。
2、如何提高复杂图片的质量。目前在CIFAR,ILSVRC等图片集上训练生成的图片还是很糟糕。
3、如何提高整个模型的稳定性。在实际中,尤其对于复杂图形,生成器经常很快收敛到某些单个数据集,使得整个模型的训练陷入僵局。
4、如何在其他领域,比如NLP使用GAN,如何将GAN和LSTM结合的。目前来看,还没有成功的应用。原文作者在reddit上回答内容来看,由于GAN的输入是采样自连续分布,而NLP中,每个单词的表达往往是离散的,作者提到NLP可以用增强训练的方法替代。但是也不排除可以有其他方法将GAN和LSTM结合起来的,这也是以后的一个研究点。
感谢zhaoyue童鞋的整理和总结。
来源:paperweekly
转载地址:http://eeycx.baihongyu.com/