【问题标题】:Bigger neural network converges to bigger error than smaller更大的神经网络比更小的神经网络收敛到更大的误差
【发布时间】:2018-07-10 09:23:33
【问题描述】:

我正在使用适用于 Python 的出色 Keras 库来训练神经网络。我对一种我不理解的行为感到好奇。

通常更大的模型比更小的模型收敛到更大的错误。

为什么会这样?我希望更大的模型可以训练更长时间,但会收敛到更小或相同的错误。

我对模型进行了超优化,尝试了不同数量的 dropout 正则化,并让它训练了足够的时间。我用大约 10-20k 参数、5 层、10M 数据样本和 20-100 个 epoch 的模型进行了实验,同时 LR 递减。模型包含密集层,有时包含 LSTM 层。

【问题讨论】:

  • 您能指定您在测试中使用的优化器吗?
  • @Manngo 我使用了 Adam 优化器。
  • “更大的神经网络”是什么意思?添加层、添加神经元还是其他?
  • @Manngo 更大的模型是指更多的参数。大多数情况下,我尝试将神经元添加到恒定数量的层中。
  • 您能否举个例子以及您的环境(版本、后端)的详细信息?同样有趣的是,随着层大小的增加,误差会增加多少?

标签: python machine-learning neural-network keras


【解决方案1】:

我在测试中注意到的是,增加参数数量需要一些时间来检查您如何准备输入数据或如何初始化权重。我发现经常增加参数的数量需要以不同的方式初始化权重(意味着用较小的值初始化)或者你需要标准化输入数据(我猜你已经这样做了),或者甚至将它们除以一个常数因子以使它们更小。 有时降低学习率会有所帮助,因为您的成本函数会随着更多参数而变得更加复杂,并且可能会发生之前工作正常的学习率对于您的新案例来说太大了。但很难给出准确的答案。

其他:更大的错误是什么意思?你是在做分类还是回归? 此外,您是在谈论训练集还是开发/测试集上的错误?这是一个很大的区别。很可能(如果您谈论的是开发/测试集)您过度拟合了您的数据,因此在开发/测试集上出现了更大的错误(偏差-方差权衡)......您能给我们更多详细信息吗?

【讨论】:

  • 我将输入数据标准化为标准分布,并使用 Keras 默认的 glorot_uniform 初始化,它考虑了输入(和输出)权重的数量。更大的错误发生在训练和测试数据集上。
  • 顺便说一下,我没有执行任何去相关或白化,输入数据中的某些特征可以关联。我不确定这对优化有多大影响,但我想它不应该对模型大小产生太大影响。
猜你喜欢
  • 2016-07-10
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 2018-11-04
  • 2016-05-13
  • 2018-03-01
  • 2017-10-28
相关资源
最近更新 更多