Tensorflow:从训练课程中挑选最佳模型

时间:2017-05-08 20:02:10

标签: optimization machine-learning tensorflow deep-learning

在培训深度学习网络时(比如使用TensorFlow或类似网络),通常会训练一组固定的样本,并希望通过更长时间的训练可以使结果更好。但这假设单调递增的准确度,如下所示,显然不正确。如下图所示,停在" 2.0"本来可以提高10个百分点的准确度。是否有任何通用的程序来挑选更好的模型并保存它们。  换句话说,峰值检测程序。也许,在整个训练期间跟踪测试精度并在准确度高于先前值时保存模型(检查点?)。
问题:

  1. 挑选最佳模特的最佳做法是什么?
  2. TF有这方法吗?
  3. 根据优化器最终会找到更好解决方案的理论,继续训练更长时间(可能更长)是否有价值。
  4. 检查点是最好的保存方法吗?
  5. 感谢。 Original graph

    编辑:由于@Wontonimo的建议,改进的准确度结果如下所示。进行了以下更改:

    • 将Adam优化器中的学习率从0.003降低到0.001
    • 添加两个额外的辍学图层(prob = 0.5)
    • 随机选择完整数据集中的训练帧(而不是序列选择)
    • 将训练迭代次数提高50%。

    随着这些变化,似乎继续进一步培训将是有利的。并且可能会增加更多的正规化。

    New training graph

2 个答案:

答案 0 :(得分:1)

这突出了机器学习中的两个常见问题

  • 1:学习率不稳定
  • 2:过于乐观

学习率不稳定 首先让我们谈谈学习率的不稳定性。图表的错误率突然显示出改善,好像NN看到一些数据无效以前的经验,它已经充分了解了问题的爆发。如果我们在训练动物或人的方面进行思考,如果我们将下一次训练课程的结果变得太重要而不是采取长远观点,就会发生这种情况。业内人士谈论学习率衰退,这类似于“一旦你有了基本的理解,就会对你的心智模式做出微小的改变”。

具体来说,考虑将学习率降低1/2或1/3。另外,尝试使用更强大的学习算法。如果您使用渐变下降,请尝试使用基于动量的渐变下降。最后,如果您在测试精度上看到这些惊人的波动,请再次将学习率降低1/2或1/3。如果你没有在最后一层使用像辍学这样的正规化器,这也有助于保持你的训练结果与你的测试结果密切相关,这样你就不会过度适应。

过于乐观 你提到你希望在取得好成绩时停止训练。你忽略了你的模型实际上并没有收敛。忽视糟糕的结果对模型过于乐观。

我认为如果能够达到 0.8 ,你的模型会有很大的希望。像纪念碑和辍学这样的小变化将稳定你的结果。

更新:迷你补丁 在对旧图表和新图表进行大量审核并考虑注释后,您可以使用更大的 minibatch 来降低相当的噪音。考虑将批量大小增加x10。您的图表看起来非常像SGD,或者批量大小足够小以获得类似的结果。在将批次结果中的损失函数发送给Adam以获得收益之前,重要的是平均。如果你这样做,你可能需要运行x10的时代数量,但你会看到更平滑的图形。

答案 1 :(得分:0)

我认为在这种情况下,最好从另一个角度处理问题,可能选择另一个模型。对我来说,这个精确图表看起来非常嘈杂,实际上是随机的。