之前曾經介紹過的 regularization ,主要作用也是在調整 bias 和 variance 之間的尺度,
regularization 是被加在 cost function裡面,作為一個「懲罰」,如果數字越大,cost 就會越高,
如果建出來的model 內含的高次方項越多,就會造成懲罰項的增加,因此演算法會傾向於找一個不含高次方項的方向。
用來調整懲罰力度的就是分子上的lambda 項,如果數字太大,懲罰的力度太大就會導致最左邊的結果,
最左邊的model 被過度簡化了,導致它的model 只剩下一個常數項,這就是「欠擬合」,也就是 high bias,
但如果懲罰的力度太小,就會讓 regularization 有做跟沒做一樣,形成最右邊這種依舊很複雜的過擬合模型,
因此透過選擇一個適中的regularization parameter (lambd,同樣能達到調整模型的效果。
接下來,在判斷一個模型到底是 high bias 還是 high variance,吳恩達認為最好是要跟一個baseline 值比較後再決定,
比方說,在一個語言模型中,假設training error 是10.6% 而validation error 是 14%,
從絕對數值上可能會認為 training error 蠻高的,這個模型應該是high bias,
但事實上由於語言模型的資料來源有可能有雜訊多、字詞缺失等問題,就是算是人類來判斷,可能都有10%以上的錯誤率,
因此如果把人類的表現設為baseline ,則 training error 只比人類差了0.6%,而validation error 比training error 高了3.4%,
因此應該把這個模型視為high variance。
其它可做為baseline 比較對象的,還包括競品的表現、人類透過先前經驗來設的目標值等等。
接下來介紹learning curvers,指的是 validation error 和 training error 在不同情境下的變化情況,
隨著訓練資料增加,training error 通常會微幅上升,但 validation error 會下降,
這是因為當資料很少時,簡單的曲線就能輕易把每一筆訓練資料都顧得很好,
但資料一多,除了帶來些微的變異,還會增加一些資料的雜訊等等,原則上就會出現一些稍微偏離曲線的資料。
至於資料越多validation error 會降低,是因為新的訓練資料可以加強模型泛化的能力,
當模型學到夠多的各種不同狀況,就越有能力去應對它沒有面對過的東西。
在high bias 的情況下,training error 會比baseline performance 還要高很多,而且就算增加再多資料,
training error 也頂多趨於平穩而不會下降。這通常是因為模型太過簡單,無法應對過於複雜的資料關係,
因此除非改變模型,否則再怎麼新增資料也沒有用的。就是所謂牛牽到北京還是牛,除非把腦袋換掉。
High variance 則是 validation error 顯著高於 training error,
這時增加資料量應該就會有幫助,因為high variance 是源自於把訓練資料學得太好,導致泛化能力不足,
有一種學習力過剩的感覺,我們稱之為過度學習,
通過加入更多資料,可以教會模型正確的趨勢在哪裡,最終達到校正模型的效果。
總結來說,要處理high bias 或 high variance 可以透過以下的手法來應對。
要處理high bias (underfitting) 問題,可以透過:
(1) 加入更多的特徵,原因在於說我們可能原本定義的特徵不足以正確說明資料間的真實差異,因此沒學到該有的訊號
(2) 使用更多高次方項: 會underfitting 可能是因為模型太簡單,但資料關係太複雜。比方說用直線方程式去fitting 二次曲線。
所以要用更複雜的模型來增加模型的擬合能力。
(3) 降低lambda: regularization 是用來處罰太複雜的模型的手段,但如果下手太重,就會把模型搞得太簡單。
要處理 high variance (overfitting) 問題,可以透過:
(1) 加入更多訓練資料: 透過更多訓練資料,來告訴模型正確的趨勢,以達到修正的效果。
(2) 減少特徵: 當我們用冗餘的特徵去描述資料時,只會增加模型fitting 上的困擾,硬要做fitting 的結果造成過度學習。
(3) 增加lambda: 通過加強regularization term的強度,讓cost 增加,驅使模型努力壓低模型的複雜度。
相信講到這裡,大家應該可以逐漸感覺到,bias 和 variance 是一種trade-off,
我們在找的就是一個甜蜜點,讓bias/variance 都恰如其份,讓模型不但能鑑往,還能知來。
但不管怎麼樣,low bias 是一個模型能夠使用的最基本條件,
因此在衡量一個model的好壞時,一定優先考察 training error ,看看是否有high bias 的狀況,
接下來就是考察validation error,了解模型是否有high variance 的問題,然後採取相對應的策略。
事實上,經驗顯示複雜的模型,例如更多層的類神經網路,只要regularization 設計合理,表現至少能和簡單的模型持平。
留言列表