iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
AI & Data

30天搞懂機器學習是否搞錯了什麼系列 第 6

【Day 6】機器學習基本功(四)

過度擬合(Overfitting)

昨天我們把模型變得更複雜,讓訓練的Loss變得更低,但當我們把模型變得越來越複雜的時候,就可能會發生模型雖然在訓練上面得到比較好的結果,但在測試上面卻不一定會得到比較好的結果,甚至是非常差的結果,這種我們就稱之為過度擬合(Overfitting),因此我們需要選擇一個最適合的模型。而除了複雜的模型以外,訓練資料太少也有可能會造成Overfitting的發生。

正規化(Regularization)

透過重新定義Loss來避免Overfitting的發生,之前的例子我們只考慮了預測與實際的誤差,而現在我們可以將原本的Loss function後面再加上一個額外的項目 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda%20%5Csum%20(w_i)%5E2 來做正規化(Regularization)https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 為一個常數,是我們需要調整的。
加入了那個項目使我們最後找到的權重變更小,而當權重變小,其輸入對結果的影響就越小,就能夠使function變得更平滑(smooth),也就可以減少權重的影響,來避免Overfitting的情況發生。

從實際的例子來看,我們可以發現當 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 的值越大,在訓練資料上得到的誤差越大,這是因為當 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 越大,我們就越傾向於考慮權重的值而減少考慮誤差。不過在測試資料上面得到的誤差可能會是比較小的,從圖中可以看到隨著 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda 的值越大,測試資料的誤差越小,但在 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda%20%3D%20100 之後,測試資料的誤差又上升了,因此我們就會選擇 https://chart.googleapis.com/chart?cht=tx&chl=%5Clambda%20%3D%20100 來得到我們的模型。


參考資料

李宏毅老師 - ML Lecture 1


上一篇
【Day 5】機器學習基本功(三) --- Regression
下一篇
【Day 7】機器學習基本功(五)
系列文
30天搞懂機器學習是否搞錯了什麼30

尚未有邦友留言

立即登入留言