Deep Learning 101

Taiwan’s pioneering and highest deep learning meetup, launched on 2016/11/11 @ 83F, Taipei 101

AI是一條孤獨且充滿惶恐及未知的旅程,花俏絢麗的收費課程或活動絕非通往成功的捷徑。
衷心感謝當時來自不同單位的AI同好參與者實名分享的寶貴經驗;如欲移除資訊還請告知。
TonTon Huang Ph.D. 發起,及其當時任職公司(台灣雪豹科技)無償贊助場地及茶水點心。

Deep Learning 101 Buy Me A Coffee

去 YouTube 訂閱 | Facebook | 回 GitHub Pages | 到 GitHub 點星 | 網站 | 到 Hugging Face Space 按愛心

2017/02/10, Regularization for Deep Learning @ Deep Learning Book Chapter 7

深度學習正則化技術匯整:一份關於深度神經網路模型正則化方法的全面概述

🎵 不聽可惜的 NotebookLM Podcast @ Google 🎵

正則化的基本含義與目標 Fundamentals of Regularization

定義與目標 (Definition & Goals): 正則化是指對學習演算法的一系列修改,其主要目標是減少模型的泛化誤差(即在未見過的新資料上的誤差),而不是僅僅降低訓練誤差。它通常透過向模型引入額外的約束或懲罰,以防止模型過度擬合訓練資料。

偏差與方差的權衡 (Bias-Variance Trade-off): 一個有效的正則化通常被認為是一種在模型的偏差 (bias)方差 (variance) 之間的有利「交易」。

  • 偏差 (Bias): 指模型的預測值與真實值之間的系統性差異,通常源於模型的簡化假設。
  • 方差 (Variance): 指模型在不同訓練資料集上學習到的函數的變異程度,通常源於模型對訓練數據中噪聲的過度敏感。

正則化通常會增加模型的偏差(因為它限制了模型的靈活性),但其主要目的是顯著減少模型的方差(使其對訓練數據的微小變化不那麼敏感,從而提高泛化能力)。一個有利的交易意味著方差的減少程度遠大於偏差的增加程度,從而導致整體泛化誤差的降低。

常見的正則化策略類型 Types of Regularization Strategies

正則化策略通常可以歸納為幾種主要方式:

添加參數約束 Parameter Constraints

對模型的參數施加額外的限制(例如,限制參數的取值範圍或範數)。

修改目標函數 Modifying Objective Function

在原始的目標函數中添加一個額外的懲罰項(正則化項)。

增加數據集 Dataset Augmentation

透過數據增強等方式增加訓練數據的多樣性。

模型集成 Model Ensembling

訓練多個模型並將它們的預測結果結合起來。

修改優化過程 Modifying Optimization

例如**提前終止 (early stopping)**。

向模型中注入噪聲 Noise Robustness

提高模型對擾動的魯棒性。

稀疏表示 Sparse Representation

鼓勵模型參數或激活值稀疏。

參數共享/多任務學習 Parameter Sharing/Multitask Learning

讓多個任務共享參數以提高泛化。

半監督學習 Semi-supervised Learning

利用無標註數據輔助學習。

Dropout

訓練時隨機丟棄神經元。

參數范數懲罰 Parameter Norm Penalties

基本概念 (Basic Concept): 透過向目標函數 $J$ 添加一個參數范數懲罰 $\Omega(\theta)$ 來限制模型的學習能力。正則化後的目標函數 $\tilde{J}$ 為:$\tilde{J}(\theta; X, y) = J(\theta; X, y) + \alpha\Omega(\theta)$,其中 $\alpha \ge 0$ 是權衡懲罰項和標準目標函數相對貢獻的超參數。$\alpha$ 越大,正則化懲罰越大。

懲罰對象 (Penalty Target): 參數范數懲罰通常只對權重 w 進行懲罰,而不對偏置 b 進行懲罰

作為約束優化 (Constrained Optimization): 向目標函數添加參數范數懲罰在數學上可被視為在某個范數约束下最小化原始目標函數的拉格朗日乘子形式。

L² 參數正則化 (權重衰減) L² Regularization (Weight Decay)

正則化項 (Term): $\Omega(w) = \frac{1}{2} ||w||_2^2 = \frac{1}{2} \sum_i w_i^2$。

影響權重 (Effect on Weights): 使權重在每次更新時「衰減」,傾向於使權重值變小、更接近零,但通常不會使其恰好為零

貝葉斯角度 (Bayesian View): 等價於對權重引入一個高斯先驗 (Gaussian prior)

