学习速率的选取策略
运用梯度下降算法进行优化时,权重的更新规则中,在梯度项前会乘以一个系数,这个系数就叫学习速率 :
-
如果学习速率太小,则会使收敛过慢。
-
如果学习速率太大,则会导致代价函数振荡,迭代过快,梯度下降法可能会越过最低点,甚至可能发散。
![](https://img-blog.csdnimg.cn/20181211221130521.png)
-
学习速率的取值取决于数据样本,可以多取一些值,从大到小,分别运行算法,看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。
-
例如:把学习速率设置为 0.01,然后观察 training cost 的走向,如果cost 在减小,可以逐步地调大学习速率,试试 0.1,1.0 如果 cost 在增大,那就得减小学习速率,试试0.001,0.0001。经过一番尝试之后,可以大概确定学习速率的合适的值。
学习速率的调节
-
在优化的过程中,learning rate应该是逐步减小的,越接近“山谷”的时候,迈的“步伐”应该越小。
-
人工调节
可以先对 learning rate 设置初始值,如:0.25,迭代到一定程度时,如:第20个epoch时候,将 learning rate 除以10,设置为0.025。
-
自动调节
一个简单有效的做法就是,当验证集的准确率不再提高时,可以让 learning rate 减半或除以10,然后继续迭代。
参考的配置
AlexNet 以及 VGG 中的学习率设定:
- 学习率初始设定为 0.01,然后当验证集准确率停止改善时,减少10倍。学习率总共降低3次。
The heuristic which we followed was to divide the learning rate by 10 when the validation error rate stopped improving with the current learning rate. The learning rate was initialized at 0.01 and reduced three times prior to termination.