GANs 01

GANs 01

fGAN 对GAN理论的深度理解

@Aiken 2021 onenote部分的拓展编写,到时候拷过去,整合在一起。

fGAN: 不只是JS-Div散度,我们可以将所有的散度都应用到GANs的框架中。该部分的阅读是对GAN的基本理论最重要的文章之一。

基本理论体系和推演

首先给出fGAN中提出的基本理论:可以将所有的Div放入GANs的框架中,来做那个核心的关键演化判别指标:

上述公式将衡量P和Q两个分布之间的差距,公式中的$f$可以是很多不同的版本,但是要求满足如下的两个条件:

  1. 是一个凸函数;$f(\frac{(x1+x2)}{2})\leq \frac{[f(x1)+f(x2)]}{2}$,需要注意国内外的凹凸相反
  2. $f(1)=0$。

而我们知道$q(x)$是概率密度分布函数,实际上可以看成凸函数性质的推广,所以我们可以证得:

显然当我们取得合适的f,KL($f(x) = xlog(x)$); ReverseKL($-log(x)$);chi square ($f(x) = (x-1)^2$);

Fenchel Conjugate共轭

补充Fenchel共轭的知识来对后续的fGAN推导进行补充,定理内容如下:

每个凸函数都有一个对应的共轭函数读作$f^*(x)$

t是给定的,对于所有的变量t, $xt-f(x)$对应了无数条直线:

image-20210214232437350

举个例子$f(x)=xlog(x)$时,我们可以将对应的$f^*(x)$画出来。

image-20210214233459633

实际上就是对给定的t,求$g(x)$共轭方程的最大值的过程,求个导,然后就可解得$x->t$然后带回就能得到共轭方程。

介绍共轭方程主要是为了和$f(x)$进行转化

F-Div GAN推导

将转化方程带入,利用简单的不等式转化,我们就能将之前的F-Div转换为一个类似GAN的式子:

解释一下:第三行就是由于t是随便取值的;最后一行就是我们要求一个D使得式子最大,上界实际上就是第二行的式子。

这样我们就能推导出F-Div的变体:

对于生成器来说,我们就是要找到一个PG使得:

这样我们的推导过程就结束了,然后我们也可以使用更多的Div Function,使用不同的Div距离直接选择对应的函数就可以了。

JS Div不是最佳的Div

由于分布的数据之间是没有重合的,使用JS Div的时候就很难衡量出他的距离,Equally Bad

为什么如果两个分布完全没有重合的话,那么这两个分布的 JS Div 会是一样的?

前面有提到,JS Div 是通过判别器计算出来的,而判别器的本质是二分类器,只要$PG$与$P{data}$完全没有重合,判别器就能 100%地鉴别出$PG(x)$与$P{data}(x)$ 的差异,因此二者的 JS Div 就是一样的。

LSGAN最小二乘

解决的就是没有重合的问题,解决思路如下:让判别器始终都不能100%的鉴别出差异,这样就能保证在没有重合的时候也能分辨出差异程度。

image-20210215001057797

当我们的D太好的时候(能将数据完全分开)这种时候生成器就优化不了了,也是Equal Bad带来的最大问题。那么如果我们将最终的激活从sigmoid换成linear激活层,这样训练出来的D就会是一个线性的直线,

image-20210215001105089

这样只有当完全重合的时候D才会是一个没有梯度的直线,但是这个也并没有真正的解决这个问题,而只是绕开了这个问题。

真正解决了这个核心问题的是下面的WGAN

Wasserstein-GAN

核心思想:用Wasserstrin距离(EM距离)取代JS距离

Author

AikenH

Posted on

2020-10-19

Updated on

2023-10-30

Licensed under


Comments