Machine Learning學習日記 — Coursera篇 (Week 6.2):Diagnosing Bias vs. Variance, Regularization and Bias/Variance, Learning Curves, Deciding What to Do Next Revisited

Pandora123
8 min readJun 8, 2016

Bias vs. Variance

大綱

  1. Diagnosing Bias vs. Variance
  2. Regularization and Bias/Variance
  3. Learning Curves
  4. Deciding What to Do Next Revisited

1. Diagnosing Bias vs. Variance

首先要了解的就是所謂Bias跟Variance所代表的問題是什麼:

Bias即所謂的Underfitting,因為參數過少連Training set都會有頗大的預測誤差

Variance即所謂的Overfitting,因為參數過多導致過度符合Training set的資料特性,使得其無法預測較為普遍的資料集

那麼今天如果我們想要畫出一張圖形來秀出error值跟參數間的關係呢?

從圖中可以看到當參數增加時,會使得用來訓練的Training set的預測落差漸漸趨近於0,但是用來表示cross-validation的線條,會因為參數增加造成的overfitting的問題,使得其預測誤差在某個臨界點後便開始急遽的上升

從下圖中可以很清楚地看出,當參數很少時(Bias),cv(cross validation)地預測落差會跟training set的預測落差都是差不多的,都很大,即Underfitting

而當參數非常多時(Variance),cv的預測落差會很大,而training set的預測落差卻剛好相反:非常小,即Overfitting

polynomial:多項式的

隨堂練習

misclassification:錯誤歸類 / similarly:相似的

Ans:

2. Regularization and Bias/Variance

而為了解決Overfitting的問題,在先前的文章中有提到可以使用Regularization的方法來處理,但是這還存在一個問題:我們的λ要用多大呢?

假設我們要使用Regularization來解決Linear regression

不同的λ將可能造成不同的問題:若是λ很大的話,將會使得所有的參數都變得很小而沒什麼影響力,這會造成Underfitting的問題;若是λ很小的則就像是λ根本沒加進去一樣,仍然沒解決Overfitting的問題

因此我們會採用上一篇文章提到的:Training set, Cross Validation set跟Test set的概念,也就是我們藉由代入不同的λ來訓練模型,再將cross validation的資料丟入這些不同λ的模型得出不同的誤差值,最後再從中得到最好的λ、模型(最小的誤差值)

(say):這邊是

然而這邊有一點必須特別注意:J_train(θ),J_cv(θ),J_test(θ)都是跟之前一樣沒有將regularization項目涵括進來

這是因為若是我們把regularization加進來的話,就不會得到我們真正想要知道的預測誤差,那些regularization的項目不過只是用來協助我們找到最適當θ值的工具而已

那些regularization的項目雖然不會在我們繪圖中出現,但實際上其在實際訓練資料集(Training set)中,是有實際在運行的

你可以想像為:你不會把彩排時候發生的狀況一律搬到舞台上演出

最後若是將λ與J_train,J_cv做一個比較的圖表:

當λ由小變大時,J_train便會不斷的上升(如果把regularization項目考慮進來的話,J_train會呈現一個變大後變小再變大的曲線),而J_cv則會因為隨著接近正確的λ值而變小,再隨著遠離正確的λ值而變大。

當λ極大時,會有著Underfitting的現象,即bias;當λ極小時,等於沒有,則不會改善原本Overfitting的現象,即variance

隨堂練習

regularized:正規化的 / plot:繪出

Ans:

3. Learning Curves

我們可以從學習曲線中來得知一些極為有用的線索,那麼什麼是學習曲線呢?

學習曲線為一個觀察隨著訓練樣本數(m)不斷增加,J_train跟J_cv的變化圖形(這邊樣本數增加指的是J_train,J_cv會維持原樣):

假設在預測模型是一個已經調整到非常不錯的狀態,那麼我們可以看到隨著樣本數增加,J_train也會緩緩地上升,而J_cv會因為參數漸漸地精準起來而隨之下降

如果模型有著Underfitting(bias)的問題時呢?

我們可以發現J_train初期會大幅上升,到一定程度後就趨於緩慢,而J_cv則會在下降到一定程度後便幾乎不再下降,而兩者趨同

Underfitting的模型有幾個特點:J_train與J_cv近似、都是在一個很高的誤差

而我們也可推測出,就算訓練樣本數不斷增加,對於J_cv的改善也是極其的有限,因此,對於bias問題來說,增加訓練樣本數並不是一個合理的選擇

那麼如果模型有著Overfitting(variance)的問題時呢?

is likely to help:有可能有幫助的

J_train會持續的緩慢上升,而J_cv會持續地緩慢下降。

Overfitting模型的特點是:J_cv的誤差將明顯大於J_train

我們可以推測出,當訓練樣本數持續增加後,將會漸漸改善J_cv的預測準度,因此對於variance問題來說,增加樣本數是一個可行的解決辦法

你可能會問:那為什麼bias就不是呢?

你可以想像:bias就像是一個不求長進的模型(也因此不會有進步的可能),相反地,variance是一個自我要求極高的模型,當這個模型吹毛求疵的算出了幾乎全部的預測後,那麼代表它離完美的預測也不遠了

4. Deciding What to Do Next Revisited

回到一開始的問題:當今天我們的模型發生令人無法接受的誤差時,我們有哪些解決辦法呢?

additional:額外的

Andrew將要解決的問題歸類為High variance與High bias等兩種問題。

若要解決High variance,也就是Overfitting:更多的訓練樣本、少一點feature、加大λ都是可行的辦法

而若是要解決High bias,即Underfitting:更多的feature、增加多項式、降低λ都是可行的辦法

回到Neural Network上面,當network的結構越為簡單時,代表其越有著Underfitting的問題;而當network的結構越為複雜時,代表其除了運算成本很高外,還可能有著Overfitting的問題,也因此可以適時導入Regularization來解決

prone:傾向 / Computationally:計算地 / address:解決

隨堂練習

complex:複雜的 / suffering from:遭到...

Ans:

--

--