WGAN和GAN直观区别和优劣

建议开篇前前往这个链接,虽然主要是讲WGAN,前面也会讲到GAN,写得非常的棒:令人拍案叫绝的Wasserstein GAN

另外github也有一个超级详细的tf对各种GAN的实现:YadiraF/GAN,包括对WGAN的实现

本文的讨论基于文章:GAN是怎么工作的,代码和该文中的代码一样,只需要修改下面这一行即可:

首先我们讲讲WGAN的判别器策略:

下面我们来看看在生成器不变,仅更新判别器权重的情况下是什么情况:

因为轴在自动缩放,感觉图形没变,实际上生成的数据值一直在变小,真实的数据值一直在变大

另外还有一个非常重要的细节,那就是令人拍案叫绝的Wasserstein GAN文章中提到

这个条件,在代码中实现就是限制w和b的值大小

而实际上就是限制了生成器曲线的最大斜率

比较直观的作用就是

下面我们重温下判别器的工作方式:

------------------------------------------------------------------------------

下面我再看下生成器的工作方式

我们看下只训练生成器,不训练判别器是什么效果:

我们的“超级爬坡王”沿着上坡路的方向,一直跑



现在我们把生成器和判别器一起训练,看下过程是怎么:


我们能比较明显看到WGAN比GAN优秀的地方:

GAN存在的问题如下:

而WGAN的差别器却没有这个问题:


这个就是WGAN比GAN高明的本质地方!

编辑于 2017-11-25 13:21