书接上文,想要用算法解决问题,就不可避免的涉及构造函数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优化器虽然可以对不同的权重参数自适应的改变学习率,但仍要指定超参数加权 因子
标签:Loss,极小值,函数,梯度,下降,算法,Adagrad From: https://blog.csdn.net/qq_67654130/article/details/143515426