【学习笔记】Wasserstein GAN

原始GAN的问题

判别器越好,生成器梯度消失越严重。

当判别器为最优时,最佳生成器的损失函数为
2 J S ( P r ∥ P g ) − 2 log ⁡ 2 2 J S\left(P_{r} \| P_{g}\right)-2 \log 2 2JS(PrPg)2log2
即当判别器为最优时,最小化真实分布 P r P_{r} Pr与生成分布 P g P_{g} Pg之间的JS散度,可以得到最优的生成器。当真实分布 P r P_{r} Pr与生成分布 P g P_{g} Pg有重叠部分时,最小化其JS散度可以拉近这二个分布。但当真实分布 P r P_{r} Pr与生成分布 P g P_{g} Pg没有重叠部分时,最佳的JS散度固定为 log ⁡ 2 \log 2 log2。此时,不管真实分布 P r P_{r} Pr与生成分布 P g P_{g} Pg相距多远,只要没有重叠部分,JS散度就固定是常数 log ⁡ 2 \log 2 log2,生成器梯度为0,导致梯度消失的问题。

在(近似)最优判别器下,最小化生成器的loss等价于最小化真实分布 P r P_{r} Pr与生成分布 P g P_{g} Pg之间的JS散度,而由于 P r P_{r} Pr P g P_{g} Pg几乎不可能有不可忽略的重叠,所以无论它们相距多远JS散度都是常数 log ⁡ 2 \log 2 log2,最终导致生成器的梯度(近似)为0,梯度消失。

梯度不稳定

生成器损失函数为 E x ∼ P g [ − log ⁡ D ( x ) ] \mathbb{E}_{x \sim P_{g}}[-\log D(x)] ExPg[logD(x)]
在最优判别器 D ∗ D^{*} D下,
E x ∼ P a [ − log ⁡ D ∗ ( x ) ] = K L ( P g ∥ P r ) − 2 J S ( P r ∥ P g ) + 2 log ⁡ 2 + E x ∼ P r [ log ⁡ D ∗ ( x ) ] \mathbb{E}_{x \sim P_{a}}\left[-\log D^{*}(x)\right]=K L\left(P_{g} \| P_{r}\right)-2 J S\left(P_{r} \| P_{g}\right)+2 \log 2+\mathbb{E}_{x \sim P_{r}}\left[\log D^{*}(x)\right] ExPa[logD(x)]=KL(PgPr)2JS(PrPg)+2log2+ExPr[logD(x)]
所以最小化生成器的损失函数等价于最小化 K L ( P g ∥ P r ) − 2 J S ( P r ∥ P g ) K L\left(P_{g} \| P_{r}\right)-2 J S\left(P_{r} \| P_{g}\right) KL(PgPr)2JS(PrPg)
由于 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(PgPr) J S ( P r ∥ P g ) J S\left(P_{r} \| P_{g}\right) JS(PrPg)在最小化时矛盾,导致训练时梯度不稳定。

collapse mode,多样性不足

由于KL散度是不对称的衡量,即 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(PgPr) K L ( P r ∥ P g ) K L\left(P_{r} \| P_{g}\right) KL(PrPg)存在差别。

  • P g ( x ) → 0 P_{g}(x) \rightarrow 0 Pg(x)0 P r ( x ) → 1 P_{r}(x) \rightarrow 1 Pr(x)1 时, P g ( x ) log ⁡ P g ( x ) P r ( x ) → 0 P_{g}(x) \log \frac{P_{g}(x)}{P_{r}(x)} \rightarrow 0 Pg(x)logPr(x)Pg(x)0 ,对 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(PgPr) 贡献趋近 0。即生成器没能生成真实的样本,但惩罚很小。
  • P g ( x ) → 1 P_{g}(x) \rightarrow 1 Pg(x)1 P r ( x ) → 0 P_{r}(x) \rightarrow 0 Pr(x)0 时, P g ( x ) log ⁡ P g ( x ) P r ( x ) → + ∞ P_{g}(x) \log \frac{P_{g}(x)}{P_{r}(x)} \rightarrow+\infty Pg(x)logPr(x)Pg(x)+ ,对 K L ( P g ∥ P r ) K L\left(P_{g} \| P_{r}\right) KL(PgPr) 贡献趋近正无穷。生成器生成了不真实的样本,惩罚很大。

