深度卷积生成对抗网络的非监督表示学习。
近年来,通过卷积网络(CNN)进行监督学习已在计算机视觉应用中得到了广泛采用。 相比之下,CNN的无监督学习受到的关注较少。 在这项工作中,作者希望帮助弥合CNN在有监督学习的成功与无监督学习之间的差距。作者介绍了一种称为深度卷积生成对抗网络(DCGAN)的CNN,它们具有一定的体系结构约束,并证明它们是无监督学习的强大候选者。 在各种图像数据集上进行训练,作者显示出令人信服的证据,即作者深厚的卷积对抗对在生成器和鉴别器中学习了从对象部分到场景的表示层次。 此外,作者将学习到的功能用于新颖的任务-展示了它们作为一般图像表示形式的适用性。
DCGANs的研究
- 提出并评估了卷积GAN的体系结构拓扑上的一组约束条件,这些约束条件使它们在大多数情况下都能稳定地训练。
- 作者将这种经过训练的鉴别器用于图像分类任务,体现出了无监督算法的竞争优势。
- 通过将GAN学习的过滤器进行可视化,表明特定的过滤器能学会绘制特定的对象。
- 生成器具有矢量算数特性,可以生成许多语义操作。
更改CNN架构
- 全卷积网络,使用跨步卷积代替了确定性空间池化方法(例如maxpooling),从而使网络能够学习自己的空间下采样。我们在生成器中使用此方法,从而使其能够学习自己的空间上采样和鉴别器。
- 在卷积特征之上消除全连接层的趋势,最有力的例子就是在最先进的图像分类模型中使用的全局平均池化。作者发现全局平均池化能提高模型的稳定性,但是会影响收敛速度。直接将最高卷积特征直接连接到生成器和鉴别器的输入输出的中间范围是最好的。GAN的第一层采用均匀的噪声分布Z作为输入,由于它只是一个矩阵乘法,所以可以叫做全连接层。但是将结果重构为4维张量并用做卷积堆栈的起点。对于鉴别器,最后的卷积层被展平,然后输出一个单一的sigmoid。
- 批量归一化,它通过将每个单元的输入归一化为零均值和方差来稳定学习。这有助于处理因初始化不当而引起的训练问题,并有助于在更深的模型中进行梯度流动。事实证明,这对于让深入的生成器开始学习,防止生成器将所有样本崩溃到单个点至关重要,这是GAN中常见的故障模式。但是,直接将batchnorm层应用于所有层将会导致样本震荡和模型不稳定。通过不将batchnorm应用于生成器输出层和鉴别器输入层可以避免这种情况。
ReLU激活函数被用在生成器中,但是使用Tanh函数的输出层除外。使用有界激活可以使模型更快地学习以饱和并覆盖训练分布的色彩空间。在鉴别器内,使用LeakyReLU激活可以很好地工作。特别是对于高分辨率的建模。这与原始GAN论文相反,原始论文使用maxout激活。
对抗训练细节
除了缩放到tanh激活函数的范围[-1,1]之外,没有对训练图像进行任何预处理。所有模型均使用最小批量大小为128的SGD进行训练。所有权重均从零中心正态分布初始化,标准偏差为0.02.在LeakyReLU中,所有模型的斜率设置为0.2。尽管GAN之前的工作是利用动量来加快训练速度,但作者使用了带有优化超参数的Adam优化器。作者使用0.0002的学习率。此外,作者发现将动量项保持在建议值0.9会导致训练震荡和不稳定性,而将其减小到0.5有助于稳定训练。
LSUN
作者在LSUN卧室数据集中训练了一个模型,其中包含了超过300万个训练示例。分析表明,快速学习模型与其泛化性能之间存在直接联系。
为了进一步降低发生器记忆输入示例的可能性,作者执行了一个简单的图像重复数据删除过程。作者在训练示例的32*32降采样后的中心使用了3072-128-3072去噪丢弃正则化ReLU自动编码器。然后,通过对ReLU激活进行阈值化来对生成的代码层激活进行二值化,这已经被证明是一种有效的信息保存技术。哈希冲突的视觉检测显示出了很高的准确性,估计的误报率不到1%。此外,该技术还检测并清除了大约275000个重复项,表明召回率很高。
DCGAN功能的实验验证
使用GANs作为特征提取程序对CIFAR-10进行分类
评估无监督表示学习算法质量的一种常用技术是将其作为特征提取器应用于有监督的数据集,并评估基于这些特征的线性模型的性能。 在CIFAR-10数据集上,利用K均值作为特征学习算法,从一个经过微调的单层特征提取管道中已经证明了非常强的基线性能。当使用大量特征图(4800)时,此技术可达到80.6%的精度。基本算法的无监督多层扩展达到82.0%的准确性(Coates和Ng,2011)。 为了评估DCGAN在有监督任务中学习到的表示的质量,我们在Imagenet-1k上进行训练,然后使用鉴别器的所有层的卷积特征,最大程度地汇集每一层的表示以生成4×4空间网格。 然后将这些特征展平并连接起来以形成28672维向量,并在它们之上训练规则化的线性L2-SVM分类器。 在执行所有基于K均值的方法时,这实现了82.8%的准确性。 值得注意的是,与基于K均值的技术相比,鉴别器的特征图要少得多(最高层为512),但由于有4×4空间位置的许多层,因此确实会导致较大的总特征向量大小。并且文章作者也提到,DCGAN的性能还是不如CNN,但是该实验也证明了GAN作为特征提取器的鲁棒性。
使用GANs作为特征提取器对SVHN数字进行分类
在StreetView门牌号码数据集(SVHN)上,当标签数据不足时,作者将DCGAN的鉴别器功能用于监督目的。 遵循与CIFAR-10实验类似的数据集准备规则,作者从非额外集合中分离出10,000个示例的验证集合,并将其用于所有超参数和模型选择。 随机选择1000个均匀分类的训练实例,并在与CIFAR-10相同的特征提取管道之上训练规则化的线性L2-SVM分类器。 这达到了22.48%的测试误差(使用1000个标签进行分类)的最新技术,改进了旨在利用未标记数据的CNN的另一种修改。 此外,作者通过在相同数据上训练具有相同架构的纯监督CNN并通过64个超参数试验的随机搜索来优化该模型,从而验证了DCGAN中使用的CNN架构不是该模型性能的关键因素。 它实现了显着更高的28.87%验证错误。
调查和可视化网络内部
隐藏空间的步态
作者第一个实验是理解隐藏空间的场景。学习的模型每一个步态都可以告诉我们生成的迹象以及空间分层坍塌的方式。如果在隐藏控件的步态导致了图像生成的语义发生变化,则可以推断出该模型已经学习了相关且有趣的表示形式。
可视化鉴别器
先前工作表明,在大图像数据集上进行有监督的CNN训练会产生非常强大的学习功能, 此外,在场景分类中受过训练的受监督的CNN可以学习物体检测器。 作者证明了在大型图像数据集上训练的无监督DCGAN也可以学习有趣的特征层次结构。使用全卷积网络引导反向传播,作者在下图示了鉴别器学到的特征在卧室的典型部分(如床和窗户)上激活。为了进行比较,在同一图中,作者为未在语义相关或有趣的任何事物上激活的随机初始化特征提供了基线。
生成表示的手动方法
遗忘某些对象
除了鉴别器学习到的表示外,还存在生成器学习什么表示的问题。 样本的质量表明生成器可以学习主要场景组件(例如床,窗户,灯,门和其他家具)的特定对象表示。 为了探究这些表示形式的形式,作者进行了一项实验,试图从生成器中完全删除窗口。
在150个样本上,手动绘制了52个窗口边界框。 在第二高的卷积层要素上,通过使用绘制的边界框内的激活为正,而来自同一图像的随机样本为负的准则,进行逻辑回归拟合以预测特征激活是否在窗口上。 使用这个简单的模型,所有权重都大于零(总共200个)的特征图都从所有空间位置中删除了。 然后,在删除特征图和不删除特征图的情况下,生成随机的新样本。
生成的带有和不带有窗口丢失的图像如下图,有趣的是,网络通常会忘记在卧室绘制窗口而将其替换成其他对象。
脸部样本上的矢量算法
在评估单词的学习表示形式时证明,简单的算术运算揭示了表示空间中丰富的线性结构。一个典型的例子证明了向量“King”-向量“男人”-向量“女人”产生了一个向量。其最近邻是Queen的向量。作者调查了生成器的Z表示形式中是否出现了相似的结构。对于视觉概念,作者对示例样本集的Z向量使用了类似的算法。每个概念仅对单个样本进行的实验是不稳定的,但是对三个样本的Z向量求平均值显示出在语义上服从该算法的一致且稳定的生成。 除了下图中所示的对象操纵之外。
作者还演示了在Z空间中线性建模人脸姿势。
这些演示表明,可以使用作者的模型学习到的Z表示来开发有趣的应用程序。 先前已经证明,条件生成模型可以使人信服地建模对象属性,例如比例,旋转和位置。 据作者所知,这是在完全无监督的模型中进行的首次演示。 进一步探索和发展上述向量算法可以大大减少复杂图像分布的条件生成建模所需的数据量。
结论
作者提出了一套更稳定的体系结构来训练生成对抗网络,并且作者提供了证据表明对抗网络可以在监督学习和生成建模中学习图像的良好表示。 仍然存在某些形式的模型不稳定性。作者注意到,随着模型的训练时间越来越长,它们有时会使一部分滤波器陷于单一振荡模式。
补充材料
评估DCGAN的能力
作者建议将标准分类指标应用于模型的条件版本,评估学习到的条件分布。 作者在MNIST上训练了DCGAN(分离出10K验证集),并训练了不变GAN基线,并使用最近邻分类器对模型进行了评估,将真实数据与一组生成的条件样本进行了比较。 作者发现,从batchnorm删除比例和偏差参数对于这两个模型都产生了更好的结果。 作者推测,batchnorm引入的噪声有助于生成模型更好地探索和从基础数据分布中生成。 结果显示在下表中,该表将作者的模型与其他技术进行了比较。 DCGAN模型实现的误差与训练数据集上拟合的最近邻分类器相同,这表明DCGAN模型在对该数据集的条件分布进行建模方面做得非常出色。 在每类一百万个样本的情况下,DCGAN模型优于InfiMNIST,后者是一个手工开发的数据增强管道,它使用了训练示例的平移和弹性变形。 DCGAN与利用每类学习的变换的概率生成数据增强技术具有竞争性,同时由于它直接对数据进行建模而不是对数据进行变换,因此更具通用性。
Model | Test Error @50K samples | Test Error @10M samples |
---|---|---|
AlignMNIST | - | 1.4% |
InfiMNIST | - | 2.6% |
Real Data | 3.1% | - |
GAN | 6.28% | 5.65% |
DCGAN (ours) | 2.98% | 1.48% |