【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN

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

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

本节内容综述

  1. 上节有提到用 JS 散度衡量D()中的两个分布,本节课想证明一下,其实用什么散度都行。本节在工程上可能启发不大,但是数学上有一定参考性。
  2. 首先定义普遍的散度公式 f-divergence 。
  3. 每一个凸函数,都有一个共轭函数 Conjugate function。
  4. 之后讨论其与 GAN 的联系。
  5. 上面得出结论:使用各种散度公式都可以。但是有什么意义呢?或许我们可以解决 Model CollapseMode Dropping
  6. 一种解决方法可能是 Ensemble 。

小细节

定义 f-divergence

【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,让 f(1) = 0,且让 f 是 convex 凸的。
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,f 带入不同的函数,就是不同的散度定义。

Fenchel Conjugate

【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,共轭函数就是取 tit_i 点对应的最大目标值,在图中是最高点,为 f(ti)f^*(t_i)
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,另一种理解方法是,把所有 xx 绘制出来,取最大的部分。
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,对于 f(x)=xlogxf(x) = xlogx 来讲,其共轭函数就是 f(t)=et1f^*(t)=e^{t-1}

Connection with GAN

【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
可以转换成共轭函数。如上,我们假设D(x)=tD(x) = t。并且,如图中下部分所示,我们去掉 max\max ,则可得到 DfD_f 的下限。我们将下限反带回上面的式子中,得到:

DfmaxDx...D_f \approx \max_D \int_x ...
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
因此,我们进行变化如上。则得到了一个通式。
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
因此,我么可以使用各种散度公式如上。

Model Collapse / Mode Dropping

【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,我们生成的图片范围可能越来越小。
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,可能真是数据有多个分布,但是我们只产生某一个的数据分布。

一个远古的猜测是:我们的散度函数选的不好。
【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,不同的散度函数衡量下,我们的最优拟合函数得到的分布(绿色虚线)是不同的。

Outlook: Ensemble

【李宏毅2020 ML/DL】P78 Generative Adversarial Network | fGAN: General Framework of GAN
如上,一个可行的解决方法或许是,训练多个 Generator 。