近来,DeepMind的一篇论文《LARGE SCALE GAN TRAINING FOR
HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(arXiv:1809.11096v1)[1](通过大规模Gan训练,得到高精度的合成自然图像)引起了广泛的关注。其中,为保证其大批次(batch够大)Gan训练的稳定性,[1]引入了谱范数正则技术(Spectral Norm Regularization)。该技术从每层神经网络的参数矩阵的谱范数角度,引入正则约束,使神经网络对输入扰动具有较好的非敏感性,从而使训练过程更稳定,更容易收敛。
谱范数正则(Spectral Norm Regularization,简称为SNR)最早来自于2017年5月日本国立信息研究所Yoshida的一篇论文[2],他们后续又于2018年2月再再arXiv发了一篇SNR用于Gan的论文[3],以阐明SNR的有效性。因为当SGD(统计梯度下降)的批次(Batch size)一大的时候,其泛化性能却会降低,SNR能有效地解决这一问题。
SNR的讨论是从网络的泛化((Generalizability))开始的。对于Deep Learning而言,泛化是一个重要的性能指标,直觉上它与扰动(Perturbation)的影响有关。我们可以这样理解:局部最小点附近如果是平坦(flatness)的话,那么其泛化的性能将较好,反之,若是不平坦(sharpness)的话,稍微一点变动,将产生较大变化,则其泛化性能就不好。因此,我们可以从网络对抗扰动的性能入手来提升网络的泛化能力。
一、扰动的表示
对应多层神经网络而言,扰动(Perturbation)的来源主要有两个:1)参数的扰动;2)输入的扰动。[2]是从输入扰动的角度来进行讨论的。假设一个前馈网络的第 lll 层有如下关系:
xl=fl(Wlxl−1+bl)(1) \mathbf x^l=f^l(W^l\mathbf x^{l-1}+\mathbf b^l)\qquad(1) xl=fl(Wlxl−1+bl)(1)
(1)中,xl\mathbf x^lxl 表示第 lll 层的输出,xl−1\mathbf x^{l-1}xl−1 表示第 lll 层的输入,Wl,blW^l,\mathbf b^lWl,bl 分别表示该层神经网络的参数矩阵和偏置向量,fl(⋅)f^l(\cdot)fl(⋅) 表示网络的非线性激活函数,l=1,⋯ ,Ll=1,\cdots,Ll=1,⋯,L 即整个网络有L层。于是,整个网络的参数集合可用Θ={
Wl,bl}l=1L\Theta = \{ W^l,\mathbf b^l\}^L_{l=1}Θ={
Wl,bl}l=1L 表示。
对于给定训练集:(xi,yi)i=1K(\mathbf x_i, \mathbf y_i)^K_{i=1}(xi,yi)i=1K,其中xi∈Rn0,yi∈RnL\mathbf x_i \in \mathbb R^{n_0},\mathbf y_i \in \mathbb R^{n_L}xi∈Rn0,yi∈RnL,则Loss 函数可以表示为:
Loss=1K∑i=1KL(fΘ(xi),yi)(2) Loss=\frac{1}{K}\sum^K_{i=1}L(f_{\Theta}(\mathbf x_i),\mathbf y_i)\qquad(2) Loss=K1i=1∑KL(fΘ(xi),yi)(2)
其中,L(⋅)L(\cdot)L(⋅) 表示我们常用的优化目标函数,如:交叉熵用于分类(Classification)任务、最小平方差l2l_2l2用于回归(Regression)任务。
所谓输入扰动,就指:输入有一个很小的变化,引起的输出变化:
x→x+ξf(x)→f(x+ξ)So we define:P=∥f(x+ξ)−f(x)∥∥ξ∥(3) \mathbf x\rightarrow \mathbf x+\mathbf \xi \\ f(\mathbf x) \rightarrow f(\mathbf x +\mathbf \xi )\\ \text{So we define:}\\ P=\frac{\Vert f(\mathbf x +\mathbf \xi )-f(\mathbf x)\Vert}{\Vert \mathbf \xi \Vert} \qquad(3) x→x+ξf(x)→f(x+ξ)So we define:P=∥ξ∥∥f(x+ξ)−f(x)∥(3)
我们要考察输入扰动的影响,可通过扰动指数——PPP,定量分析。对于多层神经网络,其非线性的引入是由于非线性激活函数。对于常见的非线性函数,如:ReLU、maxout、maxpooling等,我们可以将它看作是分段线性函数,因此,对于 x\mathbf xx 的邻域来说,可看成是线性函数,如:ReLu。输入扰动发生在 x\mathbf xx 的邻域中,对于单层神经网络(未经激活函数)有以下关系:
∥f(x+ξ)−f(x)∥∥ξ∥=∥WΘ,x(x+ξ)+bΘ,x−WΘ,xx−bΘ,x∥∥ξ∥=∥WΘ,xξ∥∥ξ∥≤σ(WΘ,x)(4) \frac{\Vert f(\mathbf x +\mathbf \xi )-f(\mathbf x)\Vert}{\Vert \mathbf \xi \Vert} = \frac{\Vert W_{\Theta,x}(\mathbf x +\mathbf \xi )+\mathbf b_{\Theta,x}-W_{\Theta,x}\mathbf x -\mathbf b_{\Theta,x}\Vert}{\Vert \mathbf \xi \Vert}\\ =\frac{\Vert W_{\Theta,x} \xi \Vert}{\Vert \mathbf \xi \Vert} \le \sigma(W_{\Theta,x}) \qquad(4) ∥ξ∥