InfoGan笔记
InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
disentangled: vi. 解决;松开;解开纠结;解决(纠纷)
vt. 解开;松开;使解脱
mutual: adj. 共同的;相互的,彼此的
decodable: 可解的
salient: n. 凸角;突出部分
adj. 显著的;突出的;跳跃的
prominent: adj. 突出的,显著的;杰出的;卓越的
intriguing: adj. 有趣的;迷人的
v. 引起…的兴趣;策划阴谋;私通
ladder: n. 阶梯;途径;梯状物
vt. 在……上装设梯子
vi. 成名;发迹
consecutive: adj. 连贯的;连续不断的
entangled: v. 卷入;使…混乱;使…纠缠
adj. 卷入的;被缠住的
trivial: adj. 不重要的,琐碎的;琐细的
auxiliary : n. 助动词;辅助者,辅助物;附属机构
adj. 辅助的;副的;附加的
azimuth: n. [测] 方位;[天] 方位角;偏振角
elevation: n. 高地;海拔;提高;崇高;正面图
distracting: adj. 分心的;分散注意力的
v. 使分心(distract的ing形式);转移注意力
leaning: n. 倾向,爱好;倾斜
v. 倚靠(lean的ing形式)
n. (Leaning)人名;(英)利宁
entails: vt. 使需要,必需;承担;遗传给;蕴含
n. 引起;需要;继承
clamping : n. 钳位
v. 夹住(clamp的现在分词)
stern: n. 船尾;末端
adj. 严厉的;坚定的
n. (Stern)人名;(英、以、法、瑞典、西)斯特恩;(德、波、匈)施特恩
笔记参考:https://blog.csdn.net/u011699990/article/details/71599067
预备知识
-
条件熵公式推导:
\[\begin{align} H(Y|X) &= \sum_{x \in X}p(x)H(Y|X=x) \\ &=-\sum_{x \in X}p(x) \sum_{y \in Y}p(y|x)logp(y|x) \\ &=-\sum_{x \in X}\sum_{y \in Y}p(x,y)logp(y|x) \end{align} \]用另一个变量对原变量分类后, 原变量的不确定性就会减小, 不确定程度减小了就是信息增益.
-
互信息(Mutual Information, MI)是变量间相互依赖性的度量, 它度量两个事件集合之间的相关性.
两个离散随机变量X和Y的互信息可定义为:
\[I(X;Y)=\sum_{y \in Y}\sum_{x \in X}p(x,y)log(\frac{p(x, y)}{p(x)p(y)}) \]\(p(x,y)\)是X和Y的联合概率分布函数, 而\(p(x)\)和\(p(y)\)分别是X和Y的边缘概率分布函数
在连续随机变量的情形下:
\[I(X;Y)=\int_{Y}\int_{X}p(x,y)log(\frac{p(x,y)}{p(x)p(y)})dxdy \]\(I(X;Y)\)的一些计算:
\[\begin{align} I(X;Y)&=H(X)-H(X|Y) \\ &=H(Y)-H(Y|X) \\ &=H(X)+H(Y)-H(X,Y) \\ &=H(X,Y)-H(X|Y)-H(Y|X) \end{align} \]
-
变分推断:
对于一类数据x(无论是音频还是图片),对它们进行编码后得到的特征数据往往服从某种分布q(z),z为隐变量,q(z)这个隐含分布我们无法得知,但是我们可以通过现有数据X来推断出q(z),即P(z|x)。KL散度是用来衡量两个分布之间的距离,当距离为0时,表示这两个分布完全一致。P(x)不变,那么想让KL(q(z)||P(z|x))越小,即让ELOB越大,反之亦然。因为KL≥0,所以\(logP(x) \ge ELOB\)。
综述
本文是NIP2016的一篇文章, 这篇paper所要达到的目标就是通过非监督学习得到可分解的特征表示(非监督学习的一个流行框架便是表示学习, 它的目的是将数据中重要的语义特征变得易于分解)。 使用GAN加上最大化生成的图片和输入编码之间的互信息。最大的好处就是可以不需要监督学习,而且不需要大量额外的计算花销就能得到可解释的特征。
通常,我们学到的特征是混杂在一起的,如下图所示,这些特征在数据空间中以一种复杂的无序的方式进行编码,但是如果这些特征是可分解的,那么这些特征将具有更强的可解释性,我们将更容易的利用这些特征进行编码。所以,我们将如何通过非监督的学习方式获取这些可分解的特征呢?
相关工作
在以前的方法中, 表示学习的方法可分为"无监督","有监督","弱监督"这三类, 其于本文方法的差异见下图, 在这篇paper中,非监督学习通过使用连续的和离散的隐含因子来学习可分解的特征。
GAN
GAN的概念。总的来说,这个生成模型就是通过两个神经网络互相之间的竞争对抗来进行训练。这两个网络中有一个是生成器,它需要将随机的噪声分布z映射到我们需要得到的真实分布x,另外一个网络就是判别器,从真实数据和生成的数据中间随机采样,判断这个数据是否是真实数据,在这里判别器D相当于一个二分类器。所以,整个优化问题就转换为一个minmax game,D(x)代表x来自真实数据的概率,在训练过程中,最大化D(x)的值,同时,最小化生成器生成数据的能力,从而达到两个网络互相竞争,互相进步,生成器生成数据的能力越来越强,判别器判别数据的能力也越来越强。
如果从表征学习的角度来看GAN模型,会发现,由于在生成器使用噪声z的时候没有加任何的限制,所以在以一种高度混合的方式使用z,z的任何一个维度都没有明显的表示一个特征,所以在数据生成过程中,我们无法得知什么样的噪声z可以用来生成数字1,什么样的噪声z可以用来生成数字3,我们对这些一无所知,这从一点程度上限制了我们对GAN的使用。
InfoGAN
基于上面的分析,作者就在生成器中除了原先的噪声z还增加了一个隐含编码c,提出了一个新的GAN模型—InfoGAN,其中Info代表互信息,它表示生成数据x与隐藏编码c之间关联程度的大小,为了使的x与c之间关联密切,所以我们需要最大化互信息的值,据此对原始GAN模型的值函数做了一点修改,相当于加了一个互信息的正则化项。是一个超参,通过之后的实验选择了一个最优值1。
上面的\(I(C|X)\)中的|应该为";" 即\(I(C;X)\), \(I(C;X=G(Z,C))\)
在实践的过程中, 发现在计算互信息的值时, 需要用到后验分布(\(P(C|X)\)),但是这是一个很难采样和估计的一个值。作者想出通过定义一个辅助分布来协助估计后验分布.
在引入辅助分布之后,通过变分分布最大化来最大化这个互信息的下界,这里是整个推导过程。
使用Q来接近p得到了互信息的变分估计, 在论文中提到, 为了优化方便, 作者固定了隐编码的分布, 因此H(C)是一个常量.通过对G,Q的优化来最大化L(G,Q),当时,不等式取等号,从而得到最大化互信息的效果。所以InfoGAN的最优化问题中的互信息正则项替换为L(G,Q)。但是在L(G,Q)中发现,还是有个后验分布。 作者利用一个定理来消除这个后验分布, 如下:
更详细的推导如下:
定理的证明:
在InfoGAN模型中,GAN的网络结构用的是DCGAN。给生成器输入隐含编码c和噪声z,生成假的数据,从假数据和真实数据中随机采样,输入给定D进行判断,是真还是假。Q通过与D共享卷积层,可以减少计算花销。在这里,Q是一个变分分布,在神经网络中直接最大化,Q也可以视作一个判别器,输出类别c。
实验,主要有两个目标,第一个是验证互信息可以被有效的最大化,第二个是验证InfoGAN是否可以学到可分解的可解释的特征。在第一个实验中,使用MNIST数据集,隐含编码c设为包括10个类别的离散编码,均匀分布,并使用GAN中同样加了一个辅助分布Q做对比试验。实验中发现,InfoGAN中L可以很快收敛到H(c),而GAN中,生成的图片与隐含编码c之间的互信息几乎没有,说明GAN中并没有用到这个隐含编码。
第二个实验来尝试学习数据集中可分解的特征。同样的使用MNIST数据集,在这里使用了三个隐含编码,c1用十个离散数字进行编码,每个类别的概率都是0.1,c2,c3连续编码,是-2到2的均匀分布。通过实验发现,c1可以作为一个分类器,分类的错误率为5%,图片a中第二行将7识别为9,但是不是意味着c1的0-9分别代表着生成数字的0-9,这是为了可视化效果,对数据重新排序的结果。如果在常规的GAN模型中添加c1编码,发现生成的图片与c1没有明显的关联。通过观察发现,c2表示生成数字的旋转的角度,c3表示生成数字的宽度。图c显示,小的c2值表示数字向左偏,大的c2值表示数字向右偏。图d显示,c3的值越大,生成的数字越宽。
除了MNIST数据集外,还在其他数据集上做了实验。比如在一个3D的人脸数据集中,使用多个连续的编码,得到了一些不同的特征。比如图a中,可以得到人脸转向的特征,图b得到了人脸仰角大小的特征,图c得到了图片亮度的特征,图d得到人脸宽窄的特征。
在3d椅子的数据集中,图a表示可以得到不同椅子旋转角度不同的特征,图b表示可以得到不同椅子宽度不同的特征。
在一个街景的楼栋数字数据集中,也得到了不同的特征。如图a所示,可以获取这些数字图片不同的亮度,图b所示,可以区分出图片中不同的数字。
在CelebA数据集中,同样的可以通过不同的编码获取一些特征,比如人脸不同的转向角度,是否带了眼镜,发型的不同,情绪的变化。
最后提出了一些未来工作的设想,将互信息最大化应用到其他的方法,尝试学习层级特征,用来提高半监督学习,发现更高维度的数据。通过这篇paper当中的实验发现,隐含编码c学习到的内容很丰富,可以用来进行半监督学习的分类。(往真实数据中添加噪声,可以使训练更稳定)