TensorFlow RandomForest vs Deep learning



我正在使用TensorFlow进行训练模型,该模型有1个输出用于4个输入。问题是回归。

我发现当我使用 RandomForest 训练模型时,它会快速收敛,并且在测试数据上运行良好。但是当我对同一问题使用简单的神经网络时,损失(随机平方误差(不会收敛。它卡在一个特定的值上。

我尝试增加/减少隐藏层的数量,增加/减少学习率。我还尝试了多个优化器,并尝试在规范化和非规范化数据上训练模型。

我是这个领域的新手,但到目前为止我读过的文献强烈主张神经网络应该比随机森林稍微和绝对地工作得更好。

在这种情况下,模型不收敛的原因可能是什么?

如果您的模型没有收敛,则意味着优化器卡在损失函数中的局部最小值中。
我不知道您使用的是什么优化器,但请尝试稍微增加动量甚至学习率
经常采用的另一种策略是学习率衰减,它每隔几个时期就会将学习率降低一个因子。这也可以帮助您在训练阶段的早期不会陷入局部最小值,同时在训练结束时达到最大准确性。

否则,您可以尝试选择一个自适应优化器(adam、adagrad、adadelta 等(来为您处理超参数选择。

这是一篇非常好的帖子,比较了不同的优化技术。

深度神经网络需要大量数据才能充分执行。请确保有大量训练数据,否则模型将过度拟合

开始训练模型的一个有用规则是不要从更复杂的方法开始,例如线性模型,您将能够更轻松地理解和调试。

如果您继续使用当前的方法,请提出一些想法:

  • 检查初始权重值(使用正态分布初始化它们(
  • 正如之前的海报所说,降低学习率
  • 对数据进行一些额外的检查,检查NAN和异常值,当前的模型可能对噪声更敏感。记住,垃圾进,垃圾出。