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