论文名称:Unsupervised representation learning with deep convolutional generative adversarial networks
论文地址:https://arxiv.org/pdf/1511.06434.pdf
代码地址:https://github.com/carpedm20/DCGAN-tensorflow
DCGAN提出一套更稳定的GAN体系结构,并证明了在有监督学习和图像生成模型方面,GAN可以学习到良好的图像表示。
(1)在GAN上加上了一组约束条件,这些约束条件使得GAN在大多数情况下能够稳定地训练。我们将这类架构命名为深卷积Gans(dcgan)。
(2)使用经过训练的鉴别器执行图像分类任务,显示出与其他无监督算法的竞争力。
(3)对Gans学习的filters进行了可视化,证明特定filters已经学会绘制特定对象。
(1)对数据进行聚类(如k-means),并利用聚类提高分类分数。
(2)自动编码器anto-encoder,将图像编码,再进行解码以重建图像。
分为参数模型和非参数模型:
(1)非参数模型:从现有图像的数据库进行匹配,通常匹配图像的补丁,并已用于纹理合成、超分辨率和绘画。
(2)参数模型:一种生成图像的变分抽样方法已经取得了一些成功,但样本往往很模糊;另一种方法是使用迭代正向扩散过程生成图像;生成对抗性网络生成的图像噪音大且难以理解;拉普拉斯金字塔对此方法进行扩展,显示了更高质量的图像,但由于链接多个模型中引入的噪声,它们仍然不稳定;一种循环神经网络方法和一种反卷积网络方法在生成自然图像方面也取得了一些成功。但他们没有利用生成器执行受监控的任务。
人们往往觉得神经网络是一个黑盒,不清楚它究竟学到了什么。在CNN的背景下,通过反卷积和过滤最大激活,可以找到网络中每个卷积滤波器的近似用途。同样,在输入端使用梯度下降,可以得到被某些滤波器激活的图像。
方法的核心来自于最近的3个CNN结构的改动(使得模型更稳定):
(1)全卷积网络:它将池化层(如maxpooling)用带stride的卷积层替代,允许卷积提取特征的的同时下采样。在生成器和鉴别器中使用这种方法,允许卷积提取特征的的同时上采样。
(2)去掉全连接层,引入全局平均池化:全局平均池提高了模型的稳定性,但降低了收敛速度。将最高卷积特征分别与发生器和鉴别器的输入和输出直接连接,可以使模型更好的工作。
(3)批量标准化:它将每层的输入标准化为零均值和单元方差来稳定学习,这有利于由于初始化不佳产生的训练问题,有助于梯度在网络中更好的传播。然而,将batchnorm直接应用于所有层会导致样本振荡和模型不稳定,避免这种情况的方法是不在生成器输出层和鉴别器输入层应用batchnorm。
除了生成器的最后一层激活函数使用tanh之外,生成器其余层使用ReLU作为激活函数。鉴别器中使用ReLU激活函数。
(1)除了缩放到tanh激活函数的范围之外,没有对训练图像进行预处理。
(2)所有模型均采用小批量随机梯度下降(SGD)训练,最小批量为128。
(3)所有权重均从零中心正态分布初始化,标准差为0.02。
(4)在Leakyrelu中,所有模型的泄漏坡度都设置为0.2。
(5)之前的GAN工作使用了动量来加速培训,而我们使用了Adam优化器,并对超参数进行了调整。
(6)建议的学习率0.001太高了,用0.0002代替。
(7)将动量项β1保留在建议值0.9处会导致训练振荡和不稳定,将其降低到0.5有助于稳定训练。
我们做了一系列实验证明,生成图像精度高,不是过拟合和网络记忆的结果,而是神经网络真正学到了东西。
鉴别器的输入为图像,鉴别器可以作为特征提取器,finetune完成分类任务。
验证无监督学习算法的质量的一个常用办法就是,将特征提取器用作有监督数据集,评价这些特征在线性模型上的表现。
为了评估dcgan在监督任务中学习到的特征质量,我们在imagenet-1K上进行训练,然后使用来自鉴别器的所有层的卷积特征,最大化每个层的表示,生成一个4×4的空间网格。然后将这些特征展平并连接起来形成一个28672维向量,并在其上训练一个正则化的线性L2-SVM分类器。这达到了82.8%的准确度,超出了所有基于k均值的方法。
在大型图像数据集上对CNN进行监督训练会产生非常强大的学习功能。我们可以证明,在大型图像数据集上训练的无监督dcgan也可以学习有趣的特征表示。将鉴别器学习到的特征,在卧室的典型部分(如床和窗户)上激活,为了进行比较,在同一个图中,我们给出了一个随机初始化特性的基线,可以看到第六排图像从没有窗户的卧室渐渐过渡到一个有窗户的卧室。如下图:
除了鉴别器可以学习到特征表示之外,我们还希望直到生成器学习到了什么。为了探索,我们做了一个实验,在150个样本中,手动绘制了52个窗口边界框。输入同一张图像的随机样本,在倒数第二层卷积特征图上,用逻辑回归预测一个特征是否在窗口这个属性上被激活,将所有权重大于零的特征图都从空间位置删除。然后,随机生成新样本(包含删除和不删除特征图)。如下图:
从图中可以看到,第一行是未被修改的图像,第二行是删除窗口的图像,一些窗户被移除,另一些则被转换成具有相似视觉外观的物体,如门和镜子。尽管视觉质量下降,但整体场景构成保持相似,这表明生成器已经很好地将场景表示与对象表示分离开来。
深度学习的参数可视化是了解深度学习的学习过程或者结果的方法或者工具。那一般分为三种方法。
(1)权重可视化
这个比较直观,一般都是对卷积权重进行可视化。
操作流程:直接取参数,然后进行一定的归一化,然后转化为RGB图片。
(2)激活值可视化
这个是对激活函数的输出进行可视化,那么就需要进行NN的前向传播。
操作流程:先进行前向传播,去某一层的激活值,然后进行归一化,最后转化为RGB图片。
(3)反卷积的可视化
这篇论文介绍的可视化,是需要经过训练,然后经过反卷积(反卷积层+反pooling层),的输出值的可视化。详细的请看论文。