訓練集 測試集與驗證集的含義

2021-09-25 05:08:06 字數 1233 閱讀 8320

1. 定義

(1)在資料量(及標籤)很充足的情況下:

如果我們自己已經有了乙個大的標註資料集,想要完成乙個有監督模型的測試,那麼通常使用均勻隨機抽樣的方式,將資料集劃分為訓練集、驗證集、測試集,這三個集合不能有交集,三個集合符合同分布。常見的比例是可以上網看看。

(2)在資料量(及標籤)很少的情況下:

比如在做比賽時,官方只提供了乙個標註的資料集(作為訓練集)以及乙個沒有標註的測試集(.txt文件),那麼我們做模型的時候,通常會人工從訓練集中劃分乙個驗證集出來。這時候我們通常不再劃分乙個測試集,可能的原因有兩個:1、比賽方提供的訓練集樣本本來就少;2、我們沒法保證要提交的測試集是否跟訓練集完全同分布,因此再劃分乙個跟訓練集同分布的測試集就沒多大意義了。

注意:有的時候,在比賽中,我們首先想到的是定義生成器,模仿提供的資料集,生成大量新的資料(資料增強)

2. 作用

有了模型後,訓練集就是用來訓練引數的,說準確點,一般是用來梯度下降的。而驗證集基本是在每個epoch完成後,用來測試一下當前模型的準確率。因為驗證集跟訓練集沒有交集,因此這個準確率是可靠的。那麼為啥還需要乙個測試集呢?

這就需要區分一下模型的各種引數了。事實上,對於乙個模型來說,其引數可以分為普通引數超引數。在不引入強化學習的前提下,那麼普通引數就是可以被梯度下降所更新的,也就是訓練集所更新的引數。另外,還有超引數的概念,比如網路層數、網路節點數、迭代次數、學習率等等,這些引數不在梯度下降的更新範圍內,都得手動一點一點除錯。

那也就是說,從狹義來講,驗證集沒有參與梯度下降的過程,也就是說是沒有經過訓練的;但從廣義上來看,驗證集卻參與了乙個「人工調參」的過程,我們根據驗證集的結果調節了迭代數、調節了學習率等等,使得結果在驗證集上最優。因此,我們也可以認為,驗證集也參與了訓練。

3. 通過3個集來判斷過擬合

過擬合的基本表現:

訓練集loss不斷降低,但是測試集的loss開始不斷增加。

分析上圖,看右邊2個loss的圖,在第15個epoch之前,訓練集上的loss不斷降低,驗證集上的val_loss也在不斷減小,這說明模型在不斷擬合資料。但是在第15個epoch之後,訓練集上的loss仍然在不斷降低,而驗證集上的val_loss開始不斷增加,這是典型的過擬合問題。

訓練集 測試集 驗證集與交叉驗證

當我們訓練好乙個模型時,我們不只希望這個模型只在訓練集上表現的好,更重要的是希望這個模型後續能表現的好,這時候就需要測試集,用於評估這個模型的泛化能力。通常情況下,我們將資料以8 2的比例分割訓練集和測試集。在演算法模型中,我們還要使用正則化技術,避免過擬合。其中乙個做法就是使用100個不同超引數訓...

訓練集 測試集 驗證集與交叉驗證

初學者對於訓練集 train set 測試集 test set 驗證集 validation set 這三個概念和應用非常容易搞混,這裡我結合各種博文和書籍上的講解進行總結 參與訓練,模型從訓練集中學習經驗,從而不斷減小訓練誤差。這個最容易理解,一般沒什麼疑惑。不參與訓練,用於在訓練過程中檢驗模型的...

訓練集 驗證集 測試集

訓練集loss 驗證集loss 測試集loss 乙個好的網路,二者的差距應該是很低的。但一般情況下因為網路不可避免地存在一定程度上的過擬合,所以肯定是train loss低於test lost,但如果低太多,就得考慮是過擬合的問題還是因為樣本的特徵空間不統一的問題。驗證集基本是在每個epoch完成後...