1. 程式人生 > >驗證集,測試集區別

驗證集,測試集區別

訓練集是用來訓練引數的,說準確點,一般是用來梯度下降的。而驗證集基本是在每個epoch完成後,用來測試一下當前模型的準確率。因為驗證集跟訓練集沒有交集,因此這個準確率是可靠的。
事實上,對於一個模型來說,其引數可以分為普通引數和超引數。在不引入強化學習的前提下,那麼普通引數就是可以被梯度下降所更新的,也就是訓練集所更新的引數。另外,還有超引數的概念,比如網路層數、網路節點數、迭代次數、學習率等等,這些引數不在梯度下降的更新範圍內。儘管現在已經有一些演算法可以用來搜尋模型的超引數,但多數情況下我們還是自己人工根據驗證集來調。
那也就是說,從狹義來講,驗證集沒有參與梯度下降的過程,也就是說是沒有經過訓練的;但從廣義上來看,驗證集卻參與了一個“人工調參”的過程,我們根據驗證集的結果調節了迭代數、調節了學習率等等,使得結果在驗證集上最優。因此,我們也可以認為,驗證集也參與了訓練。
常用的精度測試方法主要是交叉驗證,例如10折交叉驗證(10-fold cross validation),將資料集分成十份,輪流將其中9份做訓練1份做驗證,10次的結果的均值作為對演算法精度的估計,一般還需要進行多次10折交叉驗證求均值