譜範數正則(Spectral Norm Regularization)的理解

田神發表於2018-10-30

近來,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]是從輸入擾動的角度來進行討論的。假設一個前饋網路的第 ll 層有如下關係:
xl=fl(Wlxl1+bl)(1) \mathbf x^l=f^l(W^l\mathbf x^{l-1}+\mathbf b^l)\qquad(1)
(1)中,xl\mathbf x^l 表示第 ll 層的輸出,xl1\mathbf x^{l-1} 表示第 ll 層的輸入,Wl,blW^l,\mathbf b^l 分別表示該層神經網路的引數矩陣和偏置向量,fl()f^l(\cdot) 表示網路的非線性啟用函式,l=1, ,Ll=1,\cdots,L 即整個網路有L層。於是,整個網路的引數集合可用Θ={Wl,bl}l=1L\Theta = \{ W^l,\mathbf b^l\}^L_{l=1} 表示。
對於給定訓練集:(xi,yi)i=1K(\mathbf x_i, \mathbf y_i)^K_{i=1},其中xiRn0,yiRnL\mathbf x_i \in \mathbb R^{n_0},\mathbf y_i \in \mathbb R^{n_L},則Loss 函式可以表示為:
Loss=1Ki=1KL(fΘ(xi),yi)(2) Loss=\frac{1}{K}\sum^K_{i=1}L(f_{\Theta}(\mathbf x_i),\mathbf y_i)\qquad(2)
其中,L()L(\cdot) 表示我們常用的優化目標函式,如:交叉熵用於分類(Classification)任務、最小平方差l2l_2用於迴歸(Regression)任務。
所謂輸入擾動,就指:輸入有一個很小的變化,引起的輸出變化:
xx+ξ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)
我們要考察輸入擾動的影響,可通過擾動指數——PP,定量分析。對於多層神經網路,其非線性的引入是由於非線性啟用函式。對於常見的非線性函式,如:ReLU、maxout、maxpooling等,我們可以將它看作是分段線性函式,因此,對於 x\mathbf x 的鄰域來說,可看成是線性函式,如:ReLu。輸入擾動發生在 x\mathbf x 的鄰域中,對於單層神經網路(未經啟用函式)有以下關係:
f(x+ξ)f(x)ξ=WΘ,x(x+ξ)+bΘ,xWΘ,xxbΘ,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)
其中,σ(WΘ,x)\sigma(W_{\Theta,x}) 是矩陣 WΘ,xW_{\Theta,x} 的譜範數,譜範數的定義為:
 A is a matrix, ARm×nσ(A)=maxξRm×n,ξ0Aξξ(5) \text{ A is a matrix, } A \in \mathbb R^{m\times n}\\ \sigma(A) = max_{\xi \in R^{m\times n},\xi \neq0} \frac{\Vert A \xi \Vert}{\Vert\xi\Vert} \qquad(5)
所謂譜範數,就是它所對應矩陣 AA 的最大奇異值(Singular Value)。
若選擇網路的啟用函式為ReLU,函式的作用相當於一個對角矩陣,其對角元素在輸入為正時,等於1;輸入為負時,等於0。於是,第ll 層的啟用函式可表示為對角矩陣:DΘ,xlRnl×nlD_{\Theta,x}^l \in \mathbb R^{n^l\times n^l}。由此,多層網路對映可表示為矩陣相乘,於是有:
y=WΘ,xx.WΘ,x=DΘ,xLWLDΘ,xL1WL1DΘ,x1W1(6) \mathbf y = W_{\Theta,x} \mathbf x \\ . \\ W_{\Theta,x}=D_{\Theta,x}^L W^L D_{\Theta,x}^{L-1} W^{L-1}\cdots D_{\Theta,x}^1 W^1 \qquad(6)
因此有:
σ(WΘ,x)σ(DΘ,xL)σ(WΘ,xL)σ(DΘ,xL1)σ(WΘ,xL1)σ(DΘ,x1)σ(WΘ,x1)l=1Lσ(Wl)(7) \sigma(W_{\Theta,x} )\le \sigma(D_{\Theta,x}^L)\sigma(W_{\Theta,x}^L)\sigma(D_{\Theta,x}^{L-1})\sigma(W_{\Theta,x}^{L-1})\cdots\sigma(D_{\Theta,x}^1)\sigma(W_{\Theta,x}^1)\le \prod_{l=1}^L \sigma(W^l)\qquad(7)
公式(7)給出了整個神經網路的擾動指數的上限,它是個層子網路譜範數的乘積。為限制擾動帶來的影響,可將譜範數作為正則項加在傳統的Loss中,於是尋優過程變為:
Θ=argminΘ(1Ki=1KL(fΘ(xi),yi)+λ2i=1Kσ(Wl)2)(8) \Theta = \arg\min_{\Theta}\left(\frac 1 K \sum_{i=1}^K L(f_{\Theta}(\mathbf x_i),\mathbf y_i) + \frac {\lambda}{2} \sum_{i=1}^K \sigma(W^l)^2 \right) \qquad(8)
(8)式通過懲罰各層的譜範數總和,以實現對整個網路的譜範數的限制。

