最基本的 GAN 框架由一个生成器和一个判别器通过对抗训练构成。生成器 G 将随机噪声 z 映射为数据 x^=G(z);判别器 D 对真实样本 x 和生成样本 x^ 输出 [0,1] 间的真伪概率。两者的博弈由 Min-Max 目标函数定义(参见 ML 篇 GAN-intro.md):
GminDmaxV(D,G)=Ex∼pdata[logD(x)]+Ez∼pz[log(1−D(G(z)))]
实践表明这个简单的框架训练起来极不稳定——对超参数敏感、容易崩塌。这一篇从理论上分析 GAN 的目标函数行为,解释问题根源和 WGAN 的改进方案。
最优判别器#
先固定生成器 G,考虑判别器 D 的最优形式。目标函数 V 中对 D 的优化可以写成积分形式:
V=∫pdata(x)logD(x)dx+∫pg(x)log(1−D(x))dx其中 pg 是生成器 G 诱导的分布。对积分内的被积函数,对 D(x) 求导并置零:
∂D∂[pdatalogD+pglog(1−D)]=Dpdata−1−Dpg=0得到最优判别器的解析解:
D∗(x)=pdata(x)+pg(x)pdata(x)这一形式有清晰的直观含义:在真实数据占主导的区域(pdata≫pg),判别器输出接近 1;在生成数据占主导的区域(pg≫pdata),输出接近 0;两者相当的地方输出 1/2。
全局最优#
将 D∗ 代回目标函数,重写为:
V(D∗,G)=Ex∼pdata[logpdata+pgpdata]+Ex∼pg[logpdata+pgpg]=−log4+2⋅JSD(pdata∥pg)其中 JSD 是 Jensen-Shannon 散度。pdata=pg 时,D∗=1/2,JSD=0,V=−log4 取全局最小值。从理论上看,最优生成器应该完全复制真实分布。
GAN 训练的两大问题#
不收敛#
pdata 和 pg 在低维流形上不重叠(生成器输出流形通常维度远低于图像空间),JSD 在这些区域为常数(log2),不提供有意义的梯度。判别器在非重叠区域可以完美区分真假,梯度消失,生成器停止更新。
模式崩塌(Mode Collapse)#
生成器发现只生成数据分布中的少数模式就能”欺骗”判别器后,逐步放弃对其他模式的覆盖。训练过程中生成的图像多样性不断下降,最终只产生一种或几种外观。
WGAN#
WGAN(Arjovsky et al., 2017)的核心理念是用 Wasserstein-1 距离(Earth Mover Distance)替代 JSD。Wasserstein 距离在分布不重叠时仍能提供有意义的梯度。
Wasserstein-1 距离#
两个分布之间的 Wasserstein-1 距离定义为将 pg 的”质量”搬运到 pdata 的最小代价。通过 Kantorovich-Rubinstein 对偶,可以写成:
W(pdata,pg)=∥f∥L≤1supEx∼pdata[f(x)]−Ex∼pg[f(x)]其中 f 是一个 1-Lipschitz 连续函数。判别器(critic)的目标不再是输出真伪概率,而是输出一个实数值,使其在真实样本上的期望最大化、在生成样本上的期望最小化。
WGAN 目标函数#
GminD∈1-LipschitzmaxEx∼pdata[D(x)]−Ez∼pz[D(G(z))]注意这里去掉了 log,判别器输出是未经 sigmoid 的 logit。Lipschitz 约束是 WGAN 成立的关键。
Weight Clipping 与梯度惩罚#
原始 WGAN 通过将判别器权重的绝对值限制在 [−c,c] 来近似 Lipschitz 约束。权值裁剪的问题是:它强制 Lipschitz 约束的同时也限制了判别器的表达能力。
WGAN-GP(Gulrajani et al., 2017)将权重裁剪替换为梯度惩罚项,在训练时直接惩罚判别器梯度偏离 1 的程度:
LGP=λ⋅Ex^∼interpolate[(∥∇D(x^)∥2−1)2]x^ 在成对的真实样本和生成样本之间均匀采样。梯度惩罚使 WGAN-GP 的训练更稳定,无需权重裁剪的超参数调谐。