AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
31/100 第四週:📌 循環神經網路 RNN
31.RNN 基本結構與用途 ⏳ 理解時間與順序的神經網路!
________________________________________
✅ 課程導入:為什麼需要 RNN?
CNN 和 MLP 只能處理「固定長度、無時間順序」的資料,
而人類的語言、音樂、股票、影片…都有「順序與上下文關係」。
📌 RNN 讓神經網路可以:
• 記住之前輸入過的資訊(記憶性)
• 處理可變長度序列(如句子、語音)
• 在時間序列上進行預測、生成與分類
________________________________________
🔄 RNN 是什麼?
Recurrent Neural Network(RNN) 是一種專門處理序列資料的神經網路架構。
它的特點是:輸出不只取決於當下輸入,也受到過去輸入的影響。
📦 每個時間步(t)中:
ht=f(W⋅xt+U⋅ht−1+b)
• x_t:當前輸入
• h_{t-1}:前一時刻的隱藏狀態(記憶)
• h_t:目前的隱藏狀態(傳給下一步)
• f():常用 tanh 或 ReLU 等激活函數
這個公式表示,RNN 在每個時間步會根據「當前輸入 」與「前一個狀態 」共同計算出新的隱藏狀態 。這使得模型能保留時間序列上的歷史資訊,具備處理語音、文字、時間序列資料等的能力。藉由每一步的遞迴更新讓模型具備順序感與「記憶」,是序列模型的基礎。
________________________________________
🧠 RNN 與傳統神經網路最大差異:
模型類型 能否記住上下文 適合處理
- MLP / CNN ❌ 無法記住上下文 圖像、表格資料、固定長度特徵
- RNN ✅ 可記住上下文 文字、語音、時間序列等順序性資料
________________________________________
📈 RNN 應用場景一覽:
⌨️ 語言建模 → 自動補詞、文字生成(如 ChatGPT)
🎙 語音辨識 → 語音轉文字、語者識別
🎵 音樂生成 → 依旋律生成新旋律
📊 時間序列分析 → 股票預測、氣象預測、工業感測器預警
🧠 NLP 任務 → 情感分析、命名實體辨識(NER)、機器翻譯
________________________________________
🔁 基本 RNN 結構圖示:
x1 → [RNN Cell] → h1 →
x2 → [RNN Cell] → h2 →
x3 → [RNN Cell] → h3 → … → Output
這段圖示呈現了基本的 RNN 結構,其中每個時間步的輸入(如 x1,x2,x3)依序輸入同一組 RNN Cell,產生對應的隱藏狀態 (h1,h2,h3),並將前一時間步的狀態遞迴傳遞至下一步。📌 RNN 的特點在於所有時間步共享同一組參數,能夠保留序列中的時間關聯與記憶資訊,適合處理語言、時間序列等資料。這種結構也可堆疊為多層 RNN,以學習更深層次的序列特徵。
📌 特點:每個 Cell 共用參數,具有遞迴記憶能力,並可疊加為多層 RNN。
________________________________________
⚙️ TensorFlow / Keras 建立簡單 RNN:
python
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense
model = Sequential([
SimpleRNN(64, input_shape=(10, 50), return_sequences=False),
Dense(1, activation='sigmoid')
])
• input_shape=(time_steps, features)
• 可用於二分類(如:語意正負、趨勢漲跌)
這段程式碼建立了一個簡單的循環神經網路(RNN)模型,用於處理序列資料並進行二元分類。模型的輸入形狀為 (10, 50),代表每筆資料是一個長度為 10 的時間序列,每個時間點有 50 個特徵;SimpleRNN 層具有 64 個單元,負責捕捉序列中的時間關係,return_sequences=False 表示只輸出最後一個時間步的狀態;接著接上一個 Dense 全連接層並使用 sigmoid 激活函數,輸出介於 0 和 1 之間的機率值,適合用於二分類任務,例如判斷語句情緒(正/負)或預測趨勢(漲/跌)。
________________________________________
⚠️ RNN 訓練挑戰:
🔻 梯度消失 / 爆炸 → 長序列訓練時,梯度難以穩定傳遞,影響模型學習長期依賴。
🐢 訓練效率低 → 序列資料需逐步處理,無法並行,訓練速度慢。
📉 不適合長序列 → 超過百步以上的序列難以保留早期資訊,模型表現下降。
✅ 解法:使用 LSTM / GRU(下一節介紹)
________________________________________
🎯 小結與啟示:
✅ RNN 為時間序列任務奠定基礎,讓模型具備記憶與理解上下文能力
✅ 從文字、聲音到股價,RNN 開啟 AI 與時間的對話
✅ 儘管基本 RNN 有限制,但它是所有時序神經網路的基礎模型!