每天五分鐘自然語言理解NLP:RNN為什麼會有梯度消失和梯度爆炸?

2021-01-07 網易

2020-05-12 19:39:41 來源: 趙光輝享受生活

舉報

  本文重點

  本文我們來看一下RNN最致命的問題,這個問題就是RNN的梯度消失和梯度爆炸的問題,我們前面的一個章節已經計算了RNN的反向傳播,如果從反向傳播的角度來進行分析,我們可以很容易的分析出,RNN為什麼會有梯度消失和梯度爆炸?

  RNN的反向傳播

  如上所示,是上一個章節推導的RNN的反向傳播的公式,這裡是計算的第三個時刻損失關於h(1)的偏導數,如果我們將其進行擴展,擴展為T時刻的損失對h(1)的偏導數,那麼此時可以表示為:

  

  其中diag(f'(Whhht-1+WxhXt+bt))是一個矩陣,Whh也是一個矩陣,二者相乘也是一個矩陣,為了好理解,我們將這個矩陣給計算出來:

  

  

  這個矩陣我們稱之為雅可比矩陣,將其代入到反向傳播公式,我們可以看到這個矩陣會連乘。所以當這個矩陣的最大特徵值大於1時,每層的梯度由於連乘會出現指數級增長,導致梯度爆炸,反之,當雅可比矩陣的最大特徵值小於1的時候,梯度大小會×指數縮小,產生梯度消失的問題。由此我們就知道了梯度消失和梯度爆炸的真因。

  梯度消失和梯度爆炸的解決辦法{!-- PGC_COLUMN --}

  梯度爆炸很容易發現,因為參數會大到崩潰,你會看到很多 NaN,或者不是數字的情況,這意味著你的網絡計算出現了數值溢出。如果你發現了梯度爆炸的問題,一個解決方法就是用梯度修剪。梯度修剪的意思就是觀察你的梯度向量,如果它大於某個閾值,縮放梯度向量,保證它不會太大,這就是通過一些最大值來修剪的方法。

  梯度消失可以嘗試使用新的模型結構來解決,這個結構叫做長短期記憶網絡LSTM和門控制循環單元(GRU),這個在之後的課程中會進行詳細的介紹

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • 為什麼會有梯度爆炸和梯度消失?
    本文僅作學術分享,若侵權,請聯繫後臺刪文處理https://www.zhihu.com/question/290392414/answer/951298995梯度下降作為一種最常見的迭代式優化策略,應用在神經網絡的BP算法中,由於深度神經網絡層級太深,在求導的過程中,由於鏈式法則,可能會出現梯度消失和梯度爆炸現象,為了搞清楚為什麼會出現這些情況,我們可以先從最簡單的單層神經網絡的求導過程著手
  • 也來談談RNN的梯度消失/爆炸問題
    而於 RNN 梯度的相關分析,則是一個從優化角度思考分析模型的優秀例子,值得大家仔細琢磨理解。君不見,諸如「LSTM 為什麼能解決梯度消失/爆炸」等問題依然是目前流行的面試題之一。說到這裡,我們還沒說清楚一個問題:什麼是 RNN 的梯度消失/爆炸?梯度爆炸好理解,就是梯度數值發散,甚至慢慢就 NaN 了;那梯度消失就是梯度變成零嗎?
  • 人腦是怎麼防止梯度消失和梯度爆炸的?
    梯度消失和梯度爆炸一直是深度學習的難點,而人腦有接近900億個神經元,可以說是一個非常規模龐大的網絡。那麼人腦是如何防止梯度消失和梯度爆炸的?小編在知乎上發現了這個有意思的問題,分享給大家思考。感覺這個問題跟我的科研方向有一點關係,所以就厚著臉皮強答一波了。
  • 人腦如何防止梯度消失和梯度爆炸?
    梯度消失和梯度爆炸一直是深度學習的難點,而人腦有接近900億個神經元,可以說是一個非常規模龐大的網絡。那麼人腦是如何防止梯度消失和梯度爆炸的?極市小編在知乎上發現了這個有意思的問題,分享給大家思考。感覺這個問題跟我的科研方向有一點關係,所以就厚著臉皮強答一波了。
  • 梯度消失和梯度爆炸的數學原理及解決方案
    希望還算好理解。歡迎一起討論~梯度消失或者梯度爆炸是在訓練深度網絡時常常容易出現的情況,即在根據損失函數計算的誤差通過梯度反向傳播的方式對深度網絡權值進行更新時,得到的梯度值接近0或特別大,也就是消失或爆炸。梯度消失或梯度爆炸在本質原理上其實是一樣的。本博文打算從以下幾方面討論梯度消失或爆炸的原因,以及目前業界的一些解決方法。
  • 獨家連載 | 梯度消失和梯度爆炸
    不管怎麼樣,softsign函數導數的取值總是小於1的,所以softsign作為激活函數也會存在梯度消失的問題。4.6.2 梯度爆炸當我們使用sigmoid,tanh和softsign作為激活函數時,它們的導數取值範圍都是小於等於1的,所以會產生梯度消失的問題。那麼我們可能會想到,如果使用導數大於1的函數作為激活函數,情況會如何?
  • 梯度消失和梯度爆炸問題的最完整解析
    來源丨機械工業出版社《機器學習實戰:基於Scikit-Learn、Keras和TensorFlow》1 梯度消失與梯度爆炸正如我們在第一旦算法計算出代價函數相對於網絡中每個參數的梯度,就可以使用這些梯度以梯度下降步驟來更新每個參數。不幸的是,隨著算法向下傳播到較低層,梯度通常會越來越小。結果梯度下降更新使較低層的連接權重保持不變,訓練不能收斂到一個好的最優解。我們稱其為梯度消失問題。在某些情況下,可能會出現相反的情況:梯度可能會越來越大,各層需要更新很大的權重直到算法發散為止。
  • 【深度學習】梯度消失和梯度爆炸問題的最完整解析
    TensorFlow》1 梯度消失與梯度爆炸正如我們在第10章中討論的那樣,反向傳播算法的工作原理是從輸出層到輸入層,並在此過程中傳播誤差梯度。一旦算法計算出代價函數相對於網絡中每個參數的梯度,就可以使用這些梯度以梯度下降步驟來更新每個參數。不幸的是,隨著算法向下傳播到較低層,梯度通常會越來越小。結果梯度下降更新使較低層的連接權重保持不變,訓練不能收斂到一個好的最優解。我們稱其為梯度消失問題。在某些情況下,可能會出現相反的情況:梯度可能會越來越大,各層需要更新很大的權重直到算法發散為止。
  • RNN系列教程之三 | 基於時間的反向傳播算法和梯度消失問題
    前一部分中,我們介紹了如何在Python和Theano框架下實現RNN,但還未深入了解時序反向傳播算法(BPTT)是如何計算梯度的。這周,我們將簡單介紹BPTT,並解釋其與傳統反向傳播的區別。我們還將了解梯度消失問題,這也是推動LSTM(長短時記憶)和GRU(門控循環單元)(目前在NLP和其他領域最流行且有效模型)發展的原因。
  • 入門|詳解機器學習中的梯度消失、爆炸原因及其解決方法
    本文分為三部分,第一部分主要直觀的介紹深度學習中為什麼使用梯度更新,第二部分主要介紹深度學習中梯度消失及爆炸的原因,第三部分對提出梯度消失及爆炸的解決方案。有基礎的同鞋可以跳著閱讀。 其中,梯度消失爆炸的解決方案主要包括以下幾個部分。
  • RNN系列教程之四 | 利用LSTM或GRU緩解梯度消失問題
    -1-LSTM網絡我們在第三部分的教程中提到過梯度消失問題是如何阻礙標準RNN學習長期依賴的。而LSTM就是通過引入一個叫做「門」(gating)的機制來緩解梯度消失問題。為了更好的理解這一問題,不妨先看看LSTM是如何計算隱藏層s_t的:
  • Recurrent Neural Networks及NLP ——集智NLP讀書會筆記
    那麼,BPTT算法會出現的問題是什麼呢?比較傳統的兩個問題就是梯度消失(vanishing gradient)和梯度爆炸(exploding gradient)。從公式中我們也可以看出端倪:如果t − k比較大,當∥Whh∥ < 1或∥f′∥ < 1時,會發生梯度消失,這時gradient descent(在這裡可以理解成BPTT)肯定就進行不下去了,在很多地方(包括memory networks中)也將這個情況理解為長期記憶衰減為短期記憶
  • 今日Paper|梯度剪切;命名實體識別;自然語言處理;免強度函數學習等
    目錄梯度剪切可以加速梯度下降完成命名實體識別的雙向LSTM+CRF結構完成命名實體識別的神經網絡結構自然語言處理(幾乎)從頭開始from=leiphonecolumn_paperreview0212在神經網絡的訓練過程中對梯度進行剪切是最近越來越流行的一個趨勢,但很多人都不清楚這種做法為什麼有效。這篇論文就給出了理論解釋以及證明,證明了梯度剪切確實對網絡訓練有幫助作用。
  • 全面理解RNN及其不同架構
    引出循環神經網絡RNN講解為什麼可以參數共享的簡單理解rnn的訓練RNN幾種架構
  • 消失的梯度問題:問題,原因,意義及其解決對策
    原因 具體的激活函數,比如sigmoid函數,把很大的空間壓縮到0和1之間。因此,sigmoid函數的輸入即使變化很大也只會改變一點輸出。因此,求導就變得很小。   為什麼這是重要的? 對於使用激活函數的僅有幾層的淺層網絡結構,這不是很大的問題。然而,當使用更多層的時候,可能會造成梯度太小而不能很好的訓練。 神經網絡的梯度是使用反向傳播來找到的。簡單來說,反向傳播通過將網絡從最終層逐層移動到初始層來找到網絡的導數。
  • CMU2018春季課程:神經網絡自然語言處理課程(附PPT和代碼)
    ,主要內容是教學生如何用神經網絡做自然語言處理。專知內容組附上上一次CMU2018和CMU2017年課程:深度學習的內容:Neural Networks for NLP神經網絡自然語言處理課程▌課程描述神經網絡為語言建模提供了強大的工具
  • 訓練深度神經網絡失敗的罪魁禍首不是梯度消失,而是退化
    人們通常認為這種困難主要是(如果不全是)由於梯度消失問題(和/或梯度爆炸問題)。「梯度消失」指的是隨著網絡深度增加,參數的梯度範數指數式減小的現象。梯度很小,意味著參數的變化很緩慢,從而使得學習過程停滯,直到梯度變得足夠大,而這通常需要指數量級的時間。
  • 這篇論文讓你無懼梯度消失或爆炸,輕鬆訓練一萬層神經網絡
    選自arXiv作者:Batchlechner等機器之心編譯機器之心編輯部深度學習在眾多領域都取得了顯著進展,但與此同時也存在一個問題:深層網絡的訓練常常面臨梯度消失或梯度爆炸的阻礙,尤其是像 Transformer 這樣的大型網絡。
  • VGGNet vs ResNet:機器學習中的梯度消失問題
    你能解釋一下VGGNet和ResNet的區別嗎?這是人工智慧和機器學習領域的一個常見面試問題。雖然答案可以在網上找到,但一直還沒能找到一個簡明扼要的答案。我們將從什麼是VGGNet開始,然後看看VGGNet遇到了什麼問題,以及ResNet如何解決它。
  • 深度學習優化算法入門:三、梯度消失和激活函數
    不具有這一性質的數據可能導致梯度消失和訓練抖動。分布最好是正態的,否則可能導致網絡過擬合輸入空間的某個區域。在訓練過程中,不同batch和不同網絡層的激活分布,應該保持一定程度上的一致。梯度消失問題有豐富的文檔,隨著神經網絡越來越深,這一問題越來越得到重視。下面我們將解釋梯度為什麼會消失。讓我們想像一個最簡單的神經網絡,一組線性堆疊的神經元。實際上,上面的網絡很容易擴展成深度密集連接架構。只需將網絡中的每個神經元替換成一個使用sigmoid激活函數的全連接層。