在使用反向傳播(Elman,1990)訓練第一個 Elman 式 RNN 后不久,學習長期依賴性(由于梯度消失和爆炸)的問題變得突出,Bengio 和 Hochreiter 討論了這個問題 (Bengio等人, 1994 年,Hochreiter等人,2001 年). Hochreiter 早在他 1991 年的碩士論文中就闡明了這個問題,盡管結果并不廣為人知,因為論文是用德語寫的。雖然梯度裁剪有助于梯度爆炸,但處理消失的梯度似乎需要更精細的解決方案。Hochreiter 和 Schmidhuber ( 1997 )提出的長短期記憶 (LSTM) 模型是解決梯度消失問題的第一個也是最成功的技術之一。LSTM 類似于標準的遞歸神經網絡,但這里每個普通的遞歸節點都被一個記憶單元取代。每個存儲單元包含一個內部狀態,即具有固定權重 1 的自連接循環邊的節點,確保梯度可以跨越多個時間步而不會消失或爆炸。
“長短期記憶”一詞來自以下直覺。簡單的遞歸神經網絡具有權重形式的長期記憶。權重在訓練過程中緩慢變化,對數據的一般知識進行編碼。它們還具有短暫激活形式的短期記憶,從每個節點傳遞到連續的節點。LSTM 模型通過記憶單元引入了一種中間類型的存儲。存儲單元是一個復合單元,由具有特定連接模式的較簡單節點構成,并包含新的乘法節點。
import tensorflow as tf
from d2l import tensorflow as d2l
10.1.1。門控存儲單元
每個存儲單元都配備了一個內部狀態和多個乘法門,用于確定 (i) 給定的輸入是否應該影響內部狀態(輸入門),(ii) 內部狀態是否應該被刷新到0(遺忘門),以及 (iii) 應該允許給定神經元的內部狀態影響細胞的輸出(輸出門)。
10.1.1.1。門控隱藏狀態
普通 RNN 和 LSTM 之間的主要區別在于后者支持隱藏狀態的門控。這意味著我們有專門的機制來確定何時應該更新隱藏狀態以及何時應該重置它。這些機制是學習的,它們解決了上面列出的問題。例如,如果第一個標記非常重要,我們將學習在第一次觀察后不更新隱藏狀態。同樣,我們將學會跳過不相關的臨時觀察。最后,我們將學習在需要時重置潛在狀態。我們將在下面詳細討論。
10.1.1.2。輸入門、遺忘門和輸出門
進入 LSTM 門的數據是當前時間步的輸入和前一時間步的隱藏狀態,如圖 10.1.1所示。三個具有 sigmoid 激活函數的全連接層計算輸入門、遺忘門和輸出門的值。作為 sigmoid 激活的結果,三個門的所有值都在范圍內(0,1). 此外,我們需要一個 輸入節點,通常使用tanh激活函數計算。直觀上,輸入門決定了輸入節點的多少值應該添加到當前存儲單元的內部狀態。遺忘 門決定是保留內存的當前值還是刷新內存。而輸出門決定了記憶單元是否應該影響當前時間步的輸出。
圖 10.1.1計算 LSTM 模型中的輸入門、遺忘門和輸出門。
在數學上,假設有h隱藏單元,批量大小為n,輸入的數量是d. 因此,輸入是Xt∈Rn×d上一個時間步的隱藏狀態是 Ht?1∈Rn×h. 相應地,時間步長的門t定義如下:輸入門是It∈Rn×h, 遺忘門是 Ft∈Rn×h,輸出門是 Ot∈Rn×h. 它們的計算方式如下:
在哪里
評論