1. 程式人生 > >梯度爆炸和梯度消失的本質原因

梯度爆炸和梯度消失的本質原因

在本章中,我們嘗試使用我們猶如苦力般的學習演算法——基於反向傳播隨機梯度下降來訓練深度網路。但是這會產生問題,因為我們的深度神經網路並不能比淺層網路效能好太多

1、如果說,深度學習的訓練過程中遇到了梯度發散,也即前面的層學習正常,後面層的權重基本上不進行更新,導致的是後面的層基本上學習不到東西。那麼其實,後面的層的引數基本上就是我們的隨機初始化後的引數,相當於對輸入的樣本同一做了一個對映。只是後面的層有進行學習,那麼在這種情況下,DL的效果和淺層的效果其實是類似的。解釋:為什麼梯度發散會不利於學習,梯度一旦發散就等價於淺層網路的學習,那麼使用DL就沒有任何優勢

2、在深度網路中,不同的層學習的速度差異很大,因為學習速率= 啟用值*殘差,而殘差是從上層的殘差加權得到的,也與啟用函式有關

。尤其是,在網路中後面的層學習的情況很好的時候,先前的層次常常會在訓練時停滯不變,基本上學不到東西。這種停滯並不是因為運氣不好。而是,有著更加根本的原因是的學習的速度下降了,這些原因和基於梯度的學習技術相關。梯度發散的本質原因還是基於BP的反向傳播演算法,先天不足。同理也會存在梯度爆炸問題。

3、不穩定的梯度問題(梯度收斂和梯度爆炸): 根本的問題其實並非是梯度消失問題或者激增的梯度問題,而是在前面的層上的梯度是來自後面的層上項的乘積。當存在過多的層次時,就出現了內在本質上的不穩定場景。唯一讓所有層都接近相同的學習速度的方式是所有這些項的乘積都能得到一種平衡。是不是可以考慮對於不同的層使用不同的學習率

。如果沒有某種機制或者更加本質的保證來達成平衡,那網路就很容易不穩定了簡而言之,真實的問題就是神經網路受限於不穩定梯度的問題。所以,如果我們使用標準的基於梯度的學習演算法,在網路中的不同層會出現按照不同學習速度學習的情況。一般會發現在 sigmoid網路中前面的層的梯度指數級地消失。所以在這些層上的學習速度就會變得很慢了。這種減速不是偶然現象:也是我們採用的訓練的方法決定的。

相關推薦

梯度爆炸梯度消失本質原因

在本章中,我們嘗試使用我們猶如苦力般的學習演算法——基於反向傳播隨機梯度下降來訓練深度網路。但是這會產生問題,因為我們的深度神經網路並不能比淺層網路效能好太多。 1、如果說,深度學習的訓練過程中遇到了梯度發散,也即前面的層學習正常,後面層的權重基本上不進行更新,導致的是後面

梯度爆炸梯度消失——引入的誤差越來越多,同時有用資訊減少,同時想到的了relay BP

這個將是對於用基於梯度優化方法的死結。 爆炸梯度是一個問題,其中大的誤差梯度累積並導致在訓練期間對神經網路模型權重的非常大的更新。 這會導致您的模型不穩定,無法從您的訓練資料中學習。 在這篇文章中,您將發現使用深度人工神經網路爆炸梯度的問題。 完成這篇文章後,你會

梯度爆炸梯度消失原因以及解決方法,區域性極小值問題以及學習率問題(對SGD的改進)

梯度爆炸與梯度消失的原因:簡單地說,根據鏈式法則,如果每一層神經元對上一層的輸出的偏導乘上權重結果都小於1的話( ),那麼即使這個結果是0.99,在經過足夠多層傳播之後,誤差對輸入層的偏導會趨於0( )。下面是數學推導推導。假設網路輸出層中的第 個神經元輸出為,而要學習的目標

欠擬合、過擬合、梯度爆炸梯度消失等問題的原因與大概解決方法

1、欠擬合:是一種不能很好擬合數據的的現象。   導致結果:其會導致網路的訓練的準確度不高,不能很好的非線性擬合數據,進行分類。    造成原因:這種現象很可能是網路層數不夠多,不夠深,導致其非線性不夠好。從而對於少量樣本能進行很好的擬合,而較多樣本無法很好的擬合。其實,現

梯度爆炸梯度消失

梯度消失: 這種情況往往在神經網路中選擇了不合適的啟用函式時出現。如神經網路使用sigmoid作為啟用函式,這個函式有個特點,就是能將負無窮到正無窮的數對映到0和1之間,並且對這個函式求導的結果是f′

如何確定梯度爆炸解決梯度爆炸

github部落格傳送門 csdn部落格傳送門 如何確定是否出現梯度爆炸? 訓練過程中出現梯度爆炸會伴隨一些細微的訊號,如: 模型無法從訓練資料中獲得更新(如低損失)。 模型不穩定,導致更新過程中的損失出現顯著變化。 訓練過程中,模型損失變成 NaN。 如果你發現這些問題,那麼你需要

梯度彌散梯度爆炸

