驗證集和測試集的自我體會


先驗證集是不參與梯度下降的過程的,所以我想那么做也是可以,只是和使用驗證集的初衷不一樣了(其實就是沒理解驗證集在干嘛,還說的那么好聽 😦)。

驗證集的作用:

使用驗證集是為了 快速調參,也就是用驗證集選擇超參數(網絡層數,網絡節點數,迭代次數,學習率這些)。另外用驗證集還可以監控模型是否異常(過擬合啦什么的),然后決定是不是要提前停止訓練。

驗證集的關鍵在於 選擇超參數,我們手動調參是為了讓模型在驗證集上的表現越來越好,如果把測試集作為驗證集,調參去擬合測試集,就有點像作弊了。

而測試集既 不參與參數的學習過程,也 不參與參數的選擇過程,僅僅用於模型評價。

驗證集的正確打開方式:

驗證集可以看做參與了 “人工調參” 的訓練過程

一般訓練幾個 epoch 就跑一次驗證看看效果(大部分網絡自帶這個功能)

這樣做的第一個好處是:可以及時發現模型或者參數的問題,比如模型在驗證集上發散啦、出現很奇怪的結果啦(Inf)、mAP不增長或者增長很慢啦等等情況,這時可以及時終止訓練,重新調參或者調整模型,而不需要等到訓練結束。

另一個好處是驗證模型的泛化能力,如果在驗證集上的效果比訓練集上差很多,就該考慮模型是否過擬合了。同時,還可以通過驗證集對比不同的模型。


訓練集是用來訓練參數的,說准確點,一般是用來梯度下降的。而驗證集基本是在每個epoch完成后,用來測試一下當前模型的准確率。因為驗證集跟訓練集沒有交集,因此這個准確率是可靠的。
事實上,對於一個模型來說,其參數可以分為普通參數和超參數。在不引入強化學習的前提下,那么普通參數就是可以被梯度下降所更新的,也就是訓練集所更新的參數。另外,還有超參數的概念,比如網絡層數、網絡節點數、迭代次數、學習率等等,這些參數不在梯度下降的更新范圍內。盡管現在已經有一些算法可以用來搜索模型的超參數,但多數情況下我們還是自己人工根據驗證集來調。

 


免責聲明!

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



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