爲什麼要設置訓練集、驗證集和測試集
在訓練一個神經網路的時候,通常我們最初並不知道怎麼樣的超參數配置才能讓我得到一個高性能的網絡,這些超參數包括神經網絡的層數,每一層的神經元數量,每層的激活函數選擇以及學習率等。所以一般的做法都是先構建一個具有特定結構的神經網絡,然後編程實現,接下來根據程序的輸出結果來更新自己方案以找到更好的神經網絡。
也就是重複下面這樣一個過程
因此更高效的循環能夠讓我們更快的得到一個滿足要求的神經網絡,而合理的訓練集,驗證集和測試集的配置則能幫助提高上圖這個循環的效率。
三者的解釋和區別
- 訓練集(training set) :訓練集顧名思義就是用來擬合數據得到一個初步模型的數據部分。
- 驗證集(development set) :驗證集是在訓練過程中單獨劃分的少部分樣本,目的是對模型進行初步評估,調整相應的超參數。
- 測試集(test set) :測試集用來評價所得到模型的泛化能力,爲了達到這個目的,測試集的數據要保證從未在訓練集和驗證集中出現過。
具體的劃分方式
在機器學習的小數據量時代(數據量在萬這個數量級),常見的做法是將數據三七分,即70%訓練集,30%測試集(沒有訓練集的情況比較常見);還有60%訓練集,20%驗證集,20%測試集的方式。
但是在大數據的情況下,假設我們有百萬數量級的數據,這時候20%的比例就太高了。常見的比例有98%:1%:1%,或者更低的驗證集和測試集的比例都是可行的。