前言:
这篇博客为阅读论文后的总结与感受,方便日后翻阅、查缺补漏,侵删!
论文:
- InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
解决的问题:
InfoGAN,它是对生成性对抗网络(GAN)的一个信息论扩展,因此,它是对原有模型的改进。InfoGAN能够以完全无监督的方式学习分离的表示,我们知道在GAN 提到,生成器(generator)和判别器(discriminator)的对抗学习,它的目标其实是得到一个与真实数据分布一致以假乱真的数据分布。但是由于generator的输入是一个连续的噪声信号
,并且没有任何约束,导致GAN将
的具体维度与无法的语义特征无法对应起来,可解释性很差;以手写数据集为例,比如笔画粗细,倾斜度等。
如何解决:
-
简介
InfoGAN是一个生成性的对抗网络,它也最大化了一小部分潜在变量和观测值之间的相互信息。我们得到了一个可以有效优化的互信息目标的下界。具体来说,InfoGAN成功地从MNIST数据集上的数字形状、3D渲染图像的光照姿势和SVHN数据集上的中心数字中分离出了书写风格。它还发现了一些视觉概念,包括发型、是否戴眼镜以及人脸数据集上的情绪。实验表明,InfoGAN学习的可解释表示与现有的有监督表示学习方法学习到的具有竞争性。
-
背景:生成性对抗网络
古德费罗等人,介绍了生成性对抗网络(GAN),它是一个使用博弈对策训练深层生成模型的框架。目标是学习与实际数据分布匹配的生成器分布
。GAN没有试图显式地将概率分配给数据分布中的每个
,而是通过将噪声变量
转换为样本
。该生成器通过与鉴别器网络
进行训练,鉴别器网络
旨在区分来自真实数据分布
和生成器生成的分布
的样本。因此,对于给定的生成器,最佳鉴别器为
。更正式地说,博弈的对策由以下表达式给出:
的输出为[0,1]之间的一个值,越接近于1越表示该数据集来自真实的数据分布,至于为啥用log,和最大似然估计原理一样,
可能是高维度,log可以将连乘变为连加方便计算。
-
具体实现
GAN公式中使用一个简单的系数连续输入噪声矢量(一般为高维标准正态分布),同时不限制生成器使用该噪声的方式。结果,噪声可能被生成器以高度纠缠的方式使用,从而导致
的各个维度与数据的语义特征不对应。然而,许多领域需要将
分解成一组语义上有意义的向量。例如,当从MNIST数据集生成图像时,如果模型自动选择分配一维离散随机变量来表示数字(0-9)的生成,并且选择有两个额外的连续变量来表示数字的角度和数字笔划的厚度,这将是理想的。如果我们可以在不受任何监督的情况下恢复这些概念,只需指定一个MNIST数字是由10个变量中的1个变量和两个连续变量生成的,这将非常有用。
具体做法,将输入噪声矢量分解为两部分:(1),它被视为不可压缩噪声;(2)c,我们将称之为隐变量,该隐变量将针对数据分布显著的结构语义特征。在数学上,我们用
来表示隐变量
,我们假设维度之间相互独立,即
,我们现在提出了一种在无监督的情况下发现这些潜在因素的方法:我们给生成器网络输入不可压缩噪声
和隐变量
,因此生成器输出的形式变成
。然而,在标准GAN中,生成器可以通过找到满足
的解来自动忽略额外的隐变量
。为了解决这个问题,提出了一种信息论正则化方法:隐变量
和生成器的输出
之间应该有很高的互信息,即它们之间有较高的关联性。因此
应该很高。互信息就是我们学过的信息增益,具体形式如下:
这里改写我们传统GAN优化公式为:
看到这,你可能有疑问正则项前面为啥是负的,因为这个正则化项和D没有关系,只和G有关系,因为G最小化这个公式,而我们要最大化这个正则化项,因此我们把正则化项前面加了个负号。
据此对原始GAN模型的值函数做了一点修改,相当于加了一个互信息的正则化项。
是一个超参数,如果是连续值情况下它应该它很容易调整,并且简单地将其设置为1就足以处理离散隐含编码。当隐含编码包含连续变量时,通常使用较小的
来确保现在涉及互信息的
与GAN目标具有相同的优化尺度。
到这,我们已经成功给出了infoGAN的优化目标。但实际上,互信息项很难直接最大化,因为它需要已知
,从下面公式就可以看到这点。幸运的是,可以通过定义一个辅助分布
来近似
,这样我们可以得到它的变分下界:
推导:我们知道熵的公式为:
![]()
![]()
故:
:
![]()
然而在infoGAN中,隐变量为人为设定的,故
相当于已知常数。到目前为止,我们已经绕过了必须显式计算后验
的问题,但是我们仍然需要从
中采样使用MCMC来近似期望,作者引出了一个定理,可以避免从
中采样,即:
对于随机变量,
和函数
,在适当的正则条件下:
使用上式可以将我们的变分下界写成:
这样便可使用MCMC采样,成功计算变分下界。
我们知道当离散潜码的变分下界达到其最大时,该下界变得紧,从而得到最大互信息(不是太懂)。
因此,InfoGAN被定义为具有互信息的变分正则化和超参数的优化公式如下:
在实际做法中,为了引入,具体的操作是,generator的输出,经过一个分类器,看是否能够得到c。其实可以看成一个anto-encoder的反过程。其余的discriminator与常规的GAN是一样的。在实际过程中,classifier和discriminator会共享参数,只有最后一层是不一样的,classifier输出的是一个向量,而discriminator输出的是一个标量。
-
实验
我们实验的第一个目标是研究互信息是否能有效地最大化。第二个目标是评估InfoGAN是否能够通过使用生成器一次只改变一个潜在因素来学习分离和可解释的表示,以评估改变这些因素是否只导致生成图像中的一种类型的语义变化。
互信息最大化:
为了评估隐变量与生成的图像之间的互信息是否能有效地最大化,我们在MNIST数据集上训练InfoGAN,在隐变量
上具有均匀的分类分布。在下图中,下界
迅速最大化为
,这意味实现了最大互信息。作为比较,我们还训练了一个具有辅助分布Q的正则GAN,当不明确鼓励生成器最大化与潜在码的互信息时。由于我们使用神经网络来参数化Q,我们可以假设Q合理地近似于真实的后验
,因此在正则GAN中,潜在码和生成图像之间几乎没有相互信息。这种比较证明了,在常规GAN中,不能保证生成器将使用隐变量,而是会忽略隐变量。
分离表示:
为了从MNIST数据集上的样式中分离数字形状,我们选择用隐变量的一个分量
和另外两个分量为连续变量
进行实验,这两个连续变量可以捕获数字本质上连续变化。在下图中,我们展示了c1捕捉到了数字形状的巨大变化。大多数情况下更改c1可以造成数字之间的切换。事实上,即使我们只是在没有任何标签的情况下训练InfoGAN,c1也可以用作分类器,通过将
中的每个类别与一个数字类型相匹配,在对MNIST数字进行分类时达到5%的错误率。在下图a中第二行,我们可以看到数字7被归类为9。
捕获样式的连续变化:
控制数字的旋转,
控制数字的宽度。值得注意的是,在这两种情况下,生成器不只是拉伸或旋转数字,而是调整其他细节,如厚度或笔划样式,以确保生成的图像是自然的外观。为了检验InfoGAN学习到的隐含表征是否具有普遍性,我们以一种夸张的方式操纵了隐变量:我们没有从−1到1改变潜隐变量,而是从−2到2改变它,覆盖了网络从未训练过的广阔区域,我们仍然得到有意义的推广。
在人脸数据集上,DC-IGN学习通过监督将潜在因素表示为方位(姿态)、仰角和光照作为连续的潜在变量。使用相同的数据集,我们证明InfoGAN学习了一种分离的表示法,该表示法可以恢复同一数据集中的方位角(pose)、仰角和照明。在本实验中,我们选择用的5维连续分量
且
进行建模。 操纵3D人脸上的隐变量:我们展示了学习的连续潜在因子对输出的影响,因为它们的值在-1到1之间变化。在(a)中,我们证明了一个连续的隐变量分量持续地捕捉不同形状的脸部方位角;在(b)中,一个隐变量分量捕获仰角;在(c)中,一个隐变量分量照明的方向;在(d)中,一个隐变量分量学习在宽面和窄面之间插值,同时保留其他视觉特征。