DCGAN的全称是Deep Convolution Generative Adversarial Networks(深度卷积生成对抗网络)。是2014年Ian J.Goodfellow 的那篇开创性的GAN论文之后一个新的提出将GAN和卷积网络结合起来,以解决GAN训练不稳定的问题的一篇paper. 关于基本的GAN的原理,可以参考原始paper,或者其他一些有用的文章和代码,比如:GAN mnist 数据生成,深度卷积GAN之图像生成,GAN tutorial等。这里不再赘述。 一. DCGAN 论文简单解读 ABSTRACT 1.1 摘要。作者说,这篇文章的初衷是,CNN在supervised learning 领域取得了非常了不起的成就(比如大规模的图片分类,目标检测等等),但是在unsupervised learning领域却没有特别大的进展。所以作者想弥补CNN在supervised 和 unsupervised之间的gap。作者提出了将CNN和GAN相结合的DCGAN,并展示了它在unsupervised learning所取得的不俗的成绩。作者通过在大量不同的image datasets上的训练,充分展示了DCGAN的generator(生成器)和discriminator(鉴别器)不论是在物体的组成部分(parts of object)还是场景方面(scenes)都学习到了丰富的层次表达(hierarchy representations)。作者还将学习到的特征应用于新的任务上(比如image classification),结果表明这些特征是非常好的通用图片表达(具有非常好的泛化能力)。 INTRODUCTION 1.2 将GAN作为feature extractors。我们往往希望从大量未标注的数据中学习到有用的特征表达,然后将这些特征应用于监督学习领域。这是非常热门的研究领域。作者表明GAN是达成这一目的的一个非常好的工具。GAN的一大问题就是其训练非常不稳定,有的时候会得到非常奇怪的结果。而且目前对于可视化展示multi layer GAN内部到底学到了什么representation 研究非常少。这篇文章在以下几个方面做出了贡献: - 文中提出并评估了一系列的对于卷积GAN的结构的限制,这些限制确保了在大多数情况下,卷积GAN可以保持稳定。文中将这种结构命名为DCGAN。 - 文中将训练好的鉴别器应用于图片分类任务,并和其他的非监督方法进行对比,发现它非常competitive。 - 文中可视化了DCGAN的filters,结果表明特定的filter学习到了特定的object。 - 文中表明生成器具有有趣的向量算数属性(vector arithmetic property),这使得我们可以对生成的样本进行语义上的操作(类似于NLP中的word embedding 的性质,文中作者举了给女性戴墨镜的例子,详见下文)。 RELATED WORK 2.1 从未标注的数据学习representation。之前使用的比较多的方法是聚类(层次k-means等),还有auto-endcoders,以及深度信念网络(deep blief networks)。 2.2 产生自然的图片。这一任务主要分为参数的和非参数的。 非参数方法 这种方法主要是从图片数据库对图片碎片(pathes)做match,应用在了图片的纹理合成(texture synthesis)以及超分辨率图片合成等方面。 参数方法 这种方法以前研究的就比较多,但是主要是对一些简单的图片做实验的(比如MNIST),在大规模真实图片上做实验取得比较好的结果也就是最近几年的事情。作者简单讲了有variational sampling,iterative forward diffusion等方法。2014年提出GAN之后,这种模型可以生成图片,但是不稳定,而且有的时候会产生噪声以及怪异的图片。这之后,又有人提出了laplacian pyramid extension的GAN,与GAN相比,它可以产生更好质量的图片,但是仍然不稳定。还有人提出了recurent network approach 和 deconvolution(反卷积)的方法,可以产生一定质量的图片,但是生成的features无法保证在监督学习任务中取得很好的效果。 2.2 对CNN进行可视化 可以使用deconvolution(反卷积)以及对输入进行梯度下降,这有助于探索CNN内部的每一层到底学到了什么表达。 2.3 DCGAN的方法以及模型架构 历史上已经有人尝试将GAN和CNN相结合,但是失败了。LAPGAN的作者尝试迭代地将低分辨率的图片逐步转化为更好的图片,从而产生更可靠的结果。文中作者在使用传统的监督学习CNN架构扩展GAN的过程中,也遇到了困难。在反复实验和尝试之后,作者提出了一系列的架构,可以让GAN+CNN更加稳定,可以deeper,并且产生更高分辨率的图像。核心的工作是对现有的CNN架构做了如下三个方面的修改: - 全卷积网络。主要就是使用了strided convolution 替代确定性的pooling 操作,从而可以让网络自己学习downsampling(下采样)。作者对generator和discriminator都采用了这种方法,让它们可以学习自己的空间下采样。 - 取消全连接层。最近的做法比如使用global average pooling 去替代fully connected layer。global average pooling可以提高模型的稳定性,但是却降低了收敛速度。GAN的输入采用均匀分布初始化,可能会使用全连接层(矩阵相乘),然后得到的结果可以reshape成一个4 dimension的tensor,然后后面堆叠卷积层即可;对于鉴别器,最后的卷积层可以先flatten,然后送入一个sigmoid分类器。可视化的架构如下图1所示:
DCGAN 论文简单解读
内容版权声明:除非注明,否则皆为本站原创文章。