深度学习中的优化器原理(SGD、RMSProp、Adam)

视频参考:

深度学习中的优化器原理(SGD,SGD+Momentum,Adagrad,RMSProp,Adam)_哔哩哔哩_bilibili

SGD:梯度下降

梯度是该位置上升最快的方向,负梯度是下降最快,所以更新参数是减去学习率✖️梯度

SGD + Momentum:

在上图这种情况,梯度幅度大的地方会主导梯度方向,如果用原始的SGD那么参数变化会在梯度幅度大的地方震荡(视频中10:00),所以考虑引入动量

v会累积之前的梯度,那在梯度变化大的地方会抵消(震荡过程中,梯度一正一负,累加就会抵消),梯度幅度小的地方会累加 (梯度幅度小的地方,梯度方向一直保持不变,累加就会增大)

Adagrad:

参数的更新是由学习率和梯度共同决定,上面引入动量,其实是考虑改变梯度,其实也可以考虑自适应改变学习率。 

刚才动量的累积让梯度变化大的地方梯度抵消,从而参数变化小,也可以让它在梯度变化大的地方更新步长(学习率)小。

引入累积平方梯度r,让梯度开平方,更新参数的时候作为学习率的分母,梯度越大,那学习率就会更小,梯度越小反而学习率(步长)更大。所以就可以在梯度变化大的地方步长小,在梯度变化缓慢的地方步长大。

r是累加过程,所以r是慢慢变大,慢慢的在梯度变化小的方向他的步长也会很小,从而无法继续更新,这时候RMSProp就解决这个问题

RMSProp:

引入衰减系数p,一般取0.999,范围(0,1)。

AdaGrad的累积平方梯度是累加之前所有的梯度平方,乘上衰减系数后,多次更新之后,之前的梯度的影响就会变小,(比如取p = 0.99,100次更新之后 p**100 = 0.36...),从而又可以根据当前的梯度来调节梯度。

Adam:

Adam则结合了SGD+Momentum和RMSProp的优点

另外也加入了一个修正,(视频中说是避免冷启动的问题)

假设衰减系数p = 0.999, 动量参数a = 0.9,累积梯度v0 = 0, 累积平方梯度r0 = 0,那么v1 = 0.1*g,r1 = 0.001*g*g,这两个值都很小,与实际的v1 = g,r1 = g*g相差很大,所以引入修正。

指数加权平均的修正参考:移动平均(Moving Average) - 知乎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Adam优化器SGD优化器都是常用的深度神经网络优化器,它们在训练神经网络时起到了至关重要的作用。 SGD优化器(Stochastic Gradient Descent)是最基本的优化器,它的思想是利用梯度信息来更新网络的参数,使得损失函数逐渐降低。SGD优化器的缺点是可能会陷入局部最优解,而且在学习率比较大的时候容易出现震荡,导致训练不稳定。 Adam优化器Adaptive Moment Estimation)结合了动量梯度下降和RMSProp优化器的优点,并且具有自适应调节学习率的特点。Adam优化器相对于SGD优化器,更加适合应对大规模数据和高维参数的情况。它具有以下特点: 1. 自适应调节学习率:Adam优化器可以根据每个参数的梯度大小自适应调节学习率,每个参数都有自己的学习率,从而有效避免了SGD优化器的学习率问题。 2. 动量梯度下降:Adam优化器使用了动量梯度下降的思想,可以加速训练过程,提高收敛速度。 3. 二阶矩估计:Adam优化器还引入了二阶矩估计,可以更好地适应不同方向的梯度,从而提高优化的效果。 总的来说,Adam优化器相对于SGD优化器,具有更好的性能和更快的收敛速度,特别是在大规模数据和高维参数的情况下更为适用。但是,在小样本数据上,SGD优化器也有着良好的表现。因此,在使用优化器的时候,需要根据实际情况进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值