目錄
- 🧠 什么是循環神經網絡(RNN)?
- 🔁 RNN 的結構圖
- 🔄 RNN 的“記憶”與問題
- RNN梯度推導
- 🧬 LSTM:解決長期依賴問題
- 🧱 LSTM 的核心結構
- LSTM總結
- 參考
人類在思考的時候,會從上下文、從過去推斷出現在的結果。傳統的神經網絡無法記住過去的歷史信息。
循環神經網絡是指隨著時間推移,重復發生的結構。它可以記住之前發生的事情,并且推斷出后面發生的事情。用于處理時間序列很好。所有的神經元共享權值。如下圖所示。
🧠 什么是循環神經網絡(RNN)?
循環神經網絡(Recurrent Neural Network, RNN) 是一類用于處理序列數據的神經網絡結構,具有“記憶”能力,適用于自然語言處理、時間序列預測、語音識別等任務。
與傳統的前饋神經網絡(如全連接網絡、卷積神經網絡)不同,RNN 的每一個時刻的輸出不僅依賴于當前的輸入,還依賴于前一個時刻的隱藏狀態(即“記憶”)。
🔁 RNN 的結構圖
RNN 的基本結構可以展開為一個鏈式結構:
xt → ht → Ot↑ht-1
其中:
- xt 是時間步 t 的輸入
- ht 是時間步 t 的隱藏狀態(記憶)
- Ot 是時間步 t 的輸出
- ht-1 是前一時間步的隱藏狀態
公式如下:
ht = tanh(Wxh * xt + Whh * ht-1 + bh)
Ot = Why * ht + by
可以看到,隱藏狀態 ht 是由當前輸入 xt 和前一個隱藏狀態 ht-1 一起決定的。
🔄 RNN 的“記憶”與問題
RNN 雖然可以捕捉序列的上下文信息,但在實踐中存在兩個主要問題:
? 梯度消失 / 梯度爆炸
在長序列訓練中,反向傳播時的梯度會因為不斷地鏈式相乘而:
- 趨近于零(梯度消失),導致網絡無法學習長期依賴;
- 迅速變大(梯度爆炸),導致模型不穩定。
這使得 RNN 在處理長期依賴問題時效果不佳。
記住短期信息:比如預測“天空中有__”,如果過去的信息“鳥”離當前位置比較近,則RNN可以利用這個信息預測出下一個詞為“鳥”
不能長期依賴:如果需要的歷史信息距離當前位置很遠,則RNN無法學習到過去的信息。這就是不能長期依賴的問題。
所有的RNN有著重復的結構,如下圖,比如內部是一個簡單的tanh 層。
RNN梯度推導
🧬 LSTM:解決長期依賴問題
為解決上述問題,LSTM(Long Short-Term Memory) 網絡被提出,是一種特殊的 RNN 結構,能夠更好地捕捉長期依賴信息。
LSTM 通過引入 “門控機制” 控制信息的保留與遺忘:
🧱 LSTM 的核心結構
單元狀態:單元狀態像一個傳送帶,通過整個鏈向下運行,只有一些小的線性作用。信息就沿著箭頭方向流動。
LSTM的門結構 可以添加或者刪除單元狀態的信息,去有選擇地讓信息通過。它由sigmoid網絡層 和 點乘操作組成。輸出屬于[0,1]之間,代表著信息通過的比例。
LSTM 的每個單元由以下幾個部分組成:
1、遺忘門(Forget Gate),控制哪些信息要丟棄(忘記):
ft = σ(Wf · [ht-1, xt] + bf)
2、輸入門(Input Gate),決定哪些新信息被存入記憶:
it = σ(Wi · [ht-1, xt] + bi)
Ct~ = tanh(WC · [ht-1, xt] + bC)
3、更新記憶單元(Cell State)
Ct = ft * Ct-1 + it * Ct~
4、輸出門(Output Gate),決定最終輸出:
ot = σ(Wo · [ht-1, xt] + bo)
ht = ot * tanh(Ct)
其中:
- σ 是 sigmoid 激活函數
- tanh 是雙曲正切函數
- ht 是輸出
- Ct 是單元狀態
LSTM總結
核心結構如下圖所示:
參考
1、循環神經網絡