iT邦幫忙

2025 iThome 鐵人賽

0
佛心分享-IT 人自學之術

深度學習Tensorflow 2.X系列 第 28

神經網絡中的正則化:抑制過度擬合的關鍵技術

  • 分享至 

  • xImage
  •  

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. 總結與展望

正則化是深度學習模型優化中不可或缺的一環。透過在損失函數中增加一個懲罰項,它能有效地限制模型的自由度,防止過度擬合,從而讓模型在面對新的數據時具有更強的泛化能力。在實際應用中,通常需要透過實驗(如調整 λ 值)來找到最適合當前數據集和模型的正則化策略。


上一篇
使用Dropout
系列文
深度學習Tensorflow 2.X28
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言