words

单词意思

something need to know

  • center-crops
  • de-duplication
  • k-mean 方法
  • nearest neighbor search
  • LeakyReLU
  • guided backpropagation

0. ABSTRACT

what

引入 DCGANS,能利用对抗网络学习不同层次的特征。

同时注意标题,无监督的特征学习

1. INTRODUCTION

从无标签数据中,学习可重复使用的特征,是我们关注的。作者基于 GAN,提出一个学习图像特征表征的方法,同时利用训练好的生成对抗网络作为特征提取器。

而 GAN 有训练不稳定的问题,导致不好理解和可视化它学到了什么和中间层学到的特征。

所以,本文章贡献如下:

  1. 提出评估一系列结构技术上的限制,来保证 GAN 网络训练的稳定。这类的结构都统一叫做 DCGAN。
  2. 使用训练好的判别模型 D,来比对其他无监督算法的性能。
  3. 可视化 GAN 所学的 filter
  4. 表明一个现象:生成器可以利用 vector arithmetic property 修改许多生成数据的语义质量。

2. RELATED WORK

2.1 REPRESENTATION LEARNING FROM UNLABELED DATA

聚类,自编码器,都能很好地从图像中学习到特征表征。

Deep belief networks 能很好学习层次表征

2.2 GENERATING NATURAL IMAGES

生成图像模型分成两种,非参数与参数模型。

非参数模型这里我不讨论了。

参数模型中,GAN 生成的图像有时候有噪声且难以理解。

而 recurrent network 方法和逆卷积网络还不错(2015年时),但是都没有利用生成器用于监督任务

2.3 VISUALIZING THE INTERNALS OF CNNS

使用神经网络通常会被批评说这是黑盒方法,对于它做了什么知之甚少。所以才有了可视化网络内部的想法。

具体一些相关工作暂时就不写了。

3. APPROACH AND MODEL ARCHITECTURE

文章提到扩展 GAN 的尺寸,而一般使用 CNN 模型去对图像建模有困难。

所以文章提出了结构上的建议,能稳定训练,训练更大分辨率和更深模型。主要是修改 CNN 的结构,主要分成以下几个点。

  1. 全部换成卷积层。池化函数全部换成可学习的卷积层,可以学习下采样。G D 模型都使用这个改动。
  2. 最后一层卷积得到的特征映射(feature map),之前是接全连接层,现在就不要了,不利于收敛。对于 G,看 Fig 1(关于 DCGAN 的生成器的 LSUN scene 建模)。而 D,最后一个卷积层会被展平,然后送到 sigmoid 去输出单值。
  3. batchnorm。把输入到神经单元的数据标准化。GAN 中有个常见训练问题:对于所有样本陷到的单个点,不好训练。但是对于 G 的输出层和 D 的输入层不要加,会导致模型不稳定和样本震荡。
  4. 激活函数的选择。G 中,无脑 ReLu 除了输出层用 Tanh。实验发现,使用有边界的 activation 使得模型更快覆盖训练分布的彩色空间,所以用 ReLu 和 Tanh 还是有道理的。在 D 中,leaky relu 尤其是在高分辨率模型中效果好。

文章总结了几点关于模型结构的指导,不在此处赘述。

4. DETAILS OF ADVERSARIAL TRAINING

三个数据集上训练:LSUN、Imagenet-1k 和 Faces。

使用 SGD 方法训练,batch size = 128。权重用均值为 0,标准差为 0.02 的正态分布初始化。使用 LeakyRelu,0.2。

optimizer 使用 Adam,lr = 0.0002。

动量项使用 0.5,有助于稳定训练 。

去重

为了减少生成器记忆输入样本的似然(避免是因为过拟合才表现好),需要一个图像去重过程。

文中提出了一个去噪 dropout regularized RELU 自动编码器,维度为 3072-128-3072 ,用于 32 * 32 图像的下采样中心裁剪。

Fig 2 中提到,使用小 lr 和 minibatch 的 SGD 不太容易记忆训练样本。

5. EMPIRICAL VALIDATION OF DCGANS CAPABILITIES

5.1 CLASSIFYING CIFAR-10 USING GANS AS A FEATURE EXTRACTOR

unsupervised representation learning algorithms 的评估方法之一是:用他们作为监督数据集的特征提取方法,同时评估在这些特征上拟合的线性模型的性能(例如 Table 1 中,用 feature 训练一个分类模型,分类 CIFAR-10)。

