GAN相关(二):DCGAN / 深度卷积对抗生成网络

GAN相关(二):DCGAN

UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS

Alec Radford et al

DCGAN指的是Deep Convolutional GAN,摘要中说,本文是bridge the gap between 有监督的CNN和无监督的CNN。并且提出了DCGAN模型,希望能够更好的提取特征。下面看一下它的相关工作:

对于无监督,经典方法就是聚类,对于图像领域,可以用 hierarchical clustering of image patches 来学习图像的表达,也可以用auto-encoder,deep belief network也可以在学习hierarchical representation方面做的比较好。

除了无监督学习的相关工作外,还有生成自然图像的相关工作。generative image model 可以分为两类:parametric和non-parametric,参数化的和非参数的,非参数的一般用来在已有的数据集中做匹配,参数模型用来做实际当中的图像生成直到最近也没有太多的成功,比如variational sampling approach,iterative forward diffusion process。GAN生成的图像比较noisy和incomprehensible,另外有人用了一种 laplacian pyramid 的 GAN的extension得到了更好质量的图,但是还是不理想。循环神经网络和deconvolutional网络也被用来解决这个问题。

另一方面是CNN的内部可视化的问题,通过deconvolution和filtering the maximal activation的方法可以用来看到每个filter大概的目的。另外,还可以通过对input做gradient descent用来找到可以激活某些filter的理想的输入图像。

approach and model Structure

这里作者讲了三个核心的方法:

第一个是用strided convolution 来代替传统的决定好的空间池化,这样可以让CNN自己学习自己的空间降采样。第二个是尽量消去在卷积特征的全连接层,GlobalAveragePooling增加了模型的稳定性但是收敛速度慢, A middle ground of directly connecting the highest convolutional features to the input and output respectively of the generator and discriminator worked well. 然后第三个是BN层,BN层对所有层如果都用上的话,会不稳定,所以This was avoided by not applying batchnorm to the generator output layer and the discriminator input layer. 另外还用leakyRelu作为activation。

总的来说要想设计一个稳定的DCGAN那么需要的结构和配置如下:


这里写图片描述

DCGAN的generator的结构如下:


这里写图片描述

empirical validation of DCGANs capabilities

传统的评价一种unsupervised learning的方法是将它作为讴歌feature extractor,用提出的特征用在分类等线性模型上,看他们的性能。

举例来说,这是cifar-10上的性能:


这里写图片描述

这里用的是判别器discriminator的convolutional features做的分类。

walking in the latent space

漫步在隐空间。。。实际上就是对学到的manifold或者讲叫做latent space中walk一下,实际上就是给一个连续的路径,看看是不是有sharp transition,如果是渐变的,那么就是说明我们的latent variable是具有某种语义特征的,也就是说是有意义的,如果有sharp transition说明可能仅仅是记住了训练样本对应的隐变量。如果在walking 的过程中,发现有semantic changes,比如有的物体消失或者出现,那么说明我们学到了相关的图片内容的表达。


这里写图片描述

另外,可以人工控制通过去掉比如window的filter,就可以使得最终的结果中没有window,或者变成一些相似的比如门,镜子等等。另外,这个z vector居然可以像NLP里面的词向量一样,做算数运算,个人觉得这个很有趣也很有意义,如图:


这里写图片描述

还有这个实验,表明了学到的z 这个隐变量的空间中的渐变实际上就对应着生成出来的最终图像的渐变。


这里写图片描述

2018年03月26日19:24:26

posted @ 2018-03-26 19:27  毛利小九郎  阅读(167)  评论(0编辑  收藏  举报