InfoGAN:通过最大化生成性对抗网络的可解释表示

InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets

论文地址:http://arxiv.org/abs/1606.03657
发表年份:2016
项目地址:https://github.com/openai/InfoGAN

简介:这篇文章介绍了一种GAN的扩展,使得其能够在完全无监督学习中学习不复杂的表示。InfoGAN是一种GAN,能够最大化小规模数据集的潜变量和观测值之间的相互信息。具体是,InfoGAN 成功地从MNIST数据集中成功提取了数字的风格,3D渲染图像的照明,以及来自中心数字的背景数字SVHN数据集。它也找到一些视觉的概念,比如说发型,是否佩戴眼镜,以及CelebA脸图数据集上的表情。实验表明InfoGAN学习了可解释的表示(disetangled representation)。

1.介绍

无监督学习是一种从大量未标注数据中提取有价值信息的通用方法。流行的架构有表示学习[representation learning]。
而无监督学习也有劣势,因为相关下游(relevant downstream) 对于训练过程是未知的。一种解开表示(disentangled representation),这清除地表示了一个数据集的突出分布,对于相关却未知的任务很有帮助。例如,对于全是脸的数据集,一种实用的可解释表示能够将下列特征提取出来:面部表情、眼睛颜色、发型、是否戴眼镜、对应人物的身份。最卓越的生成器模型是VAE(variational autocoder)。在这篇文章中,我们提出了一种GAN的修改版,通过最大化小数据集的GAN噪声变量和观测值之间的相互信息。

2.相关工作

3.背景:生成对抗网络

在GAN原始论文中,目标是学习一个生成器模型:PG(x),其能够匹配真实的数据分布:Pdata(x)通过转换噪声变量z ~ Pnoise(z)学习一个生成器网络G而不是试图去清楚的为每个数据集中x分配可能性。生成器是通过对抗目标是区分Pdata和PG的鉴赏器训练的。优化后的鉴赏器是D(x)=Pdata(x)/(Pdata(x)+PG(x)).最小的损失是由下式决定的:
(1)minGmaxDV(D,G)=ExPdata[logD(x)]+EzPnoise[log(1D(G(z)))] \tag{1}\min_{G}\max_{D}V(D,G) = \mathbb E_{ x -P_{data}}[\mathrm logD(x)]\\+ \\\mathbb E_{ z - P_{noise}}[\mathrm log(1-D(G(z)))]
而这正是交叉熵(cross entropy)的定义。

4.针对诱导编码的相互信息

Mutual information for Inducing Latent Codes
GAN 使用了一个简单的连续输入噪声向量z,但有可能GAN网络因此变得十分复杂。这篇论文将输入噪声向量分为两个部分:(i) z,视为不可压缩的噪声源 ;(ii) c, 我们称之为潜码。并且将结构性的语义特征作为数据输入。数学上,我们用 c1、c2…cL代表结构性的潜码变量。最简单的形式,我们可以假设一个因素分布,即P(c1,c2,...cL)=i=0LP(ci)P(c_{1},c_{2},...,c_{L})= \prod_{i=0}^L P(c_{i}).方便起见,我们使用潜码cc,来代表所有的潜变量cic_{i}.
我们现在提出一种非监督学习方法:生成器变为G(z,c)G(z,c)。而在标准的GAN中,生成器可以随意忽略其他的潜码c,通过找到满足PG(xc)=PG(x)P_{G}(x|c)=P_{G}(x)的解。为了解决这类问题,我们提出了信息理论的正规化: 这儿,在ccG(z,c)G(z,c)间应该有很高的相互信息。因此 I(c;G(z,c))I(c;G(z,c))应该很高。
在信息理论中,X,Y之间的相互信息,I(X,Y) 衡量了从关于随机X的随机Y中学习到的“信息量”,相互信息能够被表达为两项熵之差:
(2)I(X;Y)=H(X)H(XY)=H(Y)H(YX)I(X;Y) = H(X) - H(X|Y) = H(Y) - H(Y|X)\tag{2}
II其实表达了X,Y之间的相关性。这种表示其实使得量度损失变得简单:对于任意xPG(x)x \sim P_{G}(x), 我们希望PG(cx)P_{G}(c|x)的熵比较小。换句话说,就是潜码在生成器训练过程中不会丢失。因此我们推出了信息正则化最小损失:
(3)minGmaxDVI(D,G)=V(D,G)λI(c;G(a,c)) \min_{G}\max_{D}V_{I}(D,G) = V(D,G) - \lambda I(c;G(a,c))\tag{3}

5. 变化的相互信息最大化

