参数初始化
1. 前向傳播與反向傳播
參考:https://medium.com/usf-msds/deep-learning-best-practices-1-weight-initialization-14e5c0295b94
? ? ? ? ? ?https://www.cnblogs.com/shine-lee/p/11809979.html
? ? ? ? ? ?https://www.cnblogs.com/shiyublog/p/10542682.html
所以,激活函數的偏導、權重矩陣、當前層的輸入(前一層的輸出),這些項的取值均會對偏導數產生影響,偏導數為這些因子項共同作用的結果,特別地:
2. 梯度消失與梯度爆炸的原理
梯度為偏導數構成的向量。
損失函數收斂至極小值時,梯度為0(接近0),損失函數不再下降。我們不希望在抵達極小值前,梯度就為0了,也不希望下降過程過于震蕩,甚至不收斂。梯度消失與梯度爆炸分別對應這2種現象,
梯度消失(vanishing gradients):指的是在訓練過程中,梯度(偏導)過早接近于0的現象,導致(部分)參數一直不再更新,整體上表現得像損失函數收斂了,實際上網絡尚未得到充分的訓練。
梯度爆炸(exploding gradients):指的是在訓練過程中,梯度(偏導)過大甚至為NAN(not a number)的現象,導致損失劇烈震蕩,甚至發散(divergence)。
由上一節的分析可知,在梯度(偏導)計算中,主要的影響因素來自激活函數的偏導、當前層的輸入(前一層的輸出)、以及權重的數值等,這些因子連續相乘,帶來的影響是指數級的。訓練階段,權重在不斷調整,每一層的輸入輸出也在不斷變化,梯度消失和梯度爆炸可能發生在訓練的一開始、也可能發生在訓練的過程中。
因子項中當前層的輸入僅出現一次,下面著重看一下激活函數和權重的影響。
2.1 激活函數的影響
2.2 權重矩陣的影響
2.3 不良初始化
至此,一些權重不良初始化導致的問題就不難解釋了,
-
過小,導致梯度消失
-
過大,導致梯度爆炸
-
全常數初始化,即所有權重WW都相同,則z(2)=W1xz(2)=W1x相同,導致后面每一層的輸入和輸出均相同,即aa和zz相同,回到反向傳播的公式,每層的偏導相同,進一步導致每層的權重會向相同的方向同步更新,如果學習率只有一個,則每層更新后的權重仍然相同,每層的效果等價于一個神經元,這無疑極大限制了網絡的能力。
-
特別地,全0初始化,根據上式,如果激活函數g(0)=0g(0)=0,如ReLU,則初始狀態所有激活函數的輸入zz和輸出aa都為0,反向傳播時所有的梯度為0,權重不會更新,一直保持為0;如果激活函數g(0)≠0g(0)≠0,則初始狀態激活層的輸入為0,但輸出a≠0a≠0,則權重會從最后一層開始逐層向前更新,改變全0的狀態,但是每層權重的更新方向仍相同,同上。
3. 權重初始化方法
參考:https://www.cnblogs.com/shine-lee/p/11908610.html
Keras 各層權重隨機初始值的方法:https://keras.io/zh/initializers/
3.1 Xavier Initialization
- Xavier Glorot & Yoshua Bengio: http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf
- 適用條件:使用關于0的對稱并且值域是(-1,1)的激活函數
- Xavier初始化將一個層的權值設置為從隨機均勻分布中取值,這個分布是有界的
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
- n?是輸入該層的網絡連接的數量(fan-in),n?+?是從該層輸出的網絡連接的數量(fan-out)
- Xavier初始化能夠維持激活的方差和反向傳播的梯度
- 在他們的實驗中,Xavier初始化使5層網絡在各層之間保持幾乎相同的參數梯度,相反,使用正態分布初始化會導致某些層的梯度趨于0
- 為了進一步闡明這一點,作者還演示了使用Xavier初始化的網絡在CIFAR-10圖像分類任務中取得了更快的收斂速度和更高的精度
3.2 Kaiming Initialization
當使用關于0的對稱并且值域是(-1,1)的激活函數式時,我們希望每層的激活輸出均值為0,平均標準差為1左右,這是我們自己的方法和Xavier都能做到的,但如果使用的是ReLU激活函數呢? 以同樣的方式縮放初始權重值是否有效?
- Kaiming He et:propose their own initialization scheme
- 該方案專為使用這類非對稱、非線性激活的激活函數網絡而設計
- 在2015年的論文中證明,如果采用以下輸入權值初始化策略,深度網絡(例如22層的CNN)會更早地收斂:
- 用從標準正態分布創建一個張量;
- 將每個隨機選擇的數乘以√2/√n,其中n為fan-in ;
- Bias矩陣為0
?
?
總結
- 上一篇: DIET:Dual Intent and
- 下一篇: 编程题:顺时针打印矩阵(不一定是方阵)