深度神经网络--4.4 自适应学习率

举报
HWCloudAI 发表于 2020/12/28 14:37:36 2020/12/28
【摘要】 介绍完如何提升深度学习模型的性能效果后,本节将着重介绍如何优化深度学习系统的训练过程。在第2章介绍的优化算法中,无论是基本的梯度下降法还是其他优化算法,训练过程的学习率都是一个很大的问题。不可变的学习率在一定程度上影响了模型的收敛速度,使得训练时长变大,计算开销居高不下。如果在训练过程中学习率可变,那么模型收敛速度会明显提升。本节将介绍3种常用的自适应学习率算法:AdaGrad、RMSPro...

介绍完如何提升深度学习模型的性能效果后,本节将着重介绍如何优化深度学习系统的训练过程。在第2章介绍的优化算法中,无论是基本的梯度下降法还是其他优化算法,训练过程的学习率都是一个很大的问题。不可变的学习率在一定程度上影响了模型的收敛速度,使得训练时长变大,计算开销居高不下。如果在训练过程中学习率可变,那么模型收敛速度会明显提升。本节将介绍3种常用的自适应学习率算法:AdaGrad、RMSProp和Adam。首先回顾梯度下降公式,即:

式中,α——学习率;▽J(wt-1)——方向。

4.4.1 

AdaGrad在应用梯度下降算法的过程中,每个参数更新方向和幅度是不一样的。在某个时间段,某些变量已经到达极小值附近。然而,可能有些变量仍然在初始位置不远处。此时不变的学习率可能会导致一些问题。如果学习率偏大,那么处于极小值附近的参数很容易不稳定。如果学习率偏小,那么更新不多的参数收敛得还是很慢。AdaGrad的思想是对于不同的参数去设置不同的学习率以解决这个问题。学习率一开始设置得比较大,用以快速进行梯度下降。随着优化过程的进行,减小那些已经下降很多的参数的学习率。对于还没怎么下降的参数,则继续保持一个较大的学习率。

AdaGrad先计算梯度,然后累计梯度的二次方,计算公式如下:

根据累积的梯度二次方,计算更新公式如下:

式中,δ——一个极小值,为了防止分母为0;ε——全局学习率。随着训练过程的进行,梯度的累积会越来越大,使得整体的学习率会越来越小。AdaGrad可以自动地根据迭代来更改学习率。但AdaGrad有一个很明显的缺点在于其分母项的累积总和总在不断地增长,这会导致学习率缩小并变得无限小,致使算法不能再更新权重。AdaGrad算法如算法4.1所示。

算法4.1 AdaGrad算法

输入:全局学习率ε,极小值δ(一般设置为10-7),累积梯度变量r=0

输出:收敛的参数wT

(1) 初始化参数w0

(2) 当不满足停止条件时执行:

(3) 从数据{(x(i), y(i))}均匀随机选取样本m个样本

(4) 计算梯度:

(5) 计算梯度累积:

(6) 计算更新:

4.4.2 RMSPropAdaGrad的问题就是学习率最终会无限小,为了解决这个问题,RMSProp作为AdaGrad的扩展,提出通过求当前状态下平方梯度的对数平均值来解决上述问题。时刻t的平方梯度平均值定义公式如下:

式中,rt——t-1时刻的平方梯度平均值;γ——对数平均值的比例系数。相应的梯度更新如下:

式中,δ和ε的设定都是和AdaGrad一样。采用求平均值而非像AdaGrad那样求和的方式,可以有效地避免学习率无限低问题。RMSProp算法总结如算法4.2所示。

算法4.2 RMSProp算法

输入:全局学习率ε,极小值δ(一般设置为10-7),比例系数γ(一般设置为0.9)

输出:收敛的参数wT

(1) 初始化参数w0

(2) 当不满足停止条件时执行

(3) 从数据{(x(i), y(i))}均匀随机选取m个样本

(4) 计算梯度:

(5) 计算时刻t的平方梯度平均值:

(6) 计算更新:

相比于AdaGrad,RMSProp算法通过将梯度累积变为加权平均值,使其在非凸设置中表现更好。AdaGrad在应用于凸函数时可以快速收敛。而神经网络训练多数是非凸函数,由于AdaGrad缩小了学习速率,可能在达到极小值前使学习速率过小。RMSProp使用加权平均值来丢弃很远的信息,以便快速收敛。经过大量的深度学习实验,RMSProp算法是一种有效并且实用的神经网络优化算法。

4.4.3 AdamAdam

(Adaptive Moment)算法也是目前比较常用的自适应学习率算法,其可视为对RMSProp的一种优化。与RMSProp不同的是,Adam在模型训练早期偏差较小。通常Adam对超参数的选择相当稳定,只是有时可能会需要更改学习速率。首先Adam计算一阶梯度偏差公式如下:

式中,gt——时刻t的梯度;γ1——一阶梯度累积系数。类似于RMSProp,Adam计算平方梯度累积系数公式如下:

式中,γ2——平方梯度累积系数。在计算st和rt之后,Adam计算一阶和二阶修正公式如下:

随后,Adam根据一阶和二阶修正更新权重公式如下:

Adam算法总结如算法4.3所示。

算法4.3 Adam算法

输入:全局学习率ε(一般设置为0.001)、极小值δ(一般设置为10-7)、一阶系数γ1(一般设置为0.9)、二阶系数γ2(一般设置成0.999)

输出:收敛的参数wT

(1) 初始化参数w0

(2) 当不满足停止条件时执行:

(3) 从数据{(x(i), y(i))}均匀随机选取m个样本

(4) 计算梯度:

(5) 计算一阶梯度偏差:

(6) 计算二阶梯度偏差:

(7) 计算一阶修正:

(8) 计算二阶修正:

(9) 计算更新:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。