1. 爲什麼要選擇合適的權重初始化
在訓練一個神經網絡模型之前,我們需要對模型中的權重進行初始化。這時,選擇一個合適權重初始化方法尤爲重要,一個好的權重初始化方法能夠加速模型收斂減少訓練時間。
2. 合適的初始化方法應該具備哪些條件
- 早期標準
- 各層激活值不會出現飽和現象(早期激活函數主要以Sigmoid爲主)。
- 各層激活值不爲0。
- Glorot條件
- 前向過程中,各層激活值方差不變。
- 反向過程中,各層梯度值方差不變。
3.常用的幾種權重初始化方法
- 零初始化
- 隨機初始化
- Xavier初始化
- He 初始化
- 預訓練權重
3.1 零初始化
零初始化將所有的權重設爲0。將所有的權重設爲0會出現“對稱問題”,也就是每個神經元學到的東西都一樣最終導致神經網絡訓練失敗。
3.2 隨機初始化
隨機初始化從一些分佈中隨機採樣若干個小值賦值給權重。主要目的是防止出現零初始化中的對稱問題。
常用的幾個分佈:
- 均勻分佈
- 高斯分佈
- 截斷正態分佈
3.3
隨機初始化方法採用從均勻分佈和高斯分佈中隨機採樣值,那麼均勻分佈的上界和下界分別取什麼值比較好?高斯分佈的方差該怎麼取值?Xavier初始化在保證每一層激活值具有相同方差的前提下,推導出了參考值。
- 均勻分佈
- 正態分佈
3.4
Xavier初始化比較適合於tanh激活函數,不太適用於ReLU激活函數。目前,ReLU激活函數是最常用的激活函數。針對ReLU激活函數,何愷明等人提出了He初始化又稱爲MSRA初始化。論文中提到Xavier初始化和He初始化的最大區別在於:1.Xavier初始化只考慮線性情況,而He初始化考慮了非線性情況;2.二者計算得到的標準差不同。
-
均勻分佈
-
正態分佈
3.5預訓練權重初始化
一般情況下,大家沒有那麼多算力和時間從零開始訓練一個大型深度神經網絡,此時我們一般會使用別人在一些大數據集上訓練好的模型在自己數據集上進行fine-tune。當然此方法僅適用於已經存在的深度學習模型,自己設計的模型還是需要Xavier初始化和He初始化權重從零開始訓練。
針對需要從零開始訓練比較深的模型,提供了一個可行的方法:先從零訓練一個比較淺的模型,然後將比較淺模型的部分權重賦值給比較深模型的權重。
4. 實驗對比
吳恩達老師在它的課程中做了一組實驗來驗證不同初始化對結果的影響。
- 實驗內容
對三層全連接模型( FC10-FC5-FC1)採用不同初始化方法,並觀察不同初始化方法對最終二分類問題結果的影響。
- 輸入數據
使用sklearn合成環狀數據,其中環狀數據主要包含兩類,300個訓練樣本,100個測試樣本。數據分佈圖如圖一所示:
- 實驗
本次實驗採用三層全連接網絡,初始學習率均採用,迭代次數15000次.
-
實驗結果
表1 四種初始化測試集準確率對比 初始化方法 測試集準確率 零初始化 0.5 隨機初始化 0.81 Xavier初始化 0.96 He初始化 0.97 四種初始化方法,損失下降情況如圖2所示:
圖2 四種初始化結果損失下降情況
結論: 從測試集準確率和損失下降情況來看,Xavier初始化和He初始化方法都是非常優秀的初始化方法。二者適用的激活函數不同,Xavier初始化比較適合tanh激活函數而He初始化比較適合ReLU激活函數。
5. 參考文獻
- [1] Glorot X, Bengio Y. Understanding the difficulty of training deep feedforward neural networks[C]. international conference on artificial intelligence and statistics, 2010: 249-256.
- [2] He K, Zhang X, Ren S, et al. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification[C]. international conference on computer vision, 2015: 1026-1034.
- [3] Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image
recognition[C]. Proceedings of the international conference on learning representations,
2015. - [4]Andrew Ng, https://www.deeplearning.ai/deep-learning-specialization/
- [5]https://blog.csdn.net/xxy0118/article/details/84333635