訓練集-----------學生的課本;學生 根據課本裡的內容來掌握知識。
驗證集------------作業,通過作業可以知道 不同學生學習情況、進步的速度快慢。
測試集-----------考試,考的題是平常都沒有見過,考察學生舉一反三的能力。
大部分網路模型的訓練就是這麼乙個套路:訓練迭代n個epoch以後就進行一次驗證,然後網路會輸出在驗證集上的loss或者其他評價指標。(然後根據這個評價指標進行調參,而不是直接使用測試集進行測試,測試集只是用來評估模型效能的好壞而已)
訓練集的作用是為了訓練網路模型。
驗證集的作用:快速調參,也就是用驗證集選擇超引數(網路層數,網路節點數,迭代次數,學習率這些)。另外用驗證集還可以監控模型是否異常(是否過擬合等),然後決定是不是要提前終止訓練。
驗證集的關鍵在於選擇超引數,我們手動調參是為了讓模型在驗證集上的表現越來越好,如果把測試集作為驗證集,調參去擬合測試題,就有點相當於作弊了。
測試集既不參與引數的學習過程,也不參與引數的選擇過程,就是用訓練好的模型用於例項研究。僅僅用於模型的評價。
我的理解:訓練集用於訓練模型,驗證集用於快速調參(根據驗證集輸出對的損失函式或者其他評價指標進行快速調參使得模型達到最優狀態),測試集僅僅是用訓練集和驗證集得到的模型進行測試,用於評價模型的好壞,它並不參與模型的引數學習過程,也不參與引數的選擇過程。
驗證集可以看做參與了「人工調參」的訓練過程
一般訓練幾個 epoch 就跑一次驗證看看效果(大部分網路自帶這個功能)
這樣做的第乙個好處是:可以及時發現模型或者引數的問題,比如模型在驗證集上發散啦、出現很奇怪的結果啦(inf)、map不增長或者增長很慢啦等等情況,這時可以及時終止訓練,重新調參或者調整模型,而不需要等到訓練結束。
另乙個好處是驗證模型的泛化能力,如果在驗證集上的效果比訓練集上差很多,就該考慮模型是否過擬合了。同時,還可以通過驗證集對比不同的模型。
訓練集 驗證集和測試集
訓練集 驗證集和測試集這三個名詞在機器學習領域極其常見,但很多人並不是特別清楚,尤其是後兩個經常被人混用。在有監督 supervise 的機器學習中,資料集常被分成2 3個,即 訓練集 train set 驗證集 validation set 測試集 test set ripley,b.d 1996...
訓練集 驗證集和測試集
驗證集既不能通過直接將泛化誤差作為了解模型泛化能力的訊號,因為在部署環境和訓練模型之間往復,代價很高,也不能使用模型對訓練資料集的擬合程度來作為了解模型泛化能力的訊號,因為我們獲得的資料往往不乾淨。更好的方式就是將資料分割成兩部分 訓練集和測試集。我們可以使用訓練集的資料來訓練模型,然後用測試集上的...
訓練集 驗證集 測試集
訓練集loss 驗證集loss 測試集loss 乙個好的網路,二者的差距應該是很低的。但一般情況下因為網路不可避免地存在一定程度上的過擬合,所以肯定是train loss低於test lost,但如果低太多,就得考慮是過擬合的問題還是因為樣本的特徵空間不統一的問題。驗證集基本是在每個epoch完成後...