問題描述 先來看看問題描述。 當我們使用sigmoid funciton 作為啟用函式時,隨著神經網路hidden layer層數的增加,訓練誤差反而加大了,如上圖所示。 下面以2層隱藏層神經網路為例,進行說明。 結點中的柱狀圖表示每個神經元引數的更新速率(梯度)大小,有圖中可以看出,

梯度上升梯度下降

關於梯度上升法和梯度下降法的原理,大多數都是純理論的解釋和公式的推導,沒有一種直觀的表達方式。 在這我分別舉出兩個簡單而又直觀的例子,大家就明白了,為什麼梯度下降法一定是減梯度,而梯度上升法一定是加梯度。 對於梯度下降法來說,在神經網路中用到,最小化誤差的一種優化方法

關於梯度上升梯度下降的理解

在求極值的問題中,有梯度上升和梯度下降兩個最優化方法。梯度上升用於求最大值,梯度下降用於求最小值。 如logistic迴歸的目標函式: 代表的是概率,我們想求概率最大值,即對數似然函式的最大值,所以使用梯度上升演算法。 而線性迴歸的代價函式: 代

利用opencv函式計算影象的梯度幅度梯度方向

沒有難點,就是為了方便使用記錄,自己實現的話比較麻煩,直接使用內建函式計算比較省心。 重點是這個函式: C++:void gpu::cartToPolar(const GpuMat& x, const GpuMat& y, GpuMat& ma

TensorFlow教程——梯度爆炸梯度裁剪

在較深的網路,如多層CNN或者非常長的RNN,由於求導的鏈式法則,有可能會出現梯度消失(Gradient Vanishing)或梯度爆炸(Gradient Exploding )的問題。(這部分知識後面補充) 原理 問題:為什麼梯度爆炸會造成訓練時不穩定

梯度演算法之梯度上升梯度下降

開啟微信掃一掃,關注微信公眾號【資料與演算法聯盟】 轉載請註明出處:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.

梯度消失梯度爆炸原因解決方案

產生消失的梯度問題的原因 注:實際上就是梯度計算過程中,w值和啟用函式的導數值相乘大於1或者小於1的問題,如果是大於1,那麼經歷過很多個隱藏層梯度就會越來越大,即梯度爆炸,如果是小於1當然就是梯度消失啦!!! 所以w初始化大,w值和啟用函式的導數值相乘可能越來越大,造成梯

RNN神經網路產生梯度消失梯度爆炸原因及解決方案

1、RNN模型結構   迴圈神經網路RNN(Recurrent Neural Network)會記憶之前的資訊,並利用之前的資訊影響後面結點的輸出。也就是說,迴圈神經網路的隱藏層之間的結點是有連線的,隱藏層的輸入不僅包括輸入層的輸出,還包括上時刻隱藏層的輸出。下圖為RNN模型結構圖:   2、R

對於梯度消失梯度爆炸的理解

分享 之間 family -s info 小數 right 也會 使用 一、梯度消失、梯度爆炸產生的原因   假設存在一個網絡結構如圖:   其表達式為:   若要對於w1求梯度,根據鏈式求導法則,得到的解為:   通常,若使用的激活函數為sigmoid函數,其

梯度消失梯度爆炸問題詳解

1.為什麼使用梯度下降來優化神經網路引數? 反向傳播(用於優化神網引數):根據損失函式計算的誤差通過反向傳播的方式,指導深度網路引數的更新優化。 採取反向傳播的原因:首先,深層網路由許多線性層和非線性層堆疊而來,每一層非線性層都可以視為是一個非線性函式

梯度消失梯度爆炸

1.梯度爆炸 1)原因 在深層網路或遞迴神經網路中,誤差梯度在更新中累積得到一個非常大的梯度,這樣的梯度會大幅度更新網路引數,進而導致網路不穩定。在極端情況下,權重的值變得特別大,以至於結果會溢位(

RNN 梯度消失梯度爆炸

為什麼會梯度爆炸或梯度消失: 梯度爆炸指的是在訓練時,累計了很大的誤差導數,導致神經網路模型大幅更新。這樣模型會變得很不穩定,不能從訓練資料中很好的進行學習。極端情況下會得到nan. 會發生這個的原因是在神經網路層間不斷的以指數級在乘以導數。 補充:雅克比矩陣 -- 函式的一階偏導數以一

神經網路梯度消失梯度爆炸及解決辦法

關注微信公眾號【Microstrong】,我現在研究方向是機器學習、深度學習,分享我在學習過程中的讀書筆記!一起來學習,一起來交流,一起來進步吧!目錄:(1)神經網路梯度消失與梯度爆炸(2)幾種啟用函式的比較一、神經網路梯度消失與梯度爆炸(1)簡介梯度消失與梯度爆炸層數比較多

深度學習:梯度消失梯度爆炸

梯度消失 主要是因為網路層數太多,太深,導致梯度無法傳播。本質應該是啟用函式的飽和性。 DNN結果出現nan值? 梯度爆炸,導致結果不收斂。都是梯度太大惹的禍,所以可以通過減小學習率(梯度變化直接變小)、減小batch size(累積梯度更小)、 features規格化(避