系列文章目录
李沐《动手学深度学习》线性神经网络 线性回归
李沐《动手学深度学习》优化算法(相关概念、梯度下降法、牛顿法)
李沐《动手学深度学习》优化算法(经典优化算法)
文章目录
一、梯度下降法
(一)基本思想
先设定一个学习率
η
\eta
η,参数沿着梯度的反方向移动。假设需要更新的参数为
w
w
w,梯度为
g
g
g,则梯度下降法的更新策略为:
w
←
w
−
η
∗
g
w\leftarrow w-\eta * g
w←w−η∗g
李沐《动手学深度学习》中对于随机梯度下降法的阐释:
(二)梯度下降法的三种不同形式
- BGD(batch gradient descent):批量梯度下降,每次参数更新使用所有样本
- SGD(stochastic gradient descent):随机梯度下降,每次参数更新只使用1个样本
- MBGD(mini-batch gradient descent):小批量梯度下降,每次参数更新使用小部分数据样本
(三)优缺点
优点:
- 算法简洁,当学习率取值恰当时,可以收敛到 全局最优点(凸函数)或 局部最优点(非凸函数)。
缺点:
- 对超参数学习率比较敏感:过小导致收敛速度过慢,过大又越过极值点;
- 学习率在选代过程中保持不变,很容易造成算法被卡在鞍点的位置;
- 容易陷入局部极小值。
更优的优化算法从梯度方面和学习率方面对参数更新方式进行优化。
二、带动量的梯度下降法
(一)基本思想
每一步更新都是由前面梯度的累计v和当前梯度g组合而成,进而使得参数的更新具有惯性。
α \alpha α为动量参数, v v v是动量, η \eta η是学习率
- 累计梯度: v ← α v + ( 1 − α ) g v\leftarrow \alpha v +(1-\alpha)g v←αv+(1−α)g
- 梯度更新: w ← w − η ∗ v w\leftarrow w-\eta * v w←w−η∗v
(二)优点
- 在梯度方向改变时,momentum能够降低参数更新速度,从而减少震荡;
- 在梯度方向相同时,momentum可以加速参数更新, 从而加速收敛。
- 动量有机会逃脱局部极小值(加入动量后,参数更新就可以保持之前更新趋势,而不会卡在当前梯度较小的点了)。
三、Adagrad:自适应学习率优化算法
Adagrad的关键就是对于不同的参数,会设置不同的学习率
主要思想: 根据每个参数在训练过程中的历史梯度信息来调整学习率,从而使得每个参数的学习率可以自适应地调整,更好地适应不同参数的特性。
特点: 对每个参数的学习率进行适应性调整,使得在训练过程中梯度较大的参数的学习率变小,而梯度较小的参数的学习率变大。
计算方式:
- 对于每个参数,初始化一个累计平方梯度
r
=
0
r=0
r=0,然后每次将该参数的梯度平方求和累加到这个变量上:
r ← r + g 2 r \leftarrow r+g^2 r←r+g2 - 学习率为:
η r + δ \frac{\eta}{\sqrt{r+\delta}} r+δ η - 权重更新:(
g
g
g是梯度,
δ
\delta
δ是小参数,为了避免分母为0)
w ← w − η r + δ ∗ g w\leftarrow w-\frac{\eta}{\sqrt{r+\delta}}*g w←w−r+δ η∗g
四、RMSProp:均方根传播
RMSProp全称为root mean square propagation均方根传播。
RMSProp算法是在AdaGrad算法的基础上,进一步在学习率的方向上进行优化: AdaGrad算法中,由于历史梯度的累积可能会导致学习率不断减小,从而影响算法的收敛速度。RMSProp通过引入一个衰减系数 λ \lambda λ来解决这个问题,从而使得学习率的衰减更加平缓,提高了算法的稳定性和收敛速度。
- 对于每个参数,初始化一个累计平方梯度
r
=
0
r=0
r=0,然后每次将该参数的梯度平方求和累加到这个变量上:
r ← λ r + ( 1 − λ ) g 2 r \leftarrow \lambda r+(1-\lambda)g^2 r←λr+(1−λ)g2 - 学习率为:
η r + δ \frac{\eta}{\sqrt{r+\delta}} r+δ η - 权重更新:(
g
g
g是梯度,
δ
\delta
δ是小参数,为了避免分母为0)
w ← w − η r + δ ∗ g w\leftarrow w-\frac{\eta}{\sqrt{r+\delta}}*g w←w−r+δ η∗g
五、Adam
Adam算法是一种用于优化神经网络训练的自适应学习率优化算法。它结合了动量梯度下降和自适应学习率方法的优点,具有广泛的应用和高效的性能。
在Grandient Descent的基础上,Adam的改进包括:
- 梯度方面增加了momentum,使用累计梯度 v ← α v + ( 1 − α ) g v\leftarrow \alpha v +(1-\alpha) g v←αv+(1−α)g
- 用RMSProp优化算法的方式对学习率进行优化,使用累计平方梯度: r ← λ r + ( 1 − λ ) g 2 r\leftarrow \lambda r+(1-\lambda)g^2 r←λr+(1−λ)g2
- 偏差纠正: v ^ = v 1 − α t \hat{v}=\frac{v}{1-\alpha^t} v^=1−αtv, r ^ = r 1 − λ t \hat{r}=\frac{r}{1-\lambda^t} r^=1−λtr
在上述3点改进的基础上,* 权重更新: w ← w − η r ^ + δ ∗ v ^ w\leftarrow w-\frac{\eta}{\sqrt{\hat{r}+\delta}}*\hat{v} w←w−r^+δ η∗v^
六、对比总结
参考:优化器 |SGD |Momentum |Adagrad |RMSProp |Adam
标签:leftarrow,梯度,RMSProp,学习,算法,eta,参数,Adam From: https://blog.csdn.net/weixin_47748259/article/details/136914978