機器學習之RNN循環神經網絡與LSTM


RNN循環神經網絡

RNN循環神經網絡,又稱為時間循環神經網絡。同樣縮寫是RNN的還有一種叫做遞歸神經網絡(結構循環時間網絡)。

 1.基本循環神經網絡

 

 其中U、V、W 均為權重值,圖片左邊的基本循環圖等價於右邊分解后的循環圖。從右圖中我們可以看出隱藏值St 取決於St-1 和 xt 。

所以可以寫出以下公式:其中 g()與 f()  為激活函數.

 

 2.雙向循環神經網絡

 

 一個參與正向計算的 A與一個參與反向計算的 A' 。所以這里就相當於又多了一個關系,即St 也與St+1有關。因此可以寫出以下公式:

 

 3.深層循環神經網絡(多層隱藏層)

 

 

循環神經網絡的訓練

1.BPTT算法

流程:

  1. 前向計算每個神經元的輸出值;
  2. 反向計算每個神經元的誤差項值δ,它是誤差函數E對神經元j的加權輸入的偏導數;
  3. 計算每個權重的梯度。
  4. 使用梯度下降算法更新權重

前向計算:若寫成矩陣就是下面這樣的。

 

 誤差計算

 

 

 計算權重的梯度:

 

 

 

LSTM長短期記憶

 因為在梯度的計算過程中是累乘的,所以當數值大於或小於1就會出現累乘為無窮(爆炸)或0(消失),LSTM解決RNN訓練中的梯度消失或者爆炸的方法。

LSTM的思路是這樣的,在原先的隱藏層中加入一個單元狀態C

     

 

  正是使用這個狀態單元C,才能起到控制作用,其運作圖如下圖所示

 

 

三個重要的門:遺忘門 .輸入門 、輸出門

遺忘門:決定了上一時刻的單元狀態Ct-1 有多少保留到當前時刻Ct 

輸入門:決定了當前時刻網絡的輸入Xt  有多少保存到單元狀態 Ct

輸出門:單元狀態Ct 有多少輸出到LSTM的當前輸出值 ht

 

 上圖所示的LSTM的內部結構,內部結構中的表示分別乘和加。

 

遺忘門:,遺忘門用一個sigmoid函數區分哪些該遺忘,那些該記住。所以經過這個sigmoid函數的參數是前一個狀態S與當前的輸入X組成的向量與一個權重W進行乘積。由此確定那部分為0那部分為1,0表示忘記,1表示記住,於是與上一個C相乘的時候就可以做到把該忘記的忘記了。其中b表示置偏項。

 

 

輸入門:

  

  

 

   it 挑選出當前狀態下需要記住的東西,然后計算當前的單元狀態  。最后整合前后的狀態C 進行跟新。

 

輸出門:

  

   

   首先確定一下多少內容是需要輸出出去,所以先建立一個Ot ,然后利用這個Ot 從新得出的單元狀態C中計算得到 h

 

總結下就是下面這個圖:

 

 

 

 

參考原文:

https://zybuluo.com/hanbingtao/note/581764

https://zybuluo.com/hanbingtao/note/541458 

 https://zhuanlan.zhihu.com/p/32085405


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM