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的。
Spectral Normalization 谱归一化-原理及实现

那么:
Spectral Normalization 谱归一化-原理及实现

关键定理: 对矩阵A除以其谱范数可以使其具有 1-Lipschitz continuity证明)。

//

四、谱归一化

对GAN做Spectral Norm,实际就是要使得判别器D满足1-Lipschitz条件。

注意:
判别器 D 使用了 Spectral norm 之后,就不能使用 BatchNorm (或者其它 Norm) 了。 原因也很简单,因为 Batch norm 的“除方差”和“乘以缩放因子”这两个操作很明显会破坏判别器的 Lipschitz 连续性。

参考 :
Spectral Normalization 谱归一化
令人拍案叫绝的Wasserstein GAN
Thanks

上一篇:数据的标准化


下一篇:机器学习中的Bias(偏差)和Variance(方差)