训练生成对抗网络的原则性方法.

GAN由判别器$D$和生成器$G$组成,其目标函数为:

\[\begin{aligned} \mathop{ \min}_{G} \mathop{\max}_{D} L(G,D) & = \Bbb{E}_{x \text{~} P_{data}(x)}[\log D(x)] + \Bbb{E}_{z \text{~} P_{Z}(z)}[\log(1-D(G(z)))] \\ & = \Bbb{E}_{x \text{~} P_{data}(x)}[\log D(x)] + \Bbb{E}_{x \text{~} P_{G}(x)}[\log(1-D(x))] \end{aligned}\]

1. GAN在训练时遇到的问题

⚪ 低维支撑集 Low dimensional support set

真实分布\(P_{data}(x)\)与生成分布\(P_G(x)\)的支撑集(support set)位于低维流形(manifold)上,从而导致GAN训练的不稳定性。

许多真实世界的数据集\(P_{data}(x)\)的维度只是表面上看起来很高,事实上它们通常集中在一个低维流形上,这也是流形学习的基本假设。考虑到真实世界的图像一旦主题被固定,图像本身就要遵循很多限制,这些限制使得图像不可能具有高维的自由形式。比如一个狗的图像应该具有两个耳朵和一条尾巴,摩天大楼的图像应该具有很高的建筑。

另一方面,生成分布\(P_G(x)\)通常也位于一个低维流形上。当输入噪声变量$z$的维度给定时(如$100$),即使生成器被要求生成分辨率再高的图像(如$64 \times 64$),图像的所有像素(如$4096$个)的颜色分布都是由这个低维随机向量定义的,几乎不可能填满整个高维空间。

由于真实分布\(P_{data}(x)\)与生成分布\(P_G(x)\)都在一个低维的流形上,它们几乎肯定是不相交的。当两者具有不相交的支撑集时,总是能够找到一个完美的判别器,完全正确地区分真实样本和生成样本。下面给出高维空间中存在的两个低维流形的情况,分别为三维空间中的直线与平面,不难观察发现它们几乎不可能有重叠。

⚪ 梯度消失 Vanishing gradient

当判别器表现较好时,对于从真实分布\(P_{data}(x)\)采样的真实样本判别器输出$D(x)=1$;对于从生成分布\(P_G(x)\)采样的生成样本判别器输出$D(x)=0$。此时损失函数$L$趋近于$0$,在训练过程中梯度也趋近于$0$。下图体现出训练得更好的判别器(对应更大的训练轮数),梯度消失的更快:

因此GAN的训练过程面临进退两难:

2. 改进GAN的训练过程

(1) 增加噪声 adding noise

通过上述讨论可知真实分布\(P_{data}(x)\)与生成分布\(P_G(x)\)都落在高维空间中的低维流形上。为了人为地扩大分布的范围,使得两个概率分布有更大的概率重叠,可以在判别器的输入中增加连续噪声。

(2) 使用更好的分布相似度度量 better metric of distribution similarity

GAN的损失函数衡量真实分布\(P_{data}(x)\)与生成分布\(P_G(x)\)之间的JS散度JS散度在两个分布不相交时没有意义。可以选择具有更平滑的值空间的分布度量指标,比如Wasserstein距离