图3 训练1轮之后生成的图片
图4 训练5轮之后生成的图片
图5 DCGAN在imagenet-1k上训练,然后对cifar-10进行分类,和k-means方法进行对比
4.3
使用DCGAN作为feature extrctor对SVHN数据进行分类
在 StreetView House Numbers dataset(SVHN,一个街景拍摄门牌号数据集)中,我们是在labeled data不足的情况下使用DCGAN的disciminator进行监督学习。我们从non-extra数据集中划分了一个10000的validation set,用来进行超参数调节以及模型选择。我们使用类别均匀分布的1000个样本,通过discriminator采用和cifar-10一样的特征提取方法,然后基于这些特征训练一个L2正则化的SVM,这取得了state-of-art的结果(在只使用1000个data的情况下):22.48%的test error。而且我们发现CNN并非是这一结果的key factor,因为我们对比使用了纯粹的CNN架构,经过了64次的随机超参数搜索,得到的validation error是28.87%,要远高于之前的22.48%。
图6 SVHN classification with 1000 labels
5.1
对DCGAN内部的探索和可视化
文中使用了很多种探索DCGAN的方式,但是没有采用对traning set 进行最近邻搜索的方式,因为无论是在pixel还是feature space上这种方法都很容易受图片微小改变的影响。我们也没有使用对数似然(log-likelihood)的方式进行评估,因为有实验表明这也是不太好的metric。
5.2
探索latent space
我们首先要做的第一个实验就是探索latent space的landscape。这种exploration可以告诉我们是否发生了memorization,或者是图片发生分层崩塌(hierarchically collapsed)。如果walking in the latent space 导致了图片生成发生了语义上的改变,比如说有物体被增加或者移除了。我们就可以推断模型学到了相关的,有趣的表达。
5.3
可视化discriminator features
之前的工作已经表明,有监督的CNN在大型数据集上可以学习到非常有用的特征表达。特别的,训练在场景分类(scenes classification)的有监督CNN可以学习到一个物体检测器(object detector)。我们的实验表明,训练在大型数据集上的无监督的DCGAN同样可以学习到分层的,有趣的特征表达。使用guided backpropagation,我们发现disciminator在bedroom的典型的部分被激活(activation),比如beds,windows等。作为对比,我们采用了随机初始化的features,不会产生任何语义相关的有趣的activation。
5.4
操作生成器表达
5.4.1
忘记去画特定的物体。除了鉴别器学习到的特征表达,还有一个问题是生成器到底学习到了什么特征表达。生成的样本的质量表明生成器学习到了场景的主要构成部分,比如beds,windows,lamps(灯),doors,miscellaneous furniture(混杂的家具)的特征表达。为了探索这样的特征是以什么形式存在的,我们做了一个实验:试图将windows从generator的output中彻底移除。
我们选取了150个sample,其中52个我们手工绘制了window bounding boxes。在倒数第二层的conv layer features中,我们训练了一个简单的logistic regression来判断一个feature activation是否在window中,具体来说采用如下的准则:在绘制的window bounding box中的feature activation是正的,同一个图片的其他部分是负的。使用这个简单的模型,所有的权重大于0的feature maps(共有200个)都被从所有的空间位置(spatial locations)移除。然后,随机产生的新的样本,一个移除这些feture maps,另外一个保留。
下图7展示了带有window的和不带有window的生成图片。有意思的是,网络大部分时候都会忘记绘制在bedrooms中绘制window,而是将window替换成其他的物体。
图7 generated images with and without windows
5.4.2
在人脸样本中的向量算术性质
2013年那篇著名的(google word2vec)评估单词学习到的表达文章中,揭示了单词在表达空间中满足简单的算术操作,这表明其具有良好的线性性质。一个经典的例子是vector(”King”) - vector(”Man”) + vector(”Woman”)得到的结果,与之最相近的vector是Queen。我们想探索类似的结构和性质,是不是也存在generator的Z表达中。文中作者对一系列典型的Z representations 做了实验,结果发现确实有类似的性质。但是如果只对单个样本进行操作得到的结果不是很稳定,而如果使用三个的平均值,结果就会很不错而且比较稳定。实验还表明fave pose(脸部姿态)在Z空间中也满足类似的线性性质。
实验表明模型学习到的Z representations可以导出很多有趣的性质和应用。之前有实验表明条件生成模型(conditional generative model)可以学习物体属性(object attribute),比如scale(尺度),position(位置),rotation(旋转)等。而DCGAN是目前为止第一篇只使用非监督学习的方法就可以得到类似的性质的模型。如果对于上面的vector arithmetic进行更进一步探索的话,有望减少条件生成模型在对复杂图片分布进行建模时所需要的数据量。