好,那為了讓大家更了解 overfitting 裡面的這些內涵,所以呢我們
做了一系列人工的實驗來 show 這個實驗結果給大家看說 overfitting 到底是怎麼一回事。
在一部分的實驗裡面,我們用這樣的方式來產生資料,我們還是想象我們
在一個一維的回歸分析問題上的時候, x 只有一個維度,然後我要做回歸分析。
那我怎麼產生我的資料呢,我用一個十次多項式來 當做我的目標函數,我的十次多項式是這個藍色的這條線,這個十次多項式
然後我在這個十次多項式上面加上一些些的雜訊,然后加上雜訊之後來產生
我的資料點,所以我的資料點是那些黑色的點,大家就可以看到說它跟那個十次多項式是- 有一點點
區別的,在另外一部分的實驗裡面呢我則考慮一個五十次的多項式
所以大家看到五十次的多項式就比十次多項式更彎彎曲曲一些了。
不過呢,這五十次多項式,我不考慮
有雜訊的狀況,這五十次多項式,但是我不再加上任何的雜訊。
我們要了解的事情是這樣,今天造成問題的,OK,左邊會出
問題嗎?右邊會出問題嗎?到底什麼時候會出 overfitting 這樣的問題。
好,然後我們怎麼做呢?我們用兩個 不同的
learning model,一個 learning model 我們說叫做二次的。
二次的意思是我考慮所有的二次多項式,我用這個 quadratic
的 regression 的方式去找出 一個最好的
g2,根據我的資料去找出一個最好的 g2,那我把它用綠色的顏色畫在這邊,
然後呢,這個,如果今天是另外一個模型的話,我則考慮十次的多項式。
如果我有兩個,OK,想象想象有兩個人好了,兩個學生,一個學生說我只會二次多項式,然- 後他從看到
資料,從所有的二次多項式理面選一個最好的,另外一個學生說我會所有的十次多項式,當然- 是十次以下的多項式,
他從所有的裡面去選一個,根據他的資料,他覺得最好。
所以有一個綠色的學生,有一個紅色的學生,我們想要知道哪一個表現比較好。
好,所以我們來看看他們的結果怎麼樣。
好,在這邊呢,我先 show 了這個如果今天是我的目標函數,是一個
十次多項式,不過呢我在我的資料上加上了一些雜訊的時候,到底發生了什麼事情, 那我們可以看到,OK,今天如果我看
Ein 的話, 那麼 g10 所達到的
Ein 是比 g2 來得好的。
g10 的 Ein 是0.034,g2 的 Ein 則是 0.060。
好,這是為什麼。因為那個紅色的學生應該比較聰明嘛,他會比較多種
的多項式,他在比較多種的多項式裡面做選擇的話,自然他是可以達到可能比較低的 Ein。
不過我看 Eout 的話,哎呀,好慘啊。
g2 的那個學生,他拿到 Eout 是 0.127, 但是我如果看 g10
呢,號稱比較聰明的那個學生,他拿到 Eout 是 9.00。
非常的大,所以用我們學到術語就是什麼,overfitting 發生了。
從什麼,overfitting 在什麼樣的過程中發生了,假設我們
從 g2 切換到 g10 的時候,我們發生了 overfitting,
我們的 Ein 下降了,可是我們的 Eout 上升了。
所以左邊那樣的情形,我今天是十次多項式, 我從二次切換到十次發生了 overfitting,
好,另外一邊,我今天的目標是五十次多項式,我從二次
切換到十次發生了什麼事呢,誒,你說二次切換到十次感覺很好啊,二次的 話那個笨笨的,一定沒有辦法把五十次做好,切換到十次,好像比較有機會吧。
我們先看 Ein,Ein 有沒有機會,Ein 有 怎麼樣呢?今天
g2 的 Ein 是 0.029, g10 的呢,好低呀,0.00001。
低好多,所以看起來的確 g10 是做得比較好,沒有錯。
但是如果看 Eout 呢, 看 Eout 的話,你們會發現今天
g10 的 Eout 糟的一塌糊塗,g2 的还 OK 啦, 反正
0.120, 所以呢雖然不是一個很完美的數字,但是也不算太大。
g10 的是多少,7680,
哇,怎麼這麼大,對呀,如果看這個圖的話,你會發現,它跟我們之前
產生那個五十次多項式這個高高低低的一點也不像,有時候五十次高的時候它就低,五十次低- 的時候它就高。
所以這個時候我們發現 g10 把 Ein 做得 好有什麼用,沒什麼用啊,它的
Eout 非常的差, 所以在這兩個情形裡面, overfitting 都發生了。
如果我從 g2 換成 g10 的話,overfitting 都發生了。
好,所以呢,這邊就產生了一個很奇怪的情形,大家腦袋裏可能會有個疑問啊,說
我們剛剛不是說我們兩個學生嗎,一個學生是紅色的學生,他號稱比較聰明 一點,他會二次多項式到十次多項式,一次多項式到十次多項式,統統都會。
然後呢,R 這個學生,他號稱比較不聰明一點,他只會一次多項式跟二次多項式。
那如果今天這兩個人都知道目標是十次多項式,
目標,對,我們說我們的目標是十次多項式產生的啊,所以我們的目標是十次多項式,我只是- 加上一點點 noise,
你會說,咋聽之下,好像 會十次多項式那個人比較有贏面啊,他會十次多項式,我們的目標又是十次多項式,誒,他應-
該要比較有贏面,才對啊, 可是事情不是這樣,我剛才已經 show
給大家結果 說,好像比較笨的那個學生,比較會比較少的那個學生,
居然贏了。所以這很奇怪啊,這個學生明明已經
放棄了,我說放棄的意思是什麼,他本來就不會做十次多項式,所以如果我們決定
要去問那個只會二次多項式的學生,我們已經放棄了要做到完美。
絕對放棄,因為十次多項式你用一個二次多項式做到完美,這是不可能的事情。
但是,它如果贏的話,那就代表什麼。
哲學上這是一個很有趣的事情,我把它稱之為 以退為進,我這邊寫的這個 concession for advantage,這其實是以退為進的意思。
退什麼,他說,我不要,我不要能力那麼強的。
OK,但是它實際上的收穫是它的 Eout 變得比較好。
好,這是一件很特別的事情,我想大家以前可能沒有想過,如果我今天我是一個老闆,我跟你
說我們,你去做一個機器學習的問題,然後我們這個問題呢應該差不多是十次多項式可以
解決的,你的目標是十次多項式,你可能一定會找一個有十次多項式
模型去,你根本就不會想到,你要用一個二次多項式的模型,然後居然還可以做得比較好。
所以這是一件很有趣的事情,就是,誒,你就算知道
你的目標是十次多項式,你真正用十次多項式不見得會做得比較好,
那為什麼會這樣,我們來看看所謂的 learning
curve,如果大家還有印象的話,learning curve 是什麼,learning curve 所描述的事情是
我的資料量有多少,我的橫軸是我的資料量有多少,我的資料量有多少的時候我的 error 到底怎麼樣子變化,那我們這邊畫的是 linear
regression,regression 類的方法 的 learning curve,那其他的方法其實也類似的。
如果我今天是一個會做二次多項式的那個學生的話,他的 learning
curve 會長什麼樣子呢? 我們說 learning curve Ein 跟 Eout,OK,這個在一個固定的
hypothesis set,VC dimension 是 finite hypothesis set 之下,
我們應該最後會到同樣的點上,如果無限多個資料的話,我的 Ein 跟 Eout 應該要做得差不多好。
我在我有限的點的時候,Ein 會比我能夠做到的 converge
過去的那一條會稍微好一點 點,為什麼,因為我看到那些資料,我可以對它做一點點
optimization 的動作,所以我的線會往那些資料點靠一點點。
所以我的 Ein 會比這個我能做到的真正這個收斂的那一條
線要低一點點,然後我的 Eout 呢則是高一點點,因為我往我看到的點
靠了一點點,但是這樣,在我沒看到的點那邊好像如果那邊有 noise 的話,我等於是移了兩倍的距離。
所以這是 H2 的這個 learning curve。
如果我今天切到 H10 呢,H ten 的 learning curve 呢,
你會發現長得差不多,不過 Ein 跟 Eout 距離拉大,
我們現在對這些事情已經很熟悉了,為什麼 Eout 跟 Ein 距離會拉大,因為你的 VC dimension
你的 model complexity,好,所以如果看這兩個圖的話,你會發現它們長得很類似,
然後最重要的事情是什麼呢,最重要的事情是在左邊的這邊 左邊這邊也就是
n 很小的這邊,所以這是左邊的這個區域,這是左邊的這個區域。
你把左右兩張圖比較,你會發現 左右兩張圖比較的時候,Ein 一定是右邊的比較低。
它是 H10 嘛,對不對,它會比較多,所以 Ein 一定是它比較低。
然後 Eout 呢,則是右邊的那個比較高,
你那個 Eout 隔很遠,拉得很大,拉到高高的那邊去,所以 Eout 一定比較高。
所以在左邊的這個區域,無論如何 你的那個看似比較聰明的學生都會
overfit, 他最後 Eout 的結果,他最後考試的結果都不會考得很好
這叫聰明反被聰明誤,你很聰明,你把你的 Ein 做得很好,但是因為你太聰明了,你會了太多的
hypothesis, 反而你的 Eout 做得不好,所以
這裡告訴我們什麼,在左邊那個區域,只要你的資料量不夠多, 比較笨的那個學生不要想太多的那個學生,搞不好
會有好處,所以你資料量不夠多的時候,千萬不要鑽牛角尖,不要一直想
一直想,搞不好你用些簡單的 hypothesis 來解釋你的資料,雖然不完美
但是你還會有一些贏面。好,那我們剛剛講的另外一個 case 是
沒有 noise 的時候,怎麼沒有 noise,我們說你今天如果是一個五十次的多項式,然後我沒有加上任何 noise。
好,我們還是一樣,我們還是有兩個學生,一個是比較聰明,我看似比較 聰明的那個紅色的
g10,另外一個是看似比較不聰明的那個 g2, 我們剛才的結果告訴我們說,在這個情形裡面,
兩個都做不好,對不對,兩個都沒有辦法做五十次多項式, 那兩個都知道沒有 noise,但是沒有
noise 的狀況下, 好像 g2 還是做得好,所以說很奇怪呀,剛才有
noise,這個 g2 做得好也就算了,因為你說 g10 是這個最靠近那個
noise,所以做不好,那現在沒有 noise 了,為什麼 g10 還是做不好。
我要問大家的問題是這樣,你覺得 真的沒有
noise 嗎?在這種狀況下,我是 五十次多項式,我一個二次的,一個十次,我真的沒有
noise 嗎? 實際上從右邊這個線,這樣彎彎曲曲的跳來跳去,大家可能也看出來了。
在這個情形裡面是有 noise 的,是有一些不一樣的 noise,什麼樣
noise, 就是你今天要學的事情很複雜,
很複雜會造成這個彎彎曲曲的線,這個彎彎曲曲的線十次的也做不到,二次的也做不到。
然後,這些差距其實都是 noise,
你說當你今天要學的事情很複雜的時候,實際上這個複雜 度也造成了類似我們剛才看到的 noise 的影響。
那我們在下面的一段裡面,我們會更仔細的探討這樣的影響是怎麼一回事。
好,那在我們進入下一段之前,我們這邊呢說有兩個學生,那我們問問
大家說,根據我們剛才的討論,你覺得在這四種情形裡面有哪些時候 或哪個時候這個
R,OK,這個看似比較笨 的這個學生會贏過看似比較聰明的學生。
好,那大家看了題目之後,我希望大家能夠選到正確的答案是 4,我們實際上探討過一跟
二,所以我想一跟二對大家來說是沒有問題的,那三呢,三就是一個更困難的,什麼意思,- 我今天的
target 又很複雜, 然後我又有這些 random noise 在裏面,所以想當然而大家應該可以
推論一下,用你的這個工人智慧推論一下說,這個情形 R 應該也會做得比 O 來得好。