神經網絡--參數初始化


1. 參數初始化的目的是什么?

為了讓神經網絡在訓練過程中學習到有用的信息,這意味着參數梯度不應該為0。而我們知道在全連接的神經網絡中,參數梯度和反向傳播得到的狀態梯度以及入激活值有關。那么參數初始化應該滿足以下兩個條件:

  • 初始化必要條件一:各層激活值不會出現飽和現象;
  • 初始化必要條件二:各層激活值不為0。

2. 把參數都初始化為0會是比較好的初始化?

這樣做其實會帶來一個問題,經過正向傳播和反向傳播后,參數的不同維度之間經過相同的更新,迭代的結果是不同維度的參數是一樣的,嚴重地影響了模型的性能。
一般只在訓練SLP/邏輯回歸模型時才使用0初始化所有參數, 深度模型都不會使用0初始化所有參數。

3. 隨機生成小的隨機數

將參數初始化為小的隨機數。其中randn從均值為0,標准差是1的高斯分布中取樣,這樣,參數的每個維度來自一個多維的高斯分布。
需要注意的是參數初始值不能取得太小,因為小的參數在反向傳播時會導致小的梯度,對於深度網絡來說,也會產生梯度彌散問題,降低參數的收斂速度。

缺點:

一個神經元輸出的方差會隨着輸入神經元數量的增多而變大。對於有n個輸入單元的神經元來說,考慮χ2分布,每個輸入的方差是1/n時,總的方差是1。

4. 標准初始化

權重參數初始化從區間均勻隨機取值。即從(-1/√d,1/√d)均勻分布中生成當前神經元的權重,其中d為每個神經元的輸入數量。

為什么要除以d?

這樣可以確保神經元的輸出有相同的分布,提高訓練的收斂速度。

優點:

隱層的狀態的均值為0,方差為常量1/3,和網絡的層數無關,這意味着對於sigmoid函數來說,自變量落在有梯度的范圍內。

5. Xavier初始化

優秀的初始化應該使得各層的激活值和狀態梯度的方差在傳播過程中的方差保持一致。不然更新后的激活值方差發生改變,造成數據的不穩定。

假設:

  • 輸入的每個特征方差一樣:Var(x);
  • 激活函數對稱:這樣就可以假設每層的輸入均值都是0;
  • f′(0)=1;
  • 初始時,狀態值落在激活函數的線性區域:f′(sik)≈1。

應用:

由於ReLU無法控制數據幅度,所以可以將其與Xavier初始化搭配使用。

6. 偏置初始化

通常偏置項初始化為0,或比較小的數,如:0.01。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM