RNN,LSTM,GRU基本原理的個人理解

記錄一下對RNN,LSTM,GRU基本原理(正向過程以及簡單的反向過程)的個人理解


RNN

Recurrent Neural Networks,循環神經網絡
(注意區別於recursive neural network,遞歸神經網絡)

爲了解決DNN存在着無法對時間序列上的變化進行建模的問題(如自然語言處理、語音識別、手寫體識別),出現的另一種神經網絡結構——循環神經網絡RNN。

RNN結構

這裏寫圖片描述

  • t 層神經元的輸入,除了其自身的輸入 x t ,還包括上一層神經元的隱含層輸出 s t 1
  • 每一層的參數U,W,V都是共享的
    這裏寫圖片描述
    這裏寫圖片描述
  • 每一層並不一定都得有輸入和輸出,如對句子進行情感分析是多到一,文本翻譯多到多,圖片描述一到多

數學描述

(以下開始符號統一)
回憶一下單隱含層的前饋神經網絡
輸入爲 X R n × x (n個維度爲x的向量)
隱含層輸出爲

H = ϕ ( X W x h + b h )

輸出層輸入 H R n × h
輸出爲
Y ^ = softmax ( H W h y + b y )

現在對 X H Y 都加上時序下標
同時引入一個新權重 W h h R h × h
得到RNN表達式
H t = ϕ ( X t W x h + H t 1 W h h + b h )
Y ^ t = softmax ( H t W h y + b y )

H 0 通常置零

深層RNN和雙向RNN

這裏寫圖片描述
這裏寫圖片描述

通過時間反向傳播和隨之帶來的問題

輸入爲 x t R x
不考慮偏置
隱含層變量爲

h t = ϕ ( W h x x t + W h h h t 1 )

輸出層變量爲
o t = W y h h t

則損失函數爲
L = 1 T t = 1 T ( o t , y t )

以一個三層爲例
這裏寫圖片描述
三個參數更新公式爲

W h x = W h x η L W h x

W h h = W h h η L W h h

W y h = W y h η L W y h

明顯的
L o t = ( o t , y t ) T o t

根據鏈式法則
L W y h = t = 1 T prod ( L o t , o t W y h ) = t = 1 T L o t h t

先計算目標函數有關最終時刻隱含層變量的梯度
L h T = prod ( L o T , o T h T ) = W y h L o T

假設 ϕ ( x ) = x (RNN中用激活函數relu還是tanh衆說紛紜,有點玄學)

L h t = prod ( L h t + 1 , h t + 1 h t ) + prod ( L o t , o t h t ) = W h h L h t + 1 + W y h L o t

通項爲
L h t = i = t T ( W h h ) T i W y h L o T + t i

注意上式,當每個時序訓練數據樣本的時序長度T較大或者時刻t較小,目標函數有關隱含層變量梯度較容易出現衰減和爆炸

L W h x = t = 1 T prod ( L h t , h t W h x ) = t = 1 T L h t x t

L W h h = t = 1 T prod ( L h t , h t W h h ) = t = 1 T L h t h t 1

梯度裁剪

爲了應對梯度爆炸,一個常用的做法是如果梯度特別大,那麼就投影到一個比較小的尺度上。 θ 爲設定的裁剪「閾值」,爲標量,若梯度的範數大於此閾值,將梯度縮小,若梯度的範數小於此閾值,梯度不變

g = min ( θ g , 1 ) g


LSTM

RNN的隱含層變量梯度可能會出現衰減或爆炸。雖然梯度裁剪可以應對梯度爆炸,但無法解決梯度衰減。因此,給定一個時間序列,例如文本序列,循環神經網絡在實際中其實較難捕捉兩個時刻距離較大的文本元素(字或詞)之間的依賴關係。
LSTM(long short-term memory)由Hochreiter和Schmidhuber在1997年被提出。

LSTM結構

這裏兩張圖先不用細看,先着重記住公式後再回來看

這裏寫圖片描述
這裏寫圖片描述

數學描述

(同上,符號統一)
設隱含狀態長度 h ,h h , t 時刻輸入 X t R n × x x 維)及 t 1 時刻隱含狀態

相關文章
相關標籤/搜索