为了评估 DCGAN 对监督任务的表征学习的质量,数据集为 Imagennet-1K,使用 D 模型左右层的卷积特征(feature map),再用最大池处理每个层的表征,产生 4 * 4 的空间网格。这些特征(这些特征是什么????)展开连接为一个 28672 尺寸的向量,然后 L2-SVM 在他们之上训练。这种方法超过了所有的 k-mean 方法,但是比不过传统的辨别 CNN 网络,这也是未来需要改进的地方。

Table 1 展示了 DCGAN 的 feature 用于分类 CIFAR-10 的精确度。

5.2 CLASSIFYING SVHN DIGITS USING GANS AS A FEATURE EXTRACTOR

在 SVHN 数据集上,当标签数据缺乏的时候,使用 DCGAN 的 D 用于监督目的。

还有一些实验细节暂时不写,我已经标记了。也是训练了一个线性模型对图片分类,分类效果还是很好的。

另外,证明了 DCGAN 中的 CNN 结构不是最关键的对模型表现的贡献因素。因为用同样的结构和数据集来训练监督 CNN,错误率还更高了。(这个能体现吗?)

6. INVESTIGATING AND VISUALIZING THE INTERNALS OF THE NETWORKS

探究、可视化网络内部,可以研究学习的表征,或者对面某种 f(X) 的反应(OOD data)

本文不做任何形式的最近邻搜索,因为在像素或者特征空间中的最近邻通常会被图像变换愚弄。

也不用 log-likelihood 作为 metric,这是个垃圾 metric。

6.1 WALKING IN THE LATENT SPACE

第一个实验为了了解隐空间变量做了啥,Walking on the manifold that is learnt 能告诉我们记忆的标志,和空间是如何等级式收敛。

如果 walk in latent space 过程导致了图像生成过程中导致了语义的变换,我们可以推断,模型已经徐诶了一些相关和有趣的表征。

看 Fig 4,能看到学习到的空间有平滑的转变。

6.2 VISUALIZING THE DISCRIMINATOR FEATURES

之前就提到,利用 D 的特征来拟合 L2-SVM 做分类。可视化这些特征也算是一个探究方式把,本文能展示 DCGAN 在大量的图像数据集中能学到特征结构。

Fig 5 中,D 学习到的 feature 能对某些卧室的部件产生反应,这就能作为对象检测器。

6.3 MANIPULATING THE GENERATOR REPRESENTATION

这个我认为是文章中除了对网络结构的工作外,最有意思的一个工作。

前文主要说了 D 学习到了什么表征(对某些目标有反应),但是 G 学习到了什么表征?

6.3.1 FORGETTING TO DRAW CERTAIN OBJECTS

文中提到 G 学习到特定场景组成部分的表征,例如床,灯,门等。为了探究这些表征的结构,文中采取的实验方式为:尝试去除生成器生成的图像中的窗户,就好像生成器忘记画窗户一样。(利用去除一个部分,来探究他的结构)

实验内容如下:(这里还是半懂,这个绘制窗口如何,是对应像素在窗口内,他的对应特征的激活值就为正吗,这个 dropped from all spatial locations 是把 feature map 中的值去掉还是原像素)

150 个样本,52 个由人工画上绘制窗口。基于第二高的卷积层特征,利用在绘制窗口内的像素对应特征的激活值为正,而来自相同图片的随机像素对应特征的激活值为负这个准则,拟合一个逻辑回归来预测此特征的激活值是否表明像素在窗口内。

利用此模型,所有空间位置上的 feature map 权重大于 0 的都要丢弃。

之后利用带窗和不带窗的 feature map 来随机生成新图。

可以 Fig 6,发现窗户要不然没有,要不然就变成别的了。

6.3.2 VECTOR ARITHMETIC ON FACE SAMPLES

简单的算术运算展示了表征空间中丰富的线性结构。(由自然语言处理中,词的学习表征中启发而来)

其中一个例子很方便理解

vector(”King”) - vector(”Man”) + vector(”Woman”) resulted in a vector whose nearest neighbor was the vector for Queen

那么,是否在 G(z) 这个过程中,z 的表征也有类似的结构,从而可以利用起来做运算?

所以我们也对 Z 做相同的运算,Z 是一些确定的概念的向量(好像 vector("King") 一样)在实验过程中,为了避免一个概念一个样本导致的不稳定,会进行平均某个概念的三个样例的 Z vector,此操作过后的生成图像能更好地在语义层面服从运算。

主要看一下 Fig 7. 大概能了解实验内容,也展示了目标修改,为条件生成模型减少了数据量,这对 deepfake 中的面部的部分区域修改提供了想法。

Fig 8 展现了 face pose 能够在 Z 空间中线性建模。它是利用 turn 这个语义,将往左边看转换为往右边看。(但是没有完全看懂这和前头说的线性建模有什么关系?)可能因为他是通过插值。

添加新评论