iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
0

RNN和LSTM和GRU

今天我們要來介紹一下,循環神經網路(Recurrent Neural Network),稱為RNN。
以及RNN的好朋友,LSTM(Long Short-Term Memory)。

為甚麼要用RNN?

一般的神經網路無法有效地考慮前後者的關係,例如文字中,出現螳,下一個字很有可能是螂。

RNN

RNN在處理自然語言(NLP)中有著不錯的表現,而這張圖為RNN的基本架構。


圖片取自Deep Learning: Recurrent Neural Networks
x:輸入
O:輸出
h:RNN的主要部分。它包含網路的權重和Activation function
V:表示從一個時間到另一個時間點的通信。

何時才會停止循環?

在上圖中的h為RNN的主要部分,可以看到在t這個時間點時,會有t-1的時間點的資訊以及當前時間點t的資訊。
直到被告知要結束為止,否則RNN會持續的循環。
那麼就會有一個問題,持續地疊加,就會有權重爆炸或是梯度消失的問題。

LSTM

為了要解決上述的問題,LSTM出現了!
可以把LSTM當成一種特殊的RNN,以上面那張圖來說我們可以看到RNN只會傳一個h_t給下一步,而LSTM則會傳一個c_t(cell state)以及h_t(hidden state),其中RNN中的h_t對於LSTM中的c_t。


圖片取自ML Lecture 21-1: Recurrent Neural Network (Part I)

LSTM多了memory cell以及Forget Gate。

三個階段

LSTM主要有三個階段

1. Forget

在這階段中,會把來自上一個節點的輸入進行選擇性的遺忘,選擇重要的,忘記不重要的,會透過Forget gate來控制。

2. 選擇記憶

在這階段中,會把這個節點的輸入進行選擇性記憶,把重要的記錄下來,不重要的就少記一點。

3. 輸出

得到前面兩步以後,即可得到c_t,就可以決定哪些要當成此節點的輸出。

GRU

但是LSTM有一個問題,就是訓練速度較慢。因此 Gated Recurrent Unit(GLU)為了加快LSTM速度及減少記憶體的使用而出現了。

合而為一

將forget gate和input gate合而為一,稱之為Update gate。並將cell state和h_t進行合併。

LSTM與GRU比較


圖片取自LSTM vs GRU: Experimental Comparison

這位作者使用了相同的超參數來訓練模型,最後可以看到這兩者的Loss比較,其實兩者還是差不多的。

結論

今天簡單的介紹了RNN與LSTM。

參考資料

Deep Learning: Recurrent Neural Networks
人人都能看懂的LSTM
LSTM vs GRU: Experimental Comparison


上一篇
Day 22 如何讓測試資料集的正確率變高呢? Fusion篇
下一篇
Day 24 LSTM、GRU如何實作?
系列文
Machine Learning與軟工是否搞錯了什麼?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言