【知識】神經網絡中的參數初始化


我們知道,訓練神經網絡的時候需先給定一個初試值,然后才能通過反向傳播等方法進行參數更新。所以參數的初始化也是門學問。

全0初始化:不能這么做!!!

為什么呢?因為這樣做會導致所有參數都無法被更新。
網絡上有好多解釋,感覺都不夠簡潔,其實這個原理很簡單。
我們想象一個三層的神經網絡,節點分別為\(z_1,z_2,z_3;\,z_4,z_5;\,z_6\),其中\(z_i=f(a_i)\,,i=4,5,6\)f為激活函數。
那么前向傳播有:

\[z_6=f(w_{46}z_4+w_{56}z_5+b)\\ z_4=f(w_{14}z_1+w_{24}z_2+w_{34}z_3) \]

我們對\(w_{46}\)\(w_{14}\)求導,反向傳播有:

\[\frac{\partial z_6}{\partial w_{64}}=\frac{\partial z_6}{\partial a_6}\frac{\partial a_6}{\partial w_{46}}=\frac{\partial z_6}{\partial a_6}* z_4\\ \frac{\partial z_6}{\partial w_{14}}=\frac{\partial z_6}{\partial a_6} \frac{\partial a_6}{\partial z_4} \frac{\partial z_4}{\partial a_4} \frac{\partial a_4}{\partial w_{14}} = \frac{\partial z_6}{\partial a_6}*w_{46}*\frac{\partial z_4}{\partial a_4}*z_1 \]

因為全0初始化,所以除了\(z_1,z_2,z_3\)外的\(z_4,z_5,z_6\)都為0,所有的參數w也都為0。於是,無論激活函數是relu還是sigmoid,隱層到輸出層的參數梯度和輸入層到隱層的參數梯度都為0:

\[\frac{\partial z_6}{\partial w_{64}}=\frac{\partial z_6}{\partial a_6}* z_4=\frac{\partial z_6}{\partial a_6}* 0=0\\ \frac{\partial z_6}{\partial w_{14}}= \frac{\partial z_6}{\partial a_6}*w_{46}*\frac{\partial z_4}{\partial a_4}*z_1=\frac{\partial z_6}{\partial a_6}*0*\frac{\partial z_4}{\partial a_4}*z_1=0 \]

所以不能全0初始化。
而LR相當於只有一層網絡,沒有隱層,所以全零初始化也並不影響其訓練。(每個參數的梯度都由輸入\(x_i\)決定更新)
另外,推廣一下,只有某一層的參數為全0初始化也並不影響訓練,連續兩層的參數全0初始化,就會導致這兩層,以及這兩層之前更靠近輸入層的參數們都無法得到更新。

全相同常數初始化:不能這么做!!!

這樣的話,我們可以還是想象[3,2,1]的DNN。隱層中,兩個節點從節點輸出值,到節點輸入,節點輸入權值完全相同,那么更新的時候,其梯度也完全相同,那么無論進行多少輪訓練,這兩個節點都完全等價,無論這層有多個節點,都相當於只有一個節點,剩下的參數都浪費了,而且網絡寬度只有一個節點。
所以推廣一下,每層的參數都不能是相同的常數。(第一層全a,第二層全b這樣也不可以)。即網絡不能是對稱的。
所以,我們對參數的初始化,需要隨機性。

可采用方法:

將參數們按高斯分布或者均勻分布初始化成一個絕對值較小的數。
絕對值過小,容易產生梯度消失問題,絕對值過大,則容易產生梯度爆炸問題。
在使用正態分布初始化參數時,參數量n越大,方差越大,越可能產生訓練速度慢或梯度消失問題。
所以我們可以通過w = np.random.randn(n) / sqrt(n),來降低初始化參數方差,進而提高訓練速度,預防梯度消失。

Xavier初始化

Xavier初始化可以幫助減少梯度彌散問題, 使得信號在神經網絡中可以傳遞得更深。是最為常用的神經網絡權重初始化方法。
假設:激活函數關於0對稱,且主要針對於全連接神經網絡。適用於tanh和softsign。softsign與tanh的比較
使用條件:條件:正向傳播時,激活值的方差保持不變;反向傳播時,關於狀態值的梯度的方差保持不變。
算法根據輸入和輸出神經元的數量自動決定初始化的范圍: 定義參數所在的層的輸入維度為n,輸出維度為m,那么參數將從\([-{\sqrt{6\over m+n}},{\sqrt{6\over m+n}}]\)均勻分布中采樣。
具體參考深度學習之參數初始化(一)——Xavier初始化

He初始化

條件:正向傳播時,狀態值的方差保持不變;反向傳播時,關於激活值的梯度的方差保持不變。
具體參考深度學習之參數初始化(二)——Kaiming初始化

Reference

https://www.cnblogs.com/dengdan890730/p/5865558.html
https://www.cnblogs.com/marsggbo/p/7462682.html
https://www.cnblogs.com/makefile/p/init-weight.html?utm_source=itdadao&utm_medium=referral Xavier初始化公式推導
https://blog.csdn.net/xxy0118/article/details/84333635 Xavier初始化和He初始化


免責聲明!

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



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