一个非常重要的方面deep learning是learning rate. 有人可以告诉我,如何初始化lr以及如何选择衰减率。我相信社区中一些有经验的人可以与其他人分享有价值的建议。我注意到许多人选择使用自定义调度程序而不是使用可用的调度程序。
有人能告诉我为什么以及是什么影响了lr的变化吗?何时将lr描述为小型、中型或大型?我想充分理解它以实际做出正确的选择。谢谢善良的灵魂。我非常感谢这个社区。
一个非常重要的方面deep learning是learning rate. 有人可以告诉我,如何初始化lr以及如何选择衰减率。我相信社区中一些有经验的人可以与其他人分享有价值的建议。我注意到许多人选择使用自定义调度程序而不是使用可用的调度程序。
有人能告诉我为什么以及是什么影响了lr的变化吗?何时将lr描述为小型、中型或大型?我想充分理解它以实际做出正确的选择。谢谢善良的灵魂。我非常感谢这个社区。
找到最佳学习率是优化神经网络的重要一步。正如这里详细讨论的那样,这不是一个微不足道的问题,但有一些方法可以获得良好的起始值。这里的主要思想是绘制不同值的损失与学习率,并选择斜率最高的学习率:
这张图片来自上面的链接。这个数字告诉我,从 10 -5到大约 10 -3的任何值都可以是一个很好的学习率。也可以设置一个比较高的学习率,当损失函数达到一个平台期时降低学习率,所以在上面的例子中,你最好从最高端开始;并在以后根据需要降低费率。这可以通过学习率调度器(例如Keras 回调中的调度器)来实现)。这样一来,您就不会在需要学习很多并且损失迅速下降的初始时期花费大量时间。调度器的三个关键参数是“因素”、“耐心”和“最小增量”。如果损失函数在“耐心”个数中没有改变“min delta”,则学习率会降低“因子”中定义的比率。
您还在帖子中提到了衰减,这可以被视为某些优化器的默认学习率。如果我没记错的话,它实际上为每个参数关联了不同的学习率,并以不同的速度降低它们。您可以在此处找到更详细的比较. 但是即使存在衰减也使用 LR 调度器的主要原因是为了更好地控制学习过程。当训练达到平稳期时,您可能需要等待很长时间,然后 Adam 的默认衰减(例如)达到足够低的值才能越过该区域并重新开始学习。但是使用调度程序,您可以定义何时大幅降低学习率(与默认衰减相比),以便进一步学习成为可能。请记住,与开始的时期相比,在后期时期没有太多要学习的东西。