关于原始GAN的理解网上的野生博客漫天飞,从GAN到WGAN都还好,非常能起到导学的作用,但是到了WGAN-GP这篇paper了有点儿云遮雾绕,绕了一大圈还是要自己慢慢啃,在谷歌上搜了一下WGAN-GP,也在quora上提问了一下算是有个大概了!
reference:https://medium.com/@jonathan_hui/gan-wasserstein-gan-wgan-gp-6a1a2aa1b490medium.com
WGAN-GP纯粹是为了满足WGAN中的李普西斯条件,WGAN自己的满足方式是gradient clipping,但是这样的话WGAN的大部分weight会是正负0.01,需要新的满足李普西斯条件的方法,这就是motivation;
Earth-Mover (EM) distance/ Wasserstein Metric
用一个小的实验来解释一下什么是推土机距离?我们有6个盒子并且我们想将他们从左边的位置移动到右边虚线表示的位置;对于1号box,我们从左边1号盒子所在的位置移动到右边1号盒子所在的位置,移动的距离为6,只看横坐标的差值;
下面的表格呈现了两种不同的移动方案r1和r2,右边的表格解释了盒子是怎么移动的,比如:第一种方案中我们把2号和3号盒子这两个盒子从位置1移动到位置10,那么在右边的表格中(1,10)的位置填上2(这个数表示从1处移到10处盒子的个数为2);其他位置的数同理
虽然这两个方案的总移动距离相同但是并不是所有的移动方案的距离都是相同的;Wasserstein distance是所有方案中距离最小一个;用下面这个小例子来表示:
有两种移动方案:
1⃣️ 1号盒子从位置3移动到位置4,2号盒子从7移动到6;
2⃣️ 2号盒子从位置3移动到位置6,1号盒子从位置4移动到位置7
对两个分布Pr和Pg的Wasserstein距离的公式:
不要被上面的公式吓到了;左边的W(Pr,Pg)表示的Pr,Pg的Wasserstein距离;
∏(Pr, Pg)表示的意思是所有的r(x, y)这种距离的联合分布的集合,他们的边缘分布相应是Pr, Pg
我们将变量x,y结合起来形成联合分布r(x,y)
至此,搞清楚了什么是Wasserstein距离!!!
Wasserstein GAN
由于wasserstein distance非常的复杂,要先算出来所有的推土方式的距离,再找出来最小值;
Using the Kantorovich-Rubinstein duality, we can simplify the calculation to
真是操蛋,又有一个什么Kantorovich-Rubinstein duality,这一部分重点说一下这个,智力富余者继续,reference:Wasserstein GAN and the Kantorovich-Rubinstein Dualityvincentherrmann.github.io
Kantorovich-Rubinstein duality这个东西在原论文中一笔带过,直接鄙视了一批人,设置了很高的理解门槛,这个东西不是新东西了,这里用的好,这篇paper引用了书《Optimal Transport - Old and New》,菲尔兹奖获得者Cedric Villani写的,这里是链接地址:https://www.cedricvillani.org/wp-content/uploads/2012/08/preprint-1.pdfwww.cedricvillani.org
这书是给数学系的phd的,998页,如果你想读,不拦你,have fun and good luck!!!
这是Cedric Villani在华为的演讲,enjoy please:https://www.youtube.com/watch?v=zo46TEp6FB8www.youtube.com
这是演讲的画风,please enjoy~!
这条路去理解,我放弃了,下面从一个比较intuitional的角度来理解:
如果用JS divergence来度量Pg1,Pg2到Pg3的距离的话,对于判别器的损失都是都是-log2
所以要用推土机距离,上面已经解释了什么是推土机距离;这个距离可以衡量两个毫无交集的分布的距离对于Pg1,Pg2到Pg3的推土机距离是不同的
我们看看算法里具体是如何implement的
然后这实际是在干嘛呢?
实际上是求D(x)的均值和D(G(z))的均值之差;也就是让D(x)的均值和D(G(z))的数字特征尽量靠近,但是需要保证的是D(x)要大于D(G(z)),我们可以保证的是x>G(z),因为初始化权重和给定的噪声都可以是很小的值,但是怎么保证x一直大于G(z)呢?来G(z)要慢慢的不断靠近x,在靠近的过程中x,D(G(z))不能超过D(x)--->这句话非常重要,你在其他地方保证看不到;因为我们是要最小化上面黄色截图的公式,如果变成了负数,那不断的变小实际是让两个分布的距离增大了,所以G(z)靠近x的过程中,D(G(z))不能迈过D(x);也就是传说中的李普西斯条件条件;虽然我这么说很low,没有高大上的公式,但是够不够intuitive,佩服自己一把,用小学数学解释了抽像代数;好,现在就知道为什么要用weights clipping[-0.01, 0.01]了吧,非常直观,控制D(G(z))的大小,D 的梯度如果太奇葩会怎样?会让G(z)还没有追上x,就让D(G(z))超过了D(x),还有这事儿?如下图,有点儿丑,但是还是能说明问题
接下来说说主角WGAN-GP
那就是理解这货,前面的一项很好说,就是上面讲的,本质上是用随机变量的数字特征(均值)的距离来表征和两个分布的距离,这是题眼,很重要;后面做的事儿是什么呢?也intuitive的讲一下,我们要保证G(z)靠近x,且靠近的过程D(G(z))不超过D(x),对D的权重加惩罚,什么意思
这一坨就是D的权重,待会儿解释为什么,先说什么是加惩罚,
这一项是一个非负数,我们是要最小化L,如果这个非负数太大的话L就太大,所以在最小化L的时候这个非负数是不会太大的也就是
这货会在1的附近;这就是加惩罚,那就稳定住了梯度,也就是保证了G(z)靠近x,且靠近的过程D(G(z))不超过D(x)
表示的是Dw(x^)对x^求导;而x^的系数就是权重w啊
不懂的点:为什么这么处理一下:
2018-11-17 更新:在这里已经解决了:不懂的点:为什么这么处理一下:胡今朝:关于WGAN-GP中的遗留问题?zhuanlan.zhihu.com
另外这个算法的trick是用Adam优化器