各种优化器及其优缺点(SGD,RMSProp,Adam及其变种)

目录

各种优化器及其优缺点

1. 梯度下降(Gradient Descent)

2. 随机梯度下降(Stochastic Gradient Descent,SGD)

3. 动量优化(Momentum)

4. RMSProp

5. Adam

6. AdaMax

7. Nadam

8. AdamW


各种优化器及其优缺点

1. 梯度下降(Gradient Descent)

梯度下降是最基础的优化器,它通过计算损失函数的梯度,并沿着梯度的反方向更新参数来最小化损失函数。

梯度下降的参数更新公式如下:

θ_t = θ_{t-1} - α * ∇f(θ_{t-1})

其中,θ_t是第t步的参数,α是学习率,∇f(θ_{t-1})是损失函数在第t-1步的梯度。

优点:实现简单,理解容易。

缺点:可能陷入局部最优解,对于非凸优化问题效果不佳;对于大数据集,计算全局梯度耗时较长。除了可能陷入局部最优解和对大数据集计算全局梯度耗时较长之外,梯度下降的另一个缺点是对所有的参数使用相同的学习率。这可能导致优化过程在某些方向上过快,而在其他方向上过慢。

2. 随机梯度下降(Stochastic Gradient Descent,SGD)

SGD是梯度下降的一个变种,它每次只使用一个样本来计算梯度,这样可以大大加快优化的速度。

SGD的参数更新公式如下:

θ_t = θ_{t-1} - α * ∇f_i(θ_{t-1})

其中,θ_t是第t步的参数,α是学习率,∇f_i(θ_{t-1})是第i个样本的损失函数在第t-1步的梯度。

优点:对于大数据集,可以更快地进行优化;可以有效地跳出局部最优解。

缺点:更新方向不稳定,可能导致优化过程震荡;可能需要较长时间才能收敛。SGD的另一个缺点是对所有的参数使用相同的学习率。这可能导致优化过程在某些方向上过快,而在其他方向上过慢。

3. 动量优化(Momentum)

动量优化在SGD的基础上引入了动量项,使得优化过程可以积累之前的梯度,从而更快地收敛。

v_t = γ * v_{t-1} + α * ∇f(θ_{t-1})

θ_t = θ_{t-1} - v_t

其中,θ_t是第t步的参数,α是学习率,∇f(θ_{t-1})是损失函数在第t-1步的梯度,v_t是第t步的速度,γ是动量参数。

优点:可以加速SGD在相关方向的收敛速度,抑制震荡。

缺点:需要人工设置动量参数,调参较为复杂。动量优化的另一个缺点是可能会导致优化过程在某些方向上过快,从而跳过最优解。

4. RMSProp

RMSProp是一种自适应学习率的优化器,它可以自动调整学习率,使得不同的参数有不同的更新速度。

RMSProp的参数更新公式如下:

r_t = β * r_{t-1} + (1 - β) * (∇f(θ_{t-1}))^2

θ_t = θ_{t-1} - α * ∇f(θ_{t-1}) / sqrt(r_t + ε)

其中,θ_t是第t步的参数,α是学习率,∇f(θ_{t-1})是损失函数在第t-1步的梯度,r_t是第t步的平方梯度的移动平均值,β是衰减系数,ε是防止除0错误的小常数。

优点:对于非凸优化问题和复杂的深度学习模型,优化效果较好。

缺点:需要人工设置初始学习率和衰减系数,调参较为复杂。另一个缺点是在某些情况下可能会导致学习率衰减得过快,从而导致优化过程提前停止。

5. Adam

Adam结合了Momentum和RMSProp的优点,既有动量项,又有自适应学习率。

Adam优化器的参数更新公式如下:

m_t = β1 * m_{t-1} + (1 - β1) * g_t

v_t = β2 * v_{t-1} + (1 - β2) * g_t^2

m_hat = m_t / (1 - β1^t)

v_hat = v_t / (1 - β2^t)

θ_t = θ_{t-1} - α * m_hat / (sqrt(v_hat) + ε)

