11

我已经用 Java 编写了一个神经网络,现在正在研究反向传播算法。

我读过权重的批量更新将导致更稳定的梯度搜索,而不是在线权重更新。

作为测试,我创建了一个 100 点的时间序列函数,例如x = [0..99]y = f(x)。我创建了一个具有一个输入和一个输出的神经网络以及 2 个具有 10 个神经元的隐藏层用于测试。我正在努力解决这个问题时反向传播算法的学习率。

我有 100 个输入点,所以当我计算dw_{ij}每个节点的权重变化时,它实际上是一个总和:

dw_{ij} = dw_{ij,1} + dw_{ij,2} + ... + dw_{ij,p}

p = 100这种情况下。

现在权重更新变得非常大,因此我的错误E会反弹,以至于很难找到最小值。我得到一些正确行为的唯一方法是将学习率设置y0.7 / p^2.

是否有一些基于样本量设置学习率的一般规则?

4

2 回答 2

48

http://francky.me/faqai.php#otherFAQs

主题:反向传播应该使用什么学习率?

在标准反向传播中,学习率太低会使网络学习非常缓慢。学习率太高会使权重和目标函数发散,所以根本没有学习。如果目标函数是二次的,如在线性模型中,则可以从 Hessian 矩阵计算良好的学习率(Bertsekas 和 Tsitsiklis,1996)。如果目标函数具有许多局部和全局最优值,如在具有隐藏单元的典型前馈神经网络中,最优学习率在训练过程中经常发生巨大变化,因为 Hessian 矩阵也会发生巨大变化。尝试使用恒定的学习率训练 NN 通常是一个繁琐的过程,需要大量的反复试验。有关在一些非常简单的网络中学习率和动量的选择如何与数值条件相互作用的一些示例,请参阅 ftp://ftp.sas.com/pub/neural/illcond/illcond.html

通过批量训练,无需使用恒定的学习率。事实上,根本没有理由使用标准反向传播,因为存在更高效、可靠和方便的批量训练算法(参见“什么是反向传播?”下的 Quickprop 和 RPROP 以及“什么是共轭”中提到的众多训练算法梯度,Levenberg-Marquardt 等?”)。

已经发明了许多其他的反向传播变体。大多数都遭受与标准反向传播相同的理论缺陷:权重变化的幅度(步长)不应该是梯度幅度的函数。在权重空间的某些区域,梯度较小,需要较大的步长;当您初始化具有较小随机权重的网络时,就会发生这种情况。在权重空间的其他区域,梯度较小,需要较小的步长;当您接近局部最小值时会发生这种情况。同样,大梯度可能需要小步或大步。许多算法试图调整学习率,但是任何将学习率乘以梯度来计算权重变化的算法都可能在梯度突然变化时产生不稳定的行为。Quickprop 和 RPROP 的巨大优势在于它们不会过度依赖梯度的大小。传统的优化算法不仅使用梯度,还使用二阶导数或线搜索(或它们的某种组合)来获得良好的步长。

对于增量训练,要设计一种在训练期间自动调整学习率的算法要困难得多。NN 文献中出现了各种提议,但大多数都不起作用。Darken 和 Moody (1992) 说明了其中一些建议的问题,不幸的是他们没有提供解决方案。LeCun、Simard 和 Pearlmutter (1993) 以及 Orr 和 Leen (1997) 提供了一些有希望的结果,他们适应的是动量而不是学习率。还有一种随机近似的变体,称为“迭代平均”或“Polyak 平均”(Kushner 和 Yin 1997),理论上它通过保持权重值的运行平均值来提供最佳收敛速度。我对这些方法没有个人经验;

参考资料

  • Bertsekas, DP 和 Tsitsiklis, JN (1996),神经动态规划,马萨诸塞州贝尔蒙特:Athena Scientific,ISBN 1-886529-10-8。
  • Darken, C. 和 Moody, J. (1992),“走向更快的随机梯度搜索”,载于 Moody, JE, Hanson, SJ 和 Lippmann, RP 编辑。
  • 神经信息处理系统的进展 4,加利福尼亚州圣马特奥:Morgan Kaufmann Publishers,第 1009-1016 页。Kushner, HJ 和 Yin, G. (1997),随机逼近算法和应用,纽约:Springer-Verlag。LeCun, Y.、Simard, PY 和 Pearlmetter, B. (1993),“通过在线估计 Hessian 特征向量的自动学习率最大化”,Hanson, SJ, Cowan, JD 和 Giles,
  • CL (eds.), Advances in Neural Information Processing Systems 5, San Mateo, CA: Morgan Kaufmann, pp. 156-163。Orr, GB 和 Leen, TK (1997),“使用曲率信息进行快速随机搜索”,在
  • Mozer, MC, Jordan, MI 和 Petsche, T., (eds.) Advances in Neural Information Processing Systems 9,Cambridge, MA: The MIT Press, pp. 606-612。

学分

  • 存档名称:ai-faq/neural-nets/part1
  • 最后修改:2002-05-17
  • 网址: ftp: //ftp.sas.com/pub/neural/FAQ.html
  • 维护者:saswss@unx.sas.com (Warren S. Sarle)
  • 版权所有 1997、1998、1999、2000、2001、2002,美国北卡罗来纳州卡里市的 Warren S. Sarle。
于 2012-07-10T14:23:08.287 回答
5

一个简单的解决方案是取一个批次的平均重量,而不是求和。这样,您可以只使用 0.7 的学习率(或您喜欢的任何其他值),而不必担心优化另一个参数。

关于批量更新和学习率的更多有趣信息可以在Wilson (2003) 的这篇文章中找到。

于 2012-07-10T14:38:02.080 回答