我正在使用 WEKA 的 MultilayerPerceptron 实现对各种分类数据集进行一些实验。随着训练迭代次数(epochs)的增加,我希望能够观察到过度拟合。然而,尽管让 epoch 的数量变得相当大(15k),但我还没有看到。我应该如何解释这个?请注意,我没有在训练集或测试集上达到 100% 的准确率,所以并不是问题过于简单。

我提出的一些想法是:

  • 我只是等得不够久
  • 我的网络不够复杂,无法过拟合
  • 我的数据实际上并不包含任何噪声,但对于目标函数
  • 的描述性不够
  • 我没有正确使用 WEKA 中的评估类
  • 我的测试数据集已泄漏到我的训练集(不过,我 99% 确定它没有)

  • 我在每个时代之后运行以下内容(我修改了 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());
    

    训练准确度似乎趋于平稳,我从未看到测试准确度开始大幅下降。

    最佳答案

    最简单的合理解释不是你的训练集和测试集是平衡的,反馈是稳定的,所以没有任何变化吗?换句话说,您已经收敛于可以使用此数据和此技术针对此问题获得的最佳结果。

    一个简单的测试是大幅减少训练数据,看看是否会产生过拟合(这将表现为在减少的训练集上接近 100% 的准确度,而在测试集上的准确度很差)。

    关于neural-network - 我应该如何解释不会过度拟合的神经网络?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25562247/

    10-12 19:39