🐠RMSProp算法
2021-11-5
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
 
adagrad中的关键问题之一,是学习率按预定时间表 显著降低。 虽然这通常适用于凸问题,但对于深度学习中遇到的非凸问题,可能并不理想。 但是,作为一个预处理器,Adagrad算法按坐标顺序的适应性是非常可取的。
Tieleman.Hinton.2012建议以RMSProp算法作为将速率调度与坐标自适应学习率分离的简单修复方法。 问题在于,Adagrad算法将梯度 的平方累加成状态矢量 。 因此,由于缺乏规范化,没有约束力, 持续增长,几乎上是在算法收敛时呈线性递增。
解决此问题的一种方法是使用 。 对于 的合理分布来说,它将收敛。 遗憾的是,限制行为生效可能需要很长时间,因为该流程记住了值的完整轨迹。 另一种方法是按动量法中的方式使用泄漏平均值,即 ,其中参数 。 保持所有其它部分不变就产生了RMSProp算法。

算法

常数 通常设置为 ,以确保不会因除以零或步长过大而受到影响。 鉴于这种扩展,现在可以自由控制学习率 ,而不考虑基于每个坐标应用的缩放。 就泄漏平均值而言,可以采用与之前在动量法中适用的相同推理。 扩展 定义可获得
同之前在momentum小节一样,我们使用 。 因此,权重总和标准化为 且观测值的半衰期为 。 让我们图像化各种数值的$\gamma$在过去40个时间步长的权重。
notion image
 

从零开始实现

和之前一样,使用二次函数 来观察RMSProp算法的轨迹。 回想在 :adagrad中,当我们使用学习率为0.4的Adagrad算法时,变量在算法的后期阶段移动非常缓慢,因为学习率衰减太快。 RMSProp算法中不会发生这种情况,因为 是单独控制的。
notion image
接下来,在深度网络中实现RMSProp算法。
 

简洁实现

可直接使用深度学习框架中提供的RMSProp算法来训练模型

小结

  • RMSProp算法与Adagrad算法非常相似,因为两者都使用梯度的平方来缩放系数
  • RMSProp算法与动量法都使用泄漏平均值。但是,RMSProp算法使用该技术来调整按系数顺序的预处理器
  • 在实验中,学习率需要由实验者调度
  • 系数 决定了在调整每坐标比例时历史记录的时长
  • PyTorch
  • AdaGrad算法Adadelta
    目录