神經(jīng)網(wǎng)絡的初始化方法總結(jié) | 又名“如何選擇合適的初始化方法”
點擊下方“AI算法與圖像處理”,一起進步!
重磅干貨,第一時間送達
前言?本文介紹了為什么初始化很重要,總結(jié)了常用的幾種初始化方法:全零或等值初始化、正態(tài)初始化、均勻初始化、Xavier初始化、He初始化和Pre-trained初始化,并介紹了幾個還活躍的幾個初始化方向:數(shù)據(jù)相關(guān)初始化、稀疏權(quán)重矩陣和隨機正交矩陣初始化。
為什么初始化很重要
1.?全零或等值初始化
由于初始化的值全都相同,每個神經(jīng)元學到的東西也相同,將導致“對稱性(Symmetry)”問題。
?
2.?正態(tài)初始化(Normal Initialization)
均值為零,標準差設置一個小值。
這樣的做好的好處就是有相同的偏差,權(quán)重有正有負。比較合理。
例:2012年AlexNet使用“均值為零、標準差設置為0.01、偏差為1的高斯(正常)噪聲進行初始化”的初始化方法。然而,這種正常的隨機初始化方法不適用于訓練非常深的網(wǎng)絡,尤其是那些使用 ReLU激活函數(shù)的網(wǎng)絡,因為之前提到的梯度消失和爆炸問題。
?
3.?均勻初始化(Uniform Initialization)
均勻分布的區(qū)間通常為【-1/sqrt(fan_in),1/sqrt(fan_in)】
其中fan_in表示輸入神經(jīng)元的數(shù)量,fan_out表示輸出神經(jīng)元的數(shù)量。

?
4.?Xavier Initialization
來自論文《Understanding the difficulty of training deep feedforward neural networks》
根據(jù)sigmoid函數(shù)圖像的特點

如果初始化值很小,那么隨著層數(shù)的傳遞,方差就會趨于0,此時輸入值也變得越來越小,在sigmoid上就是在0附近,接近于線性,失去了非線性。
如果初始值很大,那么隨著層數(shù)的傳遞,方差會迅速增加,此時輸入值變得很大,而sigmoid在大輸入值寫倒數(shù)趨近于0,反向傳播時會遇到梯度消失的問題。
針對這個問題,Xavier 和 Bengio提出了“Xavier”初始化,它在初始化權(quán)重時考慮了網(wǎng)絡的大?。ㄝ斎牒洼敵鰡卧臄?shù)量)。這種方法通過使權(quán)重與前一層中單元數(shù)的平方根成反比來確保權(quán)重保持在合理的值范圍內(nèi)。
Xavier 的初始化有兩種變體。
Xavier Normal:正態(tài)分布的均值為0、方差為sqrt( 2/(fan_in + fan_out) )。
Xavier Uniform:均勻分布的區(qū)間為【-sqrt( 6/(fan_in + fan_out)) , sqrt( 6/(fan_in + fan_out)) 】。
Xavier 初始化適用于使用tanh、sigmoid為激活函數(shù)的網(wǎng)絡。
5.?He Initialization
來自論文《Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification》
激活函數(shù)的選擇最終在決定初始化方法的有效性方面發(fā)揮著重要作用。激活函數(shù)是可微的,并將非線性特性引入神經(jīng)網(wǎng)絡,這對于解決機器學習和深度學習旨在解決的復雜任務至關(guān)重要。ReLU和leaky ReLU是常用的激活函數(shù),因為它們對消失/爆炸梯度問題相對魯棒。
Xavier在tanh函數(shù)上表現(xiàn)可以,但對 ReLU 等激活函數(shù)效果不好,何凱明引入了一種更魯棒的權(quán)重初始化方法--He Initialization。
He Initialization也有兩種變體:
He Normal:正態(tài)分布的均值為0、方差為sqrt( 2/fan_in )。
He Uniform:均勻分布的區(qū)間為【-sqrt( 6/fan_in) , sqrt(6/fan_in) 】
?He?Initialization適用于使用ReLU、Leaky ReLU這樣的非線性激活函數(shù)的網(wǎng)絡。
He?Initialization和Xavier?Initialization?兩種方法都使用類似的理論分析:它們?yōu)閺闹刑崛〕跏紖?shù)的分布找到了很好的方差。該方差適用于所使用的激活函數(shù),并且在不明確考慮分布類型的情況下導出。

圖來自何凱明的論文。
論文展示了何凱明改進的初始化策略(紅色)如何比 (P)ReLU 的 Xavier 方法(藍色)更快地降低錯誤率。
?
有關(guān) Xavier 和 He 初始化方法的證明,請參閱 Pierre Ouannes 的文章《如何初始化深度神經(jīng)網(wǎng)絡?Xavier 和 Kaiming 初始化》。
文章鏈接:https://pouannes.github.io/blog/initialization/
?
6.?Pre-trained
使用預訓練的權(quán)重作為初始化,相比于其它初始化,收斂速度更快,起點更好。
?
除了以上的初始化方法外,還包括有LeCun Initialization。方法跟He Initialization和Xavier Initialization類似,但基本沒怎么看見用,這里就不列出來了。
?
權(quán)重初始化仍然是一個活躍的研究領域。出現(xiàn)了幾個有趣的研究項目,包括數(shù)據(jù)相關(guān)初始化、稀疏權(quán)重矩陣和隨機正交矩陣初始化。
數(shù)據(jù)相關(guān)初始化
地址:https://arxiv.org/abs/1511.06856
稀疏權(quán)重矩陣初始化
地址:https://openai.com/blog/block-sparse-gpu-kernels/
隨機正交矩陣初始化
地址:https://arxiv.org/abs/1312.6120
?
參考資料
1.?https://medium.com/comet-ml/selecting-the-right-weight-initialization-for-your-deep-neural-network-780e20671b22
2.?https://medium.com/analytics-vidhya/weights-initialization-in-neural-network-d962ac438bdb
3.?Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification?He, K. et al. (2015)
4.?Understanding the difficulty of training deep feedforward neural networks
交流群
歡迎加入公眾號讀者群一起和同行交流,目前有美顏、三維視覺、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群
個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公眾號后臺回復:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公眾號后臺回復:c++,即可下載。歷經(jīng)十年考驗,最權(quán)威的編程規(guī)范!
下載3 CVPR2021 在「AI算法與圖像處理」公眾號后臺回復:CVPR,即可下載1467篇CVPR?2020論文 和 CVPR 2021 最新論文

