转载:https://zhuanlan.zhihu.com/p/72195907 GAN的损失函数
理解生成对抗网络的关键在于理解GAN的损失函数
JS散度
GAN实际是通过对先验分布施加一个运算G, 来拟合一个新的分布
如果从传统的判别式网络的思路出发,只要选定合适的loss,就可以使生成分布和真实分布之间的距离尽可能逼近
KL散度经常用来衡量分布之间差异,也可以叫做相对熵,即K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息量(可以参考KL散度的理解:https://zhuanlan.zhihu.com/p/39682125,https://www.jianshu.com/p/43318a3dc715)
但KL散度是不对称的,也就是Dkl(P||Q) ≠Dkl(Q||P),不对称意味着,对于同一个距离,观察方式不同,获取的loss也不同,那么整体loss下降的方向就会趋向于某个特定方向。这在GAN中非常容易造成模式崩塌,即生成数据的多样性不足
JS散度在KL散度的基础上进行了修正,保证了距离的对称性:
实际上,无论KL散度还是JS散度,在直接用作loss时,都是难以训练的:由于分布只能通过取样计算,这个loss在每次迭代时都几乎为零。
很自然地,一些同学把K-L散度看作是不同分布之间距离的度量,这是不对的,因为从K-L散度的计算公式就可以看出它不符合对称性(距离度量应该满足对称性)。
然后最小化 Kullback-Leibler 散度等价于最大化似然函数
假设我们想要对未知分布p(x) 建模,可以试着使用一些参数分布 来近似p(x)。 由可调节的参数 控制(例如一个多元高斯分布)。
通过最小化 p(x) 和 之间关于 的 KL散度可以确定 。
但是因为不知道 p(x),所以不能直接这么做。
如果已经观察到了服从分布 p(x) 的有限数量的训练点集 ,其中 ,那么关于 p(x) 的期望就可以通过这些点的有限加和,使用公式:
来近似,即: (4)
公式(4)右侧的第二项与 无关,第一项是使用训练集估计的分布 下的 的负对数似然函数。
因此最小化KL散度等价于最大化似然函数。
GAN loss的推导
GAN的训练方法,能够巧妙的解决这个问题:
先训练D,再训练G,二者相互对抗,直到收敛
在原始的GAN中,提出的loss是:
当G固定且运算可逆时(实际上这一点一般不成立,但不影响了解GAN的思想):
代入loss公式,进而有:
对于积分区间内的每一个x,设被积函数为f 为:
注意这里x是固定的,变量是D。对f求导,得到当 时,f存在最大值。
由于被积函数的最大值对于任意x都成立,所以当 时, V(D, G)有最大值
代入loss公式,有:
所以原始GAN的loss实际等价于JS散度
Wasserstein Loss
JS散度存在一个严重的问题:两个分布没有重叠时,JS散度为零,而在训练初期,JS散度是有非常大的可能为零的。所以如果D被训练的过于强,loss会经常收敛到-2log2而没有梯度
对于这个问题,WGAN提出了一个新的loss,Wasserstein loss, 也称作地球移动距离:
这个距离的直观含义是,将分布r移动到分布g所需要的距离,所以即使是两个分布没有重叠,这个loss也是有值的
可以证明,该距离可以转化为如下形式:
其中f必须满足1-Lipschitz连续,即: 可以看到,符合1-Lipschitz连续的函数的梯度是受限的,可以有效的防止梯度的爆炸,使训练更加稳定
Spectral Normalization
对于GAN来说,f其实就是指的D或G,也就是神经网络。对于神经网络来说,一般是由一系列矩阵乘法复合而成的。可以证明,如果矩阵乘法这个运算满足1-Lipschitz连续,那么其复合运算也会满足1-Lipschitz连续,神经网络也就满足1-Lipschitz连续
对于矩阵变换A来说,它满足K-Lipschitz连续的充要条件是: $$ ||Ax|| \leq K||x|| $$ 对其等价变换有:
假设 的特征向量构成的基底为 对应的特征值为 ,则x可由特征向量表示:
那么有:
只有当i 不等于j时,式子不为零, 且
所以有:
矩阵 是半正定矩阵,所有特征值都为非负,所以只要矩阵除以它最大的奇异值的开方,就可以满足1-Lipschitz连续。power iteration 是求奇异值的一种简便算法,
称这种除以最大奇异值的操作为spectral norm
Hinge loss
Hinge loss 是对地球移动距离的一种拓展
Hinge loss 最初是SVM中的概念,其基本思想是让正例和负例之间的距离尽量大,后来在Geometric GAN中,被迁移到GAN:
对于D来说,只有当D(x) < 1 的正向样本,以及D(G(z)) > -1的负样本才会对结果产生影响
也就是说,只有一些没有被合理区分的样本,才会对梯度产生影响
这种方法可以使训练更加稳定