【李宏毅2020 ML/DL】P79 Generative Adversarial Network | Tips for improving GAN

2021/6/22 23:30:57

本文主要是介绍【李宏毅2020 ML/DL】P79 Generative Adversarial Network | Tips for improving GAN,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

这是我的李宏毅老师 GAN 系列第6篇笔记,GAN 系列:

  • 1:Basic Idea
  • 2:Conditional GAN
  • 3:Unsupervised Conditional Generation
  • 4:Theory behind GAN
  • 5:fGAN: General Framework of GAN
本节内容综述
  1. 之前已经讲到说,最原始的 GAN 使用的是 JS Divergence 测量生成数据分布与原始数据分布的距离;但是这面临一个数据维度的问题。见 JS divergence is not suitable 。
  2. 因此,有人考虑把 sigmoid 换成 linear 。这是 Least Square GAN (LSGAN) 。
  3. 使用 Earth Mover’s Distance 代替 JS divergence 。这是 Wassertein GAN (WGAN) 。最后总结了改为 WGAN 的算法需要做哪些。
  4. 还介绍了用autocoder 作为 discriminator 的 Energy-based GAN (EBGAN) 。
  5. 此外,介绍了一下 Loss-sensitive GAN (LSGAN) 。

 

文章目录

  • 本节内容综述
  • 小细节
      • JS divergence is not suitable
      • Least Square GAN (LSGAN)
      • Wassertein GAN (WGAN)
        • Earth Mover's Distance
        • Why Earth Mover's Distance?
        • WGAN
        • Improved WGAN (WGAN-GP)
        • Spectrum Norm
        • Algorithm of WGAN
      • Energy-based GAN (EBGAN)
      • Outlook: Loss-sensitive GAN (LSGAN)

 

小细节

JS divergence is not suitable


如上图,我们的数据实际上是将高维的数据描述成了低维数据。

我们采样的数据对于数据分布来说太少了,很难有数据的重叠 overlap 。

What is the problem of JS divergence?

JS 散度存在一个问题,如果两个分布没有重合,其距离就是 log2 。如上图,两个数据分布接近时,其指标应该越来越好,但是其在逐渐接近的过程中,指标并没有变化。

Least Square GAN (LSGAN)


如上,我们同时让分类问题变成一个回归问题。希望真实值接近1,假的数据接近 0 。

Wassertein GAN (WGAN)

使用 Earth Mover’s Distance 代替 JS divergence 。

Earth Mover’s Distance


假设我们开了一台推土机,把 P 地方的土推到 Q 地方,推土机平均走的距离就是 Earth Mover’s Distance 。
如山,把土推到另一个分布,有好多不同的“推土”方法。因此,Earth Mover’s Distance 要求穷举所有的铲土的计划,取总距离最小的那个。

“推土方法”英文“moving plan”,可以用一个矩阵表示。

Why Earth Mover’s Distance?


如上,相比 JS Divergence ,使用 Earth Mover’s Distance ,可以时刻衡量两分布见距离。

WGAN

具体的推导李老师省去了。

如上,WGAN使用 V ( G , D ) V(G, D) V(G,D) 。这里要求 D D D 必须平滑,这样防止两个分布一直上升趋近于无穷。

而 Lipschitz Function 如上,1 - Lipschitz 表示输入变化总是大于输出。那参数有了这么多约束,如何解呢?如上,可以使用 Weight Clipping 训练。

Improved WGAN (WGAN-GP)


如上,通过限制 D ( x ) D(x) D(x) 的梯度小于等于 1 ,来限制 D ∈ 1 − L i p s c h i t z D \in 1 - Lipschitz D∈1−Lipschitz 。

因此目标函数可以做如上改进。此外,假设 x ∼ P p e n a l t y x\sim P_{penalty} x∼Ppenalty​,因为我们很难限制所有的 x x x 都满足 ∣ ∇ x D ( x ) ∣ ∣ ≤ 1 |\nabla_x D(x) ||\le 1 ∣∇x​D(x)∣∣≤1 。

那么 P p e n a l t y P_{penalty} Ppenalty​ 长什么样呢?

如上,真实数据与生成数据见的数据,就是 P p e n a l t y P_{penalty} Ppenalty​。尽管难以证明,但是这是有用且符合直觉的。

我们要求 P G P_G PG​ 慢慢移动到 P d a t a P_{data} Pdata​ ,因此只有其二者间的数据,才是值得采样的。

此外,在实际上,我们希望 ∣ ∣ ∇ x D ( x ) ∣ ∣ ||\nabla_x D(x)|| ∣∣∇x​D(x)∣∣ 越接近1越好。如上。

Spectrum Norm

还有一招 Spectrum Norm ,可以做到 WGAN 中的“每一处梯度都小于1”。

如上,李老师不准备讲细节,但是其“效果很强”。

Algorithm of WGAN

Energy-based GAN (EBGAN)

如上,使用 autoencoder 作为 Discriminator 。

如上,我们希望 reconstruction 后与真实值做差,为 0 为最好(为真实数据)。0 for the best.

好处是:不需要 generator ,discriminator 可以使用真实数据预训练。

如上,我们希望真是数据对应分数接近于 0 ,但是其他地方的数据不必很负。设一个阈值就好。

Outlook: Loss-sensitive GAN (LSGAN)


如上,在训练时对 Loss 敏感一些,如果 Loss 小一些,则分数也稍微高一些,不需要压得太低。

 



这篇关于【李宏毅2020 ML/DL】P79 Generative Adversarial Network | Tips for improving GAN的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程