11

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

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

黑线是移动平均线。

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

学习率图 http://img.skitch.com/20090605-pqpkse1yr1e5r869y6eehmpsym.png

4

4 回答 4

18

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

有许多可能的“退火计划”,比如让学习率成为时间的线性函数:

u(t) = c / t

...在哪里c是一些常数。或者有“搜索然后收敛”时间表:

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

...与(“搜索”阶段)相比,它使学习率保持在A较小t的水平T,然后在与(“收敛”阶段)t相比较大时降低学习率。T当然,对于这两种方法,您都必须调整参数(例如cAT),但希望引入它们会有所帮助而不是伤害。:)

一些参考资料:

  • 快速随机梯度搜索的学习率计划,Christian Darken、Joseph Chang 和 John Moody,信号处理的神经网络 2 --- 1992 年 IEEE 研讨会论文集,IEEE 出版社,新泽西州皮斯卡塔韦,1992 年。
  • 随机近似方法,Herbert Robbins 和 Sutton Monro,《数理统计年鉴》22,#3(1951 年 9 月),第 400-407 页。
  • 神经网络和学习机器(特别是第 3.13 节),Simon S. Haykin,第 3 版(2008 年),ISBN 0131471392、9780131471399
  • 这是一个简要讨论学习率适应的页面
于 2009-06-05T18:47:58.417 回答
7

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

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

您也可以通过迭代次数非线性地执行此操作。例如,每次迭代将学习率乘以 0.99,直到达到一个好的最小值。

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

于 2009-06-05T18:26:12.687 回答
4

您是否考虑过其他独立于任何学习率的训练方法?

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

于 2009-07-10T13:01:57.950 回答
1

也许将负反馈循环编码到学习算法中,以速率为关键。开始摆动得太宽的学习率值会影响反馈回路的调节部分,导致它向另一个方向摆动,此时相反的调节力开始起作用。

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

于 2009-06-05T18:27:08.940 回答