完整笔记:http://www.gwylab.com/note-gans.html
———————————————————————
6. WGAN-GP
6.1 WGAN-GP原理
WGAN待解决的问题是,未能将D真的限制在1-Lipschitz function内。我们不妨观察一下1-Lipschitz function,会发现它其实等价于如下表达式:
也就是说,对于一个可微函数,当且仅当对于任意的x,梯度的模都小于或等于1,则该可微函数是1-Lipschitz function。
那现在我们对discriminator的目标表达式增添一个条件:
增添的条件(第三项),实际上统计的就是所有梯度的模不满足小于或等于1的项,给这些项分配一个惩罚参数λ,计算出惩罚值,并将所有惩罚值累加起来。当这个累加惩罚够大时,它会拖累的取值,最终导致这样的D不再是最优解。
但是,这个增添的条件由于对所有x有效,会让惩罚变得非常高,也带来很多不必要的计算,于是我们需要对新增条件做进一步的更改。
事实上我们真正需要考虑的惩罚项,应该是对discriminator产生实质影响的区域。考虑到整个WGAN的目的是让渐渐向靠拢,那位于和之间的区域一定会对discriminator产生实质的影响。因此,我们将惩罚项中x的范围缩小为,是介于和之间的区域。目标表达式转化为如下式子:
当然,我们只是直观上觉得,将惩罚项x的区域缩小为会对于限制D为1-Lipschitz function有效,那有没有理论证明呢?很遗憾,原论文中是没有的,作者写了这样一段话:“Given that enforcing the Lipschitz constraint everywhere is intractable, enforcing it only along these straight lines seems sufficient and experimentally results in good performance.”也就是说,实验结果证明这样子是好的。
还有一个有意思的一点是,在实验中作者发现越接近1,训练得越快,效果也越好,于是不妨把表达式直接改成:
也就是说,在惩罚项中希望越接近1,惩罚就越少。事实证明这样做的效果是非常好的。
综上WGAN-GP的介绍到这就结束了,它的核心突破,在于用gradient penalty实现了对discriminator的近似1-Lipschitz限制,并且在实验中取得了非常不错的效果。
6.2 WGAN-GP的讨论
很明显,WGAN-GP它依然有值得改进的空间。
举一个例子,如下图:
我们认为,把和之间的区域看作是因为它是会产生影响的,但是在上图中,和连线的区域对于的移动是没有影响的,因为真正的走向应该是朝着更近的去变化,而不是朝着上图的这条连线去变成一个更远的。
也有一些paper试图在解决这些问题,譬如DRAGAN就认为,应该还加入区域,等等。
另外,WGAN-GP还有一个问题,就是它只是对于梯度的模大于1的区域的x作出了惩罚,它并没有保证每一个x的梯度的模都小于或等于1,也就是说它并没有从根本上解决discriminator的1-Lipschitz限制问题。那有没有办法能够保证每个区域上的x的梯度的模都小于等于1呢?有。接下来将在下一章介绍Spectral NormalizationGAN方法。