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)).最小的损失是由下式决定的:
而这正是交叉熵(cross entropy)的定义。
4.针对诱导编码的相互信息
Mutual information for Inducing Latent Codes
GAN 使用了一个简单的连续输入噪声向量z,但有可能GAN网络因此变得十分复杂。这篇论文将输入噪声向量分为两个部分:(i) z,视为不可压缩的噪声源 ;(ii) c, 我们称之为潜码。并且将结构性的语义特征作为数据输入。数学上,我们用 c1、c2…cL代表结构性的潜码变量。最简单的形式,我们可以假设一个因素分布,即.方便起见,我们使用潜码,来代表所有的潜变量.
我们现在提出一种非监督学习方法:生成器变为。而在标准的GAN中,生成器可以随意忽略其他的潜码c,通过找到满足的解。为了解决这类问题,我们提出了信息理论的正规化: 这儿,在和间应该有很高的相互信息。因此 应该很高。
在信息理论中,X,Y之间的相互信息,I(X,Y) 衡量了从关于随机X的随机Y中学习到的“信息量”,相互信息能够被表达为两项熵之差:
其实表达了X,Y之间的相关性。这种表示其实使得量度损失变得简单:对于任意, 我们希望的熵比较小。换句话说,就是潜码在生成器训练过程中不会丢失。因此我们推出了信息正则化最小损失:
5. 变化的相互信息最大化
实际上, 相互信息项很难直接被最大化因为它需要获取后者 .幸运的是,我们能够通过辅助定义来近似:
其中:。这种方法称为Variational Information Maximization. 我们注意到也能被优化。这篇文章中我们为了简化固定, 令他为常数。事实是我们利用计算下限绕过了需要计算的问题,但是我们仍需要在内部表示中从P(c|x)中进行采样。之后我们提出了简单的引理。
引理5.1 对于任意的变量X,Y和函数 ,在适当的规律条件下:,通过定义
我们注意到 非常容易用蒙特卡罗法近似。 尤其,能关于Q,关于G被优化,通过重新参数定义技巧。于是能被加入到GAN的目标而对训练过程无影响。公式(4)表示下限:。此外,我们知道当变量下限对于离散的潜变量,界限变得很紧,因此实现了最大化的相互信息。
于是InfoGAN 被定义为如下形式,为超参数:
6.实现
实践中,我们将Q作为一个神经网络。在大多数实验中,Q和D分享了所有的卷积层,并且只有最后的全连接层来输出的参数,这意味着InfoGAN与GAN相比计算量增加并不大。我们也发现,收敛总比一般的GAN快。
对于不同类别的潜码,我们自然地使用softmax来表示,对于连续的潜码,这儿有更多的选项,取决于真正的,在我们实验中,把当做高斯因式分解足够了。
即使引入了超参数,对于离散潜码来说,把它设为1也是足够的。对于连续的潜码变量,把它设的更小,确保和GAN目标尺寸一样大。
训练的技巧采用DC-GAN。
7.实验
目标1:检验相互信息是否能被最大化。
目标2:评测是否InfoGAN能学习到解开和可解释的表示。
7.1 相互信息最大化
我们在MNIST数据集上训练InfoGAN,在潜码使用归一化的分类分布,
在图1中,可以看见下限迅速被最大化到2.3左右,这证明这个方法是可行的。
7.2 解开的表示
图 2:在MNIST上操控潜码:我们试着将一个潜码改变而其它的潜码和噪声不变。图(a)潜码c1对应了数字的类型,图(b)没有进行信息正则化的潜码c1则导致没有具体含义的数字,图(c)潜码c2(-2 ~ +2) 对应了数字的旋转,图(d)潜码c3 (-2 ~ +2) 对应了数字的宽度。
图3:在3D脸库上操控潜码:我们展示了被学习连续潜码在[-1,1]之间变化的影响。图(a)表明了脸姿势的变化;图(b)展示了脸仰角的变化;图(c)表明了光照度的变化;图(d)表明了脸宽度或者窄度的变化
图4 :在3D椅子上操控潜码。图(a)表明了连续的潜码捕捉了椅子的姿势同时保留了它的形状,图(b)潜码有选择性地捕捉了不同椅子的类型,并在其间平滑地插值。
图5:在SVHN上操纵潜码。
图6 在CelebA上的表现。
8 总结
InfoGAN是一种将输入图片中隐藏信息发挥到极致的GAN,能获取到一些我们难以预料的特征(比如表情,姿势,发型等),而且计算消耗增加得不多,它是非监督学习的,因此在数据集较少的场合非常实用。具体的原理推导涉及到信息论的知识,译者还未完全弄懂,有兴趣的读者可以来探讨下。
问题:潜码和生成的特征是否有明确的对应关系,还是说随机的。
关于复现代码,将在下篇文章中讨论。