深度學習中的過擬合問題

1、過擬合問題

  欠擬合:根本原因是特徵維度過少,模型過於簡單,導致擬合的函數無法滿足訓練集,誤差較大。

解決方法:增加特徵維度,增加訓練數據;

過擬合:根本原因是特徵維度過多,模型假設過於複雜,參數過多,訓練數據過少,噪聲過多,導致擬合的函數完美的預測訓練集,但對新數據的測試集預測結果差。 過度的擬合了訓練數據,而沒有考慮到泛化能力。

解決方法:(1)減少特徵維度;(2)正則化,降低參數值。

2、產生過擬合根本原因:

  1、 觀察值與真實值存在偏差:
   訓練樣本的獲取,本身就是一種抽樣。抽樣操作就會存在誤差, 也就是你的訓練樣本取值,X = x(真值) + u(隨機誤差),機器學習的優化函數多爲min Cost函數,自然就是儘可能的擬合 X,而不是真實的x, 所以就稱爲過擬合了,實際上是學習到了真實規律以外的隨機誤差。舉個例子說,你想做人臉識別,人臉裏有背景,要是你這批人臉背景A都相似,學出來的模型,見到背景A,就會認爲是人臉。這個背景A就是樣本引入的誤差。
  2、 數據太少,導致無法描述問題的真實分佈
  舉個例子,投硬幣問題是一個二項分佈,但是如果碰巧投了10次,都是正面。那麼根據這個數據學習,是無法揭示這個規律的,根據統計學的大數定律(通俗地說,這個定理就是,在試驗不變的條件下,重複試驗多次,隨機事件的頻率近似於它的概率),當樣本多了,這個真實規律是必然出現的。
 爲什麼說 數據量大了以後就能防止過擬合,數據量大了,
問題2,不再存在,
問題1,在求解的時候因爲數據量大了,求解min Cost函數時候, 模型爲了求解到最小值過程中,需要兼顧真實數據擬合和隨機誤差擬合,所有樣本的真實分佈是相同的(都是人臉),而隨機誤差會一定程度上抵消(背景),

  3、數據有噪聲。

  我們可以理解地簡單些:有噪音時,更復雜的模型會盡量去覆蓋噪音點,即對數據過擬合。這樣,即使訓練誤差Ein 很小(接近於零),由於沒有描繪真實的數據趨勢,Eout 反而會更大。
  即噪音嚴重誤導了我們的假設。還有一種情況,如果數據是由我們不知道的某個非常非常複雜的模型產生的,實際上有限的數據很難去“代表”這個複雜模型曲線。我們採用不恰當的假設去儘量擬合這些數據,效果一樣會很差,因爲部分數據對於我們不恰當的複雜假設就像是“噪音”,誤導我們進行過擬合。

  如下面的例子,假設數據是由50次冪的曲線產生的(下圖右邊),與其通過10次冪的假設曲線去擬合它們,還不如採用簡單的2次冪曲線來描繪它的趨勢。

深度學習中的過擬合問題

 

  4、訓練數據不足,有限的訓練數據。

5、訓練模型過度,導致模型非常複雜。

 

3、解決方案及原理

(1)權值衰減. 主要應用在神經網絡模型中
它在每次迭代過程中以某個小因子降低每個權值,這等效於修改E的定義,加入一個與網絡權值的總量相應的懲罰項,此方法的動機是保持權值較小,避免weight decay,從而使學習過程向着複雜決策面的反方向偏。
(2)適當的stopping criterion

深度學習中的過擬合問題

 

在二次誤差函數的情況下,關於早停止和權值衰減類似結果的原因說明。橢圓給出了常數誤差函數的輪廓線,Wml表示誤差函數的最小值。如果權向量的起始點爲原點,按照局部負梯度的方向移動,那麼它會沿着曲線給出的路徑移動。通過對訓練過程早停止,我們找到了一個權值向量w。定性地說,它類似於使用檢點的權值衰減正則化項,然後最小化正則化誤差函數的方法得到的權值。
(3)驗證數據
一個最成功的方法是在訓練數據外再爲算法提供一套驗證數據,應該使用在驗證集合上產生最小誤差
的迭代次數,不是總能明顯地確定驗證集合何時達到最小誤差.
Typically 30% of training patterns;Validation set error is checked each epoch;
Stop training if validation error goes up
(4)交叉驗證
交叉驗證方法在可獲得額外的數據提供驗證集合時工作得很好,但是小訓練集合的過度擬合問題更爲嚴重.

深度學習中的過擬合問題

 

(5)添加正則項。L1正則更加容易產生稀疏解、L2正則傾向於讓參數w趨向於0.
(6)針對樹模型
a.在樹過於大之前便停止生長
每個葉中至少需要多少個數據(threshold)
如何判斷這個閾值(threshold)是重點【可以考慮用假設檢驗/P-值】
b.等樹生長到足夠大之後進行修剪
修剪枝葉,直到任何改動都會降低正確率

4、正則主要方法

(1)L1和L2正則:都是針對模型中參數過大的問題引入懲罰項,依據是奧克姆剃刀原理。在深度學習中,L1會趨向於產生少量的特徵,而其他的特徵都是0增加網絡稀疏性;而L2會選擇更多的特徵,這些特徵都會接近於0,防止過擬合。神經網絡需要每一層的神經元儘可能的提取出有意義的特徵,而這些特徵不能是無源之水,因此L2正則用的多一些。

(2)dropout:深度學習中最常用的正則化技術是dropout,隨機的丟掉一些神經元。

(3)數據增強,比如將原始圖像翻轉平移拉伸,從而是模型的訓練數據集增大。數據增強已經是深度學習的必需步驟了,其對於模型的泛化能力增加普遍有效,但是不必做的太過,將原始數據量通過數據增加增加到2倍可以,但增加十倍百倍就只是增加了訓練所需的時間,不會繼續增加模型的泛化能力了。

(4)提前停止(early stopping):就是讓模型在訓練的差不多的時候就停下來,比如繼續訓練帶來提升不大或者連續幾輪訓練都不帶來提升的時候,這樣可以避免只是改進了訓練集的指標但降低了測試集的指標。

(5)批量正則化(BN):就是將卷積神經網絡的每層之間加上將神經元的權重調成標準正態分佈的正則化層,這樣可以讓每一層的訓練都從相似的起點出發,而對權重進行拉伸,等價於對特徵進行拉伸,在輸入層等價於數據增強。注意正則化層是不需要訓練。

發佈了49 篇原創文章 · 獲贊 38 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章