AdaGrad在迭代过程中不断调整学习率

简介: q

该类可实现 Adagrad 优化方法(Adaptive Gradient),Adagrad 是一种自适应优化方法,是自适应的为各个参数分配不同的学习率。这个学习率的变化,会受到梯度的大小和迭代次数的影响。梯度越大,学习率越小;梯度越小,学习率越大。

Adagrad 代码
'''
params (iterable) – 待优化参数的iterable或者是定义了参数组的dict
lr (float, 可选) – 学习率(默认: 1e-2)
lr_decay (float, 可选) – 学习率衰减(默认: 0)
weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认: 0)
initial_accumulator_value - 累加器的起始值,必须为正。
'''
class torch.optim.Adagrad(params, lr=0.01, lr_decay=0, weight_decay=0, initial_accumulator_value=0)
Adagrad 算法解析

    AdaGrad对学习率进行了一个约束,对于经常更新的参数,我们已经积累了大量关于它的知识,不希望被单个样本影响太大,希望学习速率慢一些;对于偶尔更新的参数,我们了解的信息太少,希望能从每个偶然出现的样本身上多学一些,即学习速率大一些。这样大大提高梯度下降的鲁棒性。而该方法中开始使用二阶动量,才意味着“自适应学习率”优化算法时代的到来。
    在SGD中,我们每次迭代对所有参数进行更新,因为每个参数使用相同的学习率。而AdaGrad在每个时间步长对每个参数使用不同的学习率。AdaGrad消除了手动调整学习率的需要。AdaGrad在迭代过程中不断调整学习率,并让目标函数中的每个参数都分别拥有自己的学习率。大多数实现使用学习率默认值为0.01,开始设置一个较大的学习率。

    AdaGrad引入了二阶动量。二阶动量是迄今为止所有梯度值的平方和,即它是用来度量历史更新频率的。也就是说,我们的学习率现在是,从这里我们就会发现 是恒大于0的,而且参数更新越频繁,二阶动量越大,学习率就越小,这一方法在稀疏数据场景下表现非常好,参数更新公式如下: 

                                                        (13)

                            (14)

AdaGrad总结

    AdaGrad在每个时间步长对每个参数使用不同的学习率。并且引入了二阶动量,二阶动量是迄今为止所有梯度值的平方和。

优点:AdaGrad消除了手动调整学习率的需要。AdaGrad在迭代过程中不断调整学习率,并让目标函数中的每个参数都分别拥有自己的学习率。

缺点:a.仍需要手工设置一个全局学习率 , 如果 设置过大的话,会使regularizer过于敏感,对梯度的调节太大

    b.在分母中累积平方梯度,由于每个添加项都是正数,因此在训练过程中累积和不断增长。这导致学习率不断变小并最终变得无限小,此时算法不再能够获得额外的知识即导致模型不会再次学习。
相关文章
|
5月前
|
数据挖掘 定位技术
基于Amos路径分析的模型修正与调整
基于Amos路径分析的模型修正与调整
|
6月前
|
机器学习/深度学习 算法 PyTorch
机器学习-学习率:从理论到实战,探索学习率的调整策略
机器学习-学习率:从理论到实战,探索学习率的调整策略
110 0
|
9月前
|
监控
【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)
【状态估计】基于随机方法优化PMU优化配置(Matlab代码实现)
|
10月前
|
机器学习/深度学习
采用附加动量法和自适应学习率设计来改进bp神经网络的迭代速度,如果不迭代学习率会提高精度;迭代学习率(自适应)会加快收敛,但精度降低(Matlab代码实现)
采用附加动量法和自适应学习率设计来改进bp神经网络的迭代速度,如果不迭代学习率会提高精度;迭代学习率(自适应)会加快收敛,但精度降低(Matlab代码实现)
|
11月前
|
机器学习/深度学习 人工智能 算法
强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
强化学习从基础到进阶-案例与实践[5]:梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
|
11月前
|
机器学习/深度学习 人工智能 算法
强化学习从基础到进阶-常见问题和面试必知必答5::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
强化学习从基础到进阶-常见问题和面试必知必答5::梯度策略、添加基线(baseline)、优势函数、动作分配合适的分数(credit)
|
机器学习/深度学习 异构计算
使用Fastai中的学习率查找器和渐进式调整大小提高训练效率
使用Fastai中的学习率查找器和渐进式调整大小提高训练效率
162 0
使用Fastai中的学习率查找器和渐进式调整大小提高训练效率
|
C++
为什么要停止过度使用置换重要性来寻找特征(下)
为什么要停止过度使用置换重要性来寻找特征
126 0
为什么要停止过度使用置换重要性来寻找特征(下)
|
机器学习/深度学习 算法
为什么要停止过度使用置换重要性来寻找特征(上)
为什么要停止过度使用置换重要性来寻找特征
127 0
为什么要停止过度使用置换重要性来寻找特征(上)
|
机器学习/深度学习
DL:深度学习模型优化之模型训练技巧总结之适时自动调整学习率实现代码
DL:深度学习模型优化之模型训练技巧总结之适时自动调整学习率实现代码