什么是梯度下降算法

书接上文,想要用算法解决问题,就不可避免的涉及构造函数L(后面称之为损失函数Loss)求导,和对Loss函数求极小值。

而对导函数求极小值就不得不提梯度下降算法,那边本期就来介绍什么是梯度下降算法,以及为什么梯度下降算法能求Loss函数的极小值。

什么是梯度?

梯度是偏导数组成的向量,,w是权重(也就是原来y=ax+b中的a和b组成的向量),L是Loss函数。

梯度有什么作用?

我们假设这个曲面是Loss函数关于w的曲面,当w向梯度为正方向运动的时候,Loss函数值就会变大,梯度越大,Loss函数变大的越快。

当w向梯度为负方向运动的时候,Loss函数值就会变小,梯度绝对值越大,Loss函数变小的越快。

知道了这个原理,那么要求Loss函数的极小值,就只需要向梯度负方向一直移动就行,直到梯度等于0的时候,就是Loss函数取得极小值的时候。

SGD算法:

SGD是所有梯度下降算法的鼻祖,总体想法就是在学习率ρ的倍率下,向极小值靠近,并给出靠近到什么程度就结束。

Momentum算法:

Momentum相对于SGD可以加速收敛。若与前一次梯度方向相同,变化量加大;并且能减少震荡。若与前一次梯度方向相反,变化量较小;越过极值 点后能够及时回头。

NAG算法:

NAG具有Momentum的所以优点,也能加速收敛,并且能提前预测下一次梯度,提前修正当前梯度;例如:逼近极 值点时,如果预测到下一次梯度方向会越过极值点,提前减速;

Adagrad算法:

如果一个参数的梯度一直都非常大,那么其对应的学习率就变小一 点,防止震荡,而一个参数的梯度一直都非常小,那么这个参数的 学习率就变大一点,使得其能够更快地更新,这就是Adagrad算法加 快深层神经网络的训练速度的核心。

Adagrad解决了不同的w逼近各自最优值速度不同的问题!

缺点 1、学习率容易衰减过快,使得训练提前结束 2、依赖一个全局超参数,初始学习率。

RMSprop算法:

RMSprop依然依赖于全局学习率,算是Adagrad的发展和Adadelta的变体,效果趋于二者之间 适合处理非平稳目标- 对于RNN效果很好。

AdaDelta算法:

RMSprop优化器虽然可以对不同的权重参数自适应的改变学习率,但仍要指定超参数加权 因子𝜌,AdaDelta算法不需要指定。

特点:

1、训练初中期,加速效果不错,很快

2、训练后期,反复在局部最小值附近抖动

3、不需要指定超参数学习率

Adam算法:

Adam吸收了Adagrad(自适应学习率的梯 度下降算法)和动量梯度下降算法的优点, 既能适应稀疏梯度(即自然语言和计算机 视觉问题),又能缓解梯度震荡的问题

总结:

SGD:朴素的梯度下降算法

Mom/NAG:动量派

Adagrad/adadelta/rmsprop:自适应派

Adam:集大成者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值