TensorFlow RandomForest vs深度学习

时间:2017-07-06 03:16:51

标签: python machine-learning tensorflow neural-network random-forest

我使用TensorFlow作为训练模型,其中4个输入有1个输出。问题在于回归。

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

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

我是这个领域的新手,但到目前为止,我所阅读的文献都强烈地断言,神经网络应该比随机森林更有效和明确地工作。

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

2 个答案:

答案 0 :(得分:1)

如果您的模型没有收敛,则表示优化程序在您的损失函数中卡在局部最小值中。
我不知道你正在使用什么样的优化器,但尝试稍微增加动量甚至学习率。 通常采用的另一种策略是学习率衰减,这会使您的学习率每几个时期减少一个因素。这也可以帮助您在训练阶段早期陷入局部最小值,同时在训练结束时达到最高准确度。

否则,您可以尝试选择适合您的超参数选择的自适应优化器(adam,adagrad,adadelta等)。

This是一个比较不同优化技术的非常好的帖子。

深度神经网络需要大量数据才能充分发挥作用。确保您拥有很多的培训数据,否则您的模型会过度适合

答案 1 :(得分:0)

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

如果你继续使用当前的方法,一些想法:

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