0
本文作者: AI研習社-譯站 | 2019-06-11 15:32 |
本文為 AI 研習社編譯的技術博客,原標題 :
The Vanishing Gradient Problem
作者 | Chi-Feng Wang
翻譯 | Dddda 編輯 | 王立魚
原文鏈接:
https://towardsdatascience.com/solving-nlp-task-using-sequence2sequence-model-from-zero-to-hero-c193c1bd03d1
隨著越來越多的激活函數(shù)加到神經(jīng)網(wǎng)絡中,損失函數(shù)的梯度趨近于0,使得網(wǎng)絡結構很難訓練。
具體的激活函數(shù),比如sigmoid函數(shù),把很大的空間壓縮到0和1之間。因此,sigmoid函數(shù)的輸入即使變化很大也只會改變一點輸出。因此,求導就變得很小。
圖1:sigmoid函數(shù)以及導數(shù)
例如,圖一是sigmoid函數(shù)及其導數(shù)。注意當sigmoid函數(shù)的輸入變大或變小時(當|x|),導數(shù)如何接近零。
對于使用激活函數(shù)的僅有幾層的淺層網(wǎng)絡結構,這不是很大的問題。然而,當使用更多層的時候,可能會造成梯度太小而不能很好的訓練。
神經(jīng)網(wǎng)絡的梯度是使用反向傳播來找到的。簡單來說,反向傳播通過將網(wǎng)絡從最終層逐層移動到初始層來找到網(wǎng)絡的導數(shù)。 通過鏈式的規(guī)則,將各層的導數(shù)乘上網(wǎng)絡(從最終層到初始層),計算出初始層的導數(shù)。
然而,當有n個隱藏層使用像sigmoid的激活函數(shù)時,n個小的倒數(shù)相乘。因此,當我們反向傳到初始層的時候,梯度會大幅度下降。
一個小的梯度意味著初始層的權重和偏差不會在訓練中得到有效更新。由于這些初始層通常對識別輸入數(shù)據(jù)的核心元素至關重要,因此可能導致整個網(wǎng)絡的整體不準確。
最簡單的解決方案是使用激活函數(shù),像ReLU,不會導致一個小的導數(shù)。
殘差網(wǎng)絡是另外一個解決方案,因為提供了殘差與之前的層直接連接。就像圖2中,殘差連接直接將block的開頭x的值添加到block(F(x)+x)的結尾。雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
這個殘差連接不通過“擠壓”的激活函數(shù),從而導致block的整體倒數(shù)更大。
圖2:殘差層
*************************************************************************
譯者個人注解:精髓就在于直接連過來的那個x了。h(x)=f(x)+ x,h(x)對 x 求偏導,值為1,這個1直接傳到block的最前端,保證了來自后一層的梯度值完好的傳過了這一層然后進入到前一層,使得淺層的weights也可以得到很好的訓練。
*************************************************************************
最后,batch normalization層還可以解決這個問題。如前所述,當一個大的輸入空間映射到一個小的輸入空間時,問題就出現(xiàn)了,導致導數(shù)消失。 在圖1中,很清晰看到|x|變大的時候。bath normalization通過簡單地規(guī)范化輸入來減少這個問題,這樣x就不會到達sigmoid函數(shù)的外邊緣。如圖3所示,它對輸入進行了規(guī)范化,使其大部分落在綠色區(qū)域,其中導數(shù)不太小。
圖三: 限制輸入的sigmoid 函數(shù)
如果你有任何的問題或者建議,記得評論 :)
閱讀以下的文章來獲得更多的信息:
https://www.quora.com/What-is-the-vanishing-gradient-problem
https://en.wikipedia.org/wiki/Vanishing_gradient_problem
https://towardsdatascience.com/intuit-and-implement-batch-normalization-c05480333c5b
想要繼續(xù)查看該篇文章相關鏈接和參考文獻?
點擊【消失的梯度問題:問題、原因、意義及其解決對策】即可訪問:
今日資源推薦:數(shù)據(jù)科學家修煉之道
這是一本跟數(shù)據(jù)科學和數(shù)據(jù)科學家有關的“手冊”,它還包含傳統(tǒng)統(tǒng)計學、編程或計算機科學教科書中所沒有的信息。《數(shù)據(jù)天才:數(shù)據(jù)科學家修煉之道》有3個組成部分:一是多層次地討論數(shù)據(jù)科學是什么,以及數(shù)據(jù)科學涉及哪些其他學科;二是數(shù)據(jù)科學的技術應用層面,包括教程和案例研究;三是給正在從業(yè)和有抱負的數(shù)據(jù)科學家介紹一些職業(yè)資源。
點擊鏈接即可獲?。?/span>https://ai.yanxishe.com/page/resourceDetail/614
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。