本文詳細介紹了過擬合的概念,造成過擬合的原因以及過擬合的解決方案。
文章目錄
13. Hazard of Overfitting
上節課介紹了非線性分類模型,通過非線性變換 將輸入空間 映射到線性空間 ,從而可以使用常用的線性模型進行分類,分類完成後,再反變換回原來的空間。最後講到了非線性變換使計算複雜度增加的問題。本節課介紹這種模型複雜度增加帶來的問題:過擬合(overfitting)。
13.1 What is Overfitting?
直觀地講,泛化能力(generalization)比較好,即在訓練集上表現良好,在新的樣本上也表現良好。那麼泛化能力不好意味着什麼呢?通過本課程所學知識進行說明,假設輸入空間 是一維的,包含5個樣本,目標函數 爲二階多項式,目標函數(期望輸出)爲 。從圖中可以看到,五個樣本基本都落在目標函數上,只有一個離羣點,如果假設函數(預測輸出)與目標函數很接近,則此時的 比較小。如果使用四階的假設函數擬合,這五個樣本點都在假設和函數上,此時 很小 。雖然四階假設函數的 比二階假設函數的 要好,但四階假設函數的 很大。因爲有 VC Bound 理論可知,假設函數的階數越大,即 VC Dimension 越大,會使得模型複雜度越高。這種 很小 , 很大的情況即爲泛化能力差(Bad Generalization)。
接下來,通過VC Dimention 和 Error 曲線來說明過擬合和欠擬合的概念:
隨着假設函數的階數增高,VC Dimention 也隨之增大。首先看藍色的線,模型在訓練樣本上的誤差逐漸減小,即 一直在減小。然後看紫色的線,在測試樣本上的誤差呈現先下降後上升的趨勢,即 先減小後增大,在 處,達到最小。當從 向 (逐漸減小)的過程中, 和 都在增大,這種情況稱爲欠擬合(underfitting);當 向 (逐漸增大)的過程中, 不斷下降, 不斷上升,這種情況稱爲過擬合(overfitting)。
實際應用過程中,訓練模型時,經常通過查看訓練集的損失曲線和驗證集的損失曲線判斷模型的擬合情況。欠擬合對應的曲線爲訓練損失和驗證損失都在下降,但還沒有到達最低點;過擬合對應的曲線爲訓練損失不斷下降,驗證損失先下降後上升。
泛化能力差與過擬合的關係可以描述爲:過擬合是導致泛化能力差的原因。
一個好的模型,應該具有良好的擬合能力,即 和 都比較小。下圖是比較直觀的理解。
下面通過一個形象的例子說明導致過擬合的原因:
機器學習 | 開車(不是去幼兒園的車) |
---|---|
過擬合 | 發生車禍 |
使用過大的 VC-Dimention | 開得太快 |
噪聲 | 崎嶇不平的路面 |
樣本數量 的多少 | 路況觀察能力的大小 |
通過上例可知,VC Dimension、樣本噪聲、樣本數量是影響模型擬合能力的關鍵因素。
習題1:
13.2 The Role of Noise and Data Size
爲了更直觀的解釋產生過擬合的因素,設計兩個目標函數,一個爲10次多項式,另一個爲50次多項式,前者加上噪聲,後者無噪聲。下圖中,離散的圓圈是樣本點,藍色的曲線是目標函數。數據沒有完全
落在曲線上,是因爲加入了噪聲(noise)。
接下來,使用兩個學習模型(假設函數),分別對以上的問題進行建模。其中一個爲二次多項式 (假設空間爲 ),另一個爲十次多項式 (假設空間爲 )。兩種模型對兩個問題的擬合結果如下圖所示:
其中綠色線表示二次模型學習到的假設函數 ,紅色線表示十次模型學習到的假設函數 。
從 和 的結果可以看出,二次模型的 和 都比較小,基本在同一個數量級;而十次模型的 雖然很小,並且能擬合幾乎所有的樣本點,但是 很大,與其 的數量級相差數倍。即上圖中針對兩個不同問題的十次模型(假設函數)均發生了過擬合;但二次模型卻表現良好。難道在該問題中二次模型的學習能力比十次模型的好嗎?答案是肯定的。
先看一下學習曲線:
在學習曲線中,橫軸是樣本數量N,縱軸是誤差Error。 和 可以表示爲:
其中 爲模型階次(數據集的特徵數量)。
上例中,數據量N比較小,即對應於上圖中的灰色區域。左圖的灰色區域中,因爲 , 和 比較接近;右圖中的灰色區域中,,根據 和 的表達式, 很小,而 很大,這就印證了:二階模型的 更接近 ,因此泛化能力更好。
如果數據量N很大的時候,上面兩圖中 和 都比較接近。但是,對於高階模型, 域中的特徵很多的時候,需要的樣本數量N很大,且容易發生維度災難。
上面闡釋了在含有噪聲的情況下,低次多項式假設比和目標函數同次的多項式假設表現更好。另一個例子中,在目標函數爲50階多項式(期望輸出)且沒有加入噪聲的情況下,仍然是二階的模型擬合的效果更好,爲什麼會這樣?
實際上,當模型很複雜的時候,即50階多項式的目標函數,無論是二階模型還是十階模型,都不能學習的很好,這種複雜度本身就會引入一種噪聲。所以,這種高階無噪聲的問題,也可以類似於10階多項式的目標函數加上噪聲的情況,只是兩者的噪聲不同, 下一小節會詳細解釋。
習題2:
13.3 Deterministic Noise
本小節通過更細節的實驗來說明什麼時候要考慮過擬合。
假設產生的數據分佈由兩部分組成:第一部分是目標函數 , 使用複雜度 表示,即爲 階多項式;第二部分是噪聲 ,服從高斯分佈,噪聲強度爲 。接下來分析噪聲的強度不同對過擬合有什麼樣影響,數據量爲N。
不難看出,過擬合與噪聲強度 ,目標函數複雜度 以及數據量N都有密切關係,以下通過固定某一參數對比其它兩個參數的方式,觀察每個參數對過擬合的影響,分爲 和 兩種情況討論。
使用與上一小節相同的學習模型,即二階模型和十階模型。作如下約定:
- 最優假設函數分別表示爲:;
- 錯誤率滿足 ;
- 使用 作爲過擬合的衡量。
上圖中,左圖表示固定模型複雜度(模型階數) 時,噪聲強度 和數據量 N 對模型擬合的影響。右圖表示固定噪聲強度 時, 模型複雜度(模型階數) $Q_f $ 與數據量 N 對模型擬合的影響。
圖中的顏色表示過擬合程度,深紅色的部分表示過擬合,藍色表示表現好。即紅色越深,過擬合程度越高;藍色越深,過擬程度越低。
左圖中,紅色區域集中在數據量N很小或者噪聲強度 很大的時候。也就是說,模型複雜度 固定時,數據量N越大,噪聲強度 越小,越不容易發生過擬合。
右圖中,紅色區域集中在數據量N很小或者模型複雜度 很大的時候。也就是說,噪聲強度 固定時,數據量N越大,模型複雜度 越小,越不容易發生過擬合。
由以上分析可知,噪聲強度 和模型複雜度 對模型擬合程度有很大影響,這類由高斯噪聲產生的噪聲稱爲 隨機噪聲(stochastic noise);這類由模型複雜度導致的噪聲稱爲 確定性噪聲(deterministic noise)。
總結一下,總共有四個原因導致過擬合:
- 數據量 N 不足;(訓練樣本不足)
- 隨機噪聲 的大小;(數據收集過程中引入的誤差)
- 確定性噪聲 的大小;(模型複雜度,比如網絡層數)
- 過量的 VC Dimention;(樣本中的特徵數量過多)
上文解釋了目標函數 的模型複雜度 很高的時候,數據中有無噪聲對最後結果影響不大。因爲目標函數的模型過於複雜,再好的假設函數(Hypothesis)也會與它有差距,這種差距就是上文提到的確定性噪聲。確定性噪聲與隨機噪聲不同,但是都會導致過擬合。確定性噪聲的大小與假設函數有關,並且固定點 x 的確定性噪聲是一定的。
習題3:
13.4 Dealing with Overfitting
回顧第一小節提到的導致過擬合的原因:
機器學習 | 開車(不是去幼兒園的車) |
---|---|
過擬合 | 發生車禍 |
使用過大的 VC-Dimention | 開得太快 |
噪聲 | 崎嶇不平的路面 |
樣本數量 的多少 | 路況觀察能力的大小 |
使用同樣的類比,總結一下過擬合解決方案:
從簡單的模型出發 | 慢點開(去幼兒園的車) |
---|---|
數據清洗(data cleaning/pruning) | 獲取更精確的路況信息 |
數據增強(data hinting) | 獲取更多的路況信息 |
使用正則化(regularization) | 及時踩剎車 |
使用驗證集(validation) | 安裝儀表盤 |
數據清洗舉例:
數據增強舉例:
習題4:
Summary
本節課介紹了以下內容:
- 過擬合的概念:當 很小 很大的時候,會出現過擬合。
- 過擬合的原因:數據量 N,隨機噪聲,確定性噪聲以及過量的樣本特徵。
- 過擬合的解決:本節課通過簡單示例介紹了數據清洗和數據增強;後兩節課會專門介紹正則化和驗證。
參考:
https://www.cnblogs.com/ymingjingr/p/4306666.html
https://github.com/RedstoneWill/HsuanTienLin_MachineLearning