简介
Wasserstein Generative Adversarial Networks.ICML-2017,Cited-3690.放个pytorch的开源:wgan,这大佬的仓库里一堆的gan及变种,Star-5.5k。
关键字
GAN,WGAN,EM距离,生成模型,深度学习,机器学习
正文
1. 存在问题和解决思路
GAN存在难以训练,模式坍缩等问题,追溯其根本原因在于判别器给出的度量是JS散度,JS散度用来计算两个分布的差异,当分布不重叠时这个散度值可能为0或趋近无穷大,也就是变得不连续。假设生成器是,生成样本和真实样本的分布重叠可能性很小(是所处高维空间的一个低维流形,生成的与真实样本在高维空间的重合的支持集测度为0的概率是1),故而GAN的训练会常常出现问题。
既然根本原因是JS散度不连续造成的,那么换一个处处连续的分布差异度量就可以解决这个问题,最优传输距离就满足处处连续的条件。WGAN就是把JS散度换成EM距离(最优传输的2阶形式,也叫推土机距离)来达到这个目的的。由于是用判别器来衡量这个度量的,判别器是神经网络,因此计算这个距离的过程(函数)需要满足可微的条件,这篇文献重点就是找出问题,提出思路,变换计算方式使得可微,当然最后还要给出实验效果来进一步说明。
2. 方法及基本原理
(1)EM距离定义
这里的是满足边缘分布为的联合分布,意思是把改造成需要移动的所有样本距离和的最小值。
(2)EM距离形式变换
上面的式子没法用网络计算,也没法微分,那就需要变换成可以计算及微分的形式,有个Kantorovich-Rubinstein对偶性变换可以把距离计算表达成:
里面有个条件,需要满足利普西茨常数的利普西茨条件。
(3)目标函数
最后近似表达为可以计算及微分的形式:
里边的就是判别器参数,是生成器参数,要求满足利普西茨常数的限制,具体为多少不明确,只要不是无限大就行,反正我们的要求是可微分,梯度要有明显变换就行。
怎么达到上面的要求呢,上面的就是判别器,也就是要求对自身参数的梯度要有有限的利普西茨常数,文献里做了个简单的处理,在每次梯度变换是要求参数的值限制在某个常数范围内就行了,嗯,就这样。
3. 算法
贴个文献的图(来自文献Alogorithm1):
备注:这个流程和GAN大体一样,除了上面提到权重限制在以外,还有就是:1)最后去掉sigmoide层,不加log进行计算,这有点像回归计算,应该是为了进一步加快训练速度;2)从实验中得出不使用Adam,而是使用RMSProp来优化。最后推荐台大李宏毅老师的视频,真的是深入浅出啊。
参考资料
[1] Arjovsky, Martin, Soumith Chintala, and Léon Bottou. "Wasserstein Generative Adversarial Networks." International Conference on Machine Learning. 2017.
[2] https://blog.csdn.net/yiqisetian/article/details/100511478
[3] https://zhuanlan.zhihu.com/p/25071913
[4] https://www.jianshu.com/p/c000b27775cc