AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
39/100 第四週:📌 循環神經網路 RNN
39.語音訊號與時間序列預測 📈 RNN 看穿趨勢變化!
______________________________________
✅ 課程導入:RNN 的輸入不只限於文字!
文字是序列,但以下資料也都是序列:
• 🎙 語音:音頻波形是連續數值序列
• 📈 股價:每天開高低收 + 成交量
• 🌡 感測器:連續記錄的溫度、壓力、震動數據
• 🕰 健康數據:心電圖(ECG)、血壓變化曲線
這些全都可以用 RNN 進行建模、預測、分類與異常偵測!
________________________________________
🧠 應用一:語音訊號處理
📦 特徵提取方式:
1. 將語音檔轉成 聲學特徵(MFCC、Mel-Spectrogram)
2. 每一個 frame 對應一個向量 → 組成時間序列矩陣
3. 餵入 RNN(或 CNN + RNN)進行語音分類或轉文字(Speech2Text)
📘 案例應用:
語音辨識 語音轉文字,Ex: Hey Siri、Google語音輸入
語者識別 根據聲音辨識講話人(聲紋辨識)
語音情緒分析 判斷聲音中的情緒狀態(憤怒/快樂/緊張)
________________________________________
📊 應用二:時間序列預測(以股價為例)
🎯 預測問題形式:
已知過去 30 天的股價,預測第 31 天的收盤價(或上升/下降)
⚙️ TensorFlow/Keras 簡單範例:
python
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(64, input_shape=(30, 1)), # 過去 30 天,每天一個價格
Dense(1) # 預測未來 1 天價格
])
model.compile(optimizer='adam', loss='mse')
📈 評估指標:
指標 說明
MSE / RMSE 預測值與實際值之間的誤差
MAE 絕對誤差
R² Score 解釋變異程度(越接近 1 越好)
這段程式碼建立了一個用於時間序列預測的 LSTM 模型,輸入為過去 30 天的每日價格(形狀為 30×1),輸出為未來 1 天的預測值。模型使用 adam 優化器與均方誤差(MSE)作為損失函數,適合連續值預測任務如股價或天氣。常見的評估指標包括:MSE / RMSE(衡量預測值與實際值的平方誤差)、MAE(平均絕對誤差,反映實際偏差程度)、以及 R² Score(表示模型對資料變異的解釋能力,越接近 1 越理想)。這些指標有助於全面評估預測準確性與模型表現。
________________________________________
🔁 如何設計 RNN 預測系統?
元件 功能說明
Input Window 定義過去多少時間作為輸入
Normalization 把數據轉為標準範圍(提升收斂速度)
RNN 模型 可用 SimpleRNN / LSTM / GRU 結構
滑動預測 每天預測一次,也可用步進滑窗設計
可視化 預測曲線 vs 實際曲線
________________________________________
⚠️ 注意事項與挑戰:
問題 解法建議
長期預測不準 使用 Seq2Seq 或 Transformer 結構
資料波動大 加入移動平均、差分等平滑處理
特徵過少 加入技術指標(如 RSI、MACD)
未來資訊洩漏 確保訓練資料僅使用「過去已知資訊」
________________________________________
🧠 延伸應用場景:
領域 應用說明
財經 股價、幣價、期貨趨勢預測
醫療 健康參數監測(如心電圖分類)
製造/工業 感測器數據預測維修時間、預防故障
IoT 智慧家庭溫濕度預測、自動調節電力使用
能源 太陽能/風力發電量趨勢預測
________________________________________
🎯 小結與啟示:
✅ 語音與時間序列都是「時間相關」資料 → RNN/LSTM 天生適合建模
✅ 預測任務可靈活設定:回歸預測數值、分類預測趨勢或異常
✅ 使用 LSTM/GRU 可克服短期記憶問題,搭配滑動視窗與特徵工程效果更佳















