需要很好的方法来选择和调整“学习率”

时间:2009-06-05 18:18:26

标签: machine-learning statistics neural-network

在下图中,您可以看到学习算法试图学习产生所需的输出(红线)。学习算法类似于后向错误传播神经网络。

“学习率”是一个控制训练过程中所做调整大小的值。如果学习率太高,那么算法会很快学会但是它的预测会在训练过程中大量跳跃(绿线 - 学习率为0.001),如果它低于预测跳跃的数量较少,但算法需要学习的时间更长(蓝线 - 学习率为0.0001)。

黑线是移动平均线。

如何调整学习速率,使其最初收敛到接近所需的输出,但然后减慢速度,以便能够磨练正确的值?

learning rate graph http://img.skitch.com/20090605-pqpkse1yr1e5r869y6eehmpsym.png

4 个答案:

答案 0 :(得分:18)

有时,随着时间的推移降低学习率的过程被称为“退火”学习率。

有许多可能的“退火时间表”,例如学习率是时间的线性函数:

u(t) = c / t

...其中c是常数。或者有“搜索然后收敛”的时间表:

u(t) = A * (1 + (c/A)*(t/T)) / 
           (1 + (c/A)*(t/T) + T*(t^2)/(T^2))

...当At(“搜索”阶段)相比较小时,学习率保持在T左右,然后在{{1}时降低学习率与t相比较大(“收敛”阶段)。当然,对于这两种方法,您必须调整参数(例如TcA),但希望引入这些参数会比帮助更多。 :)

一些参考文献:

  • 快速随机梯度搜索的学习率计划,Christian Darken,Joseph Chang和John Moody,信号处理神经网络2 --- 1992 IEEE工作室论文集,IEEE出版社,Piscataway,NJ ,1992。
  • 随机近似方法,Herbert Robbins和Sutton Monro,数学统计年鉴22,#3(1951年9月),第400-407页。
  • 神经网络和学习机(特别是第3.13节),Simon S. Haykin,第3版(2008年),ISBN 0131471392,9780131471399
  • 这是page that briefly discusses learning rate adaptation

答案 1 :(得分:7)

当您说您需要在网络学习时改变学习率时,您回答了自己的问题。有很多不同的方法可以做到。

最简单的方法是通过迭代次数线性降低学习率。每25个(或其他任意数字),从速率中减去一部分,直到达到最小值。

您也可以使用迭代次数进行非线性处理。例如,每次迭代将学习率乘以.99,再次达到最佳值。

或者你可以变得更加狡猾。使用网络结果确定网络的下一个学习速率。它的健身指标越好,你的学习率越小。这样,只要需要,它就会快速收敛,然后慢慢收敛。这可能是最好的方法,但它比简单的迭代次数方法更昂贵。

答案 2 :(得分:4)

您是否考虑过其他与学习率无关的培训方法?

有些训练方法可以绕过计算Hessian矩阵的学习率(如Levenberg-Marquardt),而我遇到了直接搜索算法(如Norio Baba开发的算法)。

答案 3 :(得分:1)

也许在负反馈循环中编码到学习算法中,以速率为基础。开始摆动得太宽的学习速率值会触及反馈回路的缓和部分,导致它以另一种方式摆动,此时相反的缓和力会起作用。

状态向量最终会达到平衡,在“太多”和“太少”之间取得平衡。这是生物学中有多少系统工作