InfoGAN

Chen X., Duan Y., Houthooft R., Schulman J., Sutskever I., Abbeel P. InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets. arXiv preprint arXiv 1606.03657, 2016.

既然都能生成图片了, 那至少得能够抓住数据的特征信息, 解耦.

主要内容

一些GAN的输入会包括((z, c)), 其中(z)是噪声, 而(c)是一些别的信息, 比如标签信息, 一个很自然的问题是, 怎么保证GAN会利用这部分信息呢? 换言之, 怎么保证生成器生成的图片(G(z, c))(c)有不可否认的关联呢?

衡量两个随机变量关联性的指标, 经典的便是互信息

[I(X, Y) = H(X) - H(X|Y), ]

在这个问题里就是

[I(c,G(z,c)) = H(c) - H(c|G(z,c)). ]

直接估计互信息是很困难的, 利用变分方法可以得到一个有效的下界(这也是VAE的灵魂):

[egin{array}{ll} I(c,G(z,c)) & = mathbb{E}_{x sim P_G} mathbb{E}_{P(c|x)} log P(c|x) + H(c) \ & = mathbb{E}_{x sim P_G} [mathrm{KL}(P(c|x) | Q(c|x)) + mathbb{E}_{P(c|x)}log Q(c|x)] + H(c) \ & ge mathbb{E}_{x sim P_G}mathbb{E}_{P(c|x)}log Q(c|x) + H(c)=: L_{I}(G, Q). end{array} ]

其中(Q)是我们用来近似(P(c|x))的. 上述还是存在一个问题, 即(P(c|x))依然无法处理, 不过注意到

[L_I(G, Q) = mathbb{E}_{c sim P(c), x sim G(z, c)}[log Q(c|x)] + H(c). ]

我们可以给出一个合理的先验分布.

(c in mathcal{C})是离散的时候, 令(Q)的输出向量的长度为(|mathcal{C}|), 可直接令该向量的softmax后的向量为概率向量;

(c)是连续的时候, 倘若(x=G(z, c^*)), 则可以假设(Q(c|x) sim mathcal{N}(c^*, sigma^2 I)), 此时

[log Q(c|x) propto log exp(-frac{|c-c^*|_2^2}{2sigma^2}) propto -|c-c^*|_2^2. ]

最后的损失便为

[min_{G, Q} max_D V_{mathrm{InfoGAN}} (D, G, Q) = V(D, G) - lambda cdot L_I(G, Q). ]

其中(V(D, G))是普通的GAN的损失.

看一些InfoGAN的实现: (z)服从[0, 1]均匀分布, 类别标签服从均匀分布((1/K)), 其他的用于描述角度宽度的(c)服从[-1, 1]的均匀分布.

实际上, 应该还是有一个超参数(sigma^2)的, 但是当我们假设其与(x)无关的时候, 在损失部分其为一常数, 所以就不用管了(这和VAE在decoder部分的处理也是一致的).

估计是没弄好啊, 这没看出变化来.

image-20201125200554855

原文地址:https://www.cnblogs.com/MTandHJ/p/14038240.html