我该如何解释一个不会过度拟合的神经网络呢?

时间:2014-08-29 05:36:50

标签: neural-network weka

我使用WEKA的MultilayerPerceptron实现在各种分类数据集上运行一些实验。随着列车迭代次数(时期)的增加,我期待能够观察到过度拟合。然而,尽管让时代的数量增长相当大(15k),我还没有看到它。我该怎么解释这个?请注意,我没有在火车或测试装置上达到100%的准确度,因此问题不是太简单。

我想出的一些想法是:

  • 我根本没有等待足够长的时间
  • 我的网络不够复杂,不适合
  • 我的数据并不包含任何噪音但对目标函数的描述性不足
  • 我没有正确使用WEKA中的Evaluation类
  • 我的测试数据已经泄漏到我的火车组(我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());

列车精度似乎达到稳定水平,我从未看到测试精度开始大幅下降。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

最简单的合理解释是,您的列车和测试装置是否平衡,反馈是否稳定,所以不再有任何改变?换句话说,您已经融合了使用此数据和此技术可以为此问题获得的最佳结果。

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

答案 2 :(得分:0)

正如Taylor Phebus指出的那样,如果不理解神经模糊的参数,可能很难知道。

您是否调整了学习率,动量和纪元大小参数?也许添加更多隐藏层神经元也可能有助于使神经网络过度拟合(如果此数量很小)。激活功能和训练次数也可以提供帮助。