这导致生成器趋向于生成重复的接近真实的样本,避免产生错误,造成样本多样性不足的情况。

Wasserstein距离

Wasserstein距离的定义为:
W ( P r , P g ) = inf ⁡ γ ∼ Π ( P r , P g ) E ( x , y ) ∼ γ [ ∥ x − y ∥ ] W\left(P_{r}, P_{g}\right)=\inf _{\gamma \sim \Pi\left(P_{r}, P_{g}\right)} \mathbb{E}_{(x, y) \sim \gamma}[\|x-y\|] W(Pr,Pg)=γΠ(Pr,Pg)infE(x,y)γ[xy]
Π ( P r , P g ) \Pi\left(P_{r}, P_{g}\right) Π(Pr,Pg) P r P_{r} Pr P g P_{g} Pg 组合起来的所有可能的联合分布的集合。
Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。

Lipschitz连续指的是存在一个常数 K > 0 K>0 K>0 使得定义域内的任意两个元素 x 1 x_{1} x1 x 2 x_{2} x2 都满足
∣ f ( x 1 ) − f ( x 2 ) ∣ ≤ K ∣ x 1 − x 2 ∣ \left|f\left(x_{1}\right)-f\left(x_{2}\right)\right| \leq K\left|x_{1}-x_{2}\right| f(x1)f(x2)Kx1x2
等价于 f f f的导函数绝对值不超过 K K K

由于Wasserstein距离的式子无法直接求解,可以变换成
W ( P r , P g ) = 1 K sup ⁡ ∥ f ∥ L ≤ K E x ∼ P r [ f ( x ) ] − E x ∼ P g [ f ( x ) ] W\left(P_{r}, P_{g}\right)=\frac{1}{K} \sup _{\|f\|_{L} \leq K} \mathbb{E}_{x \sim P_{r}}[f(x)]-\mathbb{E}_{x \sim P_{g}}[f(x)] W(Pr,Pg)=K1fLKsupExPr[f(x)]ExPg[f(x)]
其中, ∥ f ∥ L \|f\|_{L} fL表示函数 f f f 的Lipschitz常数。上式又可近似为
K ⋅ W ( P r , P g ) ≈ max ⁡ w : ∣ f w ∣ L ≤ K E x ∼ P r [ f w ( x ) ] − E x ∼ P g [ f w ( x ) ] K \cdot W\left(P_{r}, P_{g}\right) \approx \max _{w:\left|f_{w}\right|_{L} \leq K} \mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right] KW(Pr,Pg)w:fwLKmaxExPr[fw(x)]ExPg[fw(x)]

可以用神经网络来拟合 f w f_{w} fw。我们可以构造一个含参数 w w w、最后一层不是非线性激活层的判别器网络 f w f_{w} fw,在限制 w w w不超过某个范围的条件下,
L = E x ∼ P r [ f w ( x ) ] − E x ∼ P g [ f w ( x ) ] L=\mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right] L=ExPr[fw(x)]ExPg[fw(x)]
L L L就是近似真实分布与生成分布之间的Wasserstein距离。

判别器 f w f_{w} fw 做的是近似拟合Wasserstein距离,属于回归任务,要去掉最后一层的Sigmoid函数。判别器要做的是令Wasserstein距离尽可能最大,所以损失函数为 E x ∼ P g [ f w ( x ) ] − E x ∼ P r [ f w ( x ) ] \mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right]-\mathbb{E}_{x \sim P_{r}}\left[f_{w}(x)\right] ExPg[fw(x)]ExPr[fw(x)]

而生成器的损失函数则为 − E x ∼ P g [ f w ( x ) ] -\mathbb{E}_{x \sim P_{g}}\left[f_{w}(x)\right] ExPg[fw(x)]

Wasserstein GAN对原始GAN的改动

  • 去掉判别器最后一层的Sigmoid
  • 生成器和判别器的损失函数不取log
  • 每次更新判别器的参数之后把它们的绝对值进行截断
  • 不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp和SGD

【学习笔记】Wasserstein GAN_第1张图片

你可能感兴趣的:(学习记录,深度学习,人工智能)