优化器

本文深入介绍了优化器在深度学习中的作用,详细讲解了随机梯度下降法(SGD)、动量法、Nesterov动量法(NAG)、AdaGrad、RMSProp、Adadelta、Adam以及AmsGrad的工作原理、优缺点和公式,帮助读者理解这些优化算法如何加速网络收敛。

目录

1. 随机梯度下降法 SGD

2. 基本动量法

梯度下降法的直观理解?

为什么加入动量可以改善优化路线的曲折程度?

为什么动量法可以加快网络的收敛?

公式

3.Nesterov动量法(Nesterov accelerated gradient (NAG))

思想

公式

4. AdaGrad

如何实现每个参数有不同的学习率?

公式

Adagrad优缺点

5. RMSProp

6. Adadelta

7. Adam(Adaptive Moment Estimation)

8.AmsGrad

效果比较

总结


优化器的作用就是使用一种策略利用梯度下降法,不断的调整参数,来使loss越来越小,最终令预测尽可能接近真实值。

1. 随机梯度下降法 SGD

小批量

从训练集中随机抽取小批量的样本,计算他们的平均loss,来实行一次参数更新。使用小批量样本的平均loss代替全体样本的平均loss进行参数更新可以加快参数更新频率,加速收敛。小批量样本的平均loss是全体样本平均loss的无偏估计。

如果小批量样本中只有一个样本,那么称为随机梯度下降法,由于矩阵的向量化操作(数据量是2的指数运算效率更高)使得一次计算128个样本的loss比128次计算一个样本要高效的多,所以我们经常使用SGD来指代小批量梯度下降。

为什么小批量样本的平均loss是全体样本平均loss的无偏估计?

因为训练集中的同类样本是相关的,同类样本中不同个体的loss是相似的,所以随机抽取的一个样本loss可以作为该类所有样本平均loss的无偏估计

 

2. 基本动量法

梯度下降法的直观理解?

如果把梯度下降法想象成一个小球从山坡到山谷的过程,那么前面几篇文章的小球是这样移动的:从A点开始,计算当前A点的坡度,沿着坡度最大的方向走一段路,停下到B。在B点再看一看周围坡度最大的地方,沿着这个坡度方向走一段路,再停下。确切的来说,这并不像一个球,更像是一个正在下山的盲人,每走一步都要停下来,用拐杖来来探探四周的路,再走一步停下来,周而复始,直到走到山谷
 

为什么加入动量可以改善优化路线的曲折程度?

一个真正的小球要比上述过程聪明多了,从A点滚动到B点的时候,小球带有一定的初速度,在当前初速度下继续加速下降,小球会越滚越快,更快的奔向谷底。momentum 动量法就是模拟这一过程来加速神经网络的优化的。

 

为什么动量法可以加快网络的收敛?

动量法累积了历史梯度信息,使小球具有惯性:

(1)当累积的历史梯度与当前梯度方向一致时,加速收敛

(2)不一致时,减少优化时路径的曲折程度

基本动量法中梯度方向的确定是:历史梯度的累积和当前点的梯度方向的组合。

è¿éåå¾çæè¿°

公式

v_t=\gamma \cdot v_{t-1}+\eta\cdot\nabla_{\theta}J(\theta)

\theta_{new}=\theta - v_t

代码:

mu = 0.9
v = mu * v
v = v - lr * dx
x = x + v

假设每个时刻的梯度dx总是0(相当于小球滚动到平地),则可得:v = mu ^n\cdot v_0,可见v是指数衰减,小球只要初速度足够大,就有机会冲出当前平地到达一个更低的山谷。

 

3.Nesterov动量法(Nesterov accelerated gradient (NAG))

转自:https://blog.youkuaiyun.com/tsyccnh/article/details/76673073

思想

计算梯度时,不是在当前位置,而是未来的位置上

Nesterov想到,在基本动量法中每一步都要将两个梯度方向(历史梯度、当前梯度)做一个合并再下降,那么为什么不按照历史梯度先往前走一步获得“超前点”的梯度,然后将这个超前梯度和历史梯度进行合并?小球具有了超前意识,就变的更加聪明。

具体的方法就是:小球先按照历史梯度走一步(先暂时更新一下参数,以便得到新参数值点的梯度),然后根据超前点的梯度来修正当前点的梯度。

直观理解如下:

Nesterov动量法中梯度方向的确定是:历史梯度的累积和超前点的梯度方向的组合

è¿éåå¾çæè¿°

小球在B点先根据历史梯度向前走一步到C点,计算C点的梯度(\overrightarrow{CD}),然后利用C点的梯度修正当前点B的梯度(\overrightarrow{BC}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值