目錄
1.梯度更新
在處理複雜任務上,深度網絡比淺層網絡具有更好的效果。但是,目前優化神經網絡的方法都是基於反向傳播的思想,即根據損失函數計算的誤差通過梯度反向傳播的方式,指導深度網絡權值的更新優化。
深度神經網絡可看做是複合的非線性多元函數,
優化深度網絡就是爲了尋找到合適的權值,滿足取得極小值點。而尋找極小值,通常採用梯度下降法。
2.梯度消失、梯度爆炸
梯度消失
網絡層之間的梯度(小於1),重複相乘導致的指數級減小會產生梯度消失。
原因: 主要是因爲網絡層數太多、太深,導致梯度無法傳播。本質應該是激活函數的飽和性。
表現: 神經網絡的反向傳播是逐層對函數偏導相乘,因此當神經網絡層數非常深的時候,最後一層產生的偏差就因爲乘了很多的小於1的數而越來越小,最終就會變爲0,從而導致層數比較淺的權重沒有更新。
經常出現的情況:
(1) 在深層網絡中
(2) 採用了不合適的損失函數,比如sigmoid
梯度爆炸
網絡層之間的梯度(大於 1.0),重複相乘導致的指數級增長會產生梯度爆炸。
原因: 初始化權值過大,前面層會比後面層變化的更快,就會導致權值越來越大,梯度爆炸的現象就發生了。
表現: 在深層網絡或循環神經網絡中,誤差梯度可在更新中累積,變成非常大的梯度,然後導致網絡權重的大幅更新,並因此使網絡變得不穩定。在極端情況下,權重的值變得非常大,以至於溢出,導致 NaN 值(即無窮大)。
一般出現的情況:
(1)在深層網絡、循環神經網絡中
(2)權值初始化值太大
2.1.BP更新權重
BP算法基於梯度下降策略,以目標的負梯度方向對參數進行調整,參數的更新爲,給定學習率,得出
給定4層全連接網絡,定義網絡輸入爲,是激活函數,第隱藏層網絡經激活函數的輸出爲,其中代表第層的輸入、第層的輸出。
的
的
更新第2隱藏層的權值信息,根據鏈式求導法則:
第四層激活函數對第三層輸出的導數:
根據上式可知,在權重更新時,會出現多個激活函數的導數相乘的情況。此時:
- 導數>1,隨着層數的增加,求出的梯度的更新將以指數形式增加,發生梯度爆炸。
- 導數<1,隨着層數的增加求出的梯度更新的信息會以指數形式衰減,發生梯度消失。
從深層網絡角度來說,不同的層學習的速度差異很大,表現爲網絡中靠近輸出的層學習的情況很好,靠近輸入層的學習很慢,甚至即使訓練了很久,前幾層的權值和剛開始初始化的值差不多,因此梯度消失和梯度爆炸的根本原因在於反向傳播算法的不足。
Hinton提出capsule的原因就是爲了徹底拋棄反向傳播
2.2.激活函數的影響
ReLU及其變體則是非飽和激活函數。使用非飽和激活函數的優勢在於:
- 解決梯度消失
- 加快收斂速度:
Sigmoid函數需要將輸入壓縮至[0, 1]的範圍
tanh函數需要將輸入壓縮至[-1, 1]的範圍
2.2.1. Sigmoid
使用sigmoid作爲損失函數,其梯度是不可能超過0.25的,經過鏈式求導之後,很容易發生梯度消失。
2.2.2.Tanh
tanh比sigmoid要好一些,但是它的導數仍然小於1。
tanh求導推導代碼和可視化
2.2.3. Relu
ReLU函數的導數在正數部分恆等於1,因此在深層網絡中使用不會導致梯度消失和爆炸。
優點:
- 解決了梯度消失、爆炸的問題
- 計算方便,計算速度快
- 加速了網絡的訓練
缺點:
- 由於負數部分恆爲0,會導致一些神經元無法激活(可通過設置小學習率部分解決)
- 輸出不是以0爲中心的
2.2.4.LeakReLU
其中,leak係數一般選擇0.01或者0.02,或者通過學習而來。
leakReLU解決了0區間帶來的影響,而且包含了ReLU的所有優點。
2.2.5.ELU
其中,
ELU相對於leakReLU來說,計算要更耗時。
2.2.6.PReLU(參數化修正線性單元)
PReLU可以看作是Leaky ReLU的一個變體。在PReLU中,負值部分的斜率是根據數據來定的,而非預先定義的。
作者稱,在ImageNet分類(2015,Russakovsky等)上,PReLU是超越人類分類水平的關鍵所在。
2.2.7.RReLU(隨機糾正線性單元)
RReLU也是Leaky ReLU的一個變體。在RReLU中,負值的斜率在訓練中是隨機的,在之後的測試中是固定的。
亮點: 在訓練環節中,是從一個均勻分佈中隨機抽取的數值。
2.2.8.ReLU其他變體
ReLU其他變體鏈接
CReLU(Concatenated Rectified Linear Units)
SELU
3.解決方案
在深度神經網絡中,往往是梯度消失出現的更多一些。
3.1.預訓練加微調
Hinton爲了解決梯度的問題,提出採取無監督逐層訓練方法。其基本思想是:
- 逐層預訓練:每次訓練一層隱節點,訓練時將上一層隱節點的輸出作爲輸入,而本層隱節點的輸出作爲下一層隱節點的輸入。
- Fine-tunning:在預訓練完成後,再對整個網絡進行“微調”。
Hinton在訓練深度信念網絡(Deep Belief Networks中,使用了這個方法,在各層預訓練完成後,再利用BP算法對整個網絡進行訓練。此思想相當於是先尋找局部最優,然後整合起來尋找全局最優,此方法有一定的好處,但是目前應用的不是很多了。
3.2.梯度剪切(針對梯度爆炸)
設置梯度剪切閾值。在更新梯度時,如果梯度超過這個閾值,那麼就將其強制限制在這個範圍之內。
注:在WGAN中也有梯度剪切限制操作,但是和這個是不一樣的,WGAN限制梯度更新信息是爲了保證lipchitz條件。(?)
3.3.權重正則化(針對梯度爆炸)
其中,是指正則項係數。
發生梯度爆炸時,權值的範數會非常大,通過正則化項,可以部分限制梯度爆炸的發生。此外,通過對網絡權重做正則,還可限制過擬合。
3.4.使用ReLU等激活函數
3.5.批規範化 Batch Normalization
Batch normalization (Batchnorm, BN) 是深度學習發展以來提出的最重要的成果之一,目前已經被廣泛的應用到了各大網絡中,具有加速網絡收斂速度,提升訓練穩定性的效果。
BN本質上是解決反向傳播過程中的梯度問題。通過規範化操作將輸出信號規範化,保證網絡的穩定性。
舉例:
正向傳播:
反向傳播:
反向傳播的式子中有的存在,所以**的大小會影響梯度的消失和爆炸**。
BN通過將每一層的輸出規範爲均值和方差一致的方法,消除了帶來的放大縮小的影響,進而解決梯度消失和爆炸的問題。也可以理解爲:BN將輸出從飽和區拉到了非飽和區。
3.6.殘差結構
殘差可以很輕鬆的構建幾百層,一千多層的網絡而不用擔心梯度消失過快的問題,原因就在於殘差的捷徑(shortcut)部分。
相比較於以前網絡的直來直去結構,殘差中有很多這樣的跨層連接結構,這樣的結構在反向傳播中具有很大的好處。
上式表示損失函數到達L的梯度,小括號裏的1表示短路機制(identity x) 可以無損地傳播梯度,而另一項殘差梯度則需要經過帶有weights的層,殘差梯度不會那麼巧全爲-1,就算其很小,由於1的存在不會導致梯度消失,所以殘差學習會更容易。
殘差網絡的出現導致了Image net比賽的終結。
論文:Deep Residual Learning for Image Recognition
論文解讀
3.7.優化的循環神經網絡
重置:有助於捕捉時間序列短期的依賴關係;
更新:有助於捕捉時間序列⾥⻓期的依賴關係。
遺忘門:控制上一時間步的記憶細胞
輸入門:控制當前時間步的輸入
輸出門:控制從記憶細胞到隱藏狀態
記憶細胞:種特殊的隱藏狀態的信息的流動
3.7.1.LSTM
LSTM全稱是長短期記憶網絡(long-short term memory networks),不容易發生梯度消失。
主要原因在於LSTM內部複雜的門(gates)。LSTM通過“門”,可以在接下來更新的時候“記住”前幾次訓練的”殘留記憶“。因此,經常用於生成文本中。目前也有基於CNN的LSTM。
3.7.2.GRU
3.7.3.深度循環網絡
3.7.4.雙向循環神經網絡
3.8.初始化合理的權重值
可避免梯度爆炸或消失,也可以加快訓練速度。
參考
https://blog.csdn.net/qq_25737169/article/details/78847691
https://zhuanlan.zhihu.com/p/68579467
https://www.mscto.com/ai/288755.html
https://blog.csdn.net/qq_30815237/article/details/89453315
https://blog.csdn.net/sisteryaya/article/details/81364089
https://www.cnblogs.com/chamie/p/8665251.html