http://mp.weixin.qq.com/s/u-P1GtVj-7JA-34s0fs7jA
【VALSE 前沿技术选介16-28期】Plug & Play Generative Networks
作者:小S
十分有名的 PPGN,released before days of NIPS 2016 conference [2]. 它最大的贡献在于首先,把能生成的图片分辨率直接提高到了 227*227;同时,还是在整个 ImageNet 的所有 class 上生成(conditional GAN),而不是只能生成局限的 CelebA、LSUN bedroom 等等过去被主要用于训练和测试的数据集;第三个贡献我个人觉得是把 conditional GAN 的 condition 的东西变成了一个 network,之前很多都是 condition 在一个 fix data(text/image)上。
这篇文章乍看非常琐碎,仔细读了几遍后,梳理出的重点有四个:
1. DGN-AM;
2. 用 MCMC 做 sampling
3. 用 DAE 做 estimation;
4. noise 对于整个生成过程的各种影响分析。
首先来介绍一下 DGN-AM,这可以说是 PPGN 的基石,它来自于同样发表在 NIPS 2016 的一篇工作[1]。DGN-AM 的全称是,Deep Generator Network-based Activation Maximization。而 DGN-AM 又是 AM(Activation Maximization) 工作的一个扩展。在过去,有神经科学方面的工作表明,我们的人脑的特定 neuron 可能会对特定类型的 input 产生激活(fire),比如某些 neuron 就对某个特定的 concept 产生反应。而 AM 就是希望,能把这样的刺激源(input stimuli)给合成到生成的图片中去。它的具体训练过程就是,从一个随机图片开始,BP 迭代地去决定更新哪些 pixel,使得更新后的图片能增加对于某个(些)特定 neuron 的激活(activation),即 Activation Maximization。但是,AM 有一个很大的缺点是,它很可能会生成出一些即便 activation 很高,但看起来很不真实的图片。这就像 GAN 过去的研究一样,很自然的一个解决办法是,去给 AM 增加一些 natural image prior。过去,这些 prior 可以是很多人工设定的 prior,而这篇 DGN-AM[1] 的工作,则是说,我们也可以学出这样的 prior。
DGN-AM 中的 DGN 正是用来提供这样的 prior 的 generator network G。整个 DGN-AM 的思想可以看做:利用一个额外的 classification networks C,来帮助 generator G 生成更符合 class 信息的图片。其中这个 generator 就相当于提供一种 learned prior,然后这个 AM 做的事情就是让 G(y) 产生的图片更能激活 class y 对应的那个 output neuron h(hidden code),也就达到了让 G 生成更符合 class 信息的图片的目的。所以,DGN-AM 可以做很多有趣的事情。比如,用一个在 ImageNet 上训练的 G 和一个在 MIT Places 上训练的 C,不需要重新训练 G,就可以让这个 G 生成出 ballrooms,jail cells 等等在 ImageNet 中没有但在 MIT Places 有的类型的图片。可以从[1] 里的公式和模型图来加深理解 DGM-AM:
有了对于 DGN-AM 的基本理解,也就介绍完了这篇工作[2] 的第一个重点。现在我们回到 PPGN [2]。PPGN 又针对 DGN-AM 做了哪些改进呢?它首先指出,DGN-AM 因为还是 AM,于是乎会存在有一个问题:因为训练的目标是让生成的图片最大化激活特定 neuron,所以很容易使得训练完全收敛到一个单一的 mode 上,结果就是生成的图片还是不够 diverse。为了解决这个问题,PPGN 首先把 AM 方法重新建模到 energy-based model 的框架下,并将更好的 prior 加入到了这个框架里。从而,PPGN 生成的图片更加 diverse:
具体来看,经典的 AM 算法可以被看做“a product of experts”。对应着 AM 来看下方的公式(2),p(x) 就是那个 image model,p(y|x) 就是 classification model 了。于是乎,就可以继续推导出
公式(3):
有了这样一个 model,作者继续给出了一种特殊的 MCMC sampler,Metropolis-adjusted Langevin algorithm(MALA),MALA-approx sampler:
这个 sampler 就可以用来做实现 PPGN 中的 iterative generation,这也是这篇工作[2] 的第二个重点,用 MCMC 做 sampling。如果 intuitive 的来看这个公式(5),可以把 \epsilon_1 看做,在 image space 空间里,让 x_t 变得更像任何 class 的一种 general image;\epsilon_2 看做让 x_t对于特定 class 激活变得更高;\epislon_3 则很像 SGD 中让优化跳出局部最优,增加 noise 来增加 sample 的 diversity。个人觉得,这三个 term 几乎呼应了之前的 GAN 相关工作中的各种 loss 和 regularization,分别是 image space 的,feature space 的,和 noise 变种的。至此,(\epsilon_1, \epsilon_2, \epsilon_3) 的组合就可以用来解释各种相关模型,这些模型也是这篇工作 [2] 后文中重点拆解(控制变量,deconstructing)讨论的。而这些讨论中最重要的可能是关于 noise 的讨论,我们放在后面介绍。
下面我们先进入第三个重点,用 DAE 做 estimation。由刚才公式(5)的三个 \epsilon 对应的三项来看,其中第一项是针对 image prior 的,也是 generator networks 的重点。在 PPGN 中,对应 prior 就像 DGN-AM 一样,是 learned instead of hand-engineered。用 DAE 来估计这个 prior对应的导数,并且重新带入公式(5),就可以得到如下两个公式。在这里,R_x(x) 就是 DAE 的 reconstruction:
在此框架下,PPGN 给出了四种可能的 priors,并且讨论了 noise 在这些设定下的影响,也就是关于 PPGN 这篇工作[2] 我个人觉得的第四个重点。这四个 pirors 分别对应原文工作的 Secion 3.1 - Section 3.4, 大家有兴趣可以直接阅读原始论文。在这四个 priors 对应的模型中,表现最好的就是 Section 3.4 的 Joint PPGN-h: joint Generator and DAE:
也就是说,我们首先用 Generator G 和 Encoder E 实现了 h->x->h 的过程,然后我们便可以实现如 DGN-AM 中的过程: p(h)p(x|h) 。加上 C 后,整个模型就变成了:p(h,x,y) = p(h)p(x|h)p(y|x)。细心的大家可能可以发现,上图的 d 和 e 里,都有一个 h 和 h1。我们把上面的图,再“放大”看看细节:
如果熟悉 GAN 工作的同学,可能已经可以从 L_GAN 和 L_img 猜到了,他们的 PPGN 是和 VAEGAN [3] 非常相关的。也就是说,所有的 h_i 其实对应的都是一种 feature,而 x 对应的是 image。那么,整个 Joint PPGN-h 的模型,也就是表现最好的模型,其实是这样:三个 DAE 分别负责 h, h_1, x;G 一共有四个 combined loss: L_G = L_img + L_h + L_h1 + L_GAN。这里要注意,虽然是三个 DAE,但三个 DAE 其实是共享参数的。有了对于 Joint PPGN-h 的理解,Noiseless Joint PPGN-h 就更简单了,无非是把对于 h, h_1, x 的 noise 都去掉啦。
那么这些 noise 到底作用如何呢。作者在 Section 3.5 里给出了一些控制变量的分析。他们的主要结论是,Noiseless PPGN-h 比有 noise 的版本很多时候能生成更好的图片质量,但收敛的会相对慢一点。当然,这也和 noise 的大小有关系。
这篇论文的各种实验和模型细节还有非常非常多,就不一一为大家介绍了。最后祝大家新年快乐!
[1] A. Nguyen, A. Dosovitskiy, J. Yosinski, T. Brox, and J. Clune. “Synthesizing the preferred inputs for neurons in neural networks via deep generator networks”. In Advances in Neural Information Processing Systems, 2016.
[2] Nguyen A, Yosinski J, Bengio Y, Dosovitskiy A, Clune J. (2016). "Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space". arXiv:1612.00005v1.
[3] Anders Boesen Lindbo Larsen, Søren Kaae Sønderby, Hugo Larochelle, Ole Winther. “Autoencoding beyond pixels using a learned similarity measure”. 2016.
|