前言
Wasserstain-GAN 是 GAN 中非常重要的一个工作 ,文章:
- 从理论上分析了原始GAN 的 Loss 存在的优化上的问题:
- 提出了Wasserstain 距离,例子论证了不同distance的差异,并使用 Kantorovich-Rubinstein对偶将 Wasserstain 距离的计算进行简化,提出了WGAN Loss。
Introduction
-
生成式模型的目的:学习目标的分布(比如图像的分布)
通常的做法:
给定一类分布的族
,在这类族中,寻找最优的参数,使得可以逼近真实分布
,通常的做法是 MLE,并且MLE正好和最小化
和
的KL距离等价。
问题是:这类函数族
和
可能没有多大的交集,所以通常会选择
为高斯分布,能够尽可能多地涵盖分布。
-
Modern way:
现在一般的做法是:给定一个随机的噪声
,寻找一个分布的映射函数
,将
映射到分布
,使得
和
接近,已有的这方面的工作包括:
- VAE(变分自编码器)
- GAN
Distances
已有的一些距离,定义为
compact metrix set
(随机变量),是
的波莱尔子集(?),
是所有定义在
上的分布的空间,对于两个分布
有以下的距离的定义:
-
TV 距离:
-
KL 距离:
-
JS 距离:
(注:原论文这有笔误)
-
EM(Earth Move) or Wasserstain-1 距离:
这四种距离:
-
KL距离的缺点是:不对称,即
,作者指出的KL距离包含的问题有:
-
如果两个分布
几乎没有什么交集,那么KL距离会变得没有定义(趋向正无穷)。
没有什么交集,当
取概率比较大的随机变量
的值时,
,KL距离中,log函数的分子趋向0,整个值趋向正无穷。
-
-
其中JS距离是KL距离的优化,
取
,它是对称的。
- JS 距离是对称的,而且它对任意的两个分布都是有定义的。
TV距离是对两个分布,同一个样本出现的最大值。
EM(Wassertain-1)距离理解起来有点抽象,其中
是联合分布
的集合,集合中的每一个元素(每一个联合分布)
,它的边缘分布是
和
。
Examples
文章作者举了例子来阐述了EM距离在连续性上的优越性:
令,
是
二维随机变量的分布,而
是二维随机变量
的随机分布族,其中
是超参数。
可以发现,当且仅当时,
和
是同一分布,而当
时,
和
是完全没有交集的两个分布,下面我们可以分情况计算这四种距离:
- KL 距离:同一分布时
,而完全没有交集的两个分布时,
,即:
-
JS 距离:同一分布的情况下,同样JS距离也是0,不同分布下:
同理有:
则:
-
TV 距离:
直观上很容易看出TV距离的值,当二者是同一分布时,对任意,都有
,则
。
当二者是完全没有交集的分布时,对同一个
,
的最大值是1:概率取值在
,最大的差就是1。
则有:
-
EM距离:
又
是常数。
比较这四种距离,发现只有EM距离对于是连续的,只有EM距离可以使得当
时,分布族
收敛到
,而且当两个分布完全不相交时,其他距离对于
的导数是0,使得无法通过梯度下降学习。
WGAN 和 实际计算EM距离
EM距离中的计算是非常困难的,作者使用了Kantorovich-Rubinstein对偶,将距离变成了另一个公式:
其中
是
,即将随机变量映射到实数空间的函数。而且
满足1-Lipschitz条件。
上式的意思是,对所有满足1-Lipschitz
的函数,
的上确界。
将1-Lipschitz
条件替换为K-Lipschitz
条件(为任意常数),如果我们有满足
K-Lipschitz
条件的函数族(
),把求解
变成求最优值的问题:
这里就可以引入函数的万能近似器NN了,将其中的和
替换,最终得到的WGAN的优化目标为:
其中表示满足Lipschitz-1条件的函数族。
WGAN的训练过程如下图所述:
不难看出D训练地越好,越能反应真实的Wasserstain距离,所以作者也提出可以将损失函数的值作为Wasserstain距离的近似,衡量WGAN学习的好坏。
总结的上图的要点有:
- 改变原有的损失函数的计算方式。
- 使用权重裁剪(weight-clipping)处理D,使得它满足
1-Lipschitz
条件,通常c取0.01。
在WGAN-GP中论述了权重裁剪将使得D简单化,使用梯度惩罚(Gradient-Penalty)替代
- 使用RMSProp的方法替代带动量的优化算法(经验之谈)。
在WGAN-GP使用的是Adam算法。
其他
一点经验之谈:
- WGAN的收敛速度通常来说比较慢,要多训练几个epochs。
- WGAN较容易收敛。
- Wasserstain距离的规律是开始逐渐增大,达到某个数值后开始减小:原因是开始训练D使得D比较好,D训练地比较好提供给G的梯度变大,使得G开始训练。
WGAN使得训练GAN更加容易,至于Mode Collapse,作者只是提到在实验中并没有发现这一现象。
附录
1. Lipschitz条件
Lipschitz条件的定义:
对函数
,对任意定义域内的点
,都存在
,使得:
直观上看,就是函数任意两点连线斜率小于
。
满足上述条件的函数也称Lipschitz连续,比起连续的函数,满足Lipschitz连续的函数更加光滑,而且它对函数的变化做了要求:函数在任意区间的变化不能超过线性的变化,线性变化的大小不超过Lipschitz常数。
在非凸优化中,Lipschitz条件对函数定义了一类边界。
Reference
后言
文章是为了方便自己理解而写,所以难免有不清楚或错误之处、或者自创的方便理解的术语,如有错误,欢迎指正。