初學RNN
FNN
定義
FNN(Feedforward Neural Network),即前饋神經網絡,它是網絡信息單向傳遞的一種神經網絡,數據由輸入層開始輸入,依次流入隱藏層各層神經元,最終由輸出層輸出。其當前的輸出只由當前的輸入決定,任何層的輸出都不會影響同級層。
以上圖所示的神經網絡為例,它在訓練過程中通過前向計算和反向傳播,不斷通過調整權重系數Wi和Wo來實現學習目的。通常情況下,前饋神經網絡會在空間上進行延伸,通過增加隱藏層層數與隱藏層神經元個數追求更好的學習效果。
缺點
前饋神經網絡假定元素之間是相互獨立的,對于序列數據,只能單獨地處理序列中的每個元素,前一個輸入與后一個輸入在處理過程中也是完全獨立的,無法捕獲序列之間的依賴關系。
RNN
定義
RNN(Recurrent Neural Network),即循環神經網絡,它是一種主要用來處理序列數據的神經網絡,它關注了隱藏層每個神經元在時間維度上的變化,其中循環說成遞推可能會更直觀一些,本質就是同一個網絡接收當前時刻的輸入和上一時刻隱藏層神經元的輸出,沿著時序反復迭代以實現對序列數據的學習。
結構
直觀結構
在上圖中, RNN 的每個時刻,輸入層的x1和x2都在Wi的作用下傳入隱藏層,上一時刻的隱藏層輸出也通過Wh傳入當前的隱藏層,因此它相當于可以間接訪問之前的所有輸入,這就是為什么說RNN可以保存記憶。
內部結構
上圖展示了RNN在三個相鄰時刻的計算邏輯。 在任意時刻t,隱藏層狀態的計算可以被視為:
- 拼接t時刻的輸入Xt和t?1時刻的隱藏層狀態Ht?1,得到新的張量[Xt,Ht-1];
- 將新的張量送入帶有激活函數φ的全連接層,激活函數常用tanh或者relu, 全連接層的輸出是t時刻的隱藏層狀態Ht。
在t時刻,隱藏層狀態Ht的計算公式為:
在t時刻,輸出層的輸出計算公式為:
參數說明:
- Xt是t時刻的輸入,它是一個向量;
- Wi是輸入層到隱藏層的權重矩陣;
- Ht-1是t-1時刻的隱藏層狀態,在初始時刻,會給隱藏層設置初始狀態H0;
- Wh是隱藏層上一時刻的值作用于當前時刻的權重矩陣;
- Wo是隱藏層到輸出層的權重矩陣;
- bh是和bo是偏置系數。
注意:
- 在不同時刻,RNN總是使用這些模型參數,其參數開銷不會隨著時間的增加而增加。
- 隱藏層狀態中XtWi+Ht-1Wh的計算,相當于Xt和Ht-1的拼接與Wi和Wh的拼接進行矩陣乘法。
- RNN和前饋神經網絡一樣,也是通過反向傳播來更新權重,以達到學習的效果。
應用
1-N類型,輸入一張圖片,輸出一段話或者一段音樂,利用它可以實現看圖說話。
N-1類型,輸入一段話,輸出對其情感類別的判斷,利用它可以實現文本分類。
N-N類型,輸入和輸出是等長的序列,可以用來生成等長的詩歌。
N-M類型,輸入和輸出是不等長的序列,也被叫做Encoder-Decoder模型或Seq2Seq模型,可以應用在機器翻譯、文本摘要、閱讀理解等多個領域上。
變體
BRNN(Bidirectional RNN)
RNN的一個主要問題是只能從以往的輸入進行學習,也就是只能理解上下文中的上文,為了擁有更好的學習效果,因此提出了雙向RNN,也就是BRNN。 BRNN會在原有RNN的基礎上再加一個隱藏層,該隱藏層的狀態是從后向前傳播的,從序列的終點開始讀取,稱為后向層;而原有的從序列起點開始讀取的隱藏層稱為前向層。 BRNN的隱藏層狀態的計算可以被視為:
- 根據輸入序列計算前向層隱藏層狀態H1;
- 將輸入序列反轉,計算后向層隱藏層狀態H2;
- 將H1和H2拼接起來,得到最終隱藏層狀態H,H=[H1,H2]。
注意,只有能拿到整個輸入序列時才能使用BRNN 。
DRNN(Deep RNN)
與前饋神經網絡不同,RNN因為考慮了時間維度,隱藏層達到三層就算多的了。
優缺點
優點
- RNN可以處理序列信息,且內部結構簡單,對計算資源的要求低。
缺點
-
RNN是一個時序模型,每個時刻的計算都依賴于前一時刻的結果,計算速度慢;
-
RNN由于梯度消失,難以支持長序列,不能捕獲序列中長期的依賴關系;
-
RNN網絡在時間維度上是串聯的,離當前時間越遠的隱藏層輸出,對當前隱藏層的輸出影響越小,它無法根據不同詞本身的重要性對當前的輸出產生影響;
-
RNN對所有輸入是同等對待的,提取了所有的信息,沒有區分有用信息、無用信息和輔助信息。但是如果某個網絡可以根據不同輸入的重要性,選擇性地丟棄和記憶,就可以使得有效信息即使距離當前時間較遠,也能有較大影響,實現長期記憶,這就引出了LSTM。
主要參考
- 《動手學深度學習》第8章第4節;
- 網絡上相關資料。

浙公網安備 33010602011771號