1. 什麼是正則化?(What is Regularization?)
- 核心概念:正則化是一種 權重衰減(Weight Decay) 的概念。
- 主要目的:
- 抑制過度擬合(Overfitting): 避免模型在訓練數據上表現太好,以至於對新的、未見過的數據表現不佳。
- 降低模型複雜度: 當使用複雜模型(如擁有大量參數)去擬合數據時,很容易發生過擬合。正則化就是透過降低模型複雜度來應對此問題。
- 原理概述:在 損失函數(Loss Function 或 Cost Function) 的後面,額外增加一個懲罰項(Regularization Term)。
- 這個懲罰項會對模型中的某些參數(主要是權重 W)施加限制。
- 如果權重 W 的值很大,懲罰項就大,導致損失函數增加,進而在反向傳播時對這些權重進行懲罰(抑制),促使它們保持在較小的值。
2. 兩種主要的正則化技術:L1 與 L2


來源:棒打出頭鳥:L1 與 L2 正規化防止模型中的係數過大
3. Keras/TensorFlow 2.x 中的正則化應用
在 Keras 框架中,正則化技巧主要透過在 Dense() 等層(Layer)中設置參數來使用。
程式碼應用範例分析
如何在 Keras 中應用 L2 正則化:
# ... (建立 Sequential 模型)
model.add(Layers.Dense(8, input_dim=2, activation='relu')) # 第一層:不帶正則化項
# 第二、三、四層:使用 L2 正則化,強度由 _lambda 參數控制
model.add(Layers.Dense(256, activation='relu',
kernel_regularizer=regularizers.l2(_lambda)))
# ... (其他兩層類似)
# 輸出層
model.add(Layers.Dense(1, activation='sigmoid'))
# ...
- 關鍵點:
- 程式碼主要在隱藏層使用 kernel_regularizer=regularizers.l2(_lambda),即對**權重(kernel)**應用 L2 正則化。
- _lambda 參數 控制正則化強度的 λ 值。透過改變這個值,可以獲得不同程度的正則化效果,用來平衡模型複雜度和擬合能力。
4. 總結與展望
正則化是深度學習模型優化中不可或缺的一環。透過在損失函數中增加一個懲罰項,它能有效地限制模型的自由度,防止過度擬合,從而讓模型在面對新的數據時具有更強的泛化能力。在實際應用中,通常需要透過實驗(如調整 λ 值)來找到最適合當前數據集和模型的正則化策略。