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) min ⁡ G max ⁡ D V ( D , G ) = E x − P d a t a [ l o g D ( x ) ] + E z − P n o i s e [ l o g ( 1 − D ( 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)))] GminDmaxV(D,G)=ExPdata[logD(x)]+EzPnoise[log(1D(G(z)))](1)
而这正是交叉熵(cross entropy)的定义。

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

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

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

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

6.实现

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

7.实验

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

7.1 相互信息最大化

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

7.2 解开的表示

InfoGAN:通过最大化生成性对抗网络的可解释表示_第2张图片
图 2:在MNIST上操控潜码:我们试着将一个潜码改变而其它的潜码和噪声不变。图(a)潜码c1对应了数字的类型,图(b)没有进行信息正则化的潜码c1则导致没有具体含义的数字,图(c)潜码c2(-2 ~ +2) 对应了数字的旋转,图(d)潜码c3 (-2 ~ +2) 对应了数字的宽度。

图3:在3D脸库上操控潜码:我们展示了被学习连续潜码在[-1,1]之间变化的影响。图(a)表明了脸姿势的变化;图(b)展示了脸仰角的变化;图(c)表明了光照度的变化;图(d)表明了脸宽度或者窄度的变化

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

图6 在CelebA上的表现。

8 总结

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

你可能感兴趣的:(GAN,InfoGAN,latent,code,信息论)