【问题标题】:Tensorflow: Picking an optimal model from a training sessionTensorflow:从培训课程中选择最佳模型
【发布时间】:2017-05-08 20:02:10
【问题描述】:

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

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

谢谢。

编辑:感谢@Wontonimo 的建议,改进后的准确性结果如下所示。进行了以下更改:

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

有了这些变化,继续进一步训练似乎是有利的。并且可能会添加更多的正则化。

【问题讨论】:

    标签: optimization machine-learning tensorflow deep-learning


    【解决方案1】:

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

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

    学习率不稳定 首先我们来谈谈学习率的不稳定性。您的图表的错误率突然显示出改善,就好像 NN 看到了一些数据,它使之前的所有经验都无效,它对问题的完全理解被炸毁了。如果我们从训练动物或人的角度来考虑,如果我们让下一次训练的结果过于重要而不是从长远来看,这可能会发生。业内人士讲学习率衰减,类似于说“一旦你有了基本的了解,就对你的心智模型做一些小的改变”。

    具体来说,考虑将学习率降低 1/2 或 1/3。另外尝试使用更强大的学习算法。如果您使用梯度下降,请尝试使用基于动量的梯度下降。最后,如果您发现测试准确度出现大幅下降,请再次将您的学习率降低 1/2 或 1/3。如果您没有在最后一层使用诸如 dropout 之类的正则化器,这也有助于使您的训练结果与您的测试结果密切相关,以免您过拟合。

    过于乐观 你提到当你有好的结果时你想停止训练。您忽略了您的模型实际上并未收敛。忽视糟糕的结果就是对模型过于乐观。

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

    更新:小批量 在对旧图和新图进行大量审查并考虑到 cmets 之后,您似乎可以通过使用更大的 minibatch显着降低噪声。考虑将批量大小增加 x10。你的图看起来很像 SGD,或者批量小到足以产生类似结果。在将损失函数发送给 Adam 以获得收益之前,对批处理结果的损失函数进行平均非常重要。如果这样做,您可能需要运行 10 倍的 epoch 数,但您会看到更平滑的图形。

    【讨论】:

    • 感谢您的精彩评论。在我们的例子中,我们使用的是 Adam 优化器,我相信它会自动实现学习率衰减。但显然这还不够。关于正则化,我们使用了一个 dropout 层,但您的 cmets 建议第二个并不是一件坏事。
    • 但是,原来的问题似乎仍然有用。我是否应该推断一个设计良好的训练系统是单调的并且不需要峰值检测?
    • 我会说是的,一个设计良好的系统倾向于单调的行为。但是,不需要在不必要的工作上消耗 CPU,因此检测到平台期的东西对于退出和排队下一个工作很有用。
    • @Hephaestus - 这回答了您的问题,请将其标记为已接受解决方案。
    • 同样,如果您使用梯度下降,这是一个很好的检测点来降低您的学习率,但您使用的是具有自动调整机制的 Adam。看起来在 epoch 2.0 之后你的网络已经过拟合了。从分离中可以看出。当您的训练能够继续改善训练统计数据但测试统计数据趋于平稳时,您的网络已达到极限,进一步的训练只是过度拟合,这可以追溯到我之前的陈述。一旦一个 epoch 寻找 test accuracytest loss 以保持平坦或恢复作为停止的指示
    【解决方案2】:

    我认为在这种情况下,最好从不同的角度解决问题,可能选择另一个模型。对我来说,这个准确度图看起来很嘈杂,实际上是随机的。

    【讨论】:

      猜你喜欢
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 2019-11-30
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      相关资源
      最近更新 更多