1. 程式人生 > >深度學習:正則化方法

深度學習:正則化方法

正則化是機器學習中非常重要並且非常有效的減少泛華誤差的技術,特別是在深度學習模型中,由於其模型引數非常多非常容易產生過擬合。因此研究者也提出很多有效的技術防止過擬合,比較常用的技術包括:

  1. 引數新增約束,例如L1、L2範數等
  2. 訓練集合擴充,例如新增噪聲、資料變換等
  3. Dropout

該文主要介紹深度學習中比較常見幾類正則化方法以及常用引數選擇,並試圖解釋其原理。

正則化技術

引數懲罰

通過對模型引數新增懲罰引數來限制模型能力,常用的就是在損失函式基礎上新增範數約束。

J˜(θ;,X,y)=J(θ;X,y)+αΩ(θ)

通常情況下,深度學習中只對仿射引數w新增約束,對偏置項不加約束。主要原因是偏置項一般需要較少的資料就能精確的擬合。如果新增約束常常會導致欠擬合。

L2正則

引數約束新增L2範數懲罰項,該技術也稱之為Weight Decay、嶺迴歸、Tikhonov regularization等。

J˜(w;X,y)=J(w;X,y)+12α||w||2
通過最優化技術,例如梯度相關方法可以很快推匯出,引數優化公式為 w=(1ϵα)wϵJ(w)
其中ϵ為學習率,相對於正常的梯度優化公式,對引數乘上一個縮減因子。

假設J是一個二次優化問題時,模型引數可以進一步表示為w˜i=λiλi+αwi,即相當於在原來的引數上添加了一個控制因子,其中λ是引數Hessian矩陣的特徵值。由此可見
1. 當λi>>α

時,懲罰因子作用比較小。
2. 當λi<<α時,對應的引數會縮減至0

L1正則

對模型引數新增L1範數約束,即

J˜(w;X,y)=J(w;X,y)+α||w||1
如果通過梯度方法進行求解時,引數梯度為 J˜(w)=αsign(w)+J(w)

特殊情況下,對於二次優化問題,並且假設對應的Hessian矩陣是對角矩陣,可以推匯出引數遞推公式為wi=sign(wi)max(|wi|αλi,0),從中可以看出
|wi|<αλi時,對應的引數會縮減到0,這也是和L2正則不同地方。
對比L2優化方法,L2不會直接將引數縮減為0,而是一個非常接近於0的值。

L2 VS L1

主要區別如下:

  1. 通過上面的分析,L1相對於L2能夠產生更加稀疏的模型,即當L1正則在引數w比較小的情況下,能夠直接縮減至0.因此可以起到特徵選擇的作用,該技術也稱之為 LASSO
  2. 如果從概率角度進行分析,很多範數約束相當於對引數新增先驗分佈,其中L2範數相當於引數服從高斯先驗分佈;L1範數相當於拉普拉斯分佈。

範數約束-約束優化問題

從另外一個角度可以將範數約束看出帶有引數的約束優化問題。帶有引數懲罰的優化目標為

J˜(θ;,X,y)=J(θ;X,y)+αΩ(θ)
帶約束的最優問題,可以表示為 minJ(θ;X,y)s.t.Ω(θ)<k 通過KKT條件進行求解時,對應的拉格朗日函式為 L(θ,α;x,y)=J(θ;x,y)+α(Ω(θ)k)

從約束優化問題也可以進一步看出,L1相對於L2能產生更稀疏的解。
這裡寫圖片描述
從圖中可以看出,L1最優解常常出現在定點處,此時某些維度上的值肯定為0.

資料集合擴充

防止過擬合最有效的方法是增加訓練集合,訓練集合越大過擬合概率越小。資料集合擴充是一個省時有效的方法,但是在不同領域方法不太通用。
1. 在目標識別領域常用的方法是將圖片進行旋轉、縮放等(圖片變換的前提是通過變換不能改變圖片所屬類別,例如手寫數字識別,類別6和9進行旋轉後容易改變類目)
2. 語音識別中對輸入資料新增隨機噪聲
3. NLP中常用思路是進行近義詞替換
4. 噪聲注入,可以對輸入新增噪聲,也可以對隱藏層或者輸出層新增噪聲。例如對於softmax 分類問題可以通過 Label Smoothing技術新增噪聲,對於類目0-1新增噪聲,則對應概率變成ϵk,1k1kϵ

Dropout

Dropout是一類通用並且計算簡潔的正則化方法,在2014年被提出後廣泛的使用。
簡單的說,Dropout在訓練過程中,隨機的丟棄一部分輸入,此時丟棄部分對應的引數不會更新。相當於Dropout是一個整合方法,將所有子網路結果進行合併,通過隨機丟棄輸入可以得到各種子網路。例如
這裡寫圖片描述
例如上圖,通過不同的輸入遮蔽相當於學習到所有子網路結構。

因此前向傳播過程變成如下形式:
這裡寫圖片描述
相當於每層輸入多了一個遮蔽向量μ來控制該層有哪些輸入會被遮蔽掉。

經驗:原始輸入每一個節點選擇概率0.8,隱藏層選擇概率為0.5

Dropout預測策略

既然Dropout過程類似於整合方法,預測時需要將所有相關模型進行求平均,對於Dropout而言μp(μ)p(y|x,μ),然而遍歷所有遮蔽變數不是可能的事情,因此需要一些策略進行預測。
1. 隨機選擇10-20個遮蔽向量就可以得到一個較好的解。
2. 採用幾何平均然後在歸一化的思路。

p˜ensemble(y|x)=2dμp(y|x,μ)pensemble(y|x)=p˜ensemble(y|x)ip˜ensemble(