目錄
1. 以數據為中心的泛化方法
1.1 使用更多數據
1.2 做好數據預處理
特征工程
1.3 數據增強
1.4 調整數據分布
2. 以模型為中心的泛化方法
2.1 使用更大批次
超參數調優
2.2 調整目標函數
2.3 調整網絡結構
2.4 屏蔽網絡節點
2.5 權值正則化
2.6 偏差-方差權衡
????????提高模型泛化的方法大致可以分為兩個方向:以數據為中心的泛化方法和以模型為中心的泛化方法,下面將分別分析。
????????在機器學習領域,一個很重要的挑戰是算法不光要在訓練集上表現良好,還要能夠在先前未觀測的新數據上表現良好。這種在先前未觀測到的數據上的表現能力就稱為泛化(Generalization)。簡言之,泛化定義了機器學習/深度學習模型在接受訓練數據集訓練后對新數據進行分析和正確預測的能力。
????????以數據為中心的泛化方法主要涉及數據清洗、數據增強、特征工程等。
????????以模型為中心的方法包括針對模型結構、訓練過程中的技巧等,比如正則化技術、提前停止訓練以及模型剪枝等等。
1. 以數據為中心的泛化方法
1.1 使用更多數據
在有條件的前提下,盡可能多地獲取訓練數據是最理想的方法,更多的數據可以讓模型得到充分的學習,也更容易提高泛化能力。
1.2 做好數據預處理
有一個好的數據集遠比有一個好的模型更為重要。這里的“好”主要表現在兩方面:
①、做好特征選擇;
②、做好數據離散化、異常值處理、缺失填充等。
特征工程
在傳統的機器學習方法中,通過創建相關且信息豐富的特征可以幫助模型從數據中捕獲基本模式。在深度學習中,這個過程可以通過深度神經網絡(比如CNN、RNN)自動完成,學習到數據內部的模式和結構。
要做較好的特征工程:數據清洗,特征衍生,特征篩選。提高訓練集的質量才能提升模型的上限,才能用各種提高泛化手段去逼近這個上限。
1.3 數據增強
數據增強又叫數據增廣,在有限數據的前提下通過平移、旋轉、加噪聲等一些列變換來增加訓練數據,同類數據的表現形式也變得更多樣,有助于模型提高泛化能力,需要注意的是數據變化應盡可能不破壞元數數據的主體特征(如在圖像分類任務中對圖像進行裁剪時不能將分類主體目標裁出邊界)。
數據增強(data augmentation)包含一系列用于人為增加數據集中的樣本數量的方法。采用這樣的方式是因為當可用于訓練的數據樣本數量較多時,深度學習模型可以更好地泛化。數據增強可以在可用訓練數據樣本較少的情況下訓練出表現更好的模型。
比如,對于圖像數據,一些常用的數據增強技術有旋轉、翻轉、裁剪,以及添加噪聲等,通過這些操作人為增加訓練數據多樣性,而不要要收集更多的樣本。
1.4 調整數據分布
大多數場景下的數據分布是不均勻的,模型過多地學習某類數據容易導致其輸出結果偏向于該類型的數據,此時通過調整輸入的數據分布可以一定程度提高泛化能力。
2. 以模型為中心的泛化方法
2.1 使用更大批次
在相同迭代次數和學習率的條件下,每批次采用更多的數據將有助于模型更好的學習到正確的模式,模型輸出結果也會更加穩定。
超參數調優
模型權重是通過訓練學習得到的,除了模型參數,在提高模型泛化能力的時候也可以嘗試不同的超參數,例如學習率、批量大小和網絡架構,以找到可產生最佳泛化性能的配置。
除此以外,在深度學習領域,還可以采用遷移學習(Transfer Learning)、模型剪枝(Pruning)、對抗訓練(Adversarial Training)等來改善模型的泛化能力。
針對以上的方法,如果想深入了解和研究,提供一些學習資料供大家參考。
- 《Deep Learning》(中文書名:《深度學習》),第七章:Regularization for Deep Learning。
- 《Pattern Recognition and Machine Learning》,Section 5.5. Regularization in Neural Networks。
2.2 調整目標函數
在某些情況下,目標函數的選擇會影響模型的泛化能力,如目標函數
在某類樣本已經識別較為準確而其他樣本誤差較大的侵害概況下,不同類別在計算損失結果的時候距離權重是相同的,若將目標函數改成
則可以使誤差小的樣本計算損失的梯度比誤差大的樣本更小,進而有效地平衡樣本作用,提高模型泛化能力。
2.3 調整網絡結構
在淺層卷積神經網絡中,參數量較少往往使模型的泛化能力不足而導致欠擬合,此時通過疊加卷積層可以有效地增加網絡參數,提高模型表達能力;在深層卷積網絡中,若沒有充足的訓練數據則容易導致模型過擬合,此時通過簡化網絡結構減少卷積層數可以起到提高模型泛化能力的作用。
2.4 屏蔽網絡節點
該方法可以認為是網絡結構上的正則化,通過隨機性地屏蔽某些神經元的輸出讓剩余激活的神經元作用,可以使模型的容錯性更強。
2.5 權值正則化
權值正則化就是通常意義上的正則化,一般是在損失函數中添加一項權重矩陣的正則項作為懲罰項,用來懲罰損失值較小時網絡權重過大的情況,此時往往是網絡權值過擬合了數據樣本,如
這是最重要的泛化技術之一。正則化通過直接改變模型的架構來解決過擬合問題,從而改進訓練過程。常用的正則化方法比如有L2 norm 和 dropout 等。它們通過修改參數或權重的更新方式來確保模型不會過擬合。
- L2正則化。通過在損失函數中添加L2懲罰項,鼓勵更小的權重并防止模型過擬合。
- Dropout。在訓練過程中隨機禁用一部分神經元,防止對特定神經元的依賴,提高模型的魯棒性和泛化能力。
- Batch Normalization。它通過在每個小批量的訓練數據中對輸入進行標準化,來應對模型訓練過程梯度消失和爆炸問題,并且可以在一定程度上減輕過擬合。
2.6 偏差-方差權衡
提到模型的泛化能力,不得不提到模型的兩個重要概念——方差和偏差。它們對模型泛化有重要的影響。
方差定義了模型預測的可變性,即一組數據與其真實值的分散程度;而偏差則定義了預測與真實值之間的距離(誤差)。
每一個機器學習模型都可能處于以下情況:低偏差-低方差,低偏差-高方差,高偏差-低方差,以及高偏差-高方差。
其中,低偏差-高方差模型稱為過擬合模型,而高偏差-低方差模型稱為欠擬合模型。
在訓練模型的過程中,應該努力在模型復雜性(方差)和正則化(偏差)之間取得適當的平衡,以找到在訓練和驗證數據上都表現良好的模型。
?
參考:
如何提高神經網絡的泛化能力?八大要點掌握_如何提高泛化能力-CSDN博客
機器學習模型的泛化能力不足,有什么改進思路? - 知乎