今天来学习一下大名鼎鼎的WGAN。
传统的GAN存在着一些问题,比如在D训练的太强的时候,G会出现梯度消失的问题,亦或由于KL散度的不对称性,GAN也容易出现mode collapse的现象。
一、距离函数
WGAN中一个很重要的工作就是提出了EM距离,也称推土机距离。
先来看一下几个常用的距离和EM距离。
TV(Total Variation)距离:
KL距离:
JS距离:
最后就是EM距离啦
可以看到,EM距离被称为推土机距离是很形象的,将一堆土从一个分布推到另一个分布所需要的消耗就是两个分布之间的EM距离。
这是WGAN中非常非常重要的一个概念。
可以通过数学证明,相比于其他的几个距离,EM距离的平滑特性要优越的多。具体情况可以参看论文。
二、WGAN
由于定义中的inf并不好求,在这里做了一个转换,可以证明定义式等价于如下的式子。
其中f为利普希茨常数为1的函数。
那么接下来将f的利普希茨常数推广到k的情况,可以得到如下目标函数。
三、训练算法
以上是WGAN的算法。
可以看到WGAN较传统GAN的几个主要的不同:
第一、损失函数的不同,去掉了传统GAN中的log。
第二、在训练权重时进行了clip操作,让w处在-c到c这个范围内。
第三、采用了RMSProp算法,在实际中,SGD算法也是可行的,但是不可以使用如adam等momentum的算法,这在论文中也有提到。