iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
AI & Data

30 天入門常見的機器學習演算法系列 第 25

(Day 25) 循環神經網路 (Recurrent Neural Network)

  • 分享至 

  • xImage
  •  

在前面幾天,我們介紹了全連接神經網路 (FCNN) 與卷積神經網路 (CNN)。這些架構在處理結構化數據或影像資料上非常成功,但若應用到「序列資料」時就顯得不足。例如:

  • 文字句子 (自然語言處理)
  • 聲音波形 (語音辨識)
  • 時間序列 (股價、氣象、感測器數據)

這些資料都有一個共同特性:前後之間具有順序與依賴關係。傳統的神經網路會把輸入展平成固定維度向量,忽略了序列的時間結構,這時就需要 循環神經網路 (Recurrent Neural Network, RNN)。

為什麼需要 RNN?

假設我們要預測一句話的下一個單字:

“我今天心情很好,所以想去 ___”

在這個任務中,模型不僅要知道「今天心情很好」,還要能理解語境,才可能正確預測「散步」、「旅行」等合理詞彙。這就意味著模型需要「記憶」前文資訊。

  • FCNN: 輸入固定維度,無法表達序列依賴。
  • CNN: 能捕捉局部特徵,但難以捕捉長距離依賴。
  • RNN: 透過循環結構,將「上一時間步的輸出」作為「下一時間步的輸入」的一部分,實現狀態的傳遞。

RNN 的結構

RNN 的核心是一個「循環單元 (Recurrent Cell)」,其計算公式如下:

$$
h_t = \tanh(W_h h_{t-1} + W_x x_t + b)
$$

其中:

  • $x_t$: 在時間步 $t$ 的輸入
  • $h_{t-1}$: 前一時間步的隱藏狀態 (hidden state)
  • $h_t$: 當前時間步的隱藏狀態
  • $W_h, W_x, b$: 可學習參數

這個設計讓 RNN 可以把前一時刻的資訊「帶到下一個時刻」,實現序列建模。

RNN 的展開視角

RNN 看起來是「循環」的,但在數學運算中,我們可以把它展開成多層結構:

  • 時間步 $t=1$:$h_1 = f(x_1, h_0)$
  • 時間步 $t=2$:$h_2 = f(x_2, h_1)$
  • 時間步 $t=T$:$h_T = f(x_T, h_{T-1})$

展開後的 RNN 就像一個「深層神經網路」,但每一層的參數 $W_h, W_x$ 是 共享的。

這種參數共享大幅降低了模型複雜度,讓 RNN 能處理可變長度的序列。

RNN 的任務類型

RNN 可以應用在不同任務,根據輸入輸出的對應方式,可分為:

  • 一對一 (One-to-One)
    • 傳統任務 (例如圖片分類)
  • 一對多 (One-to-Many)
    • 影像描述 (輸入一張圖片,輸出一句話)
  • 多對一 (Many-to-One)
    • 情感分析(輸入一段文字,輸出正/負面情緒)
  • 多對多 (Many-to-Many)
    • 機器翻譯 (輸入英文句子,輸出中文句子)

RNN 的靈活性使它成為自然語言處理與序列建模的核心方法之一。

RNN 的問題:梯度消失與梯度爆炸

雖然 RNN 看似完美,但實際訓練時存在兩個嚴重問題:

  • 梯度消失 (Vanishing Gradient)
    • 在反向傳播過程中,梯度需要不斷透過時間步相乘,若權重較小,梯度會快速趨近於 0。
    • 導致模型難以捕捉長距離依賴。
  • 梯度爆炸 (Exploding Gradient)
    • 相反情況下,若權重較大,梯度可能快速發散。
    • 導致模型訓練不穩定。

RNN 與 CNN 的比較

特性 RNN CNN
擅長處理 序列資料 (文字、語音、時間序列) 影像、局部特徵
輸入長度 可變長度 固定維度
參數共享 時間維度共享 空間維度共享
訓練挑戰 梯度消失/爆炸 計算量大,但穩定
改良方向 LSTM、GRU、Transformer ResNet、Inception

結語

循環神經網路 (RNN) 的核心貢獻在於 引入時間維度的參數共享,使得神經網路能處理可變長度的序列資料。它在 NLP 與語音任務中曾經大放異彩,但也因為梯度消失/爆炸等問題而逐漸被更先進的架構取代。

對初學者而言,RNN 是理解「深度學習如何處理序列資料」的第一步;對研究者而言,它是一個歷史性的里程碑,為後續的 LSTM、GRU、Transformer 奠定了基礎。

下一篇,我們將延伸至 LSTM (Long Short-Term Memory),看看它如何在 RNN 的基礎上解決長期依賴的問題。


上一篇
(Day 24) Adam 優化器 (Adaptive Moment Estimation)
下一篇
(Day 26) 長短期記憶網路 (Long Short-Term Memory)
系列文
30 天入門常見的機器學習演算法30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言