iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 9
1
自我挑戰組

機器學習入門系列 第 9

ML_Day9(為什麼會有error)

相信有自己訓練過模型的人都會遇到跟我一樣的問題,最後的曲線都會往上飄(這是參考李弘毅老師的投影片),那這是什麼原因造成的呢?在還沒弄懂之前,常常一直增加訓練資料,就算加到記憶體快爆了,好像結果也沒有改善。這道理就像得重感冒 一樣,吃藥或許有改善,但是最有用的還是打針最快了,所以就是要找對方法,對症下藥啦。
https://ithelp.ithome.com.tw/upload/images/20190921/20116157FheNi89m2q.png
從下面這張圖可以看到,我們理想中的function是f^,給定一隻神奇寶貝的特徵值,可以得到理想上的output,這個function是我們不知道的,想起以前小時候玩game boy,神奇寶貝是非常熱門的,如果你知道這個function,就不用每次花很多時間訓練神奇寶貝,考慮要讓他吃什麼來增加親密度,什麼時候進化,如何提高cp值。

所以只能拿training data訓練出一個model,只能盡可能讓它跟理想中的越相近越好,但並不會完全一樣,我們把它叫做f*,從圖中可以明顯看到理想上跟實際上存在誤差,它是由bias與variance所造成的。

https://ithelp.ithome.com.tw/upload/images/20190921/20116157y0gaHBhC36.png

Bias and Variance
這邊我把bias與variance做個簡單的介紹:

  • Bias: 用training data訓練出的所有function的輸出的平均值與理想的function的輸出值之間的差異
  • Variance: 不同的training data訓練出的function的輸出值之間的差異
    看不懂沒關係,下面這張圖會為您做更詳細的解釋。以右下角那張圖來說,想像你今天在射飛鏢,你射了很多次(藍色的小點),那些點的位置距離中心點是有段距離的,代表你一開始在瞄就沒有瞄準,這就是bias; 當你瞄完後,每次射出去的力道或是角度都不一樣,所以會造成偏移,沒有集中,這就是variance。
    https://ithelp.ithome.com.tw/upload/images/20190921/20116157Az3300ZyVW.png

Variance
假設你在射飛鏢,你一開始已經瞄準某一個點,你如果力道太大,飛鏢很容易偏移,當你射很多次時,會發現它們都沒有集中在同一個點,可以對應到右邊的圖,當model越複雜,畫出來的直線越不集中;如果力道比較小,你可以慢慢調整手出去時的角度,減少偏移,所以當model越簡單,畫出來的直線越集中。
https://ithelp.ithome.com.tw/upload/images/20190921/20116157t17rRytFhb.png

Bias
假設你在射飛鏢,你同樣小的力道,你射出去時比較不會偏移,但如果一開始就瞄錯地方,每次射出去都集中在某一處,但它們的平均卻離中心很遠,那就像左圖一樣;反之,右圖雖然每一次射出去都產生偏移,但卻離中心很近。
所以說,比較簡單的model它所包含的區域不包括target(中心),只能從這個範圍挑出最好的function,不管怎麼挑都挑不到最接近理想的那個function,因為一開始給的training data就有問題了;越複雜的model,它涵蓋了整個區域,但還是挑不到最好的function,因為給的training data不夠。
https://ithelp.ithome.com.tw/upload/images/20190921/20116157nvzqFajaSc.png

所以今天你訓練一個模型,如果有以下情形:

  • overfitting: variance很大(資料不夠多)
  • underfitting: bias很大(資料不夠準確)
    https://ithelp.ithome.com.tw/upload/images/20190921/20116157yueoIjf1os.png

解決問題
如果你的model無法完全fit你的training data(如圖所示,紅色的線無法穿越每一個點),也就是underfitting,所以必須重新定義你的model,加入更多feature或是讓model更複雜,來fit所有的sample點。
https://ithelp.ithome.com.tw/upload/images/20190921/20116157rF54ruXOPO.png
如果,也variance太大,就是overfitting,所以必須增加訓練資料或是讓模型不要那麼複雜,但有時候資料並不適很好蒐集。所以還有一個方法,就是Regularization,它可以讓你的模型變簡單,由下圖可以看到,加入Regularization後,曲線變得越來越平滑。
https://ithelp.ithome.com.tw/upload/images/20190921/201161578ayrIzatJz.png


上一篇
ML_Day8(Linear Models for Binary Classification)
下一篇
ML_Day10(Gradient Descent)
系列文
機器學習入門28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言