我正在使用 WEKA 的 MultilayerPerceptron 实现对各种分类数据集进行一些实验。随着训练迭代次数(epochs)的增加,我期望能够观察到过度拟合。然而,尽管让 epochs 的数量增长相当大(15k),但我还没有看到它。我应该如何解释这个?请注意,我没有在训练集或测试集上达到 100% 的准确率,所以并不是问题太简单了。
我想到的一些想法是:
- 我只是没有等到足够长的时间
- 我的网络不够复杂,不会过拟合
- 我的数据实际上不包含任何噪声,但对目标函数的描述不够
- 我没有正确使用 WEKA 中的评估类
- 我的测试数据集已经泄露到我的火车集中(不过我 99% 确定它没有)
我在每个 epoch 之后运行以下命令(我修改了 MultilayerPerceptron 使其具有“EpochListener”,但除此之外没有其他更改:
Evaluation eval = new Evaluation(train);
eval.evaluateModel(ann, train);
System.out.println(eval.pctCorrect());
eval.evaluateModel(ann, test);
System.out.println(eval.pctCorrect());
火车的准确性似乎趋于平稳,我从未见过测试准确性开始大幅下降。
最佳答案
您能稍微描述一下您的网络和数据吗?你的数据有多少维度?您的网络中有多少个隐藏层,有多少个节点?
我最初的想法是,如果您有一个相当简单的数据集、大量数据和一个相当简单的网络,您的网络就不会有足够多的替代假设来过度拟合。
关于neural-network - 我应该如何解释不会过度拟合的神经网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25562247/