回覆列表
  • 1 # Deeplearning初學者

    1.引數小心翼翼的初始化

    2.網路不要太深

    3.用skip connection的方式,提供bottom to up的資訊傳遞快捷通道,同時也是up to bottom剃度傳遞的快捷通道。

    1不用說了,很多初始化方式來幫助收斂。

    2會犧牲網路的表達能力

    3也是最主流的方式。比如GoogLeNet inception, resnet, densenet都是為資訊剃度提供各種流動路徑,包括便捷路徑。也暗中符合一些人提出的“更深,更寬”的主張

  • 2 # 北航秦曾昌

    神經網路中的梯度消失和梯度爆炸主要原因有三點:

    1、神經網路層數加深;

    目前,深度神經網路透過不斷的構造出越來越深的網路,從而實現比淺層網路更為複雜多樣的任務,比如深度卷積網路(CNN)用於影象分類,迴圈神經網路(RNN)用於自然語言處理。

    2、反向傳播的權重更新機制。

    同時,現有的權重更新機制都是基於反向傳播,也就是由損失函式得到的誤差,透過鏈式求導來反向傳播梯度,從末層向第一層逐層的更新和最佳化網路中的權重。這樣就可以實現損失函式最小化的目標。這種尋優機制簡單易懂,實現起來也十分便捷。

    3、啟用函式sigmoid的使用

    為了使得神經網路能夠有更強的表達能力,往往會在每層加入一個非線性的啟用函式,而最經典的就是sigmoid函式。

    sigmoid函式的導數

    我們會發現sigmoid函式的導數最大隻有0.25。那麼在進行多層的反向傳播中利用鏈式求導,就會將sigmoid導數累層計算。那麼傳到靠近輸出層的時候,梯度就會變得很小,那麼對權重更新的幅度就微乎其微,這就是梯度消失問題。梯度爆炸一般出現在深層網路和權值初始化值太大的情況下。這種梯度的不穩定就會使得,深層網路中不同層的學習速度差異很大,表現為在靠近輸出層的學習效果好,而到了輸入層則變得尤為緩慢。

    目前已經出現了許多方法來防止在訓練過程中出現梯度不穩定的問題。

    1) 如將sigmoid函式換成ReLU或者Leak ReLU等啟用函式。ReLU的導數,不是0就是1,因此就能很好的解決梯度消失的問題。

    1) 梯度截斷。對於出現了梯度爆炸問題,可以對梯度的上限設定閾值,從而有效的避免梯度過大。

    2) 對權重進行合理的初始化。使每個神經元儘可能不要取極大或極小值,以躲開梯度消失的區域。如使用Xavier或MSRA初始化。

  • 中秋節和大豐收的關聯?
  • 歌未央的歌詞?