【李宏毅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
- 之前已经讲到说,最原始的 GAN 使用的是 JS Divergence 测量生成数据分布与原始数据分布的距离;但是这面临一个数据维度的问题。见 JS divergence is not suitable 。
- 因此,有人考虑把 sigmoid 换成 linear 。这是 Least Square GAN (LSGAN) 。
- 使用 Earth Mover’s Distance 代替 JS divergence 。这是 Wassertein GAN (WGAN) 。最后总结了改为 WGAN 的算法需要做哪些。
- 还介绍了用autocoder 作为 discriminator 的 Energy-based GAN (EBGAN) 。
- 此外,介绍了一下 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 ∣∇xD(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)|| ∣∣∇xD(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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南