摘要
本文系統闡述了深度學習中的正則化技術體系,圍繞防止過擬合這一核心目標展開。首先通過偏差-方差框架解析過擬合/欠擬合本質,并使用對比表明確區分特征;其次深入分析了L1/L2正則化的數學原理(2mλ?∥w∥2與mλ?∥w∥1?),揭示其通過權重收縮(W(1?mαλ?))的機制;接著詳解了Dropout技術實現方案(隨機置零+縮放補償)及其在計算機視覺中的應用價值;最后補充了早停法和數據增強策略。全文貫通理論公式與可視化示例,形成完備的正則化知識體系。
文章目錄
- 摘要
- 為什么需要正則化
- 過擬合與欠擬合對比表
- 正則化---為了防止過擬合
- 邏輯回歸的L1與L2正則化
- 梯度下降
- dropout正則化
- 早停止法
- 數據增強
- 總結
為什么需要正則化
這里引入一些概念
- 偏差:預測與實際值差的大,訓練集,測試集都不準。
- 方差:受數據的擾動大,訓練集數據差別大(方差大),導致相同模型,不同訓練集,預測的結果不同。(訓練集準,測試集不準)
- 過擬合:訓練參數過多,而訓練樣本過少導致學習了無用特征,或過度看重某個特征,使預測集準確率低。
- 欠擬合:訓練集,測試集準確率都低。(偏差大)
過擬合與欠擬合對比表
特性 | 過擬合 (Overfitting) | 欠擬合 (Underfitting) |
---|---|---|
定義 | 模型在訓練集上表現很好,但在測試集上表現差 | 模型在訓練集和測試集上表現都差 |
訓練誤差 | 低 | 高 |
測試誤差 | 高 | 高 |
模型復雜度 | 通常過于復雜(模型參數過多) | 通常過于簡單(模型參數過少) |
學習能力 | 學習能力過強,甚至記住了噪聲 | 學習能力不足,無法捕捉數據中的基本模式 |
數據量 | 通常發生在數據量較少時 | 可能發生在數據量不足或模型太簡單時 |
偏差-方差分解 | 高方差 | 高偏差 |
解決方案 | 1. 增加數據量 2. 正則化(L1/L2) 3. 減少模型復雜度 4. Dropout 5. 早停(Early Stopping) | 1. 增加模型復雜度 2. 增加特征數量 3. 減少正則化 4. 延長訓練時間 5. 使用更復雜的模型 |
典型表現圖 | 訓練誤差曲線遠低于測試誤差曲線 | 訓練誤差和測試誤差都較高且接近 |
決策邊界 | 非常復雜,可能包含許多不必要的細節 | 過于簡單,無法捕捉數據中的結構 |
正則化—為了防止過擬合
邏輯回歸的L1與L2正則化
邏輯回歸的參數W數量根據特征的數量而定(一個神經元*特征數),那么正則化如下
L2正則化 w2w^2w2
邏輯回歸的損失函數中增加L2正則化
J(w,b)=1m∑i=1mL(y^(i),y(i))+λ2m∥w∥2J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|^{2}J(w,b)=m1?∑i=1m?L(y^?(i),y(i))+2mλ?∥w∥2
其中的L2范數可以理解:λ2m∥w∥22=λ2m∑j=1nxjwj2=λ2mwTw\frac{\lambda}{2 m}\|w\|_{2}^{2}=\frac{\lambda}{2 m} \sum_{j=1}^{n} \frac{x_{j}}{w_{j}^{2}} =\frac{\lambda}{2 m} w^{T} w2mλ?∥w∥22?=2mλ?∑j=1n?wj2?xj??=2mλ?wTw
解釋:所有w參數的平方和的結果
- 1m∑i=1mL(y^(i),y(i))\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)m1?∑i=1m?L(y^?(i),y(i))是當前批次,所有樣本損失率的平均值
- L2范數=λ2m∥w∥2\frac{\lambda}{2 m}\|w\|^{2}2mλ?∥w∥2=λ2mwTw\frac{\lambda}{2 m} w^{T} w2mλ?wTw,www是權重矩陣(由神經元與特征數目決定)
- λ\lambdaλ是超參數
L1正則化 www
邏輯回歸的損失函數中增加L1正則化
J(w,b)=1m∑i=1mL(y^(i),y(i))+λ2m∥w∥1J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|_{1}J(w,b)=m1?∑i=1m?L(y^?(i),y(i))+2mλ?∥w∥1?
其中L2范數可以理解為:λ2m∥w∥1=λ2m∑j=1nxj∣wj∣\frac{\lambda}{2 m}\|w\|_{1}=\frac{\lambda}{2 m} \sum_{j=1}^{n} \frac{x_{j}}{\left|w_{j}\right|}2mλ?∥w∥1?=2mλ?∑j=1n?∣wj?∣xj??
梯度下降
?接下來我們通過方向傳播來理解這個其中的L2,對于損失函數我們要反向傳播求參數梯度:
(1) dW=?L?w+λmWdW=\frac{\partial L}{\partial w}+\frac{\lambda}{m} WdW=?w?L?+mλ?W
前面的默認損失函數的梯度計算結果默認為backprop,那么更新的參數就為
(2) W:=W?αdWW:=W-\alpha dWW:=W?αdW 那么我們將第一個公式帶入第二個得到
W:=W?α(?L?w+λmW)W:=W-\alpha(\frac{\partial L}{\partial w}+\frac{\lambda}{m} W) W:=W?α(?w?L?+mλ?W)
=W?αλmW?α??L?w=W-\frac{\alpha \lambda}{m} W-\alpha * \frac{\partial L}{\partial w} =W?mαλ?W?α??w?L?
所以每次更新的時候都會讓W(1?αλm)W(1-\frac{\alpha \lambda}{m})W(1?mαλ?),使權重www隨迭代次數逐漸減小,所以我們通常稱L2范數為權重衰減。
- 正則化如何防止過擬合的
紅線:合適的擬合。
綠線:過擬合
藍線:欠擬合
如上圖所示,我們發現,當模型發生過擬合時,模型相對于其他模型,曲線函數更加的彎曲,這說明在局部彎曲的部分,切線斜率特別大,(即模型導數的絕對值特別大,這是由于www從一個較大的值變化到另一個大的值,是www的系數過大導致的),對于整個模型來說,我們可以理解為所有的參數的絕對值之和特別大。因此,如果我們有辦法使得這些參數的值,比較稠密均勻地集中在零附近,就能有效地抑制過擬合。于是,便引入了范數。從而使www的系數減小,從而減小擬合的波動,防止過擬合的發生。
參考:正則化如何防止過擬合的
注:其中,入為正則化因子,是超參數。由于L1正則化最后得到 w向量中將存在大量的 0,使模型變得稀疏化,因此 L2 正則化更加常用。
dropout正則化
- dropout為什么起效
加入了dropout后,輸入的特征都存在被隨機清除的可能,所以該神經元不會再特別依賴于任何一個輸入特征,也就是不會給任何一個輸入特征設置太大的權重。通過傳播過程,dropout將產生和L2正則化相同的收縮權重的效果。(不會給某個特征設置太大的權重)
·對于不同的層,設置的keep_prob大小也不一致,神經元較少的層,會設keep_prob為1.0,而神經元多的層則會設置比較小的keep_prob通常被使用在計算機視覺領域,圖像擁有更多的特征,場景容易過擬合,效果被實驗人員證明是很不錯的。
早停止法
數據增強
增加數據的多樣性,使其能夠盡可能覆蓋所有情況。
如果所有A類都是頭朝左,B類都是頭朝右,就會可能會把車頭朝向視為類別的重要依據。
- 數據增強的效果