【问题标题】:How should I interpret a neural network that won't overfit?我应该如何解释不会过拟合的神经网络?
【发布时间】:2014-10-23 02:37:48
【问题描述】:

我正在使用 WEKA 的 MultilayerPerceptron 实现对各种分类数据集进行一些实验。随着训练迭代次数(epochs)的增加,我期望能够观察到过度拟合。然而,尽管让 epoch 的数量变得相当大(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());

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

【问题讨论】:

  • 感谢大家的cmets。我希望我能接受所有的答案。在尝试减少数据量后,我能够见证过度拟合。此外,即使在我最初的实验中,也可能存在轻微的过度拟合,但它比我预期的要微妙得多。所以我想我作为一名 ML 学生的收获是,尽管 ANN 因其灵活性而容易过度拟合,但这并不意味着它很容易甚至可以根据训练数据量和网络复杂性进行演示。

标签: neural-network weka


【解决方案1】:

正如 Taylor Phebus 所指出的,如果不了解神经网络的参数,可能很难知道。

您是否调整了学习率、动量和历元大小参数?如果这个数字很小,也许添加更多的隐藏层神经元也可能有助于导致神经网络过拟合。激活函数和训练次数也有帮助。

【讨论】:

    【解决方案2】:

    您能稍微描述一下您的网络和数据吗?你的数据有几个维度?你的网络中有多少个隐藏层,有多少个节点?

    我最初的想法是,如果你有一个相当简单的数据集、大量数据和一个相当简单的网络,那么你的网络就没有足够的替代假设来过度拟合。

    【讨论】:

      【解决方案3】:

      最简单的合理解释难道不是你的训练集和测试集是平衡的,并且反馈是稳定的,所以没有任何变化了吗?换句话说,您已经通过这些数据和这种技术收敛到了可以针对这个问题获得的最佳结果。

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

      【讨论】:

        猜你喜欢
        • 2018-11-26
        • 2021-07-07
        • 2019-06-26
        • 1970-01-01
        • 2021-04-13
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        相关资源
        最近更新 更多