【问题标题】:Neural Networks - why is my training error increasing as I add hidden units (neurons)?神经网络 - 为什么我的训练误差随着我添加隐藏单元(神经元)而增加?
【发布时间】:2017-04-04 19:37:24
【问题描述】:

我正在尝试优化 MLP 中隐藏单元的数量。

我正在使用 k 折交叉验证,有 10 折 - 每折有 16200 个训练点和 1800 个验证点。

当我使用从 1:10 变化的隐藏单元运行网络时,我发现最小错误总是发生在 2(NMSE 约为 7)。 3 略高(NMSE 约为 11)和 4 个或更多隐藏单元,并且无论我添加多少,误差都保持在大约 14 或 15 左右。

这是为什么?

我很难相信过度拟合正在发生,因为使用了非常大量的数据点(全部 10 次折叠,即 162000 个训练点,尽管每个重复 9 次)。

非常感谢您的帮助或建议!

【问题讨论】:

  • 您能描述一下您的意见和问题本身吗?现在,您已经知道一个简单的答案:过度拟合。简单的模型可以更好地泛化。
  • 是的,当然,我有 6 个输入,三个是电压数据,每组代表来自三相电源的一个相位的电压。其他三个是对应的当前数据。输出是电力产生的,所以问题应该是相当线性的!
  • 好吧,问题是线性的!那么为什么你会期望一些非线性的、复杂的关系呢?难怪只有 2 个隐藏的神经元能最好地捕捉系统的行为。反向传播算法只关心最小化你的成本函数,而不是它是否有意义。添加更多单位,它会“捕获”不存在的关系(例如系统中的任何噪音)。
  • 基本上,过拟合?

标签: validation neural-network training-data


【解决方案1】:

如果输入是电压和电流,而问题是产生的功率,那么它只是 P=V*I。即使你有一些噪音,这种关系仍然是线性的。在这种情况下,简单的线性模型就可以了——而且解释起来会更好!这就是为什么简单的 ANN 效果最好,而更复杂的是过度拟合,因为它寻找非线性关系(不存在,但它会尽一切可能最小化成本函数)。

总而言之,我建议检查一个简单的线性模型。此外,由于您有很多数据点,请为training, test and validation sets 进行 50-25-25 拆分。查看您的成本函数,看看它如何随错误率变化。

【讨论】:

  • 非常感谢,我看看用单层网络代替!
猜你喜欢
  • 1970-01-01
  • 2011-05-11
  • 2017-01-17
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
相关资源
最近更新 更多