[DeeplearningAI筆記]第二章1.1-1.3偏差/方差/欠擬合/過擬合/訓練集/驗證集/測試集


[DeeplearningAI筆記]第二章1.1-1.3偏差/方差/欠擬合/過擬合/訓練集/驗證集/測試集

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

吳恩達老師課程原地址

1.1 訓練/開發/測試集

  • 對於一個數據集而言,可以將一個數據集分為三個部分,一部分作為訓練集,一部分作為簡單交叉驗證集(dev)有時候也成為驗證集,最后一部分作為測試集(test).接下來我們開始對訓練集執行訓練算法,通過驗證集或簡單交叉驗證集選擇最好的模型.經過驗證我們選擇最終的模型,然后就可以在測試集上進行評估了.在機器學習的小數據量時代常見的做法是將所有數據三七分,就是人們常說的70%訓練集集,30%測試集,如果設置有驗證集,我們可以使用60%訓練,20%驗證和20%測試集來划分整個數據集.這是前幾年機器學習領域公認的最好的測試與訓練方式,如果我們只有100條/1000條/1W條數據,我們按照上面的比例進行划分是非常合理的,但是在大數據時代,我們現在的數據量可能是百萬級,那么驗證集和測試集占數據總量的比例會趨向變得更小.因為驗證集的目的就是驗證不同的算法檢驗那種算法更加有效,在大數據時代我們可能不需要拿出20%的數據作為驗證集.比如我們有100W,那我們取1W條數據便足以找出其中表現最好的1-2種算法.同樣地,根據最終選擇的分類器,測試集的主要目的是正確評估分類器的性能.所以,如果擁有百萬級數據我們只需要1000條數據,便足以評估單個分類器.准確評估分類器的性能。

  • 假設我們有100W條數據,其中1W條做驗證集,1W條做測試集,訓練集占98%,驗證集和測試集各占1%.對於數據量過百萬級別的數據我們可以使測試集占0.5%,驗證集占0.5%或者更少.測試集占0.4%,驗證集占0.1%.

經驗之談:要確保驗證集和測試集的數據來自同一分布.

  • 最后一點,就算沒有測試集也不要緊,測試集的目的是對最終選定的神經網絡系統做出無偏評估,如果不需要無偏評估也可以不設置測試集所以如果只有驗證集沒有測試集.我們要做的就是在訓練集上訓練嘗試不同的模型框架,在驗證集上評估這些模型,然后迭代並選出適用的模型.因為驗證集已經包含有測試集的數據,故不在提供無偏性能評估.當然,如果你不需要無偏評估,那就再好不過了.在機器學習如果只有訓練集和驗證集但是沒有獨立的測試集,這種情況下,訓練集還是訓練集,而驗證集則被稱為測試集.不過在實際應用中,人們只是把測試集當做簡單交叉驗證集使用,並沒有完全實現該術語的功能.因為他們把驗證集數據過度擬合到了測試集中.如果某團隊跟你說他們只設置了一個訓練集和一個測試集我會很謹慎,心想他們是不是真的有訓練驗證集.因為他們把驗證集數據過渡擬合到了測試集中.讓這些團隊改變叫法,改稱其為"訓練驗證集".

1.2 偏差/方差

  • 偏差(Bias)方差(Variance)這兩個概念易學難精,在深度學習的領域對偏差 方差的權衡研究甚淺.但是深度學習的卻很少權衡的考慮這兩個概念,都是分別得考慮偏差和方差.

欠擬合

  • "欠擬合(underfitting)"當數據不能夠很好的擬合數據時,有較大的誤差.

  • 以下面這個邏輯回歸擬合的例子而言:

在這里插入圖片描述

  • 這就是high bias的情況.

過擬合

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

在這里插入圖片描述

適度擬合

  • 復雜程度適中,數據擬合適度的分類器,數據擬合程度相對合理,我們稱之為"適度擬合"是介於過擬合和欠擬合中間的一類.

在這里插入圖片描述

  • 在這樣一個只有x1和x2兩個特征的二維數據集中,我們可以繪制數據,將偏差和方差可視化.但是在高維空間數據中,會直屬局和可視化分割邊界無法實現.但我們可以通過幾個指標來研究偏差和方差.

高方差高偏差

  • 高偏差指的是無法很好的擬合數據,高偏差指的是數據擬合靈活性過高,曲線過於靈活但是還包含有過度擬合的錯誤數據.

在這里插入圖片描述

通過驗證集/訓練集判斷擬合

"過擬合":訓練集中錯誤率很低,但是驗證集中錯誤率比驗證集中高很多.方差很大.

"欠擬合":訓練集中錯誤率相對比較高,但是驗證集的錯誤率和訓練集中錯誤率差別不大.偏差很大.

偏差和方差都很大: 如果訓練集得到的錯誤率較大,表示不能很好的擬合數據,同時驗證集上的錯誤率甚至更高,表示不能很好的驗證算法.這是偏差和方差都很大的情況.

較好的情況: 訓練集和驗證集上的錯誤率都很低,並且驗證集上的錯誤率和訓練集上的錯誤率十分接近.

在這里插入圖片描述

以上分析的前提都是假設基本誤差很小,訓練集和驗證集數據來自相同分布,如果沒有這些前提,分析結果會更加的復雜.

1.3 參數調節基本方法

  • 初始訓練完成后,首先看算法的偏差高不高,如果偏差過高,試着評估訓練集或訓練數據的性能.如果偏差真的很大,甚至無法擬合數據,現在就要選擇一個新的網絡.比如有更多隱層或者隱藏單元的網絡.或者花費更多時間訓練算法或者嘗試更先進的優化算法.(ps:一般來講,采用規模更大的網絡通常會有幫助,延長訓練時間不一定有用,但是也沒有壞處,訓練學習算法時,會不斷嘗試這些方法,知道解決掉偏差問題,這是最低標准,通常如果網絡足夠大,一般可以很好的擬合訓練集)

  • 一旦訓練集上的偏差降低到一定的水平,可以檢查一下方差有沒有問題.為了評估方差我們要查看驗證集性能.如果驗證集和訓練集的錯誤率誤差較大即方差較大,最好的方法是采用更多數據.如果不能收集到更多的數據,我們可以采用正則化來減少過擬合.

  • 我們需要選擇正確的方法,不斷迭代改進,如果是偏差本身比較大,准備更多的訓練數據也沒有什么用,所以一定要看清是哪方面出了問題.一般來講選擇正確的方法,使用更大更深的網絡,更多的數據可以得到很好的效果


免責聲明!

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



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