本篇是記錄學習李宏毅老師講解第二個章節[1]的學習筆記,在筆記之間多少也融合了之前Andrew Ng所講的內容[2],通過融合比較兩位大師的講解後,我對bias以及variance的概念又更理解了,著實有令人醍醐灌頂之意味

Bias and Variance

一開始老師以簡單的例子並搭配圖形介紹bias與variance的概念,如下圖,假設這是一個射飛鏢的遊戲,總共給你20次機會射靶,很厲害的人會全部都命中靶心,也就是如左上角這張圖一樣,在機器學習中稱為low bias and low variance,這也是使用機器學習的最終目的-訓練模形使得模型變成low bias and low variance。而右上角那張圖代表選手的偏差還有點大,雖然每次都在中心點附近,但還是存在一定的誤差範圍,這個時候在機器學習中即稱為high variance。再看看左下角那張圖,選手的偏差已經和高手平分秋色了,但選手的中心點卻不是瞄準靶心而是瞄準靶心稍稍上緣的位置,這個時候在機器學習中稱為high bias。

稍微有點variance 以及bias的概念後,老師繼續用個簡單例子加強說明,假設模型的目的是要找出X_cp到y之間的映射關係,左邊假設模型是個簡單的對應函式,經由gradient descent之後可以找到相對映的參數W、b,把很多組data做同樣的運算就可以得到如左圖的圖片出來,可以發現線條大部分都集中在中間的部分,相對於右邊用複雜的模形預測出的線條有規律許多,因此左邊的模形稱為small variance模型,右邊的模形稱為large variance模型。

bias也是做同樣的實驗,但老師不知道介於圖形中心點的那一條線的圖形因此就假設藍色的線為中心線,綠色的線為所有橘色的線取平均,因此由圖形可以發現到左圖兩條線的偏差比較大對應的圖形是large bias,右邊的圖形兩條線偏差相對小,因此對應的圖形是small bias。

Overfitting and Underfitting

因此,經由以上的概念描述就可以帶出機器學習的重要概念-overfitting and underfitting,當大部分的error來自variance時,代表模型太過複雜以至於模型傾向於對每個點都積極的做匹配而不是做綜合的評估,就好像最右邊那一张圖表一樣。而當模形太為簡單,error大部分都來自bias時,即為underfitting,就好像最左邊的圖表一樣,資料給的是二次曲線方程式,但是訓練模型給的參數卻只是直線方程式,想當然爾永遠都會預測不準。



Diagnosis high bias or high variance

  • Normal
    下圖代表著正常的模型在learning curve所表現的情形,橫軸代表訓練數據集的大小,縱軸代表error,J_cv代表validation set的誤差,J_train代表訓練集的誤差,J_train會隨訓練集的增加而漸漸變大,J_cv則會因為資料越來越多而造成模型誤差越來越小

  • high bias
    high bias 的 J_train在一開始即會隨著資料的增加而大幅上升,之後很快就收斂到相對較高的誤差,並且與J_cv之間的間隔非常接近,由此圖來觀察即可明顯知道增加訓練資料並不能對high bias的模型有多大的改進

  • high variance
    與前面兩幅圖最大的不同是 J_cv與J_train之間會存在一個很大的gap,這時候增加資料量可以使得模形誤差持續的下降並大幅的改善模型效果

Deal with high bias

  • 增加模型複雜度
  • 增加更多種輸入特徵
  • 減少regulization term

Deal with high variance

  • 增加更多的數據集
  • data augmentation
  • 加入泛化技巧(regularization)
  • 減少輸入特徵
  • 增加regulization term

N-fold cross validation

最後老師用一個簡單的homework例子講解為什麼要使用cross validation來判斷模型好與壞。如下圖所示,kaggle上的比賽常常都會分成兩組,一為公開的測試數據集,另一個為伺服器才有的私有測試數據集,當然這私有的測試數據集是拿不到的,必須將模形結果上傳到伺服器上,伺服器才會算出模型在私有數據集的評斷分數,因此常常發生的事情為—當你調了很久的參數在公開的測試數據集上得到不錯的結果時,這時候你很興奮的將網路結果傳到server上卻發現事情並不是像你想像的一樣,因而非常沮喪。

比較好的一個解決辦法是將訓練數據集再分一部份出來並切割成為training set以及validation set,之後將不同的模型誤差分別條列出來,選擇最小誤差的模型並把training set 以及validation set 整合成大訓練數據集再從頭到偉訓練一次,如此得到的模形評比就會比較客觀,不會出現剛剛所描述的現象。

再保險一點可以將原本的資料集切成N等份,其中1份當成validation set,其他的為training set,並記錄這樣一組數據集在各個模型中的訓練情況,如下圖,共切成三等份,所以可以得到三組不一樣的結果,將這些結果取平均後找尋誤差最小的模型,再重複剛剛的整合過程,如此得到的模形評比會比剛剛2-fold cross validation還要更客觀。

1.https://www.youtube.com/watch?v=D_S6y0Jm6dQ&index=5&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49
2.https://medium.com/@ken90242/machine-learning學習日記-coursera篇-week-6-2-diagnosing-5a9e43db4593

arrow
arrow
    全站熱搜

    Darwin的AI天地 發表在 痞客邦 留言(0) 人氣()