神經網絡之正則化

轉載至:http://blog.csdn.net/Dandelionyu/article/details/45971209

1. 模型評估與模型選擇

在實際應用中,針對具體的監督學習問題,爲了評估所訓練出的模型是否有較好地泛化能力,可以把數據集切割成訓練集和測試集兩部分(注意使訓練集和測試集中均含有各種類型的數據)。

用訓練集在各種條件下(如:不同的參數個數)訓練模型,學習出其參數後,再在測試集上評價各個模型的測試誤差。選擇測試誤差最小的模型。

引用Andrew Ng的機器學習課程中的一個例子進行說明。

假設要在10個不同次數的多項式模型之間進行選擇: 
1. hθ(x)=θ0+θ1x 
2. hθ(x)=θ0+θ1x+θ2x2 
3. hθ(x)=θ0+θ1x++θ3x3 
 
10. hθ(x)=θ0+θ1x++θ10x10 
決策函數 hθ(x) 
訓練集誤差Jtrain(θ) 
測試集誤差Jtest(θ) 
交叉驗證集誤差Jcv(θ)

首先,針對這10個模型分別對目標函數求解最優化問題即 minJtrain(θ),得到參數Θ(1) , Θ(2) , Θ(10)(即得到相應的各個模型) 。然後在測試集上求出各個模型的測試誤差Jtest(θ)的值。選擇使Jtest(θ)值最小的參數Θ(i)作爲模型最終學習到的參數來對未知數據進行預測。

然而,按照這種做法選擇出來的參數Θ(i)可能只是對我們挑選出的這部分測試集的擬合效果比較好,它並不是一個在完全未知的數據集上選擇出的最優模型。所以爲了更準確的對模型的泛化能力進行評估,我們有必要使用交叉驗證來幫助進行模型選擇。

2. 交叉驗證

交叉驗證法把數據集分成三部分:數據集,交叉驗證集,測試集(如6:2:2分配)。還是上面那個例子,模型選擇的方法是:

  • 使用訓練集訓練出10個模型;
  • 用10個模型上分別對交叉驗證集計算出交叉驗證誤差Jcv(θ)的值;
  • 選取使Jcv(θ)值最小的模型;
  • 用步驟3中選出的模型對測試集計算得出泛化誤差(Jtest(θ)的值)。

3. 模型診斷

實際中訓練出的模型可能存在 過擬合 或 欠擬合 的情況,這時候就需要對模型所處的情況做出準確地判斷以指導模型的改進。下圖描述了訓練集和交叉驗證集與模型複雜度之間的關係。 

  • 對於訓練集來說,當d較小時,模型較簡單,對數據擬合程度低,誤差大;隨着d的增大,模型越來越複雜,擬合程度高,誤差降到一個比較小得值。
  • 對於交叉驗證集來說,當d小時,擬合程度低,誤差大,但隨着d的增大,誤差呈現先減小後增大的趨勢,轉折點是開始出現模型過擬合訓練集的情況時。

那麼,當交叉驗證集的誤差Jcv(θ)比較大時,則根據上圖可以判斷:

  • Jcv(θ)Jtrain(θ)相近,都比較大時:欠擬合
  • Jcv(θ)很大,而Jtrain(θ)比較小時:過擬合

3.1 正則化

在訓練模型時,一般會選擇正則化方法來防止過擬合,正則化項的係數λ可能會選擇的過高或過低,用一個例子來說明:

用參數向量的L2範數作正則化項,模型是

hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4
要優化的目標函數爲
J(θ)=12mi=1m(hθ(xi)yi)2+λ2mj=1mθj2

(注意正則化項是從j=1開始的,沒有包含常數項θ0
這裏寫圖片描述

  • λ過大時,求解minJ(θ)的結果將使得θj0 (j=1,2,,m),此時hθ(x)θ0是一條水平直線如上圖左所示,模型處於欠擬合情況。
  • λ過小(λ0)時,正則化項對模型的修正效果很小近似於無,如上圖右所示,模型處於欠擬合情況。
  • 爲了取得上圖中所示比較好的擬合情況,需要選擇一個合適的λ值,即還是需要考慮和剛纔選擇多形式模型的次數相類似的問題。

我們選擇一系列想要測試的λ值,通常是010間的呈現2倍關係的值(如:0,0.01,0.02,,5.12,10共12個)。 
依舊把數據集分爲:訓練集,交叉驗證集,測試集。

則選擇 λ 的方法爲:

  1. 針對12個不同的λ值,用訓練集訓練出12個不同的正則化模型
  2. 在交叉驗證集上用12個模型分別計算出對應的交叉驗證誤差Jcv(θ)
  3. 選擇使 Jcv(θ)值最小的模型
  4. 用步驟3中選擇的模型計算得出泛化誤差Jtest(θ)

訓練集和交叉驗證集與正則化項參數 λ 的關係如下圖所示: 
這裏寫圖片描述

  • λ比較小時,訓練集誤差 Jtrain(θ)比較小而交叉驗證集 誤差Jcv(θ)比較大 :過擬合
  • 隨着 λ增大,訓練集誤差 Jtrain(θ)不斷增加而交叉驗證集 誤差Jcv(θ)先減小後增加 :欠擬合

3.2 學習曲線(learning curves)

學習曲線是將訓練集誤差和交叉驗證集誤差作爲訓練集樣本數量(m)的函數繪製的曲線圖。 
即,假如有100行數據,從第1行數據開始,逐漸學習更多行的數據。思想是:當訓練較少行的數據時,訓練的模型將能夠完美的適應較少的數據,但是訓練出來的模型卻不能很好地適應交叉驗證集或測試集數據。 
這裏寫圖片描述

3.2.1 用學習曲線識別欠擬合

作爲例子,假設只用一條直線來擬合下面的數據,可以看出,即使訓練集樣本量不斷增大,數據擬合的效果也不會有太大改善: 
這裏寫圖片描述 
這說明,如果模型處於欠擬合狀態,增加訓練集的數據量對改善誤差沒什麼幫助。也就是說如果你的模型誤差很高,且在增加訓練集樣本後依然沒什麼改善,那麼就可以判斷模型處於欠擬合的狀態。

3.2.2 用學習曲線識別過擬合

假設我們使用一個很高次的多項式模型,而且正則化項係數很小,可以看出,當交叉驗證集誤差遠大於訓練集誤差時,增加訓練集裏樣本數量往往可以有效地提高模型效果: 
這裏寫圖片描述 
即,模型在過擬合情況下,增加訓練集的樣本數量可能有效地改善算法效果。

小結

若模型處於過擬合狀態,可採取方法:

  • 增加訓練集樣本量
  • 減少特徵集數量
  • 增加正則化項係數λ的值

若模型處於欠擬合狀態,可採取方法:

  • 增加特徵集數量
  • 增加多項式特徵(組合特徵)
  • 減小正則化項係數λ的值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章