吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

這一節我們學習在神經網絡學習訓練時出現的結果進行分析,偏差和方差的表現和優化,仔細看好咯~

偏差,方差(Bias /Variance)

幾乎所有機器學習從業人員都期望深刻理解偏差和方差,這兩個概念易學難精,即使你自己認為已經理解了偏差和方差的基本概念,卻總有一些意想不到的新東西出現。

關於深度學習的誤差問題,另一個趨勢是對偏差和方差的權衡研究甚淺,你可能聽說過這兩個概念,但深度學習的誤差很少權衡二者,我們總是分別考慮偏差和方差,卻很少談及偏差和方差的權衡問題,下面我們來一探究竟。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

假設這就是數據集,如果給這個數據集擬合一條直線,可能得到一個邏輯迴歸擬合,但它並不能很好地擬合該數據,這是高偏差(high bias)的情況,我們稱為“欠擬合”(underfitting)

相反的如果我們擬合一個非常複雜的分類器,比如深度神經網絡或含有隱藏單元的神經網絡,可能就非常適用於這個數據集,但是這看起來也不是一種很好的擬合方式分類器方差較高(high variance),數據過度擬合(overfitting)

在兩者之間,可能還有一些像圖中這樣的,複雜程度適中,數據擬合適度的分類器,這個數據擬合看起來更加合理,我們稱之為“適度擬合”(just right)是介於過度擬合和欠擬閤中間的一類。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

在這樣一個只有x_1和x_2兩個特徵的二維數據集中,我們可以繪製數據,將偏差和方差可視化。在多維空間數據中,繪製數據和可視化分割邊界無法實現,但我們可以通過幾個指標,來研究偏差和方差。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

我們沿用貓咪圖片分類這個例子,左邊一張是貓咪圖片,右邊一張不是。

理解偏差和方差的兩個關鍵數據是

訓練集誤差(Train set error)和驗證集誤差(Dev set error),為了方便論證,假設我們可以辨別圖片中的小貓,我們用肉眼識別幾乎是不會出錯的。

高方差

假定訓練集誤差是1%,為了方便論證,假定驗證集誤差是11%,可以看出訓練集設置得非常好,而驗證集設置相對較差,我們可能過度擬合了訓練集,在某種程度上,驗證集並沒有充分利用交叉驗證集的作用,像這種情況,我們稱之為“高方差”

通過查看訓練集誤差和驗證集誤差,我們便可以診斷算法是否具有高方差。也就是說衡量訓練集和驗證集誤差就可以得出不同結論。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

高偏差

假設訓練集誤差是15%,我們把訓練集誤差寫在首行,驗證集誤差是16%,假設該案例中人的錯誤率幾乎為0%,人們瀏覽這些圖片,分辨出是不是貓。算法並沒有在訓練集中得到很好訓練,如果訓練數據的擬合度不高,就是數據欠擬合,就可以說這種算法偏差比較高。相反,它對於驗證集產生的結果卻是合理的,驗證集中的錯誤率只比訓練集的多了1%,所以這種算法偏差高,因為它甚至不能擬合訓練集,這與上一張幻燈片最左邊的圖片相似。

高方差高偏差

再舉一個例子,訓練集誤差是15%,偏差相當高,但是,驗證集的評估結果更糟糕,錯誤率達到30%,在這種情況下,我會認為這種算法偏差高,因為它在訓練集上結果不理想,而且方差也很高,這是方差偏差都很糟糕的情況。

再看最後一個例子,訓練集誤差是0.5%,驗證集誤差是1%,用戶看到這樣的結果會很開心,貓咪分類器只有1%的錯誤率,偏差和方差都很低。

有一點我先在這個簡單提一下,具體的留在後面講,這些分析都是基於假設預測的,假設人眼辨別的錯誤率接近0%,一般來說,最優誤差也被稱為貝葉斯誤差,所以,最優誤差接近0%,我就不在這裡細講了,如果最優誤差或貝葉斯誤差非常高,比如15%。我們再看看這個分類器(訓練誤差15%,驗證誤差16%),15%的錯誤率對訓練集來說也是非常合理的,偏差不高,方差也非常低。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

當所有分類器都不適用時,如何分析偏差和方差呢?比如,圖片很模糊,即使是人眼,或者沒有系統可以準確無誤地識別圖片,在這種情況下,最優誤差會更高,那麼分析過程就要做些改變了,我們暫時先不討論這些細微差別,重點是通過查看訓練集誤差,我們可以判斷數據擬合情況,至少對於訓練數據是這樣,可以判斷是否有偏差問題,然後查看錯誤率有多高。

當完成訓練集訓練,開始使用驗證集驗證時,從訓練集到驗證集的這個過程中,我們可以判斷方差是否過高。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

以上分析的前提都是假設基本誤差很小,訓練集和驗證集數據來自相同分佈,如果沒有這些假設作為前提,分析過程更加複雜,我們將會在稍後課程裡討論

上面我們講了高偏差和高方差的情況,大家應該對優質分類器有了一定的認識,偏差和方差都高是什麼樣子呢?這種情況對於兩個衡量標準來說都是非常糟糕的。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

我們之前講過,這樣的分類器(下圖),會產生高偏差,因為它的數據擬合度低,像這種接近線性的分類器,數據擬合度低。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

但是如果我們稍微改變一下分類器,我用紫色筆畫出,它會過度擬合部分數據,用紫色線畫出的分類器具有高偏差和高方差,偏差高是因為它幾乎是一條線性分類器,並未擬合數據。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

這種二次曲線能夠很好地擬合數據。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

這條曲線中間部分靈活性非常高,卻過度擬合了這兩個樣本,這類分類器偏差很高,因為它幾乎是線性的。

吳恩達深度學習筆記(29)-神經網絡訓練的方差和偏差分析

而採用曲線函數或二次元函數會產生高方差,因為它曲線靈活性太高以致擬合了這兩個錯誤樣本和中間這些活躍數據。

這看起來有些不自然,從兩個維度上看都不太自然,但對於高維數據,有些數據區域偏差高,有些數據區域方差高,所以在高維數據中採用這種分類器看起來就不會那麼牽強了。

總結一下,我們講了如何通過分析在訓練集上訓練算法產生的誤差和驗證集上驗證算法產生的誤差來診斷算法是否存在高偏差和高方差,是否兩個值都高,或者兩個值都不高,根據算法偏差和方差的具體情況決定接下來你要做的工作,下節課,恩達老師會根據算法偏差和方差的高低情況講解一些機器學習的基本方法,幫助大家更系統地優化算法,我們下節課見。

喜歡就關注我,持續日更中……


分享到:


相關文章: