InfoGAN发于NIPS2016,也就是GAN诞生的两年之内。InfoGAN解决了一个可能所有刚接触GAN的人都会想到的问题:如何控制生成数据的语义特征?
文中提出,原始GAN网络以不受任何限制的噪声Z作为输入,因而生成器只能以一种高度混乱的方式使用噪声,导致噪声Z中独立的维度与数据的语义特征不对应。
文中提出了解决方案,即分解输入噪声为两个部分。其中,Z作为不可压缩的噪声源,c作为潜在的code,对数据分布潜在结构进行导向。而生成器产生的输出为G(z,c)。原始GAN中相当于通过公式忽视了输入c,本文中为了解决这个问题,提出c和G(z,c)之间应该有高度共同的特征。
在信息理论中,I(X;Y)作为从随机变量Y中获取到的随机变量X的信息:
I(X;Y)=H(X)-H(X|Y)=H(Y)-H(Y|X)
其中,H表示信息熵(对于信息熵上的解释见https://www.zhihu.com/question/22178202)。从直观上来说,I(X;Y)是当Y被观测之后X减少的不确定性。因此,为了使得潜在的code,c,在生成过程中不会丢失,I(c;G(z,c))值应该很高。因此将原始GAN优化公式改写如下: