訓練,驗證,測試集(Train / Dev / Test sets),偏差,方差(Bias /Variance)


1 深度學習的實踐層面(Practical aspects of Deep Learning)

1.1 訓練,驗證,測試集(Train / Dev / Test sets

訓練神經網絡時,我們需要做出很多決策,例如:神經網絡分多少層;每層含有多少個隱藏單元;學習速率是多少;各層采用哪些激活函數。對於很多應用系統,即使是經驗豐富的深度學習行家也不太可能一開始就預設出最匹配的超級參數,所以說,應用深度學習是一個典型的迭代過程,需要多次循環往復,才能為應用程序找到一個稱心的神經網絡,因此循環該過程的效率是決定項目進展速度的一個關鍵因素,而創建高質量的訓練數據集,驗證集和測試集也有助於提高循環效率。

對於訓練數據,我們通常會將這些數據划分成幾部分,一部分作為訓練集,一部分作為簡單交叉驗證集,有時也稱之為驗證集(dev set),最后一部分則作為測試集,要盡量確保驗證集和測試集的數據來自同一分布,就算沒有測試集也不要緊,測試集的目的是對最終所選定的神經網絡系統做出無偏估計,如果不需要無偏估計,也可以不設置測試集,所以如果只有驗證集,沒有測試集,我們要做的就是,在訓練集上訓練,嘗試不同的模型框架,在驗證集上評估這些模型,然后迭代並選出適用的模型。在機器學習發展的小數據量時代,常見做法是將所有數據三七分,就是人們常說的 70%訓練集30%測試集,也可以按照 60%訓練,20%驗證和 20%測試集來划分。假設我們有 100 萬條數據,其中 1 萬條作為驗證集,1 萬條作為測試集,100 萬里取 1 萬,比例是 1%,即:訓練集占 98%,驗證集和測試集各占 1%。對於數據量過百萬的應用,訓練集可以占到 99.5%,驗證和測試集各占 0.25%,或者驗證集占 0.4%,測試集占 0.1%。在機器學習中,我們通常將樣本分成訓練集,驗證集和測試集三部分,數據集規模相對較小,適用傳統的划分比例,數據集規模較大的,驗證集和測試集要小於數據總量的 20%10%

1.2 偏差,方差(Bias /Variance

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

 

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

 

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

 

 

理解偏差和方差的兩個關鍵數據是訓練集誤差(Train set error)和驗證集誤差(Dev set error),假定訓練集誤差是 1%,為了方便論證,假定驗證集誤差是 11%,可以看出訓練集設置得非常好,而驗證集設置相對較差,我們可能過度擬合了訓練集,在某種程度上,驗證集並沒有充分利用交叉驗證集的作用,像這種情況,我們稱之為“高方差”high variance

假設訓練集誤差是 15%,驗證集誤差是 16%,假設該案例中人的錯誤率幾乎為 0%,算法並沒有在訓練集中得到很好訓練,如果訓練數據的擬合度不高,就是數據欠擬合,就可以說這種算法偏差比較高high bias

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

假設訓練集誤差是 0.5%,驗證集誤差是 1%,用戶看到這樣的結果會很開心,分類器只有 1%的錯誤率,偏差和方差都很低。

 

1.3 機器學習基礎(Basic Recipe for Machine Learning

 

如果偏差的確很高,試着評估訓練集或訓練數據的性能,若甚至無法擬合訓練集,那么你要做的就是選擇一個新的網絡,比如含有更多隱藏層或者隱藏單元的網絡,或者花費更多時間來訓練網絡,或者嘗試更先進的優化算法。

 

如果方差高,最好的解決辦法就是采用更多數據,如果你能做到,會有一定的幫助,但有時候,我們無法獲得更多數據,我們也可以嘗試通過正則化來減少過擬合

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM