梯度消失、爆炸 簡記

CNN

梯度爆炸和梯度消失問題都是因為網絡太深,網絡權值更新不穩(wěn)定造成的,本質上是因為梯度反向傳播中的連乘效應。?

梯度消失的重點就在于在BP中,鏈式乘法如何會出現激活函數的導數這一項,正因為這一項與權重的乘積的大于1或小于1,不斷連乘,才出現了梯度的爆炸和消失。

假設每一層一個神經元,用的是\sigma 激活函數



由上圖發(fā)現,\sigma 的導數的最大值是0.25,如果網絡過深,出現過多的\sigma ’相乘之后就會使靠近輸入端的層的參數梯度趨于0,出現梯度消失。類似的激活函數還有tanh,如下圖所示,(tanh)’小于1。

影響

梯度消失造成的影響:會造成神經網絡中淺層網絡的參數梯度恒為0,參數無法更新。


措施

更換激活函數:可以考慮用relu激活函數取代\sigma 激活函數。因為relu在大于0部分,導數恒等于1。

? ?????????????????????relu?優(yōu)點:解決了梯度消失、爆炸的問題 ;?

? ???????????????????????????????????????????計算方便,計算速度快 ,加速了網絡的訓練?;?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 缺點:由于負數部分為0,導致一些神經元無法激活(通過設置小學習率部分解決)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 輸出不是以0為中心的

BatchNormalization:簡稱BN ,具有加速網絡收斂速度,提升訓練穩(wěn)定性的效果,Batchnorm本質上是解決反向傳播過程中的梯度問題。?BN通過規(guī)范化輸入數據改變數據分布,在前傳過程中消除梯度彌散。具體來說就是反向傳播中,經過層之間時梯度會乘以權重\omega 。BN就是通過對每一層的輸出規(guī)范為均值和方差一致的方法,消除了\omega 帶來的放大縮小的影響,進而解決梯度消失和爆炸的問題,或者可以理解為BN將輸出從飽和區(qū)拉倒了非飽和區(qū)。關于BatchNormalization的討論

梯度剪切:主要是針對梯度爆炸提出的,其思想是設置一個梯度剪切閾值,然后更新梯度的時候,如果梯度超過這個閾值,那么就將其強制限制在這個范圍之內。這可以防止梯度爆炸。?

殘差連接:skip connection能在后傳過程中更好地把梯度傳到更淺的層次中。

1、有人說是因為skip connection 直接映射下來的x反向傳播時,求導為1,避免了梯度消失(那難道不會爆炸嗎?)詳解殘差網絡

2、有人說其實是一種集成學習(ensemble),??為了佐證,作者進行如下驗證。對普通的 VGG 網絡,去掉任意一層,預測結果變成了隨機的(~10%),完全不可用。這個結果非常符合預期。但是,對于 ResNet, 除了去年前面的 downsampling 會對性能造成較大的影響外,其他層的缺失對網絡整體性能幾乎沒有影響。這一現象符合 ensemble 的假設——一個由多個基礎模型構成的 ensemble 模型,不會因為某個模型的缺失而受到重大性能損害。? ensemble--Residual Network起作用的一種解釋




RNN

RNN的時序結構決定了它存在梯度消失和爆炸的問題,本質上和DCNN相同,出現了(W_xx激活函數)項的累乘。避免措施是使用LSTM和GRU。具體參見文章:RNN梯度消失和爆炸的原因

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容