您的位置:首页 > 其它

[论文笔记]:UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

2020-04-21 23:52 1216 查看

UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

  • 3. Approach And Model Architecture(方法和模型结构)
  • 4. Details Of Adversarial Training(对抗训练的细节)
  • 5. Empirical Validation Of DCGANs Capabilities(DCGAN能力的经验验证)
  • 6. Manipulating The Generator Representation(操纵生成器的表示)
  • 7. Conclusion And Future Work(总结将来的工作)
  • 8. Supplementary Material(补充材料)
  • 内容总结
  • 论文地址:
    https://arxiv.org/abs/1511.06434v2

    代码地址:
    https://github.com/TeeyoHuang/DCGAN
    https://github.com/soumith/dcgan.torch
    https://github.com/jacobgil/keras-dcgan
    https://github.com/sunshineatnoon/Paper-Implementations/blob/master/dcgan/dcgan.py
    https://github.com/carpedm20/DCGAN-tensorflow

    补充材料:
    https://zhuanlan.zhihu.com/p/27295635
    https://www.geek-share.com/detail/2710262559.html
    https://bigquant.com/community/t/topic/113417

    论文翻译

    Abstract(摘要)

    近年来,使用卷积网络(CNN)的监督学习已经在计算机视觉应用中得到了广泛的应用,相比之下,CNN的无监督学习受到的关注较少。在这项工作中,我们希望弥补CNNs在有监督学习和无监督学习方面的成功之间的差距。我们引入了一类称为深度卷积生成对抗网络(DCGAN)的CNN,它具有某种结构约束,并说明了他是一个有力的无监督候选方法。在各种图像数据集的训练中,我们展示了令人信服的证据,我们的深度卷积对抗对中的生成器和判别器都能从物体场景部分学习到有层次的特征表示。除此之外,我们对新任务使用学习特征,说明作为一般图像表示的适用性。

    1. Introduction(介绍)

    从大型未标记数据集中学习可重用的特征表示一直是一个研究活跃的领域。在计算机视觉的背景下,人们可以利用几乎无限量的未标记图像和视频来学习良好的中间特征表示,然后可以将其用于各种监督学习任务,例如图像分类。我们提出建立良好图像表示的一种方法是通过训练生成对抗网络(GAN)(Goodfellow等,2014),然后将生成器和判别器网络的一部分重新用作监督任务的特征提取器。GAN为最大似然技术提供了有吸引力的替代方案。人们还争论的说,他们的学习过程和缺乏启发式的成本函数(例如像素式独立均方误差)对表示学习很有吸引力。众所周知,GAN在训练时不稳定,往往导致生成器产生无意义的输出。在试图理解和可视化GAN学习内容以及多层GAN的中间表示方面,已发表的研究非常有限。

    在这片论文中,我们做了如下贡献:

    • 我们对卷积GAN的拓扑结构提出并评估了一系列的限制,使得卷积GAN在大部分的设置下能够稳定的训练。我们把这种结构称作 Deep Convolutional GANs(DCGAN)。
    • 我们使用训练好的判别器进行图像分类任务,展示出与其他无监督算法的竞争性能。
    • 我们可视化GAN学习的过滤器,并凭经验表明特定过滤器已学会特定物体。
    • 我们展示了生成器具有有趣的矢量算术属性,使得能够允许容易地操纵生成的样本的语义性质。

    2. Related Work(相关工作)

    2.1 Representation Learning From Unlabeled Data(无标签数据的表示学习)

    无监督表示学习在一般的计算机视觉研究中以及在图像的背景下是相当好的研究问题。无监督表示学习的经典方法是对数据进行聚类(例如使用K均值),并利用聚类来改进分类得分。在图像的上下文中,可以对图像块进行层次聚类(Contes&Ng,2012)以学习强大的图像表示。另一种流行的方法是训练自动编码器(卷积,堆叠(Vincent et al.2010),分清代码的编码的内容和组成部分(Zhao et al.2015),梯形结构(Rasmus et al.2015)将图像编码为紧凑代码,并对代码进行解码以尽可能准确地重建图像。这些方法也被证明可以从图像像素中学习良好的特征表示。深度信念网络(Lee et al.2009)也被证明在学习层次表示方面表现良好。

    2.2 Generating Natural Images(生成自然图像)

    生成图像模型经过充分研究,分为两类,参数化和非参数化。

    非参数模型与现有图像的数据库进行匹配,通常匹配图像块,并且已经用于语境合成(Efros et al.,1999)、超分辨率(Freeman et al., 2002)、图像修复(Hays&Efros,2007)。

    对于生成图像的参数模型已经被广泛的研究(例如,在MNIST数据集上或用于纹理合成(Portilla&Simoncelli,2000))。然而,直到最近,生成现实世界的自然图像并没有取得多大成功。生成图像的变分抽样方法(Kingma&Welling,2014)取得了一些成功,但样本常常模糊不清。另外一种方法使用前向扩散过程生成图像(Sohi-Dickstein等,2015)。生成对抗网络(Goodfellow et al.2014)生成图像成为嘈杂的并且难以理解。一种拉普拉斯金字塔扩展方法(Denton等人,2015)展示了更高质量的图像,但是由于连接多个模型中引入的噪声,他们仍然看起来摇摆不定。最近的网络方法(Gregor等,2015)和反卷积网络方法(Dosovitskiy等,2014)最近也在生成自然图像方面取得了一些成功。但是,他们没有利用生成器进行监督任务。

    2.3 Visualizing The Internals Of CNNs(可视化CNN的内部)

    对于使用神经网络的一个持续的评价是它们是黑盒方法,很少理解网络以简单的人类消费算法的形式做什么,在CNNs的背景下,Zeiler等人表明,通过使用反卷积和过滤最大激活,可以找到网络中每个卷积滤波器的近似目的。类似的,在输入上持续使用梯度下降让我们检查激活某些滤波器子集的理想图像(Mordvintsev等人)。

    3. Approach And Model Architecture(方法和模型结构)

    历史上使用CNN来扩展GAN以对图像建模的尝试是不成功的。这促使LAPGAN的作者(Denton等人,2015)开发了一种替代方法,以便可以更可靠地建模的低分辨率生成图像进行升级。我们还尝试使用监督文献中常用的CNN架构来扩展GAN。然而,经过广泛的模型探索,我们确定了一系列架构,这些架构可以在一系列数据集中进行稳定的训练,并允许训练更高分辨率的图像和更深的生成模型。

    我们的方法的核心是采用和修改最近说明的CNN架构的三个变化。

    1、All convolutional net (Springenberg et al., 2014) 全卷积网络

    • 判别模型:使用带步长的卷积(strided convolutions)取代了的空间池化(spatial pooling),容许网络学习自己的空间下采样(spatial downsampling)。
    • 生成模型:使用微步幅卷积(fractional strided),容许它学习自己的空间上采样(spatial upsampling)。

    2、在卷积特征之上消除全连接层

    • e.g. Global average pooling which has been utilized in state of the
      art image classification models (Mordvintsev et al.).
    • 全局平均pooling有助于模型的稳定性,但损害收敛速度
      输入:服从均匀分布的噪声向量,100维;
      输出:并输出一个 64x64x3 的RGB图像。
    • 激活函数:
      生成模型:输出层用Tanh函数,其它层用ReLU激活函数。
      判别模型:所有层使用LeakyReLU

    GAN的第一层采用均匀的噪声分布Z作为输入,可称为完全连接,因为它只是一个矩阵乘法,但结果被重新整型为一个四维张量并用作卷积堆栈的起点。对于判别器,最后的卷积层被整型为一维,然后输入到单个sigmoid函数。有关示例模型体系结构的可视化,请参见Fig. 1。


    Fig. 1: 用于LSUN场景建模的DCGAN生成器。将100维均匀分布Z投影到具有许多特征图的小空间范围卷积表示。一系列四个分数跨度卷积(在最近的一些论文中,这些被错误地称为解卷积),然后将这种高级表示转换为64*64像素图像。值得注意的是没有使用完全连接或池化层。(100维的噪声被投影到一个小空间幅度的卷积表征中。有四个微步幅卷积(在一些论文中,它们被误称为反卷积deconvolutions),然后将这些高层表征转换到64 * 64像素的RGB三通道图片。没有全连接层,没有池化层。)

    3、Batch Normalization 批标准化

    • 它通过将每个单元的输入归一化为零均值和单位方差来稳定学习。
    • 这有助于解决由于初始化不良而导致的训练问题,并有助于深度模型中的梯度流动。
    • Batch Normalization证明了生成模型初始化的重要性,避免生成模型崩溃:生成的所有样本都在一个点上(样本相同),这是训练GANs经常遇到的失败现象。
    • 直接将批量归一化应用于所有层,导致样品震荡和模型不稳定。通过不将批量归一化应用于生成器输出层和鉴别器输入层来避免这种情况。

    4、ReLU激活(Nair&Hinton,2010)用于生成器,但使用Tanh函数的输出层除外。我们观察到,使用有界激活允许模型更快地学习以饱和并覆盖训练分布的颜色空间。在判别器中,我们发现LeakReLU运行良好,特别是对于更高分辨率的建模。这与使用maxout激活的原始GAN论文相反。

    稳定深度卷积GAN的体系结构指南:

    • 用 strided convolutions 步长卷积( discriminator 判别器)和 fractional-strided convolutions 反卷积(generator 生成器)替代所有的 pooling 池化层。
    • 在 discriminator 判别器和 generator 生成器中使用批量归一化BatchNormalization。 解决初始化差的问题
    • 帮助梯度传播到每一层
    • 防止generator把所有的样本都收敛到同一个点。
    • 直接将BN应用到所有层会导致样本震荡和模型不稳定,通过在generator输出层和discriminator输入层不采用BN可以防止这种现象。
  • 为了更深的网络架构移除全连接层。
      global pooling增加了模型的稳定性,但伤害了收敛速度。
  • 在 generator 生成器中所有层都使用ReLU激活,除了输出层使用tanh激活。
  • 在 discriminator 判别器的所有层使用LeakyReLU激活。
  • 其中,这里的conv层是four fractionally-strided convolution,在其他的paper中也可能被称为是deconvolution.

    4. Details Of Adversarial Training(对抗训练的细节)

    我们在三个数据集上训练DCGAN,大规模场景理解(LSUN)、Imagenet-1k和新组装的Faces数据集。下面给出了每个数据集的使用细节。

    • 预处理环节,将图像 scale 缩放到tanh激活函数[−1,1][-1,1][−1,1]。
    • mini-batch 小批量随机梯度下降(SGD)训练,batch_size是128128128。
    • 所有权重初始化由(0,0.02)(0, 0.02)(0,0.02)的正态分布中随机得到。
    • LeakyReLU的斜率是0.20.20.2。
    • 虽然之前的GAN使用momentum来加速训练,DCGAN使用调好超参的Adam optimizer。
    • learning_rate = 0.0002。
    • 将momentum参数β1\beta _{1}β1​从0.9降为0.5来防止震荡和不稳定。

    4.1 LSUN

    随着来自生成图像模型的样本的视觉质量的提高,对训练样本的过度拟合和记忆的担忧已经增加。为了说明我们的模型如何根据更多数据和更高分辨率生成进行扩展,我们在LSUN卧室数据集上训练模型,其中包含300多万个训练样本。最近的分析表明,模型学习速度和泛化性能之间存在直接联系。我们展示了一个训练时期的样本(图2),模拟在线学习,以及收敛后的样本(图3),这是一个证明我们的模型不是通过简单过度拟合/记忆训练生产高质量样本的例子。没有数据增强应用于图像。

    4.1.1 Deduplication(重复数据删除)

    为了进一步降低生成器记忆输入示例的可能性(图2),我们执行简单的图像去重复过程。我们在训练样本上中心区域裁剪下采样32*32的图像中拟合一个3072-128-3072的去噪Dropout正则化ReLU自动编码器。然后通过对已经被证明是有效的信息保存技术的ReLU激活进行阈值处理来对所得到的代码层激活进行二值化,并提供方便的语义散列形式,允许线性时间重复数据删除。对哈希碰撞的目视检查显示出高精度,估计的假阳性率小于1%。此外,该技术的检测到并且移除了大约275,000个近似重复,表明高召回率。

    为了进一步降低生成器记忆输入示例的可能性(图2),我们执行简单的图像去重复过程。我们在训练样本上中心区域裁剪下采样32*32的图像中拟合一个3072-128-3072的去噪Dropout正则化ReLU自动编码器。然后通过对已经被证明是有效的信息保存技术的ReLU激活进行阈值处理来对所得到的代码层激活进行二值化,并提供方便的语义散列形式,允许线性时间重复数据删除。对哈希碰撞的目视检查显示出高精度,估计的假阳性率小于1%。此外,该技术的检测到并且移除了大约275,000个近似重复,表明高召回率。

    Fig. 2: 一次训练通过数据集后生成的卧室。从理论上讲,该模型可以学习记忆训练样例,但这在实验上不太可能,因为我们用较小的学习率和小批量SGD进行训练。我们知道没有先前的经验证据表明对SGD的记忆和较小的学习率。

    Fig. 3: 经过五个训练时期后生成的卧室。似乎有证据表明,在多个样本(例如某些床样本的基板)上通过重复噪声纹理进行视觉欠拟合。

    4.2 Faces

    我们从人名的随机网咯图像查询中删除包含人脸的图像。这些人的名字来自dbpedia,其标准是他们出生于现代。该数据集包含来自10K人的3M图像。我们在这些图像上运行OpenCV人脸检测器,保持足够高分辨率的检测,这为我们提供了大约350000个人脸数据,我们应用这些数据进行训练。没有数据增强应用于图像。

    4.3 Imagenet-1k

    我们使用Imagenet-1k作为无监督训练的自然图像源。我们用图像中心裁剪的32*32的图像进行训练。没有数据增强应用于图像。

    5. Empirical Validation Of DCGANs Capabilities(DCGAN能力的经验验证)

    5.1 Classifying CIFAR-10 Using GANs As a Feature Extractor(使用GAN作为特征提取器,在CIFAR-10上分类)

    评估无监督表示学习算法质量的一种常用技术是将它们作为特征提取器应用于监督数据集。并评估应用在这些特征之上的线性模型的性能。

    在CIFAR-10数据集上,通过使用K-means作为特征学习算法的良好微调单层特征提取通道,已经证明了具有非常强的基础性能。当使用非常大量的特征图(4800)时,该技术实现了80.6%的准确度。基本算法的无监督多层扩展达到了82.0%的准确率。为了评估DCGAN表示学习的质量,我们在Imagenet-1K上进行训练,然后使用功能来自所有层的判别器的卷积特征,最大池化每层表示以产生44空间网格。然后将这些特征展平并连接以形成28672维向量,并且在他们之上训练正则化线性L2-SVM分类器。这实现了82.8%的准确性,不在执行所有基于K均值的方法。值得注意的是,与基于K均值的技术相比,判别器器具有更少的特征图9在最高层中为512),但是由于44个空间位置的多个层,确实导致更大的总特征向量大小。DCGAN的性能仍然低于Exemplar CNN的性能,该技术以无监督的方式训练正常的判别CNN,以区分来自源数据不同的特征选择,增强样本。通过微调判别器的表示可以进一步改进,但我们将其留待将来工作。此外,由于我们的DCGAN从未在CIFAR-10上接受过训练,因此该实验还展示了学习特征的领域稳健性。

    Table 1: 使用我们预先训练的模型在CIFAR-10上的分类结果。我们的DCGAN未经过CIFAR-10的预训练,但在Imagenet-1K上,这些功能用于对CIFAR-10图像进行分类。

    5.2 Classifying SVHN Digits Using GANs As a Feature Extractor(使用GAN作为提取器在SVHN分类)

    在StreetView House Numbers(SVHN)数据集中,当标记数据稀缺时,我们使用DCGAN判别器的特征进行监督学习。遵循与CIFAR-10实验中类似的数据集准备规则,我们从非额外的集合中分离出10000个示例的验证集,并将其用于所有超参数和模型选择。随机选择1000个统一分类训练样本,并用于在CIFAR-10相同特征提取器上训练正则化线性L2-SVM分类器。现有最先进的技术测试误差为22.48%。改进了另一种旨在利用无标签的CNN的修改。此外,我们通过在相同数据上训练具有相同架构的纯监督CNN并通过64个超参数实验的随机搜索优化该模型,验证DCGAN中使用的CNN架构不是模型性能的关键因此。它实现了明显高于28.87%的验证错误。

    6. Manipulating The Generator Representation(操纵生成器的表示)

    我们使用各种方法研究训练好的判别器和生成器。我们不在训练集上进行任何类型的最近邻搜索。通过小图像变换,像素或特征空间中的最近邻域被欺骗。我们也不使用功能对数似然度量来定量评估模型,因为它是一个很差的度量标准。

    Table 2: 有1000个标签的SVHN分类

    6.1 Walking In The Latent Space

    我们做的第一个实验室了解潜在空间的情况。流式的学习通常告诉我们关于记忆的现象(如果有明显的过度)以及空间分层崩溃的方式。如果在这个潜在空间流动导致图像生成的语义变化(例如添加和删除的对象),我们可以推断该模型已经学习了相关且有趣的表示。结果如图4所示:

    Fig. 4: Z中一系列9个随机点之间的插值表明所学习的空间具有平滑过渡,空间中的每个图像看起来都像卧室。在第6排,你看到一个没有窗户的房间慢慢变成一个有巨大窗户的房间。在第10行中,您可以看到电视正在慢慢转变为窗户。

    6.2 Visualizing The Discriminator Features(判别器特征的可视化)

    以前的工作已经证明,对大型图像数据集进行有监督的CNN训练可以产生非常强大的学习能力。另外,在场景分类方面受过训练的有监督的CNN学习到物体检测器。我们证明了在大型图像数据集上训练的无监督DCGAN也可以学习有趣的特征层次结构。使用(Springenberg等人,2014)提出的引导反向传播,我们在图5中展示了判别器激活学习的特征在卧室的典型部分(例如床和窗户)。为了进行比较,在同一图中,我们给出了随机初始化特征的基础。这些特征在语义相关或有趣的任何事物上都没有被激活。

    在右侧,引导反向传播可视化最大轴对齐响应,用于来自判别器中最后一个卷积层的前6个学习卷积特征。请注意,很少有特征响应床-LSUN我是数据集总的中心对象。左边是随机过滤器。与之前的响应相比,几乎没有判别和随机结构。

    6.3 Manipulating The Generator Representation(操作生成器的表示)

    6.3.1 Forgetting To Draw Certain Objects(忘记画中心物体)

    除了判别器学习的表示之外,还有生成器学习表示的问题。样本的质量表明,生成器学习主要场景中组件的特定对象表示,例如床,窗,灯,门和复杂家具。为了探索这些表示所采用得形式,我们进行了一项实验,尝试完全从生成器中移除窗口。

    在150个样本上,手动绘制了52个窗口边界框。在第二高卷积层特征上,逻辑回归适合于通过使用绘制的边界框内的激活,是正的并且来自相同图像的随机样本。是负的标准预测特征激活是否在窗口上(或不是)。使用此简单模型,从所有空间位置删除权重大于零(总共200个)的所有特征图。然后,在有和没有特征图去除的情况下生成随机的新样本。

    有和没有窗口丢失的生成图像如图6所示,有趣的是,网络主要忘记在卧室中绘制窗口,用其他对象替换他们。

    Fig. 6: 顶行:来自模型的未修改样本。底行:使用丢弃"窗口"过滤器生成的相同样本。一些窗户被移除,其他窗户被转换成具有类似视觉外观的物体,例如门和镜子。虽然视觉质量下降,但整体场景构成保持相似,这表明发生器在对象表示中解释场景表示方面做得很好。可以进行扩展实验以从图像中移除其他对象并修改生成器绘制的对象。

    6.3.2 Vector Arithmetic On Face Samples(在Face数据上的矢量运算)

    在评估单词的学习表示的背景下证明了简单的算术运算在表示空间中显示出了丰富的线性结构。一个典型的例子证明了向量(King)-向量(Man)+向量(Woman)得到了一个向量,其最近邻居是Queen的向量。我们研究了类似结构是否出现在我们的生成器Z的表示中。我们对视觉概念的样本集的z向量进行了类似的算术运算。仅针对每个概念的单个样本进行实验室不稳定的。但是对三个示例平均Z矢量显示了在语义上遵循该算法的一致切稳定的现象。除了(图7)中所示的对象操作之外,我们还证明了面部姿势在Z空间中线性建模(图8)。

    这些演示表明,可以使用我们的模型学习的Z表示来开发有趣的应用程序。先前已经证明,条件生成模型可以学会令人信服地建模对象属性,如尺度,旋转和位置。据我们所知。这是在纯无监督模型中首次证明这种情况。进一步探索和开发上述矢量运算可以显著减少复杂图像分布的条件生成建模所需的数据量。

    Fig. 7: 视觉概念的矢量算术。对于每列,样本的Z向量被平均。然后对平均向量执行算术,从而创建新的向量Y。通过将Y作为输入送到生成器来产生右侧的中心样本。为了演示生成器的插值能力,将用比例±0.25采样的均匀噪声添加到Y以产生8个其他样本。在输入空间中应用算术(底部两个示例)会导致由于未对准而产生的噪声重叠。

    Fig. 8: 一个“转向”矢量是从四个平均样本的面部向左看与右看相比创建的。通过沿该轴添加插值到随机样本,我们能够可靠的转换它们的姿势。

    7. Conclusion And Future Work(总结将来的工作)

    我们提出了一套更稳定的架构来训练生成对抗网络,我们提供证据证明对抗性网络可以为监督学习和生成建模学习良好的图像表示。仍然存在某些形式的模型不稳定性-我们注意到随着模型训练时间更长,他们有时会将滤波器的子集折叠为单个震荡模式。

    需要进一步解决这些不稳定问题。我们认为将此框架扩展到其他领域,例如视频和音频应该非常有趣。对学习潜在空间的属性的进一步研究也将是有趣的。

    8. Supplementary Material(补充材料)

    8.1 Evaluating DCGANs Capability To Capture Data Distributions(评估DCGAN捕获数据分布的能力)

    我们提出将标准分类度量应用于我们模型的条件版本,评估所学习的条件分布。我们在MNIST上训练DCGAN(拆分10k验证集)以及置换不变GAN,并使用功能最近邻分类器将实际数据与一组生成的条件样本进行比较来评估模型。我们发现从批量归一化中去除尺度和偏差参数对两种模型都产生了更好的结果。我们推测批量归一化引入的噪声有助于生成模型更好地探索和生成基础数据分布。结果显示在标三中,其将我们的模型与其他技术进行比较。DCGAN模型实现了与安装在训练数据集上的最近邻分类器相同的测试误差-表明DCGAN模型在建模该数据集的条件分布方面做得非常出色。每类100万个样本,DCGAN模型优于InfiMNIST,这是一个手工开发的数据增强通道,它使训练样本的平移和弹性变形。DCGAN与利用学习的每类变换的频率生成数据增强技术竞争,而更通用,因为它师姐模拟数据而不是数据的变换。

    Fig. 9: 从左到右MNIST数据集,原始GAN的生成和DCGAN的生成。

    Fig. 10: 人脸的生成

    内容总结

    贡献

    • 我们对卷积GAN的拓扑结构提出并评估了一系列的限制,使得卷积GAN在大部分的设置下能够稳定的训练。我们把这种结构称作 Deep Convolutional GANs(DCGAN)。
    • 我们使用训练好的判别器进行图像分类任务,展示出与其他无监督算法的竞争性能。
    • 我们可视化GAN学习的过滤器,并凭经验表明特定过滤器已学会特定物体。
    • 我们展示了生成器具有有趣的矢量算术属性,使得能够允许容易地操纵生成的样本的语义性质。

    核心方法

    1、All convolutional net (Springenberg et al., 2014) 全卷积网络

    • 判别模型:使用带步长的卷积(strided convolutions)取代了的空间池化(spatial pooling),容许网络学习自己的空间下采样(spatial downsampling)。
    • 生成模型:使用微步幅卷积(fractional strided),容许它学习自己的空间上采样(spatial upsampling)。

    2、在卷积特征之上消除全连接层

    • e.g. Global average pooling which has been utilized in state of the art image classification models (Mordvintsev et al.).
    • 全局平均pooling有助于模型的稳定性,但损害收敛速度
      输入:服从均匀分布的噪声向量,100维;
      输出:并输出一个 64x64x3 的RGB图像。
    • 激活函数:
      生成模型:输出层用Tanh函数,其它层用ReLU激活函数。
      判别模型:所有层使用LeakyReLU


    GAN的第一层采用100维均匀分布的噪声z被投影到具有许多特征图的小空间范围卷积表示,可称为完全连接。因为它只是一个矩阵乘法,但结果被重新整型为一个四维张量并用作卷积堆栈的起点,有四个微步幅卷积(在一些论文中,它们被误称为反卷积deconvolutions),然后将这些高层表征转换到64 * 64像素的RGB三通道图片。没有全连接层,没有池化层。对于判别器,最后的卷积层被整型为一维,然后输入到单个sigmoid函数。

    • 上图(a)是生成模型G:输入(100 维噪声向量Z)到第一个层:全连接 100 —> 1024,然后再把1024的一维向量reshape成1024个通道的4*4的feature map。基本规律是生成网络的每一个下一层是反卷积层,通道数减半,图像尺寸加倍。
    • 下图(b)判别模型D:就是一个没有pooling的全卷积网络,输出是一个标量,表示输入数据属于训练数据而非生成样本的概率。

    3、Batch Normalization 批标准化

    • 它通过将每个单元的输入归一化为零均值和单位方差来稳定学习。
    • 这有助于解决由于初始化不良而导致的训练问题,并有助于深度模型中的梯度流动。
    • Batch Normalization证明了生成模型初始化的重要性,避免生成模型崩溃:生成的所有样本都在一个点上(样本相同),这是训练GANs经常遇到的失败现象。
    • 直接将批量归一化应用于所有层,导致样品震荡和模型不稳定。通过不将批量归一化应用于生成器输出层和鉴别器输入层来避免这种情况。

    4、激活函数

    • 生成器中,ReLU激活(Nair&Hinton,2010)用于生成器,但使用Tanh函数的输出层除外。
    • 判别器中,LeakReLU运行良好,特别是对于更高分辨率的建模。这与使用maxout激活的原始GAN论文相反。

    DCGAN体系结构

    • 替代所有的 pooling 池化层。 在生成器G中用fractional-strided convolutions 反卷积 / transposed convolutional layer 转置卷积。
    • 在判别器D中用 strided convolutions 步长卷积。
  • 在判别器D和生成器G中使用批量归一化BatchNormalization。
      解决初始化差的问题
    • 帮助梯度传播到每一层
    • 防止generator把所有的样本都收敛到同一个点。
    • 直接将BN应用到所有层会导致样本震荡和模型不稳定,通过在generator输出层和discriminator输入层不采用BN可以防止这种现象。
  • 为了更深的网络架构移除全连接层 FC 层,使网络变为全卷积网络。
      global pooling增加了模型的稳定性,但伤害了收敛速度。
  • 在生成器G中所有层都使用ReLU激活,除了输出层使用tanh激活。
  • 在判别器D的所有层使用LeakyReLU激活。
  • 其中,这里的conv层是four fractionally-strided convolution,在其他的paper中也可能被称为是deconvolution。如何理解深度学习中的deconvolution networks?

    几个要点:
    1、卷积和反卷积的卷积核大小为4×44\times44×4或者5×55\times55×5;
    2、卷积和反卷积的stride一般都取为2;
    3、对于判别器来说,第一层卷积后一般不用BN,而后面都是“Conv2D+BN+LeakyReLU”的组合模式,直到feature map的大小为4×44\times44×4;
    4、对于生成器来说,第一层是全连接,然后reshape为4×44\times44×4大小,然后是“Conv2D+BN+ReLU”的组合模式,最后一层卷积则不用BN,改用tanh激活;相应地,输入图片都要通过除以255然后乘以2减去1,来缩放到-1~1之间。

    几个要点:
    1、不管在判别器还是生成器,均去除了反卷积,只保留了普通卷积层;
    2、卷积核的大小通常统一使用3*3的,卷积之间构成残差块;
    3、通过AvgPooling2D和UpSampling2D来实现上/下采样,而DCGAN中则是通过stride > 1的卷积/反卷积实现的;其中UpSampling2D相当于将图像的长/宽放大若干倍;
    4、由于已经有残差,所以激活函数可以统一使用ReLU,当然,也有一些模型依然使用LeakyReLU,其实区别不大;
    5、通过增加ResBlock的卷积层数,可以同时增加网络的非线性能力和深度,这也是ResNet的灵活性所在;
    6、一般情况下残差的形式是x+f(x)x+f(x)x+f(x),其中f代表卷积层的组合;不过在GAN中,模型的初始化一般要比常规分类模型的初始化更小,因此稳定起见,有些模型干脆将其改为x+α×f(x)x+\alpha \times f(x)x+α×f(x),其中α是一个小于1的数,比如0.1,这样能获得更好的稳定性;
    7、有些作者认为BN不适合GAN,有时候会直接移除掉,或者用LayerNorm等代替。

    详情见:https://spaces.ac.cn/archives/6549

    数据集的使用细节

    • 预处理环节,由于generator最后一层是tanh作为输出,将图像 scale 缩放到tanh激活函数[−1,1][-1,1][−1,1]。
    • mini-batch 小批量随机梯度下降(SGD)训练,batch_size是128128128。
    • 所有权重初始化由norm(0,0.02)norm(0, 0.02)norm(0,0.02)的正态分布中随机得到。
    • LeakyReLU的slope斜率是0.20.20.2。
    • 虽然之前的GAN使用momentum来加速训练,DCGAN使用调好超参的Adam optimizer。
    • learning_rate = 0.0002。
    • 将momentum参数β1\beta _{1}β1​从0.9降为0.5来防止震荡和不稳定。

    参考:

    https://blog.csdn.net/gyt15663668337/article/details/90047551

    https://blog.csdn.net/u014625530/article/details/82819842

    https://blog.csdn.net/zh20166666/article/details/83185087

    https://blog.csdn.net/aidazheng/article/details/72401401

    https://www.geek-share.com/detail/2710262559.html

    https://zhuanlan.zhihu.com/p/24767059

    https://blog.csdn.net/liaopiankun0618/article/details/84400759

    • 点赞 1
    • 收藏
    • 分享
    • 文章举报
    Axiiiz 发布了17 篇原创文章 · 获赞 2 · 访问量 1097 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