想像人在思考或閱讀文章時,並不是從零開始,而是會保留過去的記憶。RNN 就是為了解決這方面的問題而設計的。
每次訓練時,網路會保留過去的訊息並持續傳遞。而 LSTM 則是一種特殊的 RNN 形式。
The Problem of Long-Term Dependencies
在許多情況下,我們需要更多的上下文訊息,但這些關鍵資訊可能距離當前時間點非常遙遠。一般的 RNN 在處理這種長距離依賴時,容易產生梯度消失或梯度爆炸的問題。
LSTM
LSTM 稱為「長短期記憶網絡」(Long Short Term Memory networks),是一種特殊的 RNN 架構。
不同於傳統 RNN 在每個 Cell 裡只包含一個 tanh 層,LSTM 增加了:
- input gate (輸入門)
- output gate (輸出門)
- forget gate (遺忘門)
這些閘門都是用來精準控制資料的操作。使用 sigmoid 激活函數可以看做是控制記憶與讀取資料量的多寡:0 代表不通過,1 代表全部通過。
詳細的數學推導可以參考原文。文中也介紹了 GRU——一種更為簡煉高效的 LSTM 變體。值得注意的是,現今我們從 RNN 領域獲得的優異成果,幾乎指的都是 LSTM 的應用。
在 TensorFlow 中,LSTM 已經封裝完善,呼叫即可使用。
下圖是用 LSTM (紅虛線) 去學習黑線 (x*sin(x)) 的擬合結果: