簡單的說就是這樣一種學習現象:Ein 很小,Eout 卻很大。
而Ein 和 Eout 都很大的情況叫做 underfitting。
這是機器學習中兩種常見的問題。
上圖中,豎直的虛線左側是"underfitting", 左側是"overfitting”。
發生overfitting 的主要原因是:(1)使用過於複雜的模型(dvc 很大);(2)數據噪音;(3)有限的訓練數據。
2,噪音與數據規模
我們可以理解地簡單些:有噪音時,更復雜的模型會盡量去覆蓋噪音點,即對數據過擬合!
這樣,即使訓練誤差Ein 很小(接近於零),由於沒有描繪真實的數據趨勢,Eout 反而會更大。
即噪音嚴重誤導了我們的假設。
還有一種情況,如果數據是由我們不知道的某個非常非常複雜的模型產生的,實際上有限的數據很難去“代表”這個複雜模型曲線。我們採用不恰當的假設去儘量擬合這些數據,效果一樣會很差,因爲部分數據對於我們不恰當的複雜假設就像是“噪音”,誤導我們進行過擬合。
如下面的例子,假設數據是由50次冪的曲線產生的(下圖右邊),與其通過10次冪的假設曲線去擬合它們,還不如採用簡單的2次冪曲線來描繪它的趨勢。
3,隨機噪音與確定性噪音 (Deterministic Noise)
之前說的噪音一般指隨機噪音(stochastic noise),服從高斯分佈;還有另一種“噪音”,就是前面提到的由未知的複雜函數f(X) 產生的數據,對於我們的假設也是噪音,這種是確定性噪音。
上圖是關於2次曲線和10次曲線對數據的擬合情況,我們將overfit measure 表示爲Eout(g10) - Eout(g2)。
下圖左右兩邊分別表示了隨機噪音和確定性噪音對於Overfitting 的影響。
可見,數據規模一定時,隨機噪音越大,或者確定性噪音越大(即目標函數越複雜),越容易發生overfitting。總之,容易導致overfitting 的因素是:數據過少;隨機噪音過多;確定性噪音過多;假設過於複雜(excessive power)。
如果我們的假設空間不包含真正的目標函數f(X)(未知的),那麼無論如何H 無法描述f(X) 的全部特徵。這時就會發生確定性噪音。它與隨機噪音是不同的。
我們可以類比的理解它:在計算機中隨機數實際上是“僞隨機數”,是通過某個複雜的僞隨機數算法產生的,因爲它對於一般的程序都是雜亂無章的,我們可以把僞隨機數當做隨機數來使用。確定性噪音的哲學思想與之類似。:-)
4,解決過擬合問題
對應導致過擬合發生的幾種條件,我們可以想辦法來避免過擬合。
(1) 假設過於複雜(excessive dvc) => start from simple model
(2) 隨機噪音 => 數據清洗
(3) 數據規模太小 => 收集更多數據,或根據某種規律“僞造”更多數據
正規化(regularization) 也是限制模型複雜度的,在下一講介紹。
4.1 數據清洗(data ckeaning/Pruning)
將錯誤的label 糾正或者刪除錯誤的數據。
4.2 Data Hinting: “僞造”更多數據, add "virtual examples"
例如,在數字識別的學習中,將已有的數字通過平移、旋轉等,變換出更多的數據。
其他解決過擬合的方法在後面幾講介紹。