AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》
8/100 第一週:深度學習基礎入門
8.過擬合與正則化方法 🧪 Dropout、L2 正則化讓模型不作弊!
________________________________________
✅ 核心概念:
在訓練神經網路時,如果模型記住了訓練資料的細節與噪聲,卻無法泛化到新資料,我們稱之為「過擬合(Overfitting)」。
這就像學生死背答案,在模擬考拿高分,但到了真正考試卻表現慘烈。為了解決這個問題,我們需要「正則化(Regularization)」技術,讓模型學得「剛剛好」。
📌 一句話總結:
模型不是要完美記住訓練資料,而是要學會抽象規律。
________________________________________
✅ 過擬合的特徵與成因:
現象 - 解釋
訓練準確率高,測試準確率低 - 模型記住訓練資料,但無法泛化
損失函數在測試集上開始反彈 - 模型學到太多資料中的雜訊
網路太深 / 參數太多 模型容量過大,容易記住不必要細節
訓練次數過多 學太久 → 產生記憶效應
________________________________________
✅ 常見正則化方法一覽:
方法 : 概念 : 效果與用途
Dropout : 訓練時隨機「關掉」部分神經元 : 強制網路不能依賴特定神經元,提升泛化能力
L2 正則化 : 權重懲罰項,鼓勵小權重 : 抑制過大權重,讓模型更平滑
Early Stopping : 在驗證集表現最佳時提前停止訓練 : 避免訓練過頭
Data Augmentation : 擴增資料多樣性 : 增加泛化能力,常用於圖像/語音
Batch Normalization : 穩定輸入分佈 : 加速訓練並具備微正則化效果
________________________________________
✅ Dropout 機制 🔌
Dropout = 在每次訓練時隨機丟棄神經元
📌 概念:
• 每次前向傳播,隨機選擇一部分神經元不參與計算
• 減少神經元之間的依賴,提升模型魯棒性
📌 實作(PyTorch):
python
import torch.nn as nn
model = nn.Sequential(
nn.Linear(128, 64),
nn.ReLU(),
nn.Dropout(p=0.5), # 50% 機率關閉
nn.Linear(64, 10)
)
這個模型就像一座小城市:資料從 128 維入口大門 進來,先經過 Linear 壓縮成 64 維大道,再經過 ReLU 號誌只讓正向訊號通過,途中還有 Dropout 隨機封路施工,迫使訊號學會多種路徑,最後在 Linear 出口閘道分流成 10 個方向,用來做分類決策。_____________________________________
✅ L2 正則化(權重衰減)📉
L2 正則化 = 在損失函數中加入權重平方的懲罰項
📌 損失函數變為:
Loss = 原始損失 + λ * Σ(w²)
📌 效果:
• 控制權重不要過大,降低模型複雜度
• 鼓勵模型簡化、避免過度擬合
📌 實作(PyTorch):
python
import torch.optim as optim
optimizer = optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-5)
________________________________________
✅ 常見正則化選擇建議:
情境 建議方法
模型太複雜 / 資料量小 : L2 正則化、Dropout
訓練損失一直下降但測試不變或變差 : Early Stopping + Validation Set
圖像分類、語音處理等資料偏少場景 : Data Augmentation
深層網路訓練困難 : 加入 BatchNorm、使用 ReLU
________________________________________
✅ 小結與啟示 💡
✅ 過擬合 = 模型學得「太好了」,反而失去判斷力
✅ 正則化 = 幫模型設下「學習界線」,避免偷吃步
✅ Dropout 就像考試時關掉小抄 → 模型更強壯
✅ L2 正則化就像約束權重「不能太貪心」 → 更泛化