其中,m_t和v_t分别是一阶矩(梯度的均值)和二阶矩(梯度的未中心化方差)的指数移动平均值,β1和β2是衰减系数,α是学习率,ε是防止除0错误的小常数。

优点:既可以加速优化,又可以自动调整学习率,对于深度学习模型的优化效果较好。

缺点:需要人工设置初始学习率和两个衰减系数,调参较为复杂。Adam优化器的收敛性并不是单调的,这可能会导致在训练过程中出现波动,从而影响模型的性能和稳定性。Adam优化器在训练初期阶段对梯度的估计存在偏差,但通过偏差纠正可以降低其影响。然而,这种偏差纠正可能会带来额外的计算负担。根据"No Free Lunch Theorem",不同的优化算法在不同的问题上表现优异,没有一种优化算法是在所有问题上都表现最好的。这意味着,尽管Adam优化器在很多问题上表现出色,但也可能存在一些问题不太适合使用Adam优化器。

6. AdaMax

AdaMax是Adam的一个变种,它使用无穷范数来代替Adam中的L2范数,这样可以更好地处理稀疏梯度。

AdaMax优化器的参数更新公式如下:

m_t = β1 * m_{t-1} + (1 - β1) * g_t

u_t = max(β2 * u_{t-1}, abs(g_t))

θ_t = θ_{t-1} - α * m_t / u_t

其中,m_t是一阶矩的指数移动平均值,u_t是梯度的无穷范数,β1和β2是衰减系数,α是学习率。

优点:对稀疏梯度的优化效果较好。

缺点:需要人工设置初始学习率和两个衰减系数,调参较为复杂。AdaMax优化器的一个主要缺点是其对于非稀疏参数的优化效果可能不如Adam。此外,由于AdaMax使用无穷范数,所以在某些情况下,其可能会导致学习率过大,从而使优化过程变得不稳定。

7. Nadam

Nadam结合了Adam和Nesterov动量的优点,既有自适应学习率,又有Nesterov动量,可以更快地收敛。

Nadam优化器的参数更新公式如下:

m_t = β1 * m_{t-1} + (1 - β1) * g_t

v_t = β2 * v_{t-1} + (1 - β2) * g_t^2

m_hat = (β1 * m_t + (1 - β1) * g_t) / (1 - β1^t)

v_hat = v_t / (1 - β2^t)

θ_t = θ_{t-1} - α * m_hat / (sqrt(v_hat) + ε)

其中,m_t和v_t分别是一阶矩和二阶矩的指数移动平均值,β1和β2是衰减系数,α是学习率,ε是防止除0错误的小常数。

优点:可以更快地收敛,对于深度学习模型的优化效果较好。

缺点:需要人工设置初始学习率和两个衰减系数,调参较为复杂。Nadam优化器的一个主要缺点是其可能会导致训练过程中的震荡,尤其是在学习率较高的情况下。此外,由于Nadam结合了Adam和Nesterov动量,所以其可能会导致优化过程过于复杂,从而增加了计算负担。

8. AdamW

AdamW在Adam的基础上引入了权重衰减,可以更好地控制模型的复杂度,防止过拟合。

AdamW优化器的参数更新公式如下:

m_t = β1 * m_{t-1} + (1 - β1) * g_t

v_t = β2 * v_{t-1} + (1 - β2) * g_t^2

m_hat = m_t / (1 - β1^t)

v_hat = v_t / (1 - β2^t)

θ_t = (1 - λ * α) * θ_{t-1} - α * m_hat / (sqrt(v_hat) + ε)

其中,m_t和v_t分别是一阶矩和二阶矩的指数移动平均值,β1和β2是衰减系数,α是学习率,λ是权重衰减系数,ε是防止除0错误的小常数。

优点:可以有效地防止过拟合,对于深度学习模型的优化效果较好。

缺点:需要人工设置初始学习率、两个衰减系数和权重衰减系数,调参较为复杂。AdamW优化器的一个主要缺点是其可能会导致权重衰减过快,从而导致模型性能下降。此外,由于AdamW引入了权重衰减,所以其可能会导致优化过程过于复杂,从而增加了计算负担。

  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

samoyan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值