错误反向传播算法中的学习率递减

这是一个比较普遍的问题,在我实现的反向传播算法中,我从一个较大的学习率开始,然后在发现错误开始增加而不是缩小时降低学习率。我可以选择在错误略有增加后(状态A)降低学习率,或者在错误即将增加之前(状态B,类似于回滚到之前的“成功”状态)降低学习率。

那么,从数学角度来看,哪一种方法更好呢?或者我是否需要进行两个并行测试,例如从状态A和状态B开始学习,降低学习率,然后比较哪一个下降得更快?

顺便说一下,我还没有尝试过最后一段提到的方法。这个想法是在我写这个问题的时候突然想到的。在当前算法的实现中,我继续从状态A开始学习,并降低学习率,假设学习率的降低幅度较小,不会让我回到之前的方向去寻找全局最小值,如果我只是偶然遇到局部最小值的话。


回答:

你描述的方法属于一类称为学习率调度的技术。仅供你参考,学习率调度技术不止两种:

  • 预定分段恒定学习率
  • 性能调度(看起来与你的方法最相似)
  • 指数调度
  • 幂调度

每种方法的具体表现很大程度上取决于优化器(如SGD、动量、NAG、RMSProp、Adam等)和数据流形(即训练数据和目标函数)。但这些方法已经在深度学习问题中得到了研究。例如,我推荐你阅读Andrew Senior等人撰写的这篇论文,该论文比较了语音识别任务中的各种技术。作者得出的结论是,指数调度表现最佳。如果你对背后的数学原理感兴趣,强烈建议你查看他们的研究。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注