Spectral Normalization 谱归一化-原理及实现
作者:互联网
//
一、谱范数及其计算方法
见我的这篇blog 谱范数求解方法-奇异值分解&幂迭代法
//
二、谱归一化提出背景
谱归一化由论文《Spectral Normalization For Generative Adversarial Networks》论文链接 提出。
原生 GAN 的目标函数等价于优化
生成数据的分布
和真实数据的分布
之间的J-S 散度 (Jensen–Shannon Divergence)
。
而由于二者间几乎不可能有不可忽略的重叠,所以无论它们相距多远JS散度都是常数log2,最终导致生成器的梯度(近似)为0,梯度消失。
也就是说判别器训练越好,生成器梯度消失越严重
。
WGAN使用性质优良的
Wasserstein distance
代替原生 GAN 中的 J-S 散度。 然后利用KR对偶原理将Wasserstein distance的求解问题
转换为求解最优的利普希茨连续函数的问题
。 为了使得判别器 D 满足利普希茨连续性,作者使用“梯度裁剪”
将过大的参数直接裁剪到一个阈值以下。
“梯度裁剪”
技术从每层神经网络的参数矩阵的谱范数角度,引入利普希茨连续性约束
,使神经网络对输入扰动具有较好的非敏感性,从而使训练过程更稳定,更容易收敛。(深度学习模型存在“对抗攻击样本”,比如图片只改变一个像素就给出完全不一样的分类结果,这就是模型对输入过于敏感的案例。)
我们可以这样理解:局部最小点附近如果是平坦(flatness)的话(斜率有约束),那么其泛化的性能将较好,反之,若是不平坦(sharpness)的话,稍微一点变动,将产生较大变化,则其泛化性能就不好,也就不稳定。
Spectral Norm
使用一种更优雅的方式使得判别器 D 满足利普希茨连续性,限制了函数变化的剧烈程度,从而使模型更稳定。
//
三、Lipschitz 连续性
Lipschitz 条件限制的是函数变化的剧烈程度
,即函数的最大梯度
。
K-Lipschitz
表示函数的最大梯度为K,K称为Lipschitz constant(Lipschitz常量)
。例如 y = sinx的最大斜率为1,所以它是是 1-Lipschitz的。
那么:
关键定理:
对矩阵A除以其谱范数可以使其具有 1-Lipschitz continuity
(证明)。
//
四、谱归一化
对GAN做Spectral Norm,实际就是要使得判别器D满足1-Lipschitz条件。
注意:
判别器 D 使用了 Spectral norm 之后,就不能使用 BatchNorm (或者其它 Norm) 了。 原因也很简单,因为 Batch norm 的“除方差”和“乘以缩放因子”这两个操作很明显会破坏判别器的 Lipschitz 连续性。
参考 :
Spectral Normalization 谱归一化
令人拍案叫绝的Wasserstein GAN
Thanks
标签:Spectral,判别,梯度,归一化,Lipschitz,范数,Normalization 来源: https://www.cnblogs.com/wonderlust/p/15767225.html