L¹ 參數正則化 L¹ Regularization

正則化項 (Term): $\Omega(w) = ||w||_1 = \sum_i |w_i|$。

影響權重 (Effect on Weights): L¹ 會使許多權重恰好變為零

稀疏性 (Sparsity): 能夠產生稀疏解,可用於特徵選擇 (feature selection)

貝葉斯角度 (Bayesian View): 等價於對權重引入一個拉普拉斯先驗 (Laplacian prior)

L¹ 與 L² 的比較 L¹ vs. L² Comparison

特性 (Feature) L¹ 正則化 (Lasso) L² 正則化 (Ridge / 權重衰減)
正則化項 (Term) 權重絕對值之和 $\sum|w_i|$ 權重平方和的一半 $\frac{1}{2}\sum w_i^2$
對權重的影響 (Effect on Weights) 傾向於使許多權重變為零 傾向於使權重變小但不為零
解的特性 (Solution Property) 稀疏解 (Sparse Solution) 非稀疏解 (Non-sparse Solution)
特徵選擇能力 (Feature Selection) 強 (因為能使權重為零) 無特徵選擇能力
與先驗的關聯 (Bayesian Prior) 拉普拉斯先驗 (Laplacian Prior) 高斯先驗 (Gaussian Prior)
幾何解釋 (Geometric View) 約束區域為菱形/多邊形 (2D) 約束區域為圓形 (2D)

選擇使用 L¹ 或 L² 正則化通常取決於具體問題和數據的特性。如果認為許多特徵是不相關的且希望模型更稀疏,L¹ 可能更適合;如果認為所有特徵都可能對結果有貢獻,L² 可能更適合。

數據集增強 Dataset Augmentation

定義與目的 (Definition & Purpose): 對現有訓練數據應用保持標籤不變 (label preservation) 的隨機變換,人工生成新樣本。主要目的是增加訓練數據的多樣性和數量提高模型的泛化能力和魯棒性,並減少過度擬合

重要原則 (Key Principle): 保持標籤不變性是關鍵原則。變換不能改變樣本的真實類別標籤。

圖像領域常見方法 Common Image Augmentation Techniques

  • 幾何變換 (Geometric): 平移 (translation), 旋轉 (rotation), 縮放 (scaling), 裁剪 (cropping), 翻轉 (flipping).
  • 顏色空間變換 (Color Space): 亮度 (brightness), 對比度 (contrast), 飽和度 (saturation).
  • 添加噪聲 (Adding Noise).

例如,水平翻轉對一般物體識別(如貓 vs. 狗)是合適的,但對字符識別(如 "b" 和 "d")則不合適。

噪聲魯棒性 Noise Robustness

核心思想 (Core Idea): 向模型中注入噪聲可以提高其魯棒性,作為一種正則化手段。這有助於防止過擬合平滑損失景觀,並提高對真實世界噪聲的適應性。

實現方式 Implementations

  • 向權重注入噪聲 (Noise in Weights): 等價於權重具有高斯先驗。
  • 向輸出注入噪聲 / 標籤平滑 (Noise in Outputs / Label Smoothing): (Szegedy et al., 2015) 將目標標籤稍微「平滑」,防止模型過於自信。例如,正確類別目標值 1-ϵ,其他為 ϵ/(k-1)。

稀疏表示 Sparse Representation

定義 (Definition): 數據表示(如隱藏層激活值)或模型參數(權重)中大部分元素為零或接近零。

正則化實現 Regularization Methods

  • 懲罰表示的激活值 (Penalizing Activations): 在損失函數中加入激活值的 L1 範數 $\alpha||h||_1$。
  • 懲罰模型的權重 (Penalizing Weights): 使用 L1 權重衰減 $\alpha||w||_1$。

潛在好處 (Benefits): 特徵選擇, 提高可解釋性, 計算效率, 改善泛化

Dropout

定義 (Definition): 一種非常有效且被廣泛使用的針對神經網路的正則化技術。

工作原理 (訓練期間) Mechanism (Training)

在每次前向傳播時,對於網路的每個隱藏單元(有時包括輸入單元),以一個預設機率 p(例如 0.5)將其隨機地「丟棄」(drop out),即暫時將其輸出置為零。每次訓練一個小批量數據時,都會隨機生成一個新的「丟棄掩碼 (dropout mask)」。

Inverted Dropout: 在訓練時將未被丟棄的單元的激活值除以保留機率 (1-p),以保持激活值的期望一致。

工作原理 (測試期間) Mechanism (Testing)

通常不進行 Dropout,即所有的神經單元都被保留並參與計算。由於訓練時使用了 Inverted Dropout,測試時不需要對權重進行額外的縮放

正則化作用 Regularization Effect

  • 防止特征之間的過度協同適應 (Prevents Co-adaptation): 模型不能過度依賴於任何少數幾個特定的特征,而是被迫學習更魯棒、更分散的特征表示。
  • 近似於訓練大量共享權重的「瘦」網路的集成 (Ensemble Approximation): 每次應用 Dropout 都相當於從原始網路中採樣出一個不同的子網路。整個訓練過程可以被看作是在訓練這些大量不同的子網路的集成。這是一種計算上非常高效的 Bagging 近似。

半監督學習 Semi-supervised Learning

定義 (Definition): 一種機器學習範式,它在訓練時同時使用少量有標註的數據大量無標註的數據

作為正則化 (As Regularization): 無標註數據攜帶了關於輸入數據 $x$ 的分佈 $P(x)$ 的有用信息。利用這些信息學習 $P(x)$ 的結構,可以幫助改進對 $P(y|x)$ 的學習,相當於利用數據分佈的結構信息來約束模型,提高泛化能力。

多任務學習 Multitask Learning

定義 (Definition): 一種機器學習方法,它通過同時學習多個相關的任務,並讓這些任務共享模型的一部分參數或表示,來提高每個單獨任務的學習性能和泛化能力。

核心思想 (Core Idea): 如果多個任務之間存在相關性,同時學習可以讓模型從所有任務的數據中學習到更通用、更魯棒的表示

參數共享 (Parameter Sharing): 常見的方式是硬參數共享 (hard parameter sharing),底層的特征提取層在所有任務之間是共享的。共享參數增加了有效訓練數據量,迫使共享表示對多個任務都有用,本身就是一種隱式的正則化

提前終止 Early Stopping

定義 (Definition): 一種在訓練迭代學習模型時使用的正則化技術和停止準則。

工作原理 (Mechanism): 在訓練過程中,同時在一個獨立的驗證集 (validation set) 上監控模型的性能。如果驗證集性能不再提升或開始惡化,就提前停止訓練。通常會保存並返回在驗證集上性能達到最佳時的模型參數。

正則化作用 Regularization Effect

  • 限制模型有效容量 (Limits Effective Capacity): 限制模型學習過於複雜函數的能力。
  • 選擇泛化能力好的模型 (Selects Generalizable Model): 直接優化泛化能力。

優點 (Pros): 實現簡單、計算高效、自動確定訓練輪數、通常非常有效。

潛在缺點 (Cons): 需要驗證集、對驗證集敏感、可能過早停止。

欠約束 / 欠定問題 Underconstrained / Underdetermined Problems

定義 (Definition): 訓練數據提供的信息不足以唯一確定模型的參數。通常發生在特徵數量遠大於樣本數量,或模型過於複雜/靈活時,存在無限多個解都能使得訓練誤差達到最小值。

正則化的幫助 (How Regularization Helps): 正則化通過向學習問題引入額外的約束或偏好,幫助解決欠約束問題。當存在多個能同樣好地擬合訓練數據的解時,正則化項會引導優化算法選擇其中一個滿足特定屬性(由正則化項定義)的解。例如 L² 選擇 L² 范數最小的解,L¹ 選擇 L¹ 范數最小(稀疏)的解。

其他相關概念 Other Concepts

  • 參數共享 (Parameter Sharing): 如 CNN 的卷積核,減少參數,提高效率和泛化。
  • 參數綁定 (Parameter Tying): 更廣義,要求參數間滿足某種關係。
  • 投影梯度下降 (Projected Gradient Descent): 用於顯式約束,將參數投影回約束區域。

實作考量與工具 Implementation & Tools

使用現有框架/套件 Frameworks/Kits

許多深度學習框架提供內建正則化選項 (L1/L2, Dropout)。

使用預訓練模型 Pre-trained Models

數據有限時,用大規模數據集預訓練模型 (如 ImageNet 上的 Inception-v3) 微調,有效利用通用特徵,避免過擬合。

數據處理 Data Handling

處理大量圖片數據時,檔案I/O速度可能成為瓶頸。注意圖片格式、大小、通道數。

實作細節 Implementation Details

例如 Dropout 在訓練和測試時的處理方式不同。

開發工具 Development Tools

工具如 Digit (Caffe) 提供圖形化介面,方便設定、監控訓練與驗證。

環境配置 Environment Setup

安裝框架 (如 Caffe) 及依賴 (CUDA, cuDNN) 可能複雜,注意版本兼容性。