近來,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]是從輸入擾動的角度來進行討論的。假設一個前饋網路的第 l l l 層有如下關係:
x l = f l ( W l x l − 1 + b l ) ( 1 )
\mathbf x^l=f^l(W^l\mathbf x^{l-1}+\mathbf b^l)\qquad(1)
x l = f l ( W l x l − 1 + b l ) ( 1 )
(1)中,x l \mathbf x^l x l 表示第 l l l 層的輸出,x l − 1 \mathbf x^{l-1} x l − 1 表示第 l l l 層的輸入,W l , b l W^l,\mathbf b^l W l , b l 分別表示該層神經網路的引數矩陣和偏置向量,f l ( ⋅ ) f^l(\cdot) f l ( ⋅ ) 表示網路的非線性啟用函式,l = 1 , ⋯  , L l=1,\cdots,L l = 1 , ⋯ , L 即整個網路有L層。於是,整個網路的引數集合可用Θ = { W l , b l } l = 1 L \Theta = \{ W^l,\mathbf b^l\}^L_{l=1} Θ = { W l , b l } l = 1 L 表示。
對於給定訓練集:( x i , y i ) i = 1 K (\mathbf x_i, \mathbf y_i)^K_{i=1} ( x i , y i ) i = 1 K ,其中x i ∈ R n 0 , y i ∈ R n L \mathbf x_i \in \mathbb R^{n_0},\mathbf y_i \in \mathbb R^{n_L} x i ∈ R n 0 , y i ∈ R n L ,則Loss 函式可以表示為:
L o s s = 1 K ∑ i = 1 K L ( f Θ ( x i ) , y i ) ( 2 )
Loss=\frac{1}{K}\sum^K_{i=1}L(f_{\Theta}(\mathbf x_i),\mathbf y_i)\qquad(2)
L o s s = K 1 i = 1 ∑ K L ( f Θ ( x i ) , y i ) ( 2 )
其中,L ( ⋅ ) L(\cdot) L ( ⋅ ) 表示我們常用的優化目標函式,如:交叉熵用於分類(Classification)任務、最小平方差l 2 l_2 l 2 用於迴歸(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 )
我們要考察輸入擾動的影響,可通過擾動指數 ——P P P ,定量分析。對於多層神經網路,其非線性的引入是由於非線性啟用函式。對於常見的非線性函式,如:ReLU、maxout、maxpooling等,我們可以將它看作是分段線性函式,因此,對於 x \mathbf x x 的鄰域來說,可看成是線性函式,如:ReLu。輸入擾動發生在 x \mathbf x x 的鄰域中,對於單層神經網路(未經啟用函式)有以下關係:
∥ f ( x + ξ ) − f ( x ) ∥ ∥ ξ ∥ = ∥ W Θ , x ( x + ξ ) + b Θ , x − W Θ , x x − 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)
∥ ξ ∥ ∥ f ( x + ξ ) − f ( x ) ∥ = ∥ ξ ∥ ∥ W Θ , x ( x + ξ ) + b Θ , x − W Θ , x x − b Θ , x ∥ = ∥ ξ ∥ ∥ W Θ , x ξ ∥ ≤ σ ( W Θ , x ) ( 4 )
其中,σ ( W Θ , x ) \sigma(W_{\Theta,x}) σ ( W Θ , x ) 是矩陣 W Θ , x W_{\Theta,x} W Θ , x 的譜範數,譜範數的定義為:
A is a matrix, A ∈ R m × n σ ( A ) = m a x ξ ∈ R m × n , ξ ≠ 0 ∥ A ξ ∥ ∥ ξ ∥ ( 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)
A is a matrix, A ∈ R m × n σ ( A ) = m a x ξ ∈ R m × n , ξ ̸ = 0 ∥ ξ ∥ ∥ A ξ ∥ ( 5 )
所謂譜範數,就是它所對應矩陣 A A A 的最大奇異值(Singular Value)。
若選擇網路的啟用函式為ReLU,函式的作用相當於一個對角矩陣,其對角元素在輸入為正時,等於1;輸入為負時,等於0。於是,第l l l 層的啟用函式可表示為對角矩陣:D Θ , x l ∈ R n l × n l D_{\Theta,x}^l \in \mathbb R^{n^l\times n^l} D Θ , x l ∈ R n l × n l 。由此,多層網路對映可表示為矩陣相乘,於是有:
y = W Θ , x x . W Θ , x = D Θ , x L W L D Θ , x L − 1 W L − 1 ⋯ D Θ , x 1 W 1 ( 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)
y = W Θ , x x . W Θ , x = D Θ , x L W L D Θ , x L − 1 W L − 1 ⋯ D Θ , x 1 W 1 ( 6 )
因此有:
σ ( W Θ , x ) ≤ σ ( D Θ , x L ) σ ( W Θ , x L ) σ ( D Θ , x L − 1 ) σ ( W Θ , x L − 1 ) ⋯ σ ( D Θ , x 1 ) σ ( W Θ , x 1 ) ≤ ∏ l = 1 L σ ( W l ) ( 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)
σ ( W Θ , x ) ≤ σ ( D Θ , x L ) σ ( W Θ , x L ) σ ( D Θ , x L − 1 ) σ ( W Θ , x L − 1 ) ⋯ σ ( D Θ , x 1 ) σ ( W Θ , x 1 ) ≤ l = 1 ∏ L σ ( W l ) ( 7 )
公式(7)給出了整個神經網路的擾動指數的上限,它是個層子網路譜範數的乘積。為限制擾動帶來的影響,可將譜範數作為正則項加在傳統的Loss中,於是尋優過程變為:
Θ = arg min Θ ( 1 K ∑ i = 1 K L ( f Θ ( x i ) , y i ) + λ 2 ∑ i = 1 K σ ( W l ) 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)
Θ = arg Θ min ( K 1 i = 1 ∑ K L ( f Θ ( x i ) , y i ) + 2 λ i = 1 ∑ K σ ( W l ) 2 ) ( 8 )
(8)式通過懲罰各層的譜範數總和,以實現對整個網路的譜範數的限制。
二、譜範數正則項
在通過SGD(統計梯度下降)的方法求最優值時,需要(8)式對 Θ \Theta Θ 求梯度,在實踐時,需要求出各層的最大奇異值,這將涉及大量的計算,我們可以用”冪迭代“法來近似它:
u n ← W v n − 1 v n ← W T u n and σ ( W l ) = ∥ u ∥ 2 ∥ v ∥ 2 ( 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)
u n ← W v n − 1 v n ← W T u n and σ ( W l ) = ∥ v ∥ 2 ∥ u ∥ 2 ( 9 )
v 0 v_0 v 0 可以是一個隨機向量(比如:高斯向量),通過迭代,可得到譜範數的近似值。(9)式為什麼可以求出譜範數呢?[4]給出了一個推導過程,為本文的完整性,我在此重抄了一次。
設A = W T W A=W^TW A = W T W 是一個對稱陣,形狀為n × n n\times n n × n ,並可對角化,令其特徵根為: λ 1 , ⋯  , λ n \lambda_1,\cdots,\lambda_n λ 1 , ⋯ , λ n ,它們對應的歸一化特徵向量為:η 1 , ⋯  , η n \eta_1,\cdots,\eta_n η 1 , ⋯ , η n ,它們相互正交,模為1。這些特徵向量構成A的列向量空間的一個基。令:
u ( 0 ) = c 1 η 1 + ⋯ + c n η n A u ( 0 ) = A ( c 1 η 1 + ⋯ + c n η n ) = c 1 λ 1 η 1 + ⋯ + c n λ n η n A A u ( 0 ) = A A ( c 1 η 1 + ⋯ + c n η n ) = c 1 λ 1 2 η 1 + ⋯ + c n λ n 2 η n ⋯ A r u ( 0 ) = A r ( c 1 η 1 + ⋯ + c n η n ) = c 1 λ 1 r η 1 + ⋯ + c n λ n r η 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
u ( 0 ) = c 1 η 1 + ⋯ + c n η n A u ( 0 ) = A ( c 1 η 1 + ⋯ + c n η n ) = c 1 λ 1 η 1 + ⋯ + c n λ n η n A A u ( 0 ) = A A ( c 1 η 1 + ⋯ + c n η n ) = c 1 λ 1 2 η 1 + ⋯ + c n λ n 2 η n ⋯ A r u ( 0 ) = A r ( c 1 η 1 + ⋯ + c n η n ) = c 1 λ 1 r η 1 + ⋯ + c n λ n r η n
令 λ 1 \lambda_1 λ 1 為最大者,有:
A r u ( 0 ) λ 1 r = c 1 η 1 + ⋯ + c n ( λ n λ 1 ) r η n ∵ λ k λ 1 < 1 , ∴ lim r → ∞ A r u ( 0 ) λ 1 r = c 1 η 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
λ 1 r A r u ( 0 ) = c 1 η 1 + ⋯ + c n ( λ 1 λ n ) r η n ∵ λ 1 λ k < 1 , ∴ r → ∞ lim λ 1 r A r u ( 0 ) = c 1 η 1
令
u = A r u ( 0 ) ∥ A r u ( 0 ) ∥ 2 , so . A u = A A r u ( 0 ) ∥ A r u ( 0 ) ∥ 2 ≈ A r + 1 c 1 η 1 ∥ A r u ( 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
u = ∥ A r u ( 0 ) ∥ 2 A r u ( 0 ) , so . A u = A ∥ A r u ( 0 ) ∥ 2 A r u ( 0 ) ≈ ∥ A r u ( 0 ) ∥ 2 A r + 1 c 1 η 1 = λ 1 η 1
即:當r足夠大時,u = η 1 u=\eta_1 u = η 1 是最大特徵值對應的特徵向量。此時,u T A u = λ 1 u^TAu=\lambda_1 u T A u = λ 1 。以上(9)式所表達的迭代過程就是產生u u u 的過程。
最後,譜正則項的實現演算法如下:
小結:
譜正則來自於一個樸素的直覺:區域性最小值處平坦,則泛化能力強。然後,[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