阅读小结:InfoGAN:Interpretable Representation Learning by Information Maximising Generative Adversarial

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Layumi1993/article/details/52474554

之前GAN中都没有加入分类信息,都是耍流氓啊。用原始maxD的时候,G学到的容易收敛到一个固定图像。

而用feature matching的话,相同向量可能每次match的都不同,这怎么regression啊,摔  (也可能我是用姿势不对,但有多类的feature matching不靠谱啊)


What:

1.通常GAN把一个随机噪声向量z生成为一张图像。z可能从一个 0到1的随机采样构成。

2.这样连累了GAN中的每个值的作用

- 因为即使你改了向量中一个值,对生成图片的影响也是很小的。一定要改变很多个值去影响生成的结果。

- 每个值应该是有实际含义的(即文题中的interpretable,可翻译的),理想情况下,每个值应该都有物理含义,比如在人脸生成任务中,一个值控制眼睛的颜色,一个控制头发的长度等等。 (类似分类最后fc的每个值都有含义的,虽然定义不了)

3.所以作者建议对GANs基于共同信息(mutual information)的改进,将会得到有意义的向量元素(每个值)


How

1.潜在编码 latent code c

- 原来的GAN G的输出为 G(z) 现在改为 G(z,c)

- c可以包含多种变量,根据不同的分布,比如在MNIST中,c可以一个值来表示类别,一个高斯分布的值来表示手写体的粗细


2.共同信息 mutual information

- 如果使用潜在编码c,其实没有监督让网络去使用c。它就往往会被忽略。

- 为了避免这种情况,作者定义了一个熵。作为衡量X,Y两个变量之间 mutual information的程度

 I(X;Y) = entropy(X) - entropy(X|Y) = entropy(Y) - entropy(Y|X)  这个值就像条件概率,X,Y互相独立的话,这个值应该等于0.

-新的loss被定义为 old loss - lamda* I(G(z,c);c)  

我们需要增大生成出来的图像 与 类别c的关联。所以I(G(z,c);c)  的目标是变大。


3. variational mutual information maximisation

有一串公式。。。大概就是用一个网络从 G(z,c) 来regress c  可以和D是同一个网络,最后分个叉来回归c。


我简单模仿了一下,在输入向量中加了分类信息,github地址为:https://github.com/layumi/2016_GAN_Matlab  欢迎fork star  ~~


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页