DCGAN:Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks论文

本文提出了一种叫做深度卷积生成对抗网络的CNN,它具有一定的结构约束,展示了其在非监督学习方向上强有力的候选方案。通过在各种各样的图像数据集的训练,我们展示了令人信服的证据,我们的深度卷积对抗对(adversarial pair)从对象到场景在生成模型和判别模型上都能够学习到层级的表示。此外,我们在一些的新的任务上使用学习到的特征表明它们一般的图像表示上具有通用性。

模型方法

  1. 全卷积网络(Springenberg et al.,2014),使用步幅卷积替代确定性空间池化函数(比如最大池化),我们允许网络学习自身的空间下采样的方法应用在生成网络当中,在判别网络中允许它学习自己的空间上采样。
  2. 在最顶层的卷积后面去除全连接层特点,采用的全局平均池化。我们发现全局平均池化虽然增加了模型的稳定性但却影响了收敛速度。在卷积层的中间地带直接分别连接到生成网络的输入和判别网络的输出系统也可以很好的工作。GAN 的第一层采用均匀噪声分布Z作为输入,因为它只是一个矩阵乘法操作所以可以称为全连接,但结果被重组为一个4维的张量,并作为卷积叠加(convolution stack)的开始。对于判别网络,最后卷积层是平滑的然后送入单个sigmoid输出。如图1是一个举例模型的示意图。
  3. 批量规范化(Batch Normalization),通过将输入的每个单元标准化为0均值与单位方差来稳定学习。这有助于处理初始化不良导致的训练问题另外还有助于梯度流向更深的网络。这证明关键是取得深层生成器开始学习,防止生成器的崩溃从所有样本到单个点,这是在GAN常见的失败模式。但直接对所有的层采取批量归一化,导致采样的振荡和模型的不稳定。不要批量规范化(batchnorm)将应用到生成网络的输出层和判别网络输入层可以避免这些问题。
  4. ReLU 激活函数的使用。在生成网络中除了输出层使用Tanh函数除外。使用有界激活可以让模型更快学习达到饱和并覆盖训练分布的颜色空间。在判别器中,使用akyReLU激活函数能够很好地工作,特别是对于更高分辨率的模型。

训练细节

分别在三个数据集上训练了 DCGAN, 分别是 Large-scale Scene Understanding (LSUN)( Yu et al.,2015),Imagenet-1k和一个最近构建的Faces dataset。每个数据集上的使用细节如下:训练图像除了缩放到tanh激活函数的[-1,1]范围之外,没有经过其他的预处理。所有的模型都是通过小批量随机梯度下降法(mini-batch stochastic gradient descent)进行训练的, 小批量的大小是 128。 所有权重的初始化为均值为 0 和方差为 0.02的正态分布。在LeakyReLU, 所有模型的leak的斜率设置为0.2。之前的 GAN是使用momentum加快训练速度,DCGAN是使用Adam优化程序调整超参数。建议使用的学习率是0.001,太高的话使用0.0002代替。此外,没有动量项beta1,在建议的0.9训练动荡且不稳定,但降低到0.5是有利于模型的稳定。

实验验证DCGAN性能

  1. 使用GAN作为特征提取器分类CIFAR-10
  2. 使用GAN作为特征提取器分类SVHN

网络内部的研究以及可视化

我们调查了用来的训练生成模型和判别模型的各种不同的方法。我们没有在训练集上做过不管那种的最邻近搜索。因为通过小图像变换进行像素级或者是特征空间上的最邻近搜索不是一般的愚蠢(Theis et al.,2015)。我们没有使用对数似然度量去评估模型,因为这也不是一个很好的度量方法(Theis et al.,2015)。

  1. 隐变量空间漫游

第一个实验就是去理解隐变量的全景状态。走在流行学,通常学到关于记忆的迹象(如果有尖锐的转换)在空间中是分层崩塌的形式。如果行走在这个潜在空间导致对图像生成的语义变化(例如图像被添加或删除),可以推测模型已经学会了相关和有趣的表示。结果如下图所示。

发布了31 篇原创文章 · 获赞 30 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/linchunmian/article/details/80022195