首页 文章

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

提问于
浏览
1

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

  • 挑选最佳模特的最佳做法是什么?

  • TF有这方面的方法吗?

  • 根据优化器最终会找到更好的解决方案的理论,继续训练更长时间(可能更长)是否有 Value .

  • 检查点是最好的保存方法吗?

谢谢 .
Original graph

EDIT: 感谢@Wontonimo的建议,改进的准确度结果如下所示 . 进行了以下更改:

  • 将Adam优化器中的学习率从0.003降低到0.001

  • 添加两个额外的滤除层(prob = 0.5)

  • shuffle-从完整数据集中选择训练帧(而不是序列选择)

  • 将训练迭代次数提高50% .

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

New training graph

2 回答

  • 0

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

    • 1 : learning rate instability

    • 2 : overly optimistic

    learning rate instability 首先让我们谈谈学习率的不稳定性 . 图表的错误率突然显示出改善,好像NN看到一些数据无效以前的经验,它已经充分了解了问题的爆发 . 如果我们在训练动物或人的方面进行思考,如果我们使下一次训练课程结果过于重要而不是长远观察,就会发生这种情况 . 业内人士谈论 learning rate decay ,这与"once you have basic understanding, make small changes to your mental model"类似 .

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

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

    我认为如果它能够到达 0.8 ,你的模型就会显示出巨大的希望 . 像纪念碑和辍学这样的小变化将稳定你的结果 .

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

  • 1

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

相关问题