2011-09-22 21 views
2

我現在正在實施用於分類的神經網絡。我使用反向傳播算法進行訓練。我使用交叉驗證方法。但我不清楚什麼時候應該停止訓練神經網絡。
接下來是如何檢查過度配合和不足。什麼時候應該停止使用交叉驗證方法訓練神經網絡進行分類

我有一個數據集有1,000個模式。我使用10倍交叉驗證方法。所以1折有100個模式。我訓練了900個模式並用100個模式測試。

儘管我更改了隱藏節點的數量和時間,但測試的準確性並沒有太大的改變。但是我將訓練數據輸入訓練好的網絡,訓練的準確性根據隱藏節點的數量和時間的不同而不同。我的想法足以檢查過度配合和不足配合嗎?我能確定過度擬合和不足的準確性嗎?

我也想問一下這個問題繼續。我發佈了我的結果,測試了各種隱藏節點和各種不同的時代。正如我所說的,我使用交叉驗證,我從10個受過培訓的網絡中只使用一個網絡(測試精度最高)。

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=100 
Network 0 on Test=75.0 , onTrain= 97.11111111111111 
Network 1 on Test=72.0 , onTrain= 98.22222222222223 
Network 2 on Test=69.0 , onTrain= 97.88888888888889 
> Network 3 on Test=78.0 , onTrain= 97.44444444444444 
Network 4 on Test=77.0 , onTrain= 97.77777777777777 
Network 5 on Test=77.0 , onTrain= 97.11111111111111 
Network 6 on Test=69.0 , onTrain= 97.55555555555556 
Network 7 on Test=74.0 , onTrain= 98.22222222222223 
Network 8 on Test=76.0 , onTrain= 97.77777777777777 
Network 9 on Test=74.0 , onTrain= 97.55555555555556 

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=70 
Network 0 on Test=71.0 , onTrain= 93.22222222222221 
Network 1 on Test=70.0 , onTrain= 93.33333333333333 
Network 2 on Test=76.0 , onTrain= 89.88888888888889 
Network 3 on Test=80.0 , onTrain= 93.55555555555556 
Network 4 on Test=77.0 , onTrain= 93.77777777777779 
> Network 5 on Test=81.0 , onTrain= 92.33333333333333 
Network 6 on Test=77.0 , onTrain= 93.0 
Network 7 on Test=73.0 , onTrain= 92.33333333333333 
Network 8 on Test=75.0 , onTrain= 94.77777777777779 
Network 9 on Test=70.0 , onTrain= 93.11111111111111 

No of hidden nodes=50 ,Learning Rate=0.1 , no of epoch=50 

Network 0 on Test=73.0 , onTrain= 87.8888888888889 
Network 1 on Test=74.0 , onTrain= 89.22222222222223 
Network 2 on Test=73.0 , onTrain= 87.1111111111111 
Network 3 on Test=66.0 , onTrain= 90.44444444444444 
Network 4 on Test=82.0 , onTrain= 88.77777777777777 
Network 5 on Test=80.0 , onTrain= 88.44444444444444 
Network 6 on Test=67.0 , onTrain= 88.33333333333333 
Network 7 on Test=75.0 , onTrain= 87.8888888888889 
Network 8 on Test=78.0 , onTrain= 87.44444444444444 
Network 9 on Test=73.0 , onTrain= 85.0 

第一個網絡(沒有劃時代的= 100)最好的網絡得到測試精度爲78.0,但在列車上是97.4444。這是否意味着過度配合?如果這是過度擬合,是第三個網絡(沒有epoch = 50),最好的網絡在測試中的準確性是82.0,在火車上是88.777可以接受?如果不能接受,我是否應該減少時代的數量?

回答

2

詳情請參閱這樣的回答:whats is the difference between train, validation and test set, in neural networks?

如果你喜歡僞代碼,這大約是它會是什麼樣子:

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 
+0

我想這可能與OK確認最牛釘子戶的方法。交叉驗證可以嗎?我使用10倍交叉驗證。所以我認爲,在完成10個網絡的全部訓練之前,我無法停止訓練。如果你好,請幫我做10倍交叉驗證方法。如果我使用交叉驗證,是否需要檢查過度配合和不足配件?謝謝先生 –

+0

你可以用10倍交叉驗證來代替堅持驗證,我沒有看到這個想法有問題。如果您的訓練準確性持續上升,但您的交叉驗證準確性保持不變,那麼您應該停止訓練,因爲您可能過於合適。 – Kiril