-
Notifications
You must be signed in to change notification settings - Fork 5
Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space 阅读笔记
- GAN生成图片实际上可以理解为从一个分布p(x,y)中采样(x,y),其中x是图片,y是标签(一般用到的只是其中的x,所以一般固定y为某个 类别yc,去产生该类别的图片)。
- 而p(x, y) = p(x)p(y|x),即可以分成一个图片生成模型p(x)和一个分类识别模型p(y|x)
- 所以固定了yc以后,模型又可以写成
论文提出了一个MALA-approx的迭代方法,是一种MH算法的加强版(MH算法可以看笔记的数学部分)
其中x的更新方式为
- ϵ1用来使当前的图片往更像数据集里所有图片的样子去变化(即往先验知识的方向去变化)
- ϵ2用来使当前图片能在分类识别器上得到更高分
- 然后在加入一个随机噪声,方差由ϵ3控制,这能让图片能有更多的独特性 作者做了实验,发现如果缺少了噪声项,生成的图片都缺乏多样性。
- 实际上,这篇文章具体就是:训练好GAN,用预训练的分类器当作编码器对图片x提取特征h,这个h当作初始输入,然后通过MCMC不断地去修改h的值,去寻找效果更好的图片
- 先前的模型大都用手工设计的方式去设计先验知识。而作者则 通过自动编码机来让模型自己学习先验分布。
- 在训练成分的理想条件下,在方差逼近于0的是完美的。Rx是x编码后又复原回来的值
- 把方差提到前面的系数中,迭代式变成了
作者构造了以下几种模型来学习先验
直接用DAE学习分布并产生图片,效果不好,而且收敛速度慢
- 先前的一个模型,本文在这个模型的基础上发展而来。
- 当 p(x)维度比较高时,收敛速度比较慢。这时候,可以把其写成
- 这里h是一个低维的隐变量。p(h)在之前的工作里,基本上是一个手工设计的分布。
- 作者在复现时,用到了Generating Images with Perceptual Similarity Metrics based on Deep Networks这篇论文定义的图片距离
- 可以看到,这个距离不是简单的L2,L1欧拉距离,而是分成了feature,adversarial和image pixel space三个误差。前面是它们的系数。
- G,D是生成器和判别器,而C是设计的比较器(comparator),用来比较的是神经层中间某部分的特征。这个C可以放在G或者D里,也可以单独拿出来。其特征误差如下
论文里提到,单独的去优化这个损失并没有啥好的效果。一般得跟其他搭配使用。
再看对抗误差:
- 就是判别器判别生成的图片的误差,生成的图片越真越好
最后是图片空间误差:
- 就是生成的图片和真实图片的误差。作者发现加了这个训练会变得稳定。
后两部分的模型
如下图。
-
这里输入h是某个输入图片的特征。假如有个图片分类网络,比如AlexNet,VGG之类的,如下图
-
一般这类网络设计思路都是卷积+全连接最后得到标签。而这里举得例子就是AlexNet卷积过后第一层fully connected层(叫做fc6)得到的特征。所以相当于拿特征又去重新生成原来的图片,相当于一个自动编码器。
-
在AM(Activation Maximization)里面,假设模型是训练好,这样就可以根据搜索输入h,寻找能使分类器某一类的标签得分最大化的h,这个h就是这个标签的一个特征。这里借鉴的是神经科学中,神经元对某些刺激会有特别的响应。望梅止渴,见钱眼开(划掉)
-
根据Synthesizing the preferred inputs for neurons in neural networks via deep generator networks论文所写,AM的任务可以写成
-
Φ是某一层的神经元,y是某个编码,后面是L2正则项。放回到这个问题里。y就是特征值h,Φ就是分类器中最后一层想要的那个分类的值。加入L2正则项(λ = 0.005)能使网络工作得更好。
跑题: 这篇论文还提到了用3σ法则去clip激活值,把激活值clip在[0, 3σ],之所以大于0是因为用的ReLU激活函数。这提高了生成图片的质量。
再回到 DGN-AM,作者把p(h)定义成一个以0为中心的单峰高斯分布。
具体来说,如上面的图b,特征h前向传播到分类器末端,然后把最后一层关于类型yc的那一个神经元的误差反向传播回h那里,直到一定程度后,把训练好的h只送入G,生成图片。
基本上是a和b的结合,用DAE重新编码特征h,发现收敛速度有所增加,效果一般
其中Noiseless joint PPGN-h是效果最好的模型
- 这两个结构上是一样的,思想上其实也是自动编码机,只不过它们把生成网络G也纳入到了编码机内,强制要求生成的中间编码为图片x。E是图片特征提取器(就是上面所说的AlexNet,VGG等),但是分成了两部分,E1,E2,意思是,在提取器输入和输出之间的网络层里面,取出另一个特征h1(论文里是AlexNet的pool5层)。这个在d模型中用到了。
- d和e模型的差别就在于是否在x,h,h1加入随机噪声,结果发现无噪声的效果更好,但是收敛速度略慢一点。