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)=Ex−Pdata[logD(x)]+Ez−Pnoise[log(1−D(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(x∣c)=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(X∣Y)=H(Y)−H(Y∣X)(2)
I
I
I其实表达了X,Y之间的相关性。这种表示其实使得量度损失变得简单:对于任意
x
∼
P
G
(
x
)
x \sim P_{G}(x)
x∼PG(x), 我们希望
P
G
(
c
∣
x
)
P_{G}(c|x)
PG(c∣x)的熵比较小。换句话说,就是潜码在生成器训练过程中不会丢失。因此我们推出了信息正则化最小损失:
(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(c∣x) .幸运的是,我们能够通过辅助定义
Q
(
c
∣
x
)
Q(c|x)
Q(c∣x)来近似
P
(
c
∣
x
)
P(c|x)
P(c∣x):
(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(c∣G(z,c))=Ex∼G(z,c)[Ec′∼P(c∣x)[logP(c′∣x)]]+H(x)=Ex∼G(z,c)[DKL(P(⋅∣x)∣∣Q(⋅∣x))+Ec′∼P(c∣x)[logQ(c′∣x)]]+H(c)≥Ex∼G(z,c)[Ec′∼P(c∣x)[logQ(c′∣x)]]+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(c∣x)的问题,但是我们仍需要在内部表示中从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)]]
Ex∼X,y∼Y∣x[f(x,y)=Ex∼X,y∼Y∣x,x′∼X∣y[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)=Ec∼P(c),x∼G(z,c)[logQ(c∣x)]+H(c)=Ex∼G(z,c)[Ec′∼P(c∣x)[logQ(c′∣x)]]+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(c∣x)的参数,这意味着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(ci∣x),对于连续的潜码
c
i
c_{i}
ci,这儿有更多的选项,取决于真正的
P
(
c
j
∣
x
)
P(c_{j}|x)
P(cj∣x),在我们实验中,把
Q
(
c
j
∣
x
)
Q(c_{j}|x)
Q(cj∣x)当做高斯因式分解足够了。
即使引入了超参数
λ
\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)
c∼Cat(K=10,p=0.1)使用归一化的分类分布,
在图1中,可以看见下限
L
I
(
G
,
Q
)
L_{I}(G,Q)
LI(G,Q)迅速被最大化到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,能获取到一些我们难以预料的特征(比如表情,姿势,发型等),而且计算消耗增加得不多,它是非监督学习的,因此在数据集较少的场合非常实用。具体的原理推导涉及到信息论的知识,译者还未完全弄懂,有兴趣的读者可以来探讨下。
问题:潜码和生成的特征是否有明确的对应关系,还是说随机的。
关于复现代码,将在下篇文章中讨论。