上一講提到可以使用非線性轉換的方法,將線性的模型轉換成非線性,雖然可以解決更複雜的問題,但也伴隨著模型複雜度提高的代價。這一講將提到過度適合(Overfitting)現象所造成的泛化能力缺陷。
假設今天有一個目標的函式是二次函式,但我們使用的四次函式來找到通過所有點的答案使得Ein為0,但這個四次函式卻和目標的二次函式差距很大造成Eout很大。這樣就會讓這個四次函式只認得樣本資料,而這種VC維度很高所付出的代價就是模型會失去舉一反三的能力,也就是泛化能力很差。
這裡帶出學習會出現的兩個問題,一個是過度適合(Overfitting),即Ein的fitting作的很好,但是作過度了造成Eout效果不好;一個是低度適合(Underfitting),即Ein的fitting作的不夠好。Underfitting可以透過增加樣本資料或是使用較複雜的模型就可以解決,但是Overfitting反而是一個比較難解決的問題。
發生Overfitting會有幾種原因,第一種是使用了過多的VC維,也就是使用了過於複雜的機器學習模型,像是對二次函式問題使用了四次函式來解;第二種可能性是雜訊太多,造成錯誤的學習;第三種是資料量不足,如果資料量不足可能沒有辦法學習出接近目標函式的結果。尤其當資料量不夠且雜訊又多,就很容易造成Overfitting讓模型最終失去泛化能力
假設現在有兩個目標函式,一個是十次多項式加上雜訊,一個是五十次多項式但是沒有雜訊。今天分別使用二次多項式和十次多項式來比較兩個問題的學習結果,會發現十次多項式都發生Overfitting,在Ein都作的比較好,但是Eout都作不好。甚至是當我們已經知道目標函式是十次多項式的情況,使用十次多項式的結果也不一定會贏過二次多項式。
用學習曲線來看會發現,當樣本數量不夠的時候,十次多項式Ein和Eout差距會非常大,所以如果資料量不足就不應該免強使用較複雜的方法,反而使用二次多項式還能夠學習出比較好的結果。
那如果都沒有雜訊的情況下也會是二次多項式的效果比較好,因為當目標函式很複雜時,也會造成類似雜訊的效果,如果二次多項式和十次多項式都作不好,使用二次多項式的泛化效果可能會比較好。
什麼時候要注意overfitting會發生呢?可以分成模型複雜程度Qf和雜訊程度σ^2來探討,再來會討論兩者和資料量N之間的關係。延續之前的二次和十次多項式的例子,再來會使用Eout(g10) - Eout(g2)來衡量overfit的程度,即使用十次和二次多項式的Eout差來衡量。
在固定模型複雜度之下,只要資料量不夠而且雜訊程度越高,就越容易造成overfit;但在固定雜訊程度看模型複雜度的影響,大部份也是發生在資料量少且目標複雜度高會造成overfit。
兩者最主要的差異在於,雜訊是stochastic noise,即隨機產生的,但是目標函式的複雜度是deterministic noice,是固定可以計算出來的。總結來說在四種情況下會發生overfit,第一個是資料的量過小,第二個是stochastic noise太高的時候,第三個是deterministic noise太高的時候,第四個則是VC維度太高的時候。所以overfit是很容易發生的。
所以到底為什麼今天的目標函式太過複雜的情況下和隨機雜訊是類似的呢?假設今天目標函式太過複雜,以至於無法使用任何的hypothesis描述,這中間的差距就是我們說的deterministic noise,這並不是一個隨機發生的雜訊。所以deterministic noise會取決於hypothesis,而且在給定相同x之下會有相同的deterministic noise。
如果有這麼多的原因會造成overfit,那該怎麼解決呢?在模型部份,可以先使用比較簡單的模型開始,避免一開始就用過複雜的模型;在資料部份,可以將雜訊資料作data cleaning/pruning處理,或是收集更多的資料與使用data hinting產生虛擬資料來提供更多額外的資料;另外還可以透過regularization對模型產生懲罰效果,或是透過validation來隨時看學習的狀況。
在Data Cleaning/Pruning的部份,Data Clean是指把已經確定是錯誤標記的資料,標記到正確的類別。Data Pruning則是直接將錯誤的雜訊資料直接從資料集去除掉。兩個資料的處理方法都不難,難度反而會在於該如何判斷資料是有問題的雜訊資料。
在Data Hinging部份,以圖像的數字辨識來說,就是把每個字作簡單的旋轉來當作新的虛擬資料並加進來學習。這個方法很常用在現今在作圖象辨識時,對圖像作扭曲或是轉換來增加學習樣本數量。
總結來說,這堂課教到了把Ein作好但是Eout作不好是overfitting現象,而且overfitting是非常容易發生的。不只是雜訊會造成overfitting,當目標函式過於複雜時,也是另一種雜訊。在處理overfitting的部份,這堂課簡單提到了data cleaning/pruning和data hinting,下一堂會再進一步教到如何使用regularization來避免overfitting現象。