接下来就是如何处理 I(c; G)。由于 I(c;G(z,c)) 的计算需要 p(c|x),而我们并不知道真实的分布。这时候,我们需要用一个 Q(c|x) 来近似,很显然,Q可以用神经网络来实现。此外, 可以利用reparametrization(见附录)的技巧来简化网络。 在实际中,由于Q和D都是输入 x,而且识别网络D除了可以输出概率,也可以做特征提取,因此Q可以和D共享参数。在正常的D之后,额外加一层full connected layer,利用softmax等可以输出c。这也是图3(twitter图)中的结构。 4、 Conditional GAN Conditional GAN的基本模型见图3(twitter图)。所谓conditional的意思就是,生成图片的模型变成了 P(X|z, c),而c是我们额外提供的信息。这里要注意conditional GAN和Info GAN的结构区别 (1)Info中c信息是需要网络去学习提取的特征,而这里是需要我们输入网络的信息。 (2)Info中c只输入生成网络,而这里需要同时输入生成和识别网络,以便让网络学习到它们之间的关联。 在Conditional GAN中,随着c的变换可以衍生出很多应用,比如输入可以是label,可以是分类。甚至是另外一个图片,比如可以做image to image的风格转换,atv直播,也可以做分辨率提升super-resolution。这里我们以Text-to-Image[5] 为例,讲一下conditional GAN的一种建模方法。 同样,先上图:
模型的任务是给定一句文字描述,然后可以生成符合描述的图像。可以看到,网络的输入除了采样噪声z以外还有文字信息。整个任务分为两大部分:第一部分是要对文字进行编码(text encoding),这部分并不是Conditonal GAN模型的一部分,可以使用RNN或者char-CNN等。文中用的是deep convolutional and recurrent text encoder[4] ,感兴趣可以去看这篇文章[4]。 在模型中,文字信息同时输入 G 和 D 是关键所在,这样网络才能够将文字和图片关联起来。其次,在训练中,原GAN中 D 只需要判断两种数据:real/fake的图片。而这里,D 需要判断(输入)三种数据{real image, right text},{real image, wrong text}以及{fake image, right text}。 5、 StackGAN StackGAN[8] 模型本质就是是Conditional GAN,只不过它使用了两层conditional GAN模型,第一层模型 P(X1|z, c) 利用输入的文字信息c生成一个较低分辨率的图片。之后第二层模型 P(X|c,,X1) 基于第一层生成的图片以及文字信息生成更加优化的图片。文中给出的实验效果非常的惊人,可以生成256x256的非常真实的图片。这里不再重复细节。下图为简化的StackGAN模型。
Reference 1、Goodfellow, Ian, et al. “Generative adversarial nets.” Advances in Neural Information Processing Systems. 2014. 2、Radford, Alec, Luke Metz, and Soumith Chintala. “Unsupervised representation learning with deep convolutional generative adversarial networks.” arXiv preprint arXiv:1511.06434 (2015). 3、Reed, Scott, et al. “Generative adversarial text to image synthesis.” arXiv preprint arXiv:1605.05396 (2016). 4、Reed, Scott, et al. “Learning Deep Representations of Fine-Grained Visual Deions.” arXiv preprint arXiv:1605.05395 (2016). 5、Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network 6、Image-to-Image Translation with Conditional Adversarial Networks 7、Chen, Xi, et al. “Infogan: Interpretable representation learning by information maximizing generative adversarial nets.” Advances in Neural Information Processing Systems. 2016. 8、Zhang, Han, et al. “StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks.” arXiv preprint arXiv:1612.03242 (2016). 9、https://twitter.com/ch402/status/793535193835417601 Appendix 看了几篇关于GAN的文章,发现有几个建模的小trick 1、在生成模型中,之所以可以从一个简单的分布采样,然后通过一个网络(参数需要学习)去近似数据的分布 背后的原理是 Any distribution in d dim can be generated by taking a set of d normal distribution variables. mapping through a sufficiently complicated function. So provided powerful function approximators, we can simply learn a function mapping independent norm distribution z to whatever X. 2、在模型中,如果目标函数中某个条件概率无法直接得到,那么可以学习一个网络Q去近似。利用KL divergence D{KL}[P||Q] = H(P,Q) - H(P) 以及 D{KL} >= 0 可以推出一个更易优化的上/下界。 3、reparametrization trick 举个例子,比如模型中用一个网络 Q(z|x) 来近似真实的 P(z|x),我们常用正态分布来建模Q,即 (责任编辑:本港台直播) |