type
status
date
slug
summary
tags
category
icon
password
Property
adagrad
中的关键问题之一,是学习率按预定时间表 显著降低。 虽然这通常适用于凸问题,但对于深度学习中遇到的非凸问题,可能并不理想。 但是,作为一个预处理器,Adagrad算法按坐标顺序的适应性是非常可取的。Tieleman.Hinton.2012
建议以RMSProp算法作为将速率调度与坐标自适应学习率分离的简单修复方法。 问题在于,Adagrad算法将梯度 的平方累加成状态矢量 。 因此,由于缺乏规范化,没有约束力, 持续增长,几乎上是在算法收敛时呈线性递增。解决此问题的一种方法是使用 。 对于 的合理分布来说,它将收敛。 遗憾的是,限制行为生效可能需要很长时间,因为该流程记住了值的完整轨迹。 另一种方法是按动量法中的方式使用泄漏平均值,即 ,其中参数 。 保持所有其它部分不变就产生了RMSProp算法。
算法
常数 通常设置为 ,以确保不会因除以零或步长过大而受到影响。 鉴于这种扩展,现在可以自由控制学习率 ,而不考虑基于每个坐标应用的缩放。 就泄漏平均值而言,可以采用与之前在动量法中适用的相同推理。 扩展 定义可获得
同之前在
momentum
小节一样,我们使用 。 因此,权重总和标准化为 且观测值的半衰期为 。 让我们图像化各种数值的$\gamma$在过去40个时间步长的权重。从零开始实现
和之前一样,使用二次函数 来观察RMSProp算法的轨迹。 回想在 :
adagrad
中,当我们使用学习率为0.4的Adagrad算法时,变量在算法的后期阶段移动非常缓慢,因为学习率衰减太快。 RMSProp算法中不会发生这种情况,因为 是单独控制的。接下来,在深度网络中实现RMSProp算法。
简洁实现
可直接使用深度学习框架中提供的RMSProp算法来训练模型
小结
- RMSProp算法与Adagrad算法非常相似,因为两者都使用梯度的平方来缩放系数
- RMSProp算法与动量法都使用泄漏平均值。但是,RMSProp算法使用该技术来调整按系数顺序的预处理器
- 在实验中,学习率需要由实验者调度
- 系数 决定了在调整每坐标比例时历史记录的时长