雪花台湾

模型優化之Weight Normalization

前言

之前介紹的BN[2]和LN[3]都是在數據的層面上做的歸一化,而這篇文章介紹的Weight Normalization(WN)是在權值的維度上做的歸一化。WN的做法是將權值向量 在其歐氏範數和其方向上解耦成了參數向量 和參數標量 後使用SGD分別優化這兩個參數。

WN也是和樣本量無關的,所以可以應用在batchsize較小以及RNN等動態網路中;另外BN使用的基於mini-batch的歸一化統計量代替全局統計量,相當於在梯度計算中引入了雜訊。而WN則沒有這個問題,所以在生成模型,強化學習等雜訊敏感的環境中WN的效果也要優於BN。

WN沒有一如額外參數,這樣更節約顯存。同時WN的計算效率也要優於要計算歸一化統計量的BN。

1. WN詳解

1.1 WN的計算

神經網路的一個節點計算可以表示為:

其中 是一個 -維的特徵向量, 是該神經節點的輸出,所以是一個標量。在得到損失值後,我們會根據損失函數的值使用SGD等優化策略更新 。WN提出的歸一化策略是將 分解為一個參數向量 和一個參數標量 ,分解方法為

上式中 表示 的歐氏範數。當 時,WN還原為普通的計算方法,所以WN的網路容量是要大於普通神經網路的。

圖1:權值向量的分解可視化

當我們將 固定為 時,我們只優化 ,這時候相當於只優化 的方向而保留其範數。當 固定為 時,這時候相當於只優化 的範數,而保留其方向,這樣為我們優化權值提供了更多可以選擇的空間,且解耦方向與範數的策略也能加速其收斂。

在優化 時,我們一般通過優化 的log級參數 來完成,即

的更新值可以通過SGD計算得到:

其中 為損失函數, 下的梯度值。

從上面WN的計算公式中我們可以看出WN並沒有引入新的參數,

1.2 WN的原理

1.1節的梯度更新公式也可以寫作:

推導方式如下:

倒數第二步的推導是因為 的方向向量。上面公式反應了WN兩個重要特徵:

  1. 表明WN會對權值梯度進行 的縮放;
  2. 表明WN會將梯度投影到一個遠離於 的方向。

這兩個特徵都會加速模型的收斂。

具體原因論文的說法比較複雜,其核心思想有兩點:1.由於 垂直於 ,所以 非常接近於垂直參數方向 ,這樣對於矯正梯度更新方向是非常有效的;2. 和梯度更新值中的雜訊量成正比,而 是和更新量成反比,所以當更新值中噪音較多時,更新值會變小,這說明WN有自穩定(self-stablize)的作用。這個特點使得我們可以在WN中使用比較大的學習率。(這是我對於論文的2.1節的比較主觀的個人理解,當初看的時候就非常頭疼,理解可能有偏差,希望各位讀者給出正確的批評指正。)

另一個角度從新權值的協方差矩陣出發的,假設 的協方差矩陣是 ,那麼 的協方差矩陣 ,當去掉 中的特徵值後我們發現新的 非常趨近於一個單位矩陣,這說明了 的主特徵向量(dominant eigenvector),說明WN有助於提升收斂速度。

1.3 BN和WN的關係

假設 分別為 的均值和方差,BN可以表示為:

當網路只有一層且輸入樣本服從均值為0,方差為1的獨立分布時,我們有 ,此時WN和BN等價。

1.4 WN的參數初始化

由於WN不像BN有規範化特徵尺度的作用,所以WN的初始化需要慎重。作者建議的初始化策略是:

  • 使用均值為0,標準差為0.05的正態分布進行初始化;
  • 和偏置 使用第一批訓練樣本的統計量進行初始化:

由於使用了樣本進行初始化,所以這種初始化方法不適用於RNN等動態網路。

1.5 Mean-Only BN

基於WN的動機,文章提出了Mean-Only BN。這種方法是一個只進行減均值而不進行除方差的BN,動機是考慮到BN的除方差操作會引入額外的雜訊,實驗結果表明WN+Mean-Only BN雖然比標準BN收斂得慢,但它們在測試集的精度要高於BN。

2. 總結

和目前主流歸一化方法不同的是,WN的歸一化操作作用在了權值矩陣之上。從其計算方法上來看,WN完全不像是一個歸一化方法,更像是基於矩陣分解的一種優化策略,它帶來了四點好處:

  1. 更快的收斂速度;
  2. 更強的學習率魯棒性;
  3. 可以應用在RNN等動態網路中;
  4. 對雜訊更不敏感,更適用在GAN,RL等場景中。

說WN不像歸一化的原因是它並沒有對得到的特徵範圍進行約束的功能,所以WN依舊對參數的初始值非常敏感,這也是WN一個比較嚴重的問題。

Reference

[1] Salimans T, Kingma D P. Weight normalization: A simple reparameterization to accelerate training of deep neural networks[C]//Advances in Neural Information Processing Systems. 2016: 901-909.

[2] Ba J L, Kiros J R, Hinton G E. Layer normalization[J]. arXiv preprint arXiv:1607.06450, 2016.

[3] Ioffe S, Szegedy C. Batch normalization: Accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint arXiv:1502.03167, 2015.


推薦閱讀:
相关文章