以下內容有任何不理解可以翻看我之前的博客哦:吳恩達deeplearning.ai專欄
文章目錄
- 偏差與方差
- 高偏差
- 高方差
- 合適的模型
- 理解偏差與方差
- 總結
當你構建神經網絡的時候,幾乎沒有人能夠在一開始就將神經系統構建得十分完美。因此構建神經網絡最重要的是直到你下一步需要做什么來提高你模型的表現。其中,通過查看**偏差(bias)與方差(variance)**就是一種很好的手段。讓我們看看該怎么做。
偏差與方差
在這個專欄開始的章節中,我們曾經在房價預測的例子中使用線性擬合,但效果不好,我們稱這個算法有很高的偏差(High Bias),即欠擬合(underfit)。之后我們也用過四階多項式來進行擬合,但是效果也不好,我們稱這種算法有很高的方差(High variance),即過擬合(overfit)。最后我們發現,二階多項式的擬合效果最佳,我們稱之為Just Right。因為這是個單特征問題,我們可以通過畫圖來理解:
但是如果我們面對的是多特征模型,我們就不能通過畫圖來判斷擬合程度是否良好了。因此,我們需要一種更加系統的,通用的方法來定義模型的擬合程度;我們可以在訓練集和交叉驗證集的性能來判斷偏差與方差的大小。
高偏差
例如我們就看最左邊這個圖,如果我們想要計算 J t r a i n J_{train} Jtrain?,該算法在訓練集上的表現如何,那么我估計你算出的 J t r a i n J_{train} Jtrain?會很高,這很顯然。
那么 J c v J_{cv} Jcv?呢, J c v J_{cv} Jcv?和 J t r a i n J_{train} Jtrain?的公式一樣,只是數據換成了一些新的數據點:
那么很顯然,連訓練集的代價函數都很高,那么交叉驗證集也一樣很高。
高偏差的函數的一個典型特征就是模型在訓練集的效果都不是很好,即 J t r a i n J_{train} Jtrain?就很大,那么就可以說明這個模型為高偏差。
高方差
再看看右邊的圖,它的代價函數的特點是, J t r a i n J_{train} Jtrain?很小(畢竟擬合程度很高),但是 J c v J_{cv} Jcv?很大,這是由于過擬合的特點就是泛化能力較弱。
那么就可以總結出來了,高方差的特點是 J c v J_{cv} Jcv?遠大于 J t r a i n J_{train} Jtrain?
合適的模型
最后,再看看中間的圖,這算是擬合效果很好的了。由于其擬合程度比較合適,很容易看出它的 J t r a i n J_{train} Jtrain?和 J c v J_{cv} Jcv?都比較小,那么這個模型就算是比較合適的了。
理解偏差與方差
我們再從另一個角度考慮下這個問題。在上文的例子之中,我們可以看出,隨著特征維度d的升高,擬合程度逐漸上升, J t r a i n J_{train} Jtrain?逐漸降低,而 J c v J_{cv} Jcv?先下降后上升,我們可以畫出d和j的關系圖:
所以我們一般選擇的點就是圖中箭頭的這種,從而能夠使得J_train和J_cv都保持在一個較低的水準,從而提高了模型的效果。
另外補充一種更加糟糕的情況,那就是一看你發現訓練集的代價函數很大,但然后你發現交叉驗證集的代價函數甚至比訓練集還要大。出現這種情況一種比較常見的原因是你的模型過于復雜,使得模型在前幾個數據就已經過擬合了,無法擬合訓練集后面的數據,因此導致了訓練集的大偏差。而在交叉驗證集由于數據全是全新的,對于前幾個數據也無法很好地擬合,因此導致了比偏差還要大的方差。
總結
雖然上面講了很多種不同的效果不佳,但是最重要的是要記住高偏差是在訓練集的效果不好,高方差是在驗證集的效果不好。觀察偏差和方差是改善模型的一個重要手段。下節博客我們將詳細講講正則化是如何影響方差與偏差的,這將幫助你更好地使用正則化的方法來改善模型。
為了給讀者你造成不必要的麻煩,博主的所有視頻都沒開僅粉絲可見,如果想要閱讀我的其他博客,可以點個小小的關注哦。