RNN 的主要限制在于它無法記住很長的序列,并且會陷入梯度消失的問題。
什么是梯度消失問題?
? 當添加更多具有某些激活函數的層時,神經網絡中損失函數的梯度趨近于零,這使得網絡難以訓練。
長短期記憶(LSTM)
LSTM 可以解決梯度消失問題。它通過忽略(忘記)網絡中無用的數據/信息來實現這一點。如果沒有來自其他輸入(之前的句子單詞)的有用信息,LSTM 就會忘記這些數據。當新的信息出現時,網絡會決定哪些信息應該被忽略,哪些信息應該被記住。
LSTM 架構
讓我們看看 RNN 和 LSTM 之間的區別。
在 RNN 中,我們有一個非常簡單的結構,只有一個激活函數(tanh)。
在 LSTM 中,我們擁有多個組件,而不僅僅是具有單一激活功能的簡單網絡,從而使網絡能夠忘記和記住信息。
使用的符號
LSTM 有 4 個不同的組成部分,分別是
- 單元狀態(記憶單元)
- 忘記門
- 輸入門
- 輸出門
讓我們逐一了解這些組件。
1. 單元狀態(記憶單元)
它是 LSTM 的第一個組件,貫穿整個 LSTM 單元。可以把它想象成一條傳送帶。
細胞狀態負責記憶和遺忘。它基于輸入的上下文。這意味著一些先前的信息應該被記住,而一些則應該被遺忘,一些新的信息應該被添加到記憶中。第一個操作(X)是逐點運算,它只是將細胞狀態乘以一個[-1, 0, 1]的數組。乘以0的信息將被LSTM遺忘。另一個操作是(+),它負責向狀態添加一些新的信息。
2. 忘記門
顧名思義,遺忘 LSTM 門決定哪些信息應該被遺忘。S 型函數層用于做出這一決定。該 S 型函數層被稱為“遺忘門層”。
它對h(t-1)和x(t)進行點積運算,并在 sigmoid 層的幫助下,為單元狀態C(t-1)中的每個數字輸出一個介于 0 和 1 之間的數字。如果輸出為“1”,則表示我們將保留它。“0”表示完全忘記它。
3. 輸入門
輸入門向 LSTM 提供新信息,并決定是否將該新信息存儲在單元狀態中。
這分為三個部分-
- 一個S 型函數層決定需要更新的值。該層被稱為“輸入門層”。
- tanh激活函數層創建一個新的候選值向量?(t),可以添加到狀態中。
- 然后我們結合這兩個輸出,i(t) * ?(t),并更新單元狀態。
新的細胞狀態碳原子數(t)是通過將遺忘門和輸入門的輸出相加而得到的。
4.輸出門
LSTM 單元的輸出取決于新的單元狀態。
首先,一個 S 型函數層決定要輸出單元狀態的哪些部分。然后,在單元狀態上使用一個tanh層將值壓縮到 -1 到 1 之間,最后乘以 S 型函數門的輸出。
LSTM 實際應用
現在我們已經了解了 LSTM 的架構和組件,讓我們看看它的實際作用。
?
結論
正如文章中提到的,LSTM 可以通過遺忘和記憶信息來延長信息的保存時間。這由 4 個組件實現——一個單元狀態和 3 個門控。它還能克服梯度消失問題,而這正是 RNN 的一個局限性。這使得 LSTM 比普通 RNN 更具優勢。我們還了解了 LSTM 的架構和工作原理。
?