什么时候应该停止使用交叉验证方法训练神经网络进行分类

时间:2011-09-22 04:44:52

标签: artificial-intelligence neural-network

我现在正在实施神经网络进行分类。我使用反向传播算法进行训练。我使用交叉验证方法。但我不清楚何时应该停止训练神经网络 接下来是如何检查过度拟合和欠拟合。

我有一个有1000个模式的数据集。我使用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

第一个网络(没有epoch = 100)最佳网络获得准确性测试是78.0但在火车上是97.4444。这是否意味着过度拟合?如果这是过度拟合,第三网络(没有epoch = 50)最佳网络获得的测试准确度是82.0并且在火车上是88.777可接受的?如果不能接受,我应该减少时代吗?

1 个答案:

答案 0 :(得分:3)

有关详细信息,请参阅此答案: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