Wasserstein GAN

GAN 一直存在训练困难,生成样本缺乏多样性等问题。DCGAN 通过修改判别器和生成器的网络结构来规避这些问题。WGAN 则从损失函数的角度对 GAN 进行了改进,较好地解决上述问题。

文献[1]从数学角度分析了原始 GAN 中生成器损失函数存在的问题。具体推导请参见原文,或看文献[4]中解释。

在 GAN 原文的理论推导,D 的最优值可以证明出来。用到了两个相似度衡量指标:Kullback-Leibler divergence(KL 散度) 和 Jensen-Shannon divergence(JS 散度):
$$
KL(P_1 || P_2)=E_{x \sim P_1} \log \frac{P_1}{P_2} \\
JS(P_1 || P_2)=\frac{1}{2}KL(P_1 || \frac{P_1+P_2}{2}) + \frac{1}{2}KL(P_2 || \frac{P_1+P_2}{2})
$$

原始 GAN 提出两种损失函数:

  • $E_{x \sim P_g}[\log(1-D(x))]$,此时,如果判别器越好,生成器梯度消失越严重。
  • $E_{x \sim P_g}[-\log D(x)]$,此时,生成器 loss 函数,会等价于最小化一个不合理的距离衡量,导致两个问题,一是梯度不稳定,二是collapse mode即多样性不足。

造成这些问题的原因在于 KL散度和 JS散度,在两个分布没有重叠的情况下,不能反映两者的远近。因此引入 Wasserstein 距离:
$$
W(P_r, P_g) = \underset {\gamma \in \Pi(P_r, P_g)} {inf} E_{(x, y)\sim \gamma}[|| x - y ||]
$$
KL散度和JS散度是突变的,要么最大要么最小,Wasserstein距离却是平滑的,如果我们要用梯度下降法优化参数,前两者根本提供不了梯度,Wasserstein距离却可以。

WGAN

由于 Wasserstein 距离中下确界没办法直接求解,作者利用 Kantorovich-Rubinstein duality 转换成:
$$
W(P_r, P_\theta) = \underset {||f||_L \le 1} {sup} E_{x \sim P_r}[f(x)] - E_{x \sim P_\theta}[f(x)] \\
\nabla_\theta W(P_r, P_\theta) = - E_{z \sim p(z)}[\nabla_\theta f(g_\theta(z))]
$$

如图1 所示,WGAN 的算法流程如下:



图1 WGAN 算法流程

WGAN 相较于原始 GAN,改了如下四点:

  • 判别器最后一层去掉 sigmoid,原始 GAN 的判别器做的是真假二分类任务,所以最后一层是 sigmoid,但是现在WGAN中的判别器f_w做的是近似拟合Wasserstein距离,属于回归任务,所以要把最后一层的sigmoid拿掉;
  • 生成器和判别器的 loss 不取 log,log(x) 不是Lipschitz连续;
  • 每次更新判别器的参数之后把它们的绝对值限制在 [-c,c] 区间内;
  • 不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD也行。

Improved WGAN

WGAN 的权重剪枝(Weight clipping)也会导致最优化困难,会导致 critic 偏向更简单的函数。所以,提出梯度惩罚(Gradient penalty) 来避免这个问题。



图1 Improved WGAN 算法流程

点评:这几篇文章非常精彩,充足而巧妙的理论分析,简单至极的算法实现,以及出色的实验结果,很经典!

参考资料

请作者吃酒!