机器学习基石13-Hazard of Overfitting
注:
文章中所有的圖片均來(lái)自臺(tái)灣大學(xué)林軒田《機(jī)器學(xué)習(xí)基石》課程。
筆記原作者:紅色石頭
微信公眾號(hào):AI有道
上節(jié)課主要介紹了非線(xiàn)性分類(lèi)模型,通過(guò)非線(xiàn)性變換,將非線(xiàn)性模型映射到另一個(gè)空間,轉(zhuǎn)換為線(xiàn)性模型,再來(lái)進(jìn)行分類(lèi),分析了非線(xiàn)性變換可能會(huì)使計(jì)算復(fù)雜度增加。本節(jié)課介紹這種模型復(fù)雜度增加帶來(lái)機(jī)器學(xué)習(xí)中一個(gè)很重要的問(wèn)題:過(guò)擬合(overfitting)。
一、What is Overfitting
首先,我們通過(guò)一個(gè)例子來(lái)介紹什么bad generalization。假設(shè)平面上有5個(gè)點(diǎn),目標(biāo)函數(shù)\(f(x)\)是2階多項(xiàng)式,如果hypothesis是二階多項(xiàng)式加上一些小的noise的話(huà),那么這5個(gè)點(diǎn)很靠近這個(gè)hypothesis, \(E_{in}\)很小。如果hypothesis是4階多項(xiàng)式,那么這5點(diǎn)會(huì)完全落在hypothesis上,\(E_{in}=0\) 。雖然4階hypothesis的\(E_{in}\)比2階hypothesis的要好很多,但是它的\(E_{out}\)很大。因?yàn)楦鶕?jù)VC Bound理論,階數(shù)越大,即VC Dimension越大,就會(huì)讓模型復(fù)雜度更高, \(E_{out}\)更大。我們把這種\(E_{in}\)很小, \(E_{out}\)很大的情況稱(chēng)之為bad generation,即泛化能力差。
回過(guò)頭來(lái)看一下VC曲線(xiàn):
hypothesis的階數(shù)越高,表示VC Dimension越大。隨著VC Dimension增大, \(E_{in}\)是一直減小的,而\(E_{out}\)先減小后增大。在\(d^*\)位置,\(E_{out}\)取得最小值。在\(d^*_{VC}\)右側(cè),隨著VC Dimension越來(lái)越大,\(E_{in}\)越來(lái)越小,接近于0, \(E_{out}\)越來(lái)越大。即當(dāng)VC Dimension很大的時(shí)候,這種對(duì)訓(xùn)練樣本擬合過(guò)分好的情況稱(chēng)之為過(guò)擬合(overfitting)。另一方面,在\(d^*_{VC}\)左側(cè),隨著VC Dimension越來(lái)越小,\(E_{in}\)和\(E_{out}\)都越來(lái)越大,這種情況稱(chēng)之為欠擬合(underfitting),即模型對(duì)訓(xùn)練樣本的擬合度太
差,VC Dimension太小了。
bad generation和overfitting的關(guān)系可以理解為:overfitting是VC Dimension過(guò)大的一個(gè)過(guò)程,bad generation是overfitting的結(jié)果。
一個(gè)好的fit, \(E_{in}\)和\(E_{out}\)都比較小,盡管\(E_{in}\)沒(méi)有足夠接近零;而對(duì)overfitting來(lái)說(shuō),\(E_{in}\approx 0\),但是\(E_{out}\)很大。那么,overfitting的原因有哪些呢?
舉個(gè)開(kāi)車(chē)的例子,把發(fā)生車(chē)禍比作成overfitting,那么造成車(chē)禍的原因包括:
- 車(chē)速太快(VC Dimension 太大)
- 道路崎嶇(noise)
- 對(duì)路況的了解程度(訓(xùn)練樣本數(shù)量\(N\)不夠)
也就是說(shuō),VC Dimension、noise、\(N\)這三個(gè)因素是影響過(guò)擬合現(xiàn)象的關(guān)鍵。
二、The Role of Noise and Data Size
為了盡可能詳細(xì)地解釋overfitting,我們進(jìn)行這樣一個(gè)實(shí)驗(yàn),試驗(yàn)中的數(shù)據(jù)集不是很大。首先,在二維平面上,一個(gè)模型的分布由目標(biāo)函數(shù)\(f(x)\)(\(x\)的10階多項(xiàng)式)加上一些noise構(gòu)成,下圖中,離散的圓圈是數(shù)據(jù)集,目標(biāo)函數(shù)是藍(lán)色的曲線(xiàn)。數(shù)據(jù)沒(méi)有完全落在曲線(xiàn)上,是因?yàn)榧尤肓薾oise。
然后,同樣在二維平面上,另一個(gè)模型的分布由目標(biāo)函數(shù)\(f(x)\)(\(x\)的50階多項(xiàng)式)構(gòu)成,沒(méi)有加入noise。下圖中,離散的圓圈是數(shù)據(jù)集,目標(biāo)函數(shù)是藍(lán)色的曲線(xiàn)。可以看出由于沒(méi)有noise,數(shù)據(jù)集完全落在曲線(xiàn)上。
現(xiàn)在,有兩個(gè)學(xué)習(xí)模型,一個(gè)是2階多項(xiàng)式,另一個(gè)是10階多項(xiàng)式,分別對(duì)上面兩個(gè)問(wèn)題進(jìn)行建模。首先,對(duì)于第一個(gè)目標(biāo)函數(shù)是10階多項(xiàng)式包含noise的問(wèn)題,這兩個(gè)學(xué)習(xí)模型的效果如下圖所示:
由上圖可知,2階多項(xiàng)式的學(xué)習(xí)模型\(E_{in}=0.050\),\(E_{out}=0.127\);10階多項(xiàng)式的學(xué)習(xí)模型\(E_{in}=0.034\),\(E_{out}=9.00\) 。雖然10階模型的\(E_{in}\)比2階的\(E_{in}\)小,但是其\(E_{out}\)要比2階的大得多,而2階的\(E_{in}\)和\(E_{out}\)相差不大,很明顯用10階的模型發(fā)生了過(guò)擬合。
然后,對(duì)于第二個(gè)目標(biāo)函數(shù)是50階多項(xiàng)式?jīng)]有noise的問(wèn)題,這兩個(gè)學(xué)習(xí)模型的效果如下圖所示:
可以看到,用10階的模型仍然發(fā)生了明顯的過(guò)擬合。
上面兩個(gè)問(wèn)題中,10階模型都發(fā)生了過(guò)擬合,反而2階的模型卻表現(xiàn)得相對(duì)不錯(cuò)。這好像違背了我們的第一感覺(jué),比如對(duì)于目標(biāo)函數(shù)是10階多項(xiàng)式,加上noise的模型,按道理來(lái)說(shuō)應(yīng)該是10階的模型更能接近于目標(biāo)函數(shù),因?yàn)樗鼈冸A數(shù)相同。但是,事實(shí)卻是2階模型泛化能力更強(qiáng)。這種現(xiàn)象產(chǎn)生的原因,從哲學(xué)上來(lái)說(shuō),就是“以退為進(jìn)”。有時(shí)候,簡(jiǎn)單的學(xué)習(xí)模型反而能表現(xiàn)的更好。
下面從learning curve來(lái)分析一下具體的原因,learning curve描述的是\(E_{in}\)和\(E_{out}\)隨著數(shù)據(jù)量\(N\)的變化趨勢(shì)。下圖中左邊是2階學(xué)習(xí)模型的learning curve,右邊是10階學(xué)習(xí)模型的learning curve。
在learning curve中,橫軸是樣本數(shù)量\(N\),縱軸是Error。\(E_{in}\)和\(E_{out}\)可表示為:\[E_{in}=noiselevel *(1-\frac{d+1}{N})\] \[E_{out}=noiselevel *(1+\frac{d+1}{N})\] 其中\(d\)為模型階次,左圖中\(d=2\),右圖中\(d=10\)。
本節(jié)的實(shí)驗(yàn)問(wèn)題中,數(shù)據(jù)量\(N\)不大,即對(duì)應(yīng)于上圖中的灰色區(qū)域。左圖的灰色區(qū)域中,因?yàn)?span id="ozvdkddzhkzd" class="math inline">\(d=2\), \(E_{in}\)和\(E_{out}\)相對(duì)來(lái)說(shuō)比較接近;右圖中的灰色區(qū)域中,\(d=10\),根據(jù)\(E_{in}\)和\(E_{out}\)的表達(dá)式, \(E_{in}\)很小,而\(E_{out}\)很大。這就解釋了之前2階多項(xiàng)式模型的\(E_{in}\)更接近\(E_{out}\),泛化能力更好。
值得一提的是,如果數(shù)據(jù)量\(N\)很大的時(shí)候,上面兩圖中\(E_{in}\)和\(E_{out}\)都比較接近,但是對(duì)于高階模型,z域中的特征很多的時(shí)候,需要的樣本數(shù)量\(N\)很大,且容易發(fā)生維度災(zāi)難。
另一個(gè)例子中,目標(biāo)函數(shù)是50階多項(xiàng)式,且沒(méi)有加入noise(noiselevel很小)。這種情況下,我們發(fā)現(xiàn)仍然是2階的模型擬合的效果更好一些,明明沒(méi)有noise,為什么是這樣的結(jié)果呢?
實(shí)際上,我們忽略了一個(gè)問(wèn)題:這種情況真的沒(méi)有noise嗎?其實(shí),當(dāng)模型很復(fù)雜的時(shí)候,即50階多項(xiàng)式的目標(biāo)函數(shù),無(wú)論是2階模型還是10階模型,都不能學(xué)習(xí)的很好,這種復(fù)雜度本身就會(huì)引入一種‘noise’。所以,這種高階無(wú)noise的問(wèn)題,也可以類(lèi)似于10階多項(xiàng)式的目標(biāo)函數(shù)加上noise的情況,只是二者的noise有些許不同,下面一部分將會(huì)詳細(xì)解釋。
三、Deterministic Noise
下面我們介紹一個(gè)更細(xì)節(jié)的實(shí)驗(yàn)來(lái)說(shuō)明 什么時(shí)候要小心overfit會(huì)發(fā)生。假設(shè)我們產(chǎn)生的數(shù)據(jù)分布由兩部分組成:第一部分是目標(biāo)函數(shù)\(f(x)\),\(Q_f\)階多項(xiàng)式;第二部分是噪聲\(\epsilon\),服從Gaussian分布。接下來(lái)我們分析的是noise強(qiáng)度不同對(duì)overfitting有什么樣的影響。總共的數(shù)據(jù)量是\(N\)。
那么下面我們分析不同的\((N,\sigma^2)\)和\((N,Q_f)\)對(duì)overfit的影響。overfit可以量化為\(E_{out}-E_{in}\)。結(jié)果如下:
上圖中,紅色越深,代表overfit程度越高,藍(lán)色越深,代表overfit程度越低。先看左邊的圖,左圖中階數(shù)固定為20,橫坐標(biāo)代表樣本數(shù)量\(N\),縱坐標(biāo)代表噪聲水平\(\sigma^2\)。紅色區(qū)域集中在\(N\)很小或者\(\sigma^2\)很大的時(shí)候,也就是說(shuō)\(N\)越大,\(\sigma^2\) 越小,越不容易發(fā)生overfit。右邊圖中,橫坐標(biāo)代表樣本數(shù)量\(N\),縱坐標(biāo)代表目標(biāo)函數(shù)階數(shù)\(Q_f\)。紅色區(qū)域集中在\(N\)很小或者\(Q_f\)很大的時(shí)候,也就是說(shuō)\(N\)越大,\(Q_f\) 越小,越不容易發(fā)生overfit。上面兩圖基本相似。
從上面的分析,我們發(fā)現(xiàn)\(\sigma^2\)對(duì)overfit是有很大的影響的,我們把這種noise稱(chēng)之為stochastic noise。同樣地, \(Q_f\)即模型復(fù)雜度也對(duì)overfit有很大影響,而且二者影響是相似的,所以我們把這種稱(chēng)之為deterministic noise。之所以把它稱(chēng)為noise,是因?yàn)槟P透邚?fù)雜度帶來(lái)的影響。
總結(jié)一下,有四個(gè)因素會(huì)導(dǎo)致發(fā)生overfitting:
- data size \(N\) \(\downarrow\)
- stochastic noise \(\sigma^2\) \(\uparrow\)
- deterministic noise \(Q_f\) \(\uparrow\)
- excessive power \(\uparrow\)
我們剛才解釋了如果目標(biāo)函數(shù)\(f(x)\)的復(fù)雜度很高的時(shí)候,那么跟有noise也沒(méi)有什么兩樣。因?yàn)槟繕?biāo)函數(shù)很復(fù)雜,那么再好的hypothesis都會(huì)跟它有一些差距,我們把這種差距稱(chēng)之為deterministic noise。deterministic noise與stochastic noise不同,但是效果一樣。其實(shí)deterministic noise類(lèi)似于一個(gè)偽隨機(jī)數(shù)發(fā)生器,它不會(huì)產(chǎn)生真正的隨機(jī)數(shù),而只產(chǎn)生偽隨機(jī)數(shù)。它的值與hypothesis有關(guān),且固定點(diǎn)\(x\)的deterministic noise值是固定的。
四、Dealing with Overfitting
現(xiàn)在我們知道了什么是overfitting,和overfitting產(chǎn)生的原因,那么如何避免overfitting呢?避免overfitting的方法主要包括:
- start from simple model (\(Q_f\))
- data cleaning/pruning (noise)
- data hinting (\(N\))
- regularization
- validation
這幾種方法類(lèi)比于之前舉的開(kāi)車(chē)的例子,對(duì)應(yīng)如下:
regularization和validation我們之后的課程再介紹,本節(jié)課主要介紹簡(jiǎn)單的data cleaning/pruning和data hinting兩種方法。
data cleaning/pruning就是對(duì)訓(xùn)練數(shù)據(jù)集里label明顯錯(cuò)誤的樣本進(jìn)行修正(data cleaning),或者對(duì)錯(cuò)誤的樣本看成是noise,進(jìn)行剔除(data pruning)。data cleaning/pruning關(guān)鍵在于如何準(zhǔn)確尋找label錯(cuò)誤的點(diǎn)或者是noise的點(diǎn),而且如果這些點(diǎn)相比訓(xùn)練樣本\(N\)很小的話(huà),這種處理效果不太明顯。
data hinting是針對(duì)\(N\)不夠大的情況,如果沒(méi)有辦法獲得更多的訓(xùn)練集,那么data hinting就可以對(duì)已知的樣本進(jìn)行簡(jiǎn)單的處理、變換,從而獲得更多的樣本。舉個(gè)例子,數(shù)字分類(lèi)問(wèn)題,可以對(duì)已知的數(shù)字圖片進(jìn)行輕微的平移或者旋轉(zhuǎn),從而讓\(N\)豐富起來(lái),達(dá)到擴(kuò)大訓(xùn)練集的目的。這種額外獲得的例子稱(chēng)之為virtual examples。但是要注意一點(diǎn)的就是,新獲取的virtual examples可能不再是iid某個(gè)distribution。所以新構(gòu)建的virtual examples要盡量合理,且是獨(dú)立同分布。
五、總結(jié)
本節(jié)課主要介紹了overfitting的概念,即當(dāng)\(E_{in}\)很小,\(E_{out}\) 很大的時(shí)候,會(huì)出現(xiàn)overfitting。詳細(xì)介紹了overfitting發(fā)生的四個(gè)常見(jiàn)原因data size \(N\)、stochastic noise、deterministic noise和excessive power。解決overfitting的方法有很多,本節(jié)課主要介紹了data cleaning/pruning和data hinting兩種簡(jiǎn)單的方法,之后的課程將會(huì)詳細(xì)介紹regularization和validation兩種更重要的方法。
轉(zhuǎn)載于:https://www.cnblogs.com/SweetZxl/p/10799182.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的机器学习基石13-Hazard of Overfitting的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 做梦梦到甲鱼咬我是什么意思
- 下一篇: 梦到婴儿拉尿是什么意思