实际上, 相互信息项I(c;G(z,c))I(c;G(z,c))很难直接被最大化因为它需要获取后者P(cx)P(c|x) .幸运的是,我们能够通过辅助定义Q(cx)Q(c|x)来近似P(cx)P(c|x)
(4)I(c;G(z,c))=H(c)H(cG(z,c))=ExG(z,c)[EcP(cx)[logP(cx)]]+H(x)=ExG(z,c)[DKL(P(x)Q(x))+EcP(cx)[logQ(cx)]]+H(c)ExG(z,c)[EcP(cx)[logQ(cx)]]+H(c)I(c;G(z,c)) = H(c) - H(c|G(z,c)) \\ =\mathbb E_{x\sim G(z,c)}[\mathbb E_{c'\sim P(c|x)}[\log P(c'|x)]]+H(x) \\ =E_{x\sim G(z,c)}[D_{KL}(P(·|x)||Q(·|x))+\mathbb E_{c'\sim P(c|x)}[\log Q(c'|x)]]+H(c)\\ \ge\mathbb E_{x \sim G(z,c)}[\mathbb E_{c'\sim P(c|x)}[\log Q(c'|x)]]+H(c)\tag{4}
其中:DKL(P(x)Q(x))>0D_{KL}(P(·|x)||Q(·|x))>0。这种方法称为Variational Information Maximization. 我们注意到H(c)H(c)也能被优化。这篇文章中我们为了简化固定H(c)H(c), 令他为常数。事实是我们利用计算下限绕过了需要计算P(cx)P(c|x)的问题,但是我们仍需要在内部表示中从P(c|x)中进行采样。之后我们提出了简单的引理。
引理5.1 对于任意的变量X,Y和函数 f(x,y)f(x,y),在适当的规律条件下:ExX,yYx[f(x,y)=ExX,yYx,xXy[f(x,y)]]\mathbb E_{x\sim X,y\sim Y|x}[f(x,y) = \mathbb E_{x\sim X,y\sim Y|x,x' \sim X|y }[f(x',y)]],通过定义I(c;G(z,c))I(c;G(z,c))
(5)LI(G,Q)=EcP(c),xG(z,c)[logQ(cx)]+H(c)=ExG(z,c)[EcP(cx)[logQ(cx)]]+H(c)I(c;G(z,c))L_{I}(G,Q) = E_{c\sim P(c),x\sim G(z,c)}[\log Q(c|x)]+H(c) \\ = E_{x\sim G(z,c)}[\mathbb E_{c'\sim P(c|x)}[\log Q(c'|x)]]+H(c)\\\le I(c;G(z,c))\tag{5}
我们注意到LI(G,Q)L_{I}(G,Q) 非常容易用蒙特卡罗法近似。 尤其,LIL_{I}能关于Q,关于G被优化,通过重新参数定义技巧。于是LI(G,Q)L_{I}(G,Q)能被加入到GAN的目标而对训练过程无影响。公式(4)表示下限:E[DKL(P(x)Q(x))]0\mathbb E[D_{KL}(P(·|x)||Q(·|x))] \rightarrow 0。此外,我们知道当变量下限LI(G,Q)=H(c)L_{I}(G,Q) = H(c)对于离散的潜变量,界限变得很紧,因此实现了最大化的相互信息。
于是InfoGAN 被定义为如下形式,λ\lambda为超参数:
(6)minG,QmaxDVI(D,G,Q)=V(D,G)λLI(G,Q) \min_{G,Q}\max_{D}V_{I}(D,G,Q) = V(D,G) - \lambda L_{I}(G,Q)\tag{6}

6.实现

实践中,我们将Q作为一个神经网络。在大多数实验中,Q和D分享了所有的卷积层,并且只有最后的全连接层来输出Q(cx)Q(c|x)的参数,这意味着InfoGAN与GAN相比计算量增加并不大。我们也发现,LI(G,Q)L_{I}(G,Q)收敛总比一般的GAN快。
对于不同类别的潜码cic_{i},我们自然地使用softmax来表示Q(cix)Q(c_{i}|x),对于连续的潜码cic_{i},这儿有更多的选项,取决于真正的P(cjx)P(c_{j}|x),在我们实验中,把Q(cjx)Q(c_{j}|x)当做高斯因式分解足够了。
即使引入了超参数λ\lambda,对于离散潜码来说,把它设为1也是足够的。对于连续的潜码变量,把它设的更小,确保λLI(G,Q)\lambda L_{I}(G,Q)和GAN目标尺寸一样大。
训练的技巧采用DC-GAN。

7.实验

目标1:检验相互信息是否能被最大化。
目标2:评测是否InfoGAN能学习到解开和可解释的表示。

7.1 相互信息最大化

我们在MNIST数据集上训练InfoGAN,在潜码cCat(K=10,p=0.1)c \sim Cat(K=10,p=0.1)使用归一化的分类分布,
InfoGAN:通过最大化生成性对抗网络的可解释表示
在图1中,可以看见下限LI(G,Q)L_{I}(G,Q)迅速被最大化到2.3左右,这证明这个方法是可行的。

7.2 解开的表示

InfoGAN:通过最大化生成性对抗网络的可解释表示
图 2:在MNIST上操控潜码:我们试着将一个潜码改变而其它的潜码和噪声不变。图(a)潜码c1对应了数字的类型,图(b)没有进行信息正则化的潜码c1则导致没有具体含义的数字,图(c)潜码c2(-2 ~ +2) 对应了数字的旋转,图(d)潜码c3 (-2 ~ +2) 对应了数字的宽度。
InfoGAN:通过最大化生成性对抗网络的可解释表示
图3:在3D脸库上操控潜码:我们展示了被学习连续潜码在[-1,1]之间变化的影响。图(a)表明了脸姿势的变化;图(b)展示了脸仰角的变化;图(c)表明了光照度的变化;图(d)表明了脸宽度或者窄度的变化

InfoGAN:通过最大化生成性对抗网络的可解释表示
图4 :在3D椅子上操控潜码。图(a)表明了连续的潜码捕捉了椅子的姿势同时保留了它的形状,图(b)潜码有选择性地捕捉了不同椅子的类型,并在其间平滑地插值。
InfoGAN:通过最大化生成性对抗网络的可解释表示
图5:在SVHN上操纵潜码。
InfoGAN:通过最大化生成性对抗网络的可解释表示
图6 在CelebA上的表现。

8 总结

InfoGAN是一种将输入图片中隐藏信息发挥到极致的GAN,能获取到一些我们难以预料的特征(比如表情,姿势,发型等),而且计算消耗增加得不多,它是非监督学习的,因此在数据集较少的场合非常实用。具体的原理推导涉及到信息论的知识,译者还未完全弄懂,有兴趣的读者可以来探讨下。
问题:潜码和生成的特征是否有明确的对应关系,还是说随机的。
关于复现代码,将在下篇文章中讨论。