在培训深度学习网络时(比如使用TensorFlow或类似网络),通常会训练一组固定的样本,并希望通过更长时间的训练可以使结果更好。但这假设单调递增的准确度,如下所示,显然不正确。如下图所示,停在" 2.0"本来可以提高10个百分点的准确度。是否有任何通用的程序来挑选更好的模型并保存它们。
换句话说,峰值检测程序。也许,在整个训练期间跟踪测试精度并在准确度高于先前值时保存模型(检查点?)。
问题:
答案 0 :(得分:1)
这突出了机器学习中的两个常见问题
学习率不稳定 首先让我们谈谈学习率的不稳定性。图表的错误率突然显示出改善,好像NN看到一些数据无效以前的经验,它已经充分了解了问题的爆发。如果我们在训练动物或人的方面进行思考,如果我们将下一次训练课程的结果变得太重要而不是采取长远观点,就会发生这种情况。业内人士谈论学习率衰退,这类似于“一旦你有了基本的理解,就会对你的心智模式做出微小的改变”。
具体来说,考虑将学习率降低1/2或1/3。另外,尝试使用更强大的学习算法。如果您使用渐变下降,请尝试使用基于动量的渐变下降。最后,如果您在测试精度上看到这些惊人的波动,请再次将学习率降低1/2或1/3。如果你没有在最后一层使用像辍学这样的正规化器,这也有助于保持你的训练结果与你的测试结果密切相关,这样你就不会过度适应。
过于乐观 你提到你希望在取得好成绩时停止训练。你忽略了你的模型实际上并没有收敛。忽视糟糕的结果对模型过于乐观。
我认为如果能够达到 0.8 ,你的模型会有很大的希望。像纪念碑和辍学这样的小变化将稳定你的结果。
更新:迷你补丁 在对旧图表和新图表进行大量审核并考虑注释后,您可以使用更大的 minibatch 来降低相当的噪音。考虑将批量大小增加x10。您的图表看起来非常像SGD,或者批量大小足够小以获得类似的结果。在将批次结果中的损失函数发送给Adam以获得收益之前,重要的是平均。如果你这样做,你可能需要运行x10的时代数量,但你会看到更平滑的图形。
答案 1 :(得分:0)
我认为在这种情况下,最好从另一个角度处理问题,可能选择另一个模型。对我来说,这个精确图表看起来非常嘈杂,实际上是随机的。