在時間序列資料中,觀察值之間存在依賴關係,因此它們不是相互獨立的。然而,傳統的神經網路將每個觀察視為獨立的,這限制了模型對時間序列資料的建模能力。為了解決這個問題,循環神經網路(RNN)被引入,它引入了記憶的概念,透過在網路中建立資料點之間的依賴關係來捕捉時間序列資料的動態特性。透過循環連接,RNN可以將先前的資訊傳遞到當前觀察中,從而更好地預測未來的值。這使得RNN成為處理時間序列資料任務的強大工具。
但是RNN是如何實現這種記憶的呢?
RNN透過神經網路中的回饋迴路實現記憶,這是RNN與傳統神經網路的主要差異。回饋迴路允許訊息在層內傳遞,而前饋神經網路的訊息僅在層之間傳遞。因此,有了不同類型的RNN:
本文將介紹RNN、LSTM和GRU的概念和異同點,以及它們的一些優點和缺點。
透過回饋迴路,一個RNN單元的輸出也被同一單元用作輸入。因此,每個RNN都有兩個輸入:過去和現在。使用過去的資訊會產生短期記憶。
為了更好地理解,可以展開RNN單元的回饋循環。展開單元格的長度等於輸入序列的時間步數。
可以看到過去的觀察結果是如何作為隱藏狀態透過展開的網路傳遞的。在每個單元格中,當前時間步的輸入、前一時間步的隱藏狀態和偏移組合,然後透過啟動函數限制以確定當前時間的隱藏狀態步。
RNN可用於一對一、一對多、多對一和多對多預測。
由於其短期記憶,RNN可以處理順序資料並識別歷史資料中的模式。此外,RNN能夠處理不同長度的輸入。
RNN存在梯度下降消失的問題。在這種情況下,用於在反向傳播期間更新權重的梯度變得非常小。將權重與接近零的梯度相乘會阻止網路學習新的權重。停止學習會導致RNN忘記在較長序列中看到的內容。梯度下降消失的問題隨著網路層數的增加而增加。
由於RNN只保留最近的訊息,所以模型在考慮過去的觀察時會出現問題。因此,RNN只有短期記憶而沒有長期記憶。
此外,由於RNN使用反向傳播及時更新權重,網路也會遭受梯度爆炸的影響,如果使用ReLu激活函數,則會受到死亡ReLu單元的影響。前者可能會導致收斂問題,而後者會導致停止學習。
LSTM是一種特殊類型的RNN,它解決了RNN會梯度消失的問題。
LSTM的關鍵是單元狀態,它從單元的輸入傳遞到輸出。單元狀態允許資訊沿著整個鏈流動,僅通過三個門進行較小的線性動作。因此,單元狀態代表LSTM的長期記憶。這三個閘分別稱為遺忘閘、輸入閘和輸出閘。這些門用作過濾器並控制資訊流並確定保留或忽略哪些資訊。
遺忘門決定了應該保留多少長期記憶。為此,使用了一個sigmoid函數來說明單元狀態的重要性。輸出在0和1之間變化,0即不保留任何資訊;1則保留單元狀態的所有資訊。
輸入門決定將哪些資訊加入單元狀態,從而添加到長期記憶中。
輸出閘決定單元狀態的哪些部分建置輸出。因此,輸出門負責短期記憶。
總的來說,狀態透過遺忘閘和輸入閘更新。
LSTM的優點類似於RNN,主要優點是它們可以捕捉序列的長期和短期模式。因此,它們是最常用的RNN。
由於結構更複雜,LSTM的計算成本更高,導致訓練時間更長。
由於LSTM也使用時間反向傳播演算法來更新權重,因此LSTM有反向傳播的缺點,如死亡ReLu單元、梯度爆炸等。
#與LSTM類似,GRU解決了簡單RNN的梯度消失問題。然而,與LSTM的不同之處在於GRU使用較少的門並且沒有單獨的內部記憶體,即單元狀態。因此,GRU完全依賴隱藏狀態作為記憶,導致更簡單的架構。
重置門負責短期記憶,因為它決定保留和忽略多少過去的資訊。
更新門負責長期記憶,可與LSTM的遺忘門相媲美。
#目前時間步的隱藏狀態是基於兩個步驟確定的:
首先,確定候選隱藏狀態。候選狀態是當前輸入和前一時間步的隱藏狀態以及激活函數的組合。前一個隱藏狀態對候選隱藏狀態的影響由重置閘門控制。
第二步,將候選隱藏狀態與上一時間步的隱藏狀態結合,產生目前隱藏狀態。先前的隱藏狀態和候選隱藏狀態如何組合由更新閘決定。
如果更新閘門給出的值為0,則完全忽略先前的隱藏狀態,目前隱藏狀態等於候選隱藏狀態。如果更新門給出的值為1,則相反。
由於與LSTM相比有著更簡單的架構,GRU的運算效率更高,訓練速度更快,只需要更少的記憶體。
此外,GRU已被證明對於較小的序列更有效。
由於GRU沒有單獨的隱藏狀態和細胞狀態,因此它們可能無法像LSTM一樣考慮過去的觀察結果。
與RNN和LSTM類似,GRU也可能遭受反向傳播及時更新權重的缺點,即死亡ReLu單元、梯度爆炸。
以上是探究RNN、LSTM和GRU的概念、區別和優劣的詳細內容。更多資訊請關注PHP中文網其他相關文章!