CNN
梯度爆炸和梯度消失問題都是因為網絡太深,網絡權值更新不穩(wěn)定造成的,本質上是因為梯度反向傳播中的連乘效應。?
梯度消失的重點就在于在BP中,鏈式乘法如何會出現激活函數的導數這一項,正因為這一項與權重的乘積的大于1或小于1,不斷連乘,才出現了梯度的爆炸和消失。


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

影響
梯度消失造成的影響:會造成神經網絡中淺層網絡的參數梯度恒為0,參數無法更新。
措施
更換激活函數:可以考慮用
激活函數取代
激活函數。因為
在大于0部分,導數恒等于1。
? ?????????????????????
?優(yōu)點:解決了梯度消失、爆炸的問題 ;?
? ???????????????????????????????????????????計算方便,計算速度快 ,加速了網絡的訓練?;?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 缺點:由于負數部分為0,導致一些神經元無法激活(通過設置小學習率部分解決)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 輸出不是以0為中心的
BatchNormalization:簡稱BN ,具有加速網絡收斂速度,提升訓練穩(wěn)定性的效果,Batchnorm本質上是解決反向傳播過程中的梯度問題。?BN通過規(guī)范化輸入數據改變數據分布,在前傳過程中消除梯度彌散。具體來說就是反向傳播中,經過層之間時梯度會乘以權重
。BN就是通過對每一層的輸出規(guī)范為均值和方差一致的方法,消除了
帶來的放大縮小的影響,進而解決梯度消失和爆炸的問題,或者可以理解為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相同,出現了(
x激活函數)項的累乘。避免措施是使用LSTM和GRU。具體參見文章:RNN梯度消失和爆炸的原因