【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
这是我的李宏毅老师 GAN 系列第4
篇笔记,GAN 系列:
本节内容综述
- 上节有提到用 JS 散度衡量D()中的两个分布,本节课想证明一下,其实用什么散度都行。本节在工程上可能启发不大,但是数学上有一定参考性。
- 首先定义普遍的散度公式 f-divergence 。
- 每一个凸函数,都有一个共轭函数 Conjugate function。
- 之后讨论其与 GAN 的联系。
- 上面得出结论:使用各种散度公式都可以。但是有什么意义呢?或许我们可以解决
Model Collapse
、Mode Dropping
。 - 一种解决方法可能是 Ensemble 。
文章目录
小细节
定义 f-divergence
如上,让 f(1) = 0,且让 f 是 convex 凸的。
如上,f 带入不同的函数,就是不同的散度定义。
Fenchel Conjugate
如上,共轭函数就是取 点对应的最大目标值,在图中是最高点,为 。
如上,另一种理解方法是,把所有 绘制出来,取最大的部分。
如上,对于 来讲,其共轭函数就是 。
Connection with GAN
可以转换成共轭函数。如上,我们假设。并且,如图中下部分所示,我们去掉 ,则可得到 的下限。我们将下限反带回上面的式子中,得到:
因此,我们进行变化如上。则得到了一个通式。
因此,我么可以使用各种散度公式如上。
Model Collapse / Mode Dropping
如上,我们生成的图片范围可能越来越小。
如上,可能真是数据有多个分布,但是我们只产生某一个的数据分布。
一个远古的猜测是:我们的散度函数选的不好。
如上,不同的散度函数衡量下,我们的最优拟合函数得到的分布(绿色虚线)是不同的。
Outlook: Ensemble
如上,一个可行的解决方法或许是,训练多个 Generator 。