正则化方法:数据增强、regularization、dropout
文章目錄
- 過擬合 overfitting
- 數據增強
- 正則化項
- 范數 norm
- L1 正則 Lasso regularizer
- L2 正則 Ridge Regularizer / Weight Decay
- L1 與 L2 的差異
- Dropout
過擬合 overfitting
-
在訓練數據不夠多,或者模型過于復雜時,常常會導致模型對訓練數據集過度擬合。
-
其直觀的表現如下圖所示:隨著訓練過程的進行,在訓練集上的錯誤率漸漸減小,但是在驗證集上的錯誤率卻反而漸漸增大。
- 正則化技術是保證算法泛化能力的有效工具。
數據增強
數據增強是提升算法性能、滿足深度學習模型對大量數據的需求的重要工具。數據增強通過向訓練數據添加轉換或擾動來人工增加訓練數據集。數據增強技術如:水平或垂直翻轉圖像、裁剪、色彩變換、擴展和旋轉通常應用在視覺表象和圖像分類中。
正則化項
最基本的正則化方法,是在代價函數中添加懲罰項,對復雜度高的模型進行“懲罰”。正則化一般具有如下形式:
J(w,b)=1m∑i=1mL(y^,y)+λR(w)J(w,b)= \frac{1}{m} \sum_{i=1}^{m}L(\hat{y},y)+\lambda R(w)J(w,b)=m1?i=1∑m?L(y^?,y)+λR(w)
其中:
-
L(y^,y)L(\hat{y},y)L(y^?,y) 是經驗風險項
-
λR(w)\lambda R(w)λR(w) 是正則項
-
λ≥0λ≥0λ≥0 為調整兩者之間關系的系數
-
λλλ 值可以使用交叉驗證的方法嘗試一系列可能的值,比如從 0,0.01,0.02,0.04 … 開始,一直試下去,將步長設為2倍的速度增長。
常見的正則項有 L1L1L1 正則項 和 L2L2L2 正則項。
范數 norm
-
L1L_1L1? 范數: ∣∣x∣∣1=∑i=1N∣xi∣||x||_1 = \sum_{i=1}^N|x_i|∣∣x∣∣1?=∑i=1N?∣xi?∣
即向量元素絕對值之和。
-
L2L_2L2? 范數: ∣∣x∣∣2=∑i=1Nxi2||\textbf{x}||_2 =\sqrt{\sum_{i=1}^Nx_i^2}∣∣x∣∣2?=∑i=1N?xi2??
即 Euclid范數(歐幾里得范數),常用計算向量長度。
-
LpL_pLp? 范數:∣∣x∣∣p=(∑i=1N∣xi∣p)1p||\textbf{x}||_p = (\sum_{i=1}^N|x_i|^p)^{\frac{1}{p}}∣∣x∣∣p?=(∑i=1N?∣xi?∣p)p1?
即向量元素絕對值的 ppp 次方之和的 1/p1/p1/p 次冪
L1 正則 Lasso regularizer
J(w,b)=1m∑i=1mL(y^,y)+λ∣w∣J(w,b)=\frac{1}{m} \sum_{i=1}^{m}L(\hat{y},y)+\lambda|w|J(w,b)=m1?i=1∑m?L(y^?,y)+λ∣w∣
-
L1正則化,是一個相對常用的正則化方法。
-
正則化目的:減少參數的絕對值總和。
L2 正則 Ridge Regularizer / Weight Decay
J(w,b)=1m∑i=1mL(y^,y)+12λw2J(w,b)=\frac{1}{m} \sum_{i=1}^{m}L(\hat{y},y)+\frac{1}{2}\lambda w^2J(w,b)=m1?i=1∑m?L(y^?,y)+21?λw2
-
L2 正則化,可能是最常用的正則化方法了
-
正則化目的:減少參數的平方值總和。
-
系數 12\frac{1}{2}21? 主要是為了后面的求導操作方便,加上 12\frac{1}{2}21? 后,該式子關于 www 梯度就是 λw\lambda wλw 而不是 2λw2\lambda w2λw 了。
-
L2 正則化,可以直觀理解為它對于大數值的權重向量進行嚴厲懲罰,傾向于更加分散的權重向量,使網絡更傾向于使用所有輸入特征,而不是嚴重依賴輸入特征中某些小部分特征。
舉個例子,假設輸入向量 x=[1,1,1,1]x=[1,1,1,1]x=[1,1,1,1],兩個權重向量 w1=[1,0,0,0],w2=[0.25,0.25,0.25,0.25]w_1=[1,0,0,0],w_2=[0.25,0.25,0.25,0.25]w1?=[1,0,0,0],w2?=[0.25,0.25,0.25,0.25]。那么 w1Tx=w2T=1w^T_1x=w^T_2=1w1T?x=w2T?=1,兩個權重向量都得到同樣的內積,但是 w1w_1w1? 的 L2 懲罰是 1.01.01.0,而 w2w_2w2? 的 L2 懲罰是 0.250.250.25。
因此,根據 L2 懲罰來看,w2w_2w2? 更好,因為它的正則化損失更小。從直觀上來看,這是因為 w2w_2w2? 的權重值更小且更分散。既然 L2L2L2 懲罰傾向于更小更分散的權重向量,這就會鼓勵分類器最終將所有維度上的特征都用起來,而不是強烈依賴其中少數幾個維度。
-
在梯度下降時,使用 L2 正則化意味著所有的權重都以 www += - λ?w\lambda *wλ?w 向著 0 線性下降。
L1 與 L2 的差異
L1 與 L2 的差異:
-
假設個體 xxx 只有兩個分量,則 www 也只有兩個分量 w1,w2w1,w2w1,w2,將其作為兩個坐標軸,對于目標函數:
J(w,b)=1m∑i=1m(yi?wTxi)2+λR(w)J(w,b)= \frac{1}{m} \sum_{i=1}^{m}(y_i -w^Tx_i)^2+\lambda R(w)J(w,b)=m1?i=1∑m?(yi??wTxi?)2+λR(w)
-
先繪出目標函數中 (yi?wTxi)2(y_i -w^Tx_i)^2(yi??wTxi?)2 的平方誤差項等值線(平方誤差項取值相同的點的連線)。
-
再分別繪制出 L1 范數和 L2 范數的等值線。
-
目標函數的解,要在平方誤差項與正則化項之間折中,即出現在圖中的等值線交點處。
-
可發現采用 L1 范數時,平方誤差等值線與正則化等值線的交點經常出現在坐標軸上,即 w1w1w1 或 w2w2w2 為 000 。
-
而采用 L2 范數時,交點經常出現在象限中,即 w1w1w1 和 w2w2w2 均不為 000,故采用 L1 正則化項更易得到稀疏解。
L1 與 L2 的使用:
-
由于 L1 正則化得到的是稀疏解,它會讓權重向量在最優化的過程中變得稀疏(即非常接近0),使用 L1 正則化的神經元最后使用的是它們最重要的輸入特征的稀疏子集。
-
相較 L1 正則化,L2 正則化中的權重向量大多是分散的小數字。
-
在實踐中,如果不是特別關注某些明確的特征選擇,一般說來 L2 正則化都會比 L1 正則化效果好。
Dropout
L1、L2 正則化是通過修改代價函數來實現的,而 Dropout 則是通過修改神經網絡本身來實現的,它是在訓練網絡時用的一種技巧。
隨機失活 (dropout):
-
在訓練網絡時,對于完整的網絡結構(如左圖),每次迭代時,都讓神經元以超參數 ppp 的概率被隨機地停用(Dropout),即輸出置為0,如右圖。
-
在訓練時,保持輸入輸出層不變,數據前向傳播后,對得到的損失結果進行反向傳播,更新神經網絡中的權值時,不更新被停用的單元。
-
在預測時,不進行隨機失活,但是神經元的輸出都要乘以超參數 ppp,調整其數值范圍。以 p=0.5p=0.5p=0.5 為例,在預測時神經元必須把它們的輸出減半,這是因為在訓練的時候它們的輸出只有一半。
反向隨機失活(inverted dropout):
-
相對于上述的隨機失活,實際應用中更傾向使用反向隨機失活(inverted dropout),它是在訓練時就進行數值范圍調整,從而讓前向傳播在測試時保持不變。
-
這樣做還有一個好處,無論你決定是否使用隨機失活,預測方法的代碼可以保持不變。反向隨機失活的代碼如下:
Dropout 對過擬合的解決:
-
取平均的作用:
用相同的訓練數據去訓練 n 個不同的神經網絡,一般會得到 n 個不同的結果,此時我們可以采用 n 個結果取均值去決定最終結果。
取均值策略通常可以有效防止過擬合問題。因為不同的網絡可能產生不同的過擬合,取均值則有可能讓一些 “相反的” 擬合互相抵消。
dropout 隨機停用不同的隱層神經元,導致在每次迭代時都使用了不同的網絡結構,就類似在訓練不同的網絡,整個 dropout 過程就相當于對很多個不同的神經網絡取平均。
-
減少神經元之間復雜的共適應關系:
因為 dropout 程序導致兩個神經元不一定每次都在一個 dropout 網絡中出現。這樣權值的更新不再依賴于有固定關系的隱含節點的共同作用,阻止了某些特征僅僅在其它特定特征下才有效果的情況,迫使網絡去學習更加魯棒的特征。
總結
以上是生活随笔為你收集整理的正则化方法:数据增强、regularization、dropout的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梯度下降 gradient descen
- 下一篇: 数据集划分