TensorFlow 实现深度网络——自适应学习率算法

阿里云2000元红包!本站用户参与享受九折优惠!

在使用基本的梯度下降法优化算法时,会遇到一个常见的问题一一要优化的参数对于目标函数的依赖各不相同。形象地说,对于某些参数,通过算法已经优化到了极小值附近,但是有的参数仍然有着很大的梯度,这就是使用统一的全局学习率可能出现的问题。如果学习率太小,则梯度很大的参数会有一个很慢的收敛速度;如果学习率太大,则己经优化得差不多的参数可能会出现不稳定的情况。因此,最近,提出了一些增量(或者基于小批量)的算法来自适应模型参数的学习率。

下面对这些算法进行简单介绍。

AdaGrad算法

AdaGrad算法能够独立地适应所有模型参数的学习率,当参数的损失偏导值比较大时,它应该有一个较大的学习率;而当参数的损失偏导值比较小时,它应该有一个较小的学习率。

首先设全局学习率为σ,初始化的参数为ω,一个为了数值稳定而创建的小常数δ(建议默认取=10-7),以及一个梯度累积变量r (初始化r=0 )。然后就是算法的主体,循环执行以下步骤,在没有达到停止的条件前不会停止。

1)从训练、数据集中取出包含m 个样本的小批量数据的对应的目标用yi 表示:

2 )在小批量数据的基础上按照以下公式计算梯度:

3 )累积平方梯度,并刷新r,过程如公式:

4 )计算参数的更新量(被逐元素应用):

5 )根据更新参数:

在该算法中,每个参数的△ω都反比于其所有梯度历史平方值总和的平方根(也就是)。通过这样的方式,可以达到独立地适应所有模型参数的学习率的目的。这样做的效果是,在参数空间中,倾斜度不大的区域也能沿梯度方向有一个较大的参数更新。

RMSProp算法

RMSProp算法是在AdaGrad算法的基础上经过修改得到的。在Ada Grad 算法中,每个参数的△ω都反比于其所有梯度历史平方值总和的平方根,但RMSProp 算法改变了这一做法。RMSProp 算法采用了指数衰减平均的方式淡化遥远过去的历史对当前步骤参数更新量△ω的影响。相比于AdaGrad,RMSProp 算法中引入了一个新的参数 ,用以控制历史梯度值的衰减速率。首先设全局学习率为σ,历史梯度值的衰减速率参数ρ,初始化的参数ω,一个为了数值稳定而创建的小常数δ(建议默认取δ=10^(-6)),以及一个梯度累积变量r (初始化r=0)。然后就是算法的主体,循环执行以下步骤,在没有达到停止的条件前不会停止。

1 )从训练数据集中取出包含m 个样本的小批量数据 数据对应的目标用yi 表示。

2 )在小批量数据的基础上按照以下公式计算梯度:

3 )累积平方梯度,并刷新r ,注意这里使用了衰减率ρ,过程如公式:

4 )计算参数的更新量:

5 )根据△ω更新参数:

大量的实际使用情况证明, PMSProp 算法在优化深度神经网络时有效且实用。目前大多数的深度学习从业者都会采用这个算法。

Adam算法

Adam 算法是一种在RMSProp 算法的基础上进一步改良的另一种学习率自适应的优化算法。首先设全局学习率为σ(建议默认σ= 0.001) ,矩估计的指数衰减速率为ρ1和ρ2(ρ1和ρ2在区间[0, 1)内,建议默认分别为0.9和0.990),初始化的参数为ω,一个为了数值稳定而创建的小常数<δ(建议默认取δ=10^(-8)),初始值为0 的一阶和二阶矩变量s ,r,以及一个时间步计数t (初始化t = 0 )。然后就是算法的主体,循环执行以下步骤,在没有达到停止的条件前不会停止。

1)从训练、数据集中取出包含m 个样本的小批量数据 ,数据对应的目标用yi表示。

2)在小批量数据的基础上按照以下公式计算梯度:

3)刷新时间步:

4)更新一阶有偏矩估计:

5)更新二阶有偏矩估计:

6)对一阶矩的偏差进行修正:

7)对二阶矩的偏差进行修正:

8)计算参数的更新量:

9)根据△ω更新参数:

总结:本次课程主要给大家介绍了三种比较经典的自适应学习率的算法,AdaGrad算法和基于其进行改良的RMSProp算法和Adam 算法,三种算法在深度学习中使用较为广泛,对于提升模型性能具有重要作用。

关注小鲸融创,一起深度学习金融科技!


https://www.jianshu.com/p/242cca97c735

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论