Skip to main content
 首页 » 编程设计

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

2024年02月27日26zhoujg

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

我有一个包含 1,000 个模式的数据集。我使用10折交叉验证方法。所以 1 Fold 有 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。这是否意味着过度拟合?如果这是过度拟合,那么第三个网络(纪元数=50)的最佳网络在测试中获得的准确度是否为 82.0,在火车上的准确度为 88.777 是否可以接受?如果 Not Acceptable ,我应该减少纪元数吗?

请您参考如下方法:

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