1. 程式人生 > >神經網路訓練中的訓練集、驗證集以及測試集合

神經網路訓練中的訓練集、驗證集以及測試集合

1:在NN訓練中我們很常用的是訓練集合以及測試集合,在訓練集合上訓練模型(我個人認為模型就是訓練的方法以及對應的引數值,更偏重於引數值吧),訓練好之後拿到測試集合上驗證模型的泛華(就是該模型可以拿去實戰的效果)的能力。

2:但是對於上述情況,舉個例子,比如是在訓練一個多層網路,我們用類似minFUNC的方法來訓練,那麼這個優化包會直接根據我們的輸入直接迭代出來一個很好地結果了,此時模型就訓練好了。但是如果運用SGD這些方法去訓練的話,到底迭代多少次算好?有時候可能也不收斂,只是中間過程中的一個引數值是效果最好的,那我們如何知道這個引數值?

3:個人認為有了驗證集,真的很適合來使用SGD來訓練,在訓練過程中,比如訓練了一個epoch,那麼來把訓練好的引數用於驗證集上,然後儲存在驗證集合上的精度,只要改精度滿足一定條件,那麼訓練就可以終止。

4:關於訓練集、驗證集以及測試集合的選擇,這個網上資料很多,不在這裡說了。

補充一個虛擬碼:

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training