二、譜範數正則項

在通過SGD(統計梯度下降)的方法求最優值時,需要(8)式對 Θ\Theta 求梯度,在實踐時,需要求出各層的最大奇異值,這將涉及大量的計算,我們可以用”冪迭代“法來近似它:
unWvn1vnWTunand σ(Wl)=u2v2(9) u_{n} \leftarrow W v_{n-1}\\ v_{n}\leftarrow W^T u_n\\ \text{and } \sigma(W^l) = \frac{\Vert u \Vert_2} {\Vert v \Vert_2} \qquad(9)
v0v_0 可以是一個隨機向量(比如:高斯向量),通過迭代,可得到譜範數的近似值。(9)式為什麼可以求出譜範數呢?[4]給出了一個推導過程,為本文的完整性,我在此重抄了一次。
A=WTWA=W^TW 是一個對稱陣,形狀為n×nn\times n,並可對角化,令其特徵根為: λ1, ,λn\lambda_1,\cdots,\lambda_n,它們對應的歸一化特徵向量為:η1, ,ηn\eta_1,\cdots,\eta_n,它們相互正交,模為1。這些特徵向量構成A的列向量空間的一個基。令:
u(0)=c1η1++cnηnAu(0)=A(c1η1++cnηn)=c1λ1η1++cnλnηnAAu(0)=AA(c1η1++cnηn)=c1λ12η1++cnλn2ηnAru(0)=Ar(c1η1++cnηn)=c1λ1rη1++cnλnrηn u^{(0)}=c_1\eta_1+\cdots+c_n\eta_n \\ Au^{(0)}=A(c_1\eta_1+\cdots+c_n\eta_n)=c_1\lambda_1\eta_1+\cdots+c_n\lambda_n\eta_n\\ AAu^{(0)}=AA(c_1\eta_1+\cdots+c_n\eta_n)=c_1\lambda_1^2\eta_1+\cdots+c_n\lambda_n^2\eta_n\\ \cdots \\ A^ru^{(0)}=A^r(c_1\eta_1+\cdots+c_n\eta_n)=c_1\lambda_1^r\eta_1+\cdots+c_n\lambda_n^r\eta_n
λ1\lambda_1 為最大者,有:
Aru(0)λ1r=c1η1++cn(λnλ1)rηnλkλ1<1,limrAru(0)λ1r=c1η1 \frac{A^ru^{(0)}}{\lambda_1^r}=c_1\eta_1+\cdots+c_n(\frac {\lambda_n} {\lambda_1})^r\eta_n \\ \because \frac{\lambda_k}{\lambda_1}\lt 1,\therefore \lim_{r\rightarrow\infty}\frac{A^ru^{(0)}}{\lambda_1^r}=c_1\eta_1

u=Aru(0)Aru(0)2, so.Au=AAru(0)Aru(0)2Ar+1c1η1Aru(0)2=λ1η1 u = \frac{A^ru^{(0)}}{\Vert A^ru^{(0)}\Vert_2},\text{ so}\\ . \\ Au=A\frac{A^ru^{(0)}}{\Vert A^ru^{(0)}\Vert_2}\approx \frac{A^{r+1}c_1\eta_1}{\Vert A^ru^{(0)}\Vert_2}=\lambda_1\eta_1
即:當r足夠大時,u=η1u=\eta_1 是最大特徵值對應的特徵向量。此時,uTAu=λ1u^TAu=\lambda_1。以上(9)式所表達的迭代過程就是產生uu的過程。
最後,譜正則項的實現演算法如下:
在這裡插入圖片描述

小結:

譜正則來自於一個樸素的直覺:區域性最小值處平坦,則泛化能力強。然後,[2]從前饋網路入手,匯出以矩陣相乘形式的近似網路函式,讓我們能夠用矩陣進行奇異值方法去分析,從而說明區域性平坦與奇異值之間的關係,最後,在此基礎上給出一個可行的正則項設計。
這個推導過程值得我們去學習。


參考文獻:
[1] 《LARGE SCALE GAN TRAINING FOR
HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(arXiv:1809.11096v1)
[2] Spectral Norm Regularization for Improving the Generalizability of Deep Learning, Yuchi Yoshida, National Institute of Informatics, 2017. 5, (arXiv: 1705.10941v1)
[3] Spectral Normalization for Generative Adversarial Networks, Takeru Miyato, Yuchi Yoshida, 2018.2(arXiv: 1802.05957v1)
[4] 蘇劍林. (2018, Oct 07). 《深度學習中的Lipschitz約束:泛化與生成模型 》[Blog post]. Retrieved from https://kexue.fm/archives/6051

相關文章