今天我們要來介紹一下,循環神經網路(Recurrent Neural Network),稱為RNN。
以及RNN的好朋友,LSTM(Long Short-Term Memory)。
一般的神經網路無法有效地考慮前後者的關係,例如文字中,出現螳,下一個字很有可能是螂。
RNN在處理自然語言(NLP)中有著不錯的表現,而這張圖為RNN的基本架構。
圖片取自Deep Learning: Recurrent Neural Networks
x:輸入
O:輸出
h:RNN的主要部分。它包含網路的權重和Activation function
V:表示從一個時間到另一個時間點的通信。
在上圖中的h為RNN的主要部分,可以看到在t這個時間點時,會有t-1的時間點的資訊以及當前時間點t的資訊。
直到被告知要結束為止,否則RNN會持續的循環。
那麼就會有一個問題,持續地疊加,就會有權重爆炸或是梯度消失的問題。
為了要解決上述的問題,LSTM出現了!
可以把LSTM當成一種特殊的RNN,以上面那張圖來說我們可以看到RNN只會傳一個h_t給下一步,而LSTM則會傳一個c_t(cell state)以及h_t(hidden state),其中RNN中的h_t對於LSTM中的c_t。
LSTM多了memory cell以及Forget Gate。
LSTM主要有三個階段
在這階段中,會把來自上一個節點的輸入進行選擇性的遺忘,選擇重要的,忘記不重要的,會透過Forget gate來控制。
在這階段中,會把這個節點的輸入進行選擇性記憶,把重要的記錄下來,不重要的就少記一點。
得到前面兩步以後,即可得到c_t,就可以決定哪些要當成此節點的輸出。
但是LSTM有一個問題,就是訓練速度較慢。因此 Gated Recurrent Unit(GLU)為了加快LSTM速度及減少記憶體的使用而出現了。
將forget gate和input gate合而為一,稱之為Update gate。並將cell state和h_t進行合併。
這位作者使用了相同的超參數來訓練模型,最後可以看到這兩者的Loss比較,其實兩者還是差不多的。
今天簡單的介紹了RNN與LSTM。
Deep Learning: Recurrent Neural Networks
人人都能看懂的LSTM
LSTM vs GRU: Experimental Comparison