【问题标题】:Why does my neural network never overfit?为什么我的神经网络永远不会过拟合?
【发布时间】:2019-06-26 14:58:28
【问题描述】:

我正在用游戏数据训练一个具有 10 个隐藏层的深度残差网络。

有人知道为什么我在这里没有得到任何过拟合吗? 经过 100 个 epoch 的训练后,训练和测试损失仍在减少。

https://imgur.com/Tf3DIZL

【问题讨论】:

  • 可能是因为训练数据和验证数据之间的差异不大?
  • 应该是。它被打乱并随机分成训练和验证数据。我试过 80/20 和 50/50。输入是游戏状态,输出是获胜概率。通过自我游戏产生。行动空间巨大。所以数据应该都是不同的。网络不够复杂?我使用 Batchnorms,这能以某种方式防止过度拟合吗?
  • 也许您处于欠拟合状态,需要增加模型复杂度。看起来你的训练损失已经稳定在 0.2
  • 无法保证模型应该在给定数量的 epoch 之后开始过拟合;见Why I can not find lowest mean absolute error using Random Forest?(是关于射频的,但原理是一样的)。

标签: machine-learning neural-network deep-learning deep-residual-networks


【解决方案1】:

只是一些建议:

  1. 对于深度学习,建议进行 90/10 或 95/5 拆分 (Andrew Ng)
  2. 曲线之间的这种微小差异意味着您的learning_rate 未调整;尝试增加它(如果你将实施某种“智能”lr-reduce,可能还有epochs 的数量)
  3. DNN 尝试过拟合少量数据(10-100 行)和大量迭代也是合理的
  4. 检查集合中的数据泄漏:每层内的权重分析可能会帮助您

【讨论】:

  • 大家好,感谢您的 cmets。不幸的是,我仍然无法得到任何过度拟合。我尝试了一个更复杂(更深更宽)和一个不太复杂的网络,我只尝试了一个非常小的数据集,我尝试将 Adam 的学习率降低到 0.0000000001,我尝试了数千个学习时期。这很奇怪......我的 batchnorm 层可能是原因吗?我不使用任何 dropout 或 L2 正则化。
  • 所以,关掉它。尝试在没有任何 BM 的情况下过拟合小数据集。
  • 我完全删除了所有 BM 层,只是为了测试目的。那时我的模型不再学到太多东西了。
  • 因此,如果您甚至不能过拟合一个小集合,则可能是您的 NN 架构错误。尝试从最简单的一步逐步增加复杂性。另外,最好是更深,而不是更宽。顺便说一句,您使用分层拆分吗?
猜你喜欢
  • 2021-07-07
  • 1970-01-01
  • 2014-10-23
  • 1970-01-01
  • 2021-04-13
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
相关资源
最近更新 更多