Wasserstein GAN如何应用于生成?
摘要:WGAN论文指出,原始GAN以JS、KL散度作为损失容易导致生成器梯度消失,他们提出了一种新的损失函数——Wasserstein 距离,很大程度上解决了GAN训练难的问题。 原始GAN的损失函数的缺陷 当两个分布之间重叠很小,或者说,两个分
WGAN论文指出,原始GAN以JS、KL散度作为损失容易导致生成器梯度消失,他们提出了一种新的损失函数——Wasserstein 距离,很大程度上解决了GAN训练难的问题。
原始GAN的损失函数的缺陷
当两个分布之间重叠很小,或者说,两个分布的概率密度同时大于0的区域在整个分布的占比几乎为0时(无穷小,但还不是0),随着分布之间的靠拢,用于衡量分布之间差异的KL、JS散度几乎没有变化,也就是梯度十分小。而真实分布与生成分布在训练开始时的重叠就是十分小的(证明要用到拓扑学和测度论,直观理解请看后面的知乎链接),并且由于我们只能用部分样本代替真实分布与生成分布来训练,这种情况就更加严重了,从而解释了生成器训练时梯度消失的问题。
论文举了个简单的例子用于理解。如下图所示,$P_1,P_2$表示两个二维空间中的均匀分布:
如果我们要将$P_1$移动到$P_2$,就要计算两个分布之间的差异,然后再计算梯度来减小差异。下面分别以KL散度、JS散度和Wasserstein 距离作为差异指标,计算得到:
\begin{equation*} \begin{aligned} &KL(P_1||P_2) = KL(P_2||P_1) = \left\{ \begin{aligned} &+\infty,&\theta \ne 0\\ &0,&\theta = 0 \end{aligned} \right.\\ &JS(P_1||P_2) = \left\{ \begin{aligned} &\log 2,&\theta \ne 0\\ &0,&\theta = 0 \end{aligned} \right. \\ &W(P_1,P_2) = |\theta| \end{aligned} \end{equation*}
看得出,KL、JS散度的梯度是0,没法训练。而Wasserstein距离则计算出一个符合常识的距离指标,可以计算梯度控制$P_1$向$P_2$靠近。
当然以上只是简单的举例,你一眼就能看出$P_1,P_2$之间的距离用$\theta$表示更合理。下面开始具体介绍Wasserstein 距离,以及以它为损失函数的WGAN。
Wasserstein距离与WGAN
Wasserstein距离又叫Earth-Mover(EM)距离。对于真实分布$P_r$和生成分布$P_g$,Wasserstein距离$W(P_r,P_g)$定义如下:
\begin{equation} \begin{aligned} W(P_r,P_g) = \inf\limits_{\gamma\sim\Pi(P_r,P_g)}\mathbb{E}_{(x,y)\sim\gamma}\left(||x-y||\right) \end{aligned} \end{equation}
其中$\Pi(P_r,P_g)$表示$P_r$和$P_g$组合起来的所有可能的联合分布的集合,集合中的每个联合分布的边缘分布都为$P_r$和$P_g$。对于每一个可能的联合分布$\gamma$而言,可以从中采样$(x,y)\sim \gamma$得到一个真实样本$x$和一个生成样本$y$,并算出这对样本的距离$||x-y||$,所以可以计算该联合分布$\gamma$下样本对距离的期望值$\mathbb{E}_{(x,y)\sim\gamma}\left(||x-y||\right)$。我们可以直观理解为,通过对所有样本进行“搬迁”,使用$\gamma$作为搬迁方式将分布$P_r$转变为分布$P_g$所需的消耗。而所有这些搬迁方式的下界$\inf\limits_{\gamma\sim\Pi(P_r,P_g)}\mathbb{E}_{(x,y)\sim\gamma}\left(||x-y||\right)$,也就是消耗最小的,就定义为Wasserstein距离。
Wasserstein距离是比JS、KL散度在定义上更弱的差异评估标准,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。
