方差(Variance)和偏差(Bias)是看似是很基本的概念,但是深入理解會發現其中也包含着很大的學問。理解好方差和偏差能幫助我們改進擬合過程,從而得到更好地模型。
以下面這個簡單的數據分類問題爲例。我們希望將圖中的兩類樣本點正確劃分。
顯然,中間圖是一個很理想的分類,絕大部分的樣本點都得到了正確的劃分。而假如使用像邏輯迴歸這種簡單的模型,我們可能得到左邊圖中那樣一條直線,這個模型就對應高偏差,因爲有較多的樣本點被錯誤的劃分,這種情況我們稱模型“欠擬合”。如果我們使用的一個非常複雜的模型,像右圖那樣所有的樣本點都得到了正確的劃分,這是個好的模型嗎?答案是否定的,這個模型存在高方差,因爲如果我們加入一些新的樣本點(例如下圖中的a和b),模型將會很大概率將他們劃分到錯誤的類別裏,特別是位於分類邊緣的一些樣本,這種情況我們稱爲“過擬合”。
還有一種況,即高偏差高方差的情況,如下圖所示,高偏差是因爲模型對訓練樣本點不能很好的擬合,有較多的樣本點被錯誤劃分;高方差是因爲對中間兩個樣本點過度擬合。因此這是一個比較糟糕的分類器。
總結
簡單來說,可以理解爲偏差體現了模型對於數據的擬合程度,方差體現了模型的泛化性能,即對於一些新的樣本是不是能夠正確分類。
在訓練一個深度網絡模型的時候,我們可以通過其在訓練集和驗證集上的誤差來分析模型的好壞,進而進行模型調整。可以通過下面這個簡單規則來進行判斷:
訓練集誤差 | 低 | 低 | 較高 | 高 |
---|---|---|---|---|
驗證集誤差 | 低 | 高 | 較高 | 更高 |
結論 | 低偏差,低方差 | 高方差 | 高偏差 | 高方差,高偏差 |
在訓練過程判斷出模型存在的問題後,就可以針對不同的情況採取不同的措施改善模型性能。具體如下
- 高偏差: 增加網絡層數,增加隱藏層神經元數量,增加算法迭代次數,或者用更好的優化算法。
- 高方差: 增加用來訓練模型的樣本數,或者使用正則化防止過擬合。