首頁>Club>
14
回覆列表
  • 1 # 飛昇的碼農

    梯度消失/梯度爆炸的問題不僅僅是RNN有,而是深度神經網路所面臨的問題。 這裡簡單地介紹一下RNN和RNN梯度消失的原因。

    RNN

    RNN是迴圈神經網路的英文縮寫(也是遞迴神經網路的英文縮寫)。

    RNN模型如下圖所示

    展開後就是

    RNN的損失

    貫穿一個序列中每一個元素,Wa,ba,Wy,by都是被共享的,所以交叉熵損失是

    RNN的梯度消失

    當RNN處理長序列的時候,通常會出現梯度消失的問題。

    讓我們來藉助一個例子處理這個問題。假設我們正在處理語言建模問題,嘗試學習兩個系列:

    "The cat, which already ate ........................, was full"

    "The cats, which already ate ........................, were full"

    這裡我們需要學習的是,"was"搭配"cat","were"搭配"cats"。

    普通的RNN會很難獲得它們的關係。要計算單詞"was",我們需要計算之後所有單詞的梯度。

    乘以分數往往會使梯度消失,而乘以大的數目會導致梯度爆炸。這時候有一些的權重可能沒有被更新。 正如深度網路一樣,很容易發生梯度消失問題。

    在深層網路(反向傳播)中,想要計算前面(某一層)的權重,需要計算在它之後所有層的權重,這會導致梯度消失。處理長序列的RNN也會發生類似的問題。

    RNN梯度消失/梯度爆炸的對策

    梯度爆炸的解決方案

    截斷反向傳播。在反向的途中不更新所有權重, 不是最佳的,所有權重都不更新。梯度裁剪。

    梯度消失問題的解決方案

    權重初始化,比如HE初始化。回聲狀態網路(ECS)。使用LSTM/GRU網路。參考

    個人網站部落格:https://www.soaringroad.com/result/category/DeepLearning.ai

  • 中秋節和大豐收的關聯?
  • 資料顯示哈登本賽季的低位防守比聯盟91%的球員都要好,對此你怎麼看?