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. 發起,及其當時任職公司(台灣雪豹科技)無償贊助場地及茶水點心。
去 YouTube 訂閱 | Facebook | 回 GitHub Pages | 到 GitHub 點星 | 網站 | 到 Hugging Face Space 按愛心
大語言模型 | 語音處理 | 自然語言處理 | 電腦視覺 |
Large Language Model | Speech Processing | Natural Language Processing, NLP | Computer Vision |
用 AI 懂 AI
AI 技術 體驗/分享
手把手帶你一起踩 AI 坑:https://www.twman.org/AI
- 白話文手把手帶你科普 GenAI:淺顯介紹生成式人工智慧核心概念,強調硬體資源和數據的重要性。
- 大型語言模型直接就打完收工?:回顧 LLM 領域探索歷程,討論硬體升級對 AI 開發的重要性。
- 檢索增強生成(RAG)不是萬靈丹之優化挑戰技巧:探討 RAG 技術應用與挑戰,提供實用經驗分享和工具建議。
- 大型語言模型 (LLM) 入門完整指南:原理、應用與未來:探討多種 LLM 工具的應用與挑戰,強調硬體資源的重要性。
- 解析探索大型語言模型:模型發展歷史、訓練及微調技術的 VRAM 估算:探討 LLM 的發展與應用,硬體資源在開發中的作用。
- Diffusion Model 完全解析:從原理、應用到實作 (AI 圖像生成);深入探討影像生成與分割技術的應用,強調硬體資源的重要性。
- ASR/TTS 開發避坑指南:語音辨識與合成的常見挑戰與對策:探討 ASR 和 TTS 技術應用中的問題,強調數據質量的重要性。
- 那些 NLP 踩的坑:分享 NLP 領域的實踐經驗,強調數據質量對模型效果的影響。
- 那些語音處理踩的坑:分享語音處理領域的實務經驗,強調資料品質對模型效果的影響。
- 手把手學深度學習安裝環境:詳細介紹在 Ubuntu 上安裝深度學習環境的步驟,分享實際操作經驗。
AI 技術 開源/試用
🎵 不聽可惜的 NotebookLM Podcast @ Google 🎵
A、B、C 那個影片比較適合呢 ?
第七章 深度學習中的正則化
2017/02/10, Regularization for Deep Learning @ Deep Learning Book Chapter 7
1. 正則化的基本含義與目標
- 定義與目標: 正則化是指對學習演算法的一系列修改,其主要目標是減少模型的泛化誤差(即在未見過的新資料上的誤差),而不是僅僅降低訓練誤差 [1-3]。它通常透過向模型引入額外的約束或懲罰,以防止模型過度擬合訓練資料 [1-3]。
- 偏差與方差的權衡 (Bias-Variance Trade-off): 一個有效的正則化通常被認為是一種在模型的偏差 (bias) 和方差 (variance) 之間的有利「交易」 [1, 3, 4]。
- 偏差: 指模型的預測值與真實值之間的系統性差異,通常源於模型的簡化假設 [1, 3]。
- 方差: 指模型在不同訓練資料集上學習到的函數的變異程度,通常源於模型對訓練數據中噪聲的過度敏感 [1, 3, 4]。
- 正則化通常會增加模型的偏差(因為它限制了模型的靈活性),但其主要目的是顯著減少模型的方差(使其對訓練數據的微小變化不那麼敏感,從而提高泛化能力)[1, 3, 4]。一個有利的交易意味著方差的減少程度遠大於偏差的增加程度,從而導致整體泛化誤差的降低 [1]。
2. 常見的正則化策略類型
正則化策略通常可以歸納為幾種主要方式:
- 添加參數約束: 對模型的參數施加額外的限制(例如,限制參數的取值範圍或範數)[1-3, 5]。
- 修改目標函數: 在原始的目標函數中添加一個額外的懲罰項(正則化項),該懲罰項與模型參數的某些屬性相關(如大小、稀疏性)[1-3, 5-7]。
- 增加數據集: 透過數據增強等方式增加訓練數據的多樣性 [5, 8]。
- 模型集成: 訓練多個模型並將它們的預測結果結合起來 [5, 6, 9]。
- 修改優化過程: 例如提前終止 (early stopping) [5, 10]。
- 向模型中注入噪聲 (Noise Robustness): [11-13]
- 稀疏表示 (Sparse Representation): [14, 15]
- 參數共享 (Parameter Sharing) / 多任務學習 (Multitask Learning): [16-20]
- 半監督學習 (Semi-supervised learning): [21]
- Dropout: [22-28]
3. 參數范數懲罰
- 基本概念: 透過向目標函數 J 添加一個參數范數懲罰 Ω(θ) 來限制模型(如神經網路、線性回歸或邏輯回歸)的學習能力 [7]。正則化後的目標函數 J̃ 為:J̃(θ; X, y) = J(θ; X, y) + αΩ(θ),其中 α ≥ 0 是權衡懲罰項和標準目標函數相對貢獻的超參數 [7]。α 越大,正則化懲罰越大 [7]。
- 懲罰對象: 參數范數懲罰通常只對權重 w 進行懲罰,而不對偏置 b 進行懲罰 [7, 29]。這是因為權重負責不同輸入維度之間的關係,需要更多數據來訓練才能得到較好的結果,而偏置相對單純 [29]。
- 作為約束優化: 向目標函數添加參數范數懲罰在數學上可被視為在某個范數約束下最小化原始目標函數的拉格朗日乘子形式,即一種約束優化問題 [3, 30, 31]。懲罰係數 α 對應於拉格朗日乘子,與約束 k 反相關 [3]。
- 顯式范數約束: 相較於使用懲罰項,使用顯式的范數約束進行正則化,可以在優化過程中透過投影 (projection) 到滿足約束的區域來實現 [20, 32]。這能更直接控制參數範圍,防止參數變得過大,在某些情況下更易於分析 [3]。
3.1 L² 參數正則化 (權重衰減 Weight Decay)
-
正則化項: L² 正則化添加權重平方和成正比的懲罰項 [2]。Ω(w) = (1/2) w _2^2 = (1/2) Σ_i w_i^2 [2]。 - 影響權重: 在梯度下降的參數更新規則中,L² 正則化會使權重在每次更新時被乘以一個小於 1 的因子,從而「衰減」其值 [2, 33]。它傾向於使權重值變小、更接近零,但通常不會使其恰好為零 [2, 3, 33, 34]。這可以限制模型複雜度,幫助防止過擬合 [3]。
- 與先驗分佈的關聯: 從貝葉斯角度看,L² 正則化等價於對權重引入一個高斯先驗 (Gaussian prior) [3, 11, 34]。
3.2 L¹ 參數正則化
-
正則化項: L¹ 正則化添加權重絕對值之和懲罰項 [3, 35]。Ω(w) = w _1 = Σ_i w_i [35]。 - 影響權重: L¹ 會使許多權重恰好變為零 [3, 34]。
- 稀疏性 (Sparsity): L¹ 正則化能夠產生稀疏解 [3, 34]。這是因為 L¹ 正則化約束區域在坐標軸上有「角點」,優化算法在這些角點處更容易找到最小值,而角點處通常某些權重的值為零 [3, 34]。這種稀疏性可用於特徵選擇 [14, 15]。
- 與先驗分佈的關聯: 從貝葉斯角度看,L¹ 正則化等價於對權重引入一個拉普拉斯先驗 (Laplacian prior) [34, 36]。
3.3 L¹ 與 L² 的比較
特性 | L¹ 正則化 (Lasso) | L² 正則化 (Ridge / 權重衰減) | ||
---|---|---|---|---|
正則化項 | 權重絕對值之和 Σ | wᵢ | 權重平方和的一半 (1/2)Σwᵢ² | |
對權重的影響 | 傾向於使許多權重變為零 | 傾向於使權重變小但不為零 | ||
解的特性 | 稀疏解 (Sparse Solution) | 非稀疏解 | ||
特徵選擇能力 | 強 (因為能使權重為零) | 無特徵選擇能力 | ||
與先驗的關聯 | 拉普拉斯先驗 | 高斯先驗 | ||
幾何解釋 | 約束區域為菱形/多邊形 (在 2D) | 約束區域為圓形 (在 2D) |
選擇使用 L¹ 或 L² 正則化通常取決於具體問題和數據的特性。如果認為許多特徵是不相關的且希望模型更稀疏,L¹ 可能更適合;如果認為所有特徵都可能對結果有貢獻,L² 可能更適合 [37-39]。
4. 數據集增強 (Dataset Augmentation)
- 定義與目的: 對現有訓練數據應用保持標籤不變 (label preservation) 的隨機變換,人工生成新樣本 [3, 8, 11, 40]。主要目的是增加訓練數據的多樣性和數量,提高模型的泛化能力和魯棒性,並減少過度擬合 [3, 8, 40]。
- 重要原則: 保持標籤不變性是關鍵原則 [8, 11]。變換不能改變樣本的真實類別標籤 [8, 11]。
- 圖像領域常見方法: 幾何變換(平移、旋轉、縮放、裁剪、翻轉)、顏色空間變換、添加噪聲等 [8, 40, 41]。水平翻轉對一般物體識別(如貓 vs. 狗)是合適的,但對字符識別(如 “b” 和 “d”)則不合適 [11, 40]。
5. 噪聲魯棒性 (Noise Robustness)
- 核心思想: 向模型中注入噪聲可以提高其魯棒性,作為一種正則化手段 [11-13]。噪聲迫使模型學習在存在擾動的情況下仍然能夠做出正確的預測或保持穩定的表示 [12]。這有助於防止過擬合、平滑損失景觀,並提高對真實世界噪聲的適應性 [12]。
- 實現方式:
- 向權重注入噪聲: 訓練期間向模型的權重添加隨機噪聲,這可以被看作是 L² 正則化的一種隨機實現,或等價於權重具有高斯先驗 [11, 13]。
- 向輸出注入噪聲 / 標籤平滑 (Label Smoothing): (Szegedy et al., 2015) 對於分類任務,不是使用 one-hot 編碼的硬標籤,而是將目標標籤從 [4] 稍微「平滑」一下 [3, 11-13]。例如,將正確類別的目標值設為 1-ϵ,將其他錯誤類別的目標值設為 ϵ/(k-1) [11-13]。這有助於防止模型過於自信、改善模型的校準,並提高泛化能力 [3, 12, 13]。
6. 稀疏表示 (Sparse Representation)
- 定義: 數據表示(如隱藏層激活值)或模型參數(權重)中大部分元素為零或接近零 [14, 15]。
- 正則化實現:
-
懲罰表示的激活值: 直接對神經網路中間層的激活值 h 施加稀疏性懲罰,例如在損失函數中加入激活值的 L1 範數 α h _1 [14, 15]。這會鼓勵模型在表示任何給定輸入時,只激活少數幾個隱藏單元 [14, 15]。 -
懲罰模型的權重: 使用 L1 權重衰減 α w _1,誘導許多權重為零,使得從輸入到輸出的有效連接變得稀疏 [14, 15, 34]。
-
- 潛在好處: 特徵選擇/信息壓縮,提高可解釋性,提高計算效率(需要專門庫支持),改善泛化能力/減少過擬合,對噪聲的魯棒性 [14, 15]。
7. Dropout
- 定義: 一種非常有效且被廣泛使用的針對神經網路的正則化技術 [26, 28]。
- 工作原理 (訓練期間): 在每次前向傳播時,對於網路的每個隱藏單元(有時包括輸入單元),以一個預設機率 p(例如 0.5)將其隨機地「丟棄」(drop out),即暫時將其輸出置為零,不參與當前的前向傳播和反向傳播 [22, 26-28]。每次訓練一個小批量數據時,都會隨機生成一個新的「丟棄掩碼 (dropout mask)」 [26, 27]。通常會使用 Inverted Dropout,在訓練時將未被丟棄的單元的激活值除以保留機率 (1-p),以保持激活值的期望一致 [23, 27, 28]。
- 工作原理 (測試期間): 通常不進行 Dropout,即所有的神經單元都被保留並參與計算 [23, 26-28]。由於訓練時使用了 Inverted Dropout,測試時不需要對權重進行額外的縮放 [23, 27, 28]。
- 正則化作用:
- 防止特征之間的過度協同適應 (co-adaptation): 由於每個單元都可能被隨機丟棄,模型不能過度依賴於任何少數幾個特定的特征,而是被迫學習更魯棒、更分散的特征表示 [26, 28]。
- 近似於訓練大量共享權重的「瘦」網路的集成: 每次應用 Dropout 都相當於從原始網路中採樣出一個不同的子網路。整個訓練過程可以被看作是在訓練這些大量不同的子網路的集成,它們共享原始網路的權重 [22, 26, 28, 42]。這是一種計算上非常高效的 Bagging 近似,Bagging 主要通過減少模型的方差來提高性能 [26, 28]。
8. 半監督學習 (Semi-supervised learning)
- 定義: 一種機器學習範式,它在訓練時同時使用少量有標註的數據和大量無標註的數據 [21]。
-
作為正則化: 無標註數據雖然沒有提供直接的標籤,但它們仍然攜帶了關於輸入數據 x 的分佈 P(x) 的有用信息 [21]。如果輸入數據的結構與監督任務相關,利用無標註數據學習 P(x) 的信息,可以幫助改進對 P(y x) 的學習 [21]。這相當於利用數據分佈的結構信息來約束模型,提高模型的泛化能力 [21]。
9. 多任務學習 (Multitask Learning)
- 定義: 一種機器學習方法,它通過同時學習多個相關的任務,並讓這些任務共享模型的一部分參數或表示,來提高每個單獨任務的學習性能和泛化能力 [16, 18]。
- 核心思想: 如果多個任務之間存在相關性,同時學習可以讓模型從所有任務的數據中學習到更通用、更魯棒的表示,一個任務的學習可以為其他任務提供有益的約束 [18, 19]。
- 參數共享: 常見的方式是硬參數共享 (hard parameter sharing),底層的特征提取層在所有任務之間是共享的,而頂層則是任務特定的 [16, 18, 19]。共享參數實際上是從所有任務的數據中學習,增加了有效訓練數據量 [19]。迫使共享表示對多個任務都有用,本身就是一種隱式的正則化,有助於避免過度擬合到任何單個任務的特定噪聲或細節 [19]。
10. 提前終止 (Early Stopping)
- 定義: 一種在訓練迭代學習模型時使用的正則化技術和停止準則 [5, 10]。
- 工作原理: 在訓練過程中,同時在一個獨立的驗證集 (validation set) 上監控模型的性能(例如,驗證損失)[10]。如果模型在驗證集上的性能不再提升,甚至開始惡化(表明開始過擬合),就提前停止訓練 [10]。通常會保存並返回在驗證集上性能達到最佳時的模型參數 [10]。
- 正則化作用:
- 限制模型有效容量: 通過在模型開始過擬合之前停止訓練,有效地限制了模型學習過於複雜的函數的能力 [10]。
- 選擇泛化能力好的模型: 目標是找到在未見過數據(驗證集)上表現最好的模型,直接優化了泛化能力 [10]。
- 優點: 實現簡單、計算高效、自動確定訓練輪數、通常非常有效 [10]。
- 潛在缺點: 需要驗證集(減少訓練數據)、對驗證集敏感、可能過早停止 [10]。
11. 欠約束 / 欠定問題 (Underconstrained / Underdetermined Problems)
- 定義: 訓練數據提供的信息不足以唯一確定模型的參數 [15, 43]。通常發生在特徵數量遠大於樣本數量,或模型過於複雜/靈活時,存在無限多個解都能使得訓練誤差達到最小值 [43]。
- 正則化的幫助: 正則化通過向學習問題引入額外的約束或偏好,幫助解決欠約束問題 [15, 43]。當存在多個能同樣好地擬合訓練數據的解時,正則化項會引導優化算法選擇其中一個滿足特定屬性(由正則化項定義)的解 [43]。例如 L² 選擇 L² 范數最小的解,L¹ 選擇 L¹ 范數最小(稀疏)的解 [43]。
12. 其他相關概念
- 參數共享 (Parameter Sharing): 讓模型不同部分使用同一組參數(如 CNN 的卷積核),顯著減少參數數量,提高統計效率和泛化能力。CNN 的卷積核共享是其成功的重要原因之一 [20, 44]。
- 參數綁定 (Parameter Tying): 更廣義的概念,要求參數之間滿足某種關係。參數共享是參數綁定的一種特殊情況(關係為相等)[20]。
- 投影梯度下降 (Projected Gradient Descent): 在使用顯式約束進行正則化時,用於將梯度下降更新後的參數投影回約束區域,以確保參數滿足約束 [20, 32]。
- 欠定問題 (Underdetermined Problems): 正則化是解決這類問題的關鍵,幫助從多個可能解中選取一個 [15, 20, 43, 45]。
13. 實作考量與工具
- 使用現有框架/套件: 許多深度學習框架和函式庫提供了內建的正則化選項,例如設定 L1 或 L2 權重衰減、Dropout 機率等 [24, 32]。
- 使用預訓練模型 (Pre-trained Models): 在數據量有限時,使用在大規模數據集(如 ImageNet)上預訓練好的模型(如 Inception-v3)作為起點,然後再針對特定任務進行微調 (fine-tuning) 或再訓練 (retraining),是一種有效的正則化手段,可以利用預訓練模型學習到的通用特徵,避免從頭開始訓練導致過擬合 [16, 17, 44, 46-50]。這相當於從「半山腰」開始訓練 [50]。
- 數據處理: 處理大量圖片數據時,檔案I/O速度可能成為瓶頸 [48]。需要注意圖片的格式、大小、通道數等 [51, 52]。
- 實作細節: 在自己實作某些正則化方法時,可能需要注意一些細節,例如 Dropout 在訓練和測試時的處理方式 [23, 24, 27, 28]。
- 開發工具: 一些工具可以輔助訓練和驗證過程,例如 Digit (用於 Caffe) 提供圖形化介面,方便設定參數、監控訓練過程(損失、準確率、GPU 使用等)和進行驗證 [51-54]。
- 環境配置: 安裝深度學習框架和函式庫(如 Caffe)及其依賴項(如 CUDA, cuDNN)可能非常複雜,版本兼容性問題常見 [51, 54, 55]。