機器學習基石系列(10) — 過度配適

Martin Huang
機器學習系列
Published in
May 21, 2021

系列的第10篇,算是一個里程碑。本系列預計最後總共會有12~13篇。然後也可以來試試看自己根據數學式實作看看,之後有空的話會接在這個系列後面補完。

完美的契合所有訓練資料,反而不是一件好事

現在我們做一個實驗,把5筆資料拿來做迴歸分析。假設我們已經知道符合這五筆資料的答案其實是一個二次曲線,或者說我們是用二次曲線生成這些資料,再加上雜訊的。這時如果去尋找一個g(x),為了要契合這些資料點,可能會一路找到四次多項式的曲線才符合,如圖:

圖片來源:林軒田<機器學習基石>,第十三講,第50段,第2張

因為加了雜訊的關係,原本的二次式反而不能契合資料點。然而,如果再產生幾個資料點,就會發現四次式的曲線完全無法契合那些點,對吧?尤其是資料點如果在兩段曲線落差很大的地方。這樣的情況稱做很差的泛化(bad generalization),表示這個分析得到的模型沒辦法很好的泛用在一般的資料點上。此時E_out當然很大。

圖片來源:林軒田<機器學習基石>第七講,第29段,第22張

又回到這張啦。E_in和E_out的落差大表示泛化不佳,這在VC dimension上升的時候更明顯。模型的項數增加,VC dimension也會增加。具體的狀況就像上面的圖,因為模型太「鑽牛角尖」了,過於強調要完美符合每個資料點,導致一般的資料它沒辦法正確預測,這就是過度配適(overfitting)

那是不是VC dimension越少就越好?也不盡然。圖的最左側靠近y軸附近,E_in和E_out雖然很近,但都很高。表示模型還沒調整到位,這叫做不當配適(underfitting)。相對於過度配適,不當配適比較好處理,因為還有調升多項式次數的籌碼。調升比調降容易,這在前面的文章討論過了。

如果用開車來比喻機器學習的話,過度配適就是車禍,是我們要盡量避免的事情。哪些狀況會造成車禍?

  1. 雜訊。像路上的小石頭,讓開車顛簸,就容易出車禍。解決方法是清理資料(路面),但這有一些方法。
  2. 一下子就用太高項次的多項式。像車速太快,一下子就撞上去了。解決方法是不要開快車,慢慢加速(從低項開始做起)。
  3. 資料量太少。像視野,小的視野也會容易造成車禍。解決方法是增加視野(資料蒐集夠多)

剛剛是用低維度的多像式產生資料,讓高維度的多項式吃癟,好像有點不公平。為了確保客觀性,我們再做一個實驗:這次用兩種多項式產生資料。

  1. 十次多項式產生資料後加一點雜訊。
  2. 五十次多項式,產生資料後,不加雜訊。
圖片來源:林軒田<機器學習基石>,第十三講,第50段,第6張

如下圖

然後用兩種多項式模型來學習

  1. 二次多項式
  2. 十次多項式

以下是第一組,也就是十次多項式加一點雜訊後的資料,以兩個模型訓練及預測的結果。

圖片來源:林軒田<機器學習基石>,第十三講,第50段,第7張

結果發現,二次式的預測(E_out)比十次式好。即使是同為十次式產生的資料,竟然還是二次式獲勝。十次式的泛化不佳,產生過度配適。

接著看看第二組,使用五十次式產生的資料的結果。

圖片來源:林軒田<機器學習基石>,第十三講,第50段,第7張

只能說,哇。在二次式的預測誤差,兩組相比沒有差很多,但十次式就不一樣了,除了過度配適,狀況比起第一組嚴重非常多。

從第一組的實驗可以知道,最佳化和預測結果沒有直接的關聯性。假設在訓練前,兩個模型就已經知道這是一個十次多項式產生的資料,那二次多項式一開始就不可能有機會契合所有資料。但結果卻是它贏了。放棄了最佳化,但最後預測的結果是好的。

我們再看一下兩個模型的學習曲線。首先是二次式。

圖片來源:林軒田<機器學習基石>,第十三講,第50段,第9張

再來是十次多項式。

圖片來源:林軒田<機器學習基石>,第十三講,第50段,第9張

高維度的模型VC dimension較高,E_out初始值也較高。可以看到它要較多的資料才能比較收斂,因此在資料量少的時候,模型複雜度低的勝出。

在第二組的實驗,看起來資料是用較複雜的多項式生成,應該要是複雜度高的模型勝出,怎麼還是低複雜度的模型贏呢?

除了資料量的問題,另一個要考慮的正是資料的複雜度。如果資料太複雜,看起來就和隨機生成的資料越接近。所以,資料的複雜度本身就是一種雜訊。

什麼時候會發生過度配適?

現在再做一個實驗來了解什麼時候會發生過度配適。用一個多項式加上雜訊來產生資料,這個多項式就是target function f(x),雜訊用高斯分布隨機產生,把它寫成式子為

高斯括弧內的αx是f(x)的組成,根據需要調整項次數目,例如要做十次多項式,那至少第十次項的係數α_10不為0。雜訊的強度使用σ調整,產生的資料量為N。所以有三個變數:

  1. Q_f表示多項式的次數,也是複雜度,代表多項是這個變數
  2. σ表示雜訊的強度,用高斯分布的方式隨機產生。
  3. N表示資料量。

在評估overfitting時,主要是看E_out。根據前面的結論,高次多項式模型的E_in比低次多項式模型低,因為他們能夠調整的項數比較多。然而,高次多項式模型的E_out也容易比低次多項式模型高,尤其是在資料量還不足的時候。所以在這裡,我們把overfitting定為高次多項式模型的E_out-低次多項式模型的E_out。差越高,表示overfit越嚴重。

我們可以用資料量N對雜訊σ²,以及資料量N對模型複雜度Q_f作圖。先看第一個圖。在這張圖,產生資料的多項式複雜度Q_f為定值。

圖片來源:林軒田<機器學習基石>,第13講,第52段,第14張

顏色越偏紅表示overfitting越嚴重,越藍則表示不嚴重。雜訊增加的情況下,如果資料量不變,則越容易overfitting。要克服雜訊,需要更多的資料。很直觀的結果。接下來看第二張圖。在這張圖,雜訊強度σ²為定值。

圖片來源:林軒田<機器學習基石>,第13講,第52段,第14張

在資料量少時,由複雜的多項式所產生的資料,其分布較不易有趨勢,反而更像雜訊,因此overfitting嚴重。隨著資料量上升可以改善。至於簡單的多項式,相對比較不需要太多資料就可以產生趨勢了。

由此可知,多項式的複雜和雜訊本身會有類似的結果。現在,我們把兩種狀況分開,把高斯分布產生的雜訊稱作stochastic noise,而多項式本身複雜度產生的類似效果稱為deterministic noise。從這兩張圖我們可以歸納出overfitting的四個時機:

  1. 資料量N少的時候(兩張圖都是)
  2. stochastic noise高的時候(第一張圖)
  3. deterministic noise高的時候(第二張圖)
  4. VC dimension多的時候(甚至凌駕在target function之上,也就是想太多啦),資料量少就會出現overfitting;VC dimension少的時候則未必(第二張圖左下)

overfitting真的是很容易發生啊,防不勝防。

再回來看看deterministic noise。假設今天target function為10次式,但hypothesis sets只有6次式,那注定是不可能找到完美符合的hypothesis了,因為複雜度不在同一個水平上。若在這樣的hypothesis sets中硬挑出一個最好的hypothesis,一定還是會和target function有落差,而且這個落差隨著固定的每個x,都會是固定的,因此才叫做deterministic noise,因為它在選定hypothesis的那瞬間就確定了。相較於真正的雜訊,也就是stochastic noise,它的變化是固定的。如果把hypothesis sets作調整,例如調高到7次式,那stochastic noise理論上會減少,但因為VC dimension開始升高,會有其他因素來提升overfitting發生的機率。

怎麼避免overfitting?

其實上面在用開車比喻的時候已經稍微講到了。這邊我把它整理得更清楚一點:

  1. 從簡單(低複雜度)的模型開始
  2. 資料清潔度
  3. 增加資料
  4. 正規化
  5. 驗證

資料的清潔度是一個大問題。其中常見的一種情況是極端值(outlier)。這種資料離另一個標籤很近,但離本身應該要從屬的標籤很遠,因此造成訓練時的問題。如果是一些人可以過濾的極端值,那倒還好,只是需要花時間;但麻煩的是有些極端值和結果並不直觀。此外,資料清理或移除的效果對於減低overfitting可以做到什麼程度也不好說。

資料增量則是常用的另一種手法。如果不能真實的多蒐集到資料,就是用人工的手法,處理既有的資料讓他對機器來說「像是」另一種資料。然而,它真的是全新的資料嗎?由於是從原本的資料改變而來,它和舊有資料將不再保持獨立同分布的狀態。當然,舊有的資料也很難保證是獨立同分布的,只能說,這邊還有一些想像空間啊。

正規化和驗證,就是下一講和下下一講的主題。本篇簡單介紹過度配適的發生及原因,並歸納出可能發生過度配適的狀況。它確實是機器學習和深度學習裡面的一項挑戰,但只要接觸這個領域,就不得不面對它。

--

--

Martin Huang
機器學習系列

崎嶇的發展 目前主攻CV,但正在往NLP的路上。 歡迎合作或聯絡:martin12345m@gmail.com