抛开复杂证明,我们从直觉上理解W-GAN为啥这么好训

这篇文章要结合另一篇生成对抗网络-GAN---一个好老师的重要性来看.讲述的挺清晰的,好评!

欢迎关注作者


关于GAN基础的知识,大家可以参考我另一篇生成对抗网络-GAN---一个好老师的重要性

最关键的地方其实是D(X),即对整个H*W*C这个高维空间的评分系统,好不好训,最关键的地方其实是D(X)的打分是否是从G(X)(生成分布)的支撑集的低分逐渐升高到R(X)(真实分布)的支撑集处的高分,从而使得G(X)这个生成分布可以顺着D(X)的梯度不断靠近真实分布R(X)。

以往的损失函数在固定G后train出来的D(X)都没能很好的构造出这种梯度,所以train不起来,而W-GAN做到了。

W-GAN: 论文证明原始GAN的损失在D取极值时候描述的是JS散度,而具有特定语义特征的图片在高维空间中呈现的应该是一个manifold,两分布支撑集冲重叠部分的measure为0,随机初始化参数后,训练完D,对G来说,G的的梯度一直都是零,因为生分布与真实分布没有重合的时候,JS散度一直都是0,所以才有了D不能train的太好的训练经验。至于Ian Goodfellow提出的“- log D trick”,对G来说,包含梯度的部分实际是

注意KL散度是非对称的, ,KL散度趋于0,即G会趋向于不生成这部分真实的图片,因为这时候惩罚很小,而 ,KL趋向于 ,惩罚巨大,因此G确实就趋向于不生成假的图片,这种不对称性,就使得G仅仅在学到的部分真实分布停滞不前,而把其他还没有学到的概率空间的某些 存在分布的地方直接置为零,因为这样惩罚很小,就产生了所说的collapse mode情况。为了解决这样的问题,作者提出了Wassertein 距离,其可以度量两个分布没有重合时候的距离,也就是可以提供 改善自己的梯度,其实具体的推导没有看懂,但是从最后结果的表示来看,可以有一个直观的理解。

D的目标就是最大化 ,同时要让D满足L-Lipschitz < 某个常数K,我们从直觉上理解这种限制,假如不进行Lipschitz常数的限制,那么D会倾向于给fake sample打低分,给real sample打高分,而两者之间的D(X)会倾向于产生一个gap,这样对于与真实分布 与G映射出来的分布 之间就形成不了有效的梯度(看我垃圾手绘中的图一),即G会不知道如何让fake sample改变来获得高分。加上Lipschitz限制条件之后,在D使得上面的损失函数最大化的时候,因为梯度不能太大,D不能无脑的并且无限制的给fake打低分,给real打给分,因为这样会使得fake与real只之间的Lipschitz大于k,也就是加上此限制后,D(X)并不会在fake分布的区域打很低的分数,然后经历一个gap到real分布的很高的参数,而是在fake与real之间形成一个较为平缓的坡,fake处G可以了解到往哪里移动过可以获得更高的分数,从而解决对G来说梯度消失的问题。实现的时候想到了一个方法就是简单将参数clip,简单的限制到一个区间中,这样经过简单的乘加,Lipschitz必定是限制在某个上限下。



W-GANGP: 很快大家发现简单的限制参数范围效果并不好,因为W的简单限制使得网络的表达能力受限,因为D为了使得fake 与real的差距变大,那么大多数参数必定都简单的达到clip的上限或者下限,极大的限制了网络的拟合能力,并且在这样的简单的clip情况下,非常容易引起梯度消失或者梯度爆炸,因为许多的clip上界或者下界相乘,clip稍大就可能爆炸,稍小就可能消失。于是作者就想到了另一种限制Lipschitz的方法 --- Gradient Penalty。想法是朴素的,就是为了限制D的梯度,干脆直接设置一个惩罚项,最后选择惩罚项为

原本我们是希望不出现fake 与 real 之间的梯度不要很大大,而fake跟real的区域几乎没有梯度,而这个惩罚项,现在直接希望其梯度能尽量接近某个常数,作者仅仅是说实验上这个带来的更好的效果,但是我看来这是可以解释的,因为这个限制可以让fake sample1之间也能产生梯度,因为同是fake但是距离真实的分布的距离还是有所不同的,加上此限制后,每个fake sample 都处在一个有梯度地方(渣渣手绘的图三),此时梯度下降时显然会收敛的更快,而类似

这样的panalty,其可能仅仅限制fake 与 real 之间的梯度,使得距离real 较近的fake 点可以感受到梯度,而距离较远的可能就感受不到,梯度下降时候还是较慢。

我手画了一张图来对比这些不同。

实际实现的时候,我们想要在整个样本空间上对梯度加以限制是困难的,那么如何施加这种限制呢,其实我们仅仅限制fake 与real,以及他们之间的空间梯度就可以了,我们可以在fake 与real 的sample之间进行线性的插值,作为中间区域的空间的取样,并对他们的梯度做策划惩罚就可以了。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值