机器学习之优化算法学习总结

本文介绍了机器学习和深度学习中优化算法的发展历程,从SGD到Nadam,详细解析了每种算法的特点及适用场景,帮助读者理解不同算法之间的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

优化算法演化历程

机器学习和深度学习中使用到的优化算法的演化历程如下:
SGD –> Momentum –> Nesterov –> Adagrad –> Adadelta –> Adam –> Nadam

1  表1  优化算法演化过程及其原因
演化过程原因
SGD –> Momentum由于SGD在优化过程中容易产生震荡,为减小震荡,Momentum在梯度下降过程中引入了动量,使之具有惯性
Momentum –> Nesterov对梯度项进行矫正,使梯度下降方向由积累的动量和假设走到下一步的梯度两部分决定的
Nesterov –> AdagradAdagrad中引入二阶动量,使之能够自适应调节学习率
Adagrad –> Adadelta由于Adagrad 使用了之前所有梯度的平方,会导致训练到后面梯度为0,因此,在Adadelta中只用前面一段时间的下降梯度的配方
Adadelta –> Adam在梯度更新中,使用了动量,并且能够自适应调节学习率
Adam –> Nadam引入了Nesterov 动量项

各优化算法的公式与特点

SGD

公式:

  • θ=θηθJ(θ)θ=θ−η∇θJ(θ)

特点:

  • 仅由当前所在的梯度来决定参数如何更新
  • 梯度下降过程中容易出现震荡

Momentum

公式:

  • mt=μmt1+ηθJ(θ)mt=μ∗mt−1+η∇θJ(θ)
  • θt=θt1mtθt=θt−1−mt

特点:

  • 引入动量,减小SGD在梯度下降过程中的震荡
  • 梯度下降过程中,之前的动量也对当前运动有影响

Nesterov

公式:

  • mt=μmt1+ηθJ(θμmt1)mt=μ∗mt−1+η∇θJ(θ−μ∗mt−1)
  • θt=θt1mtθt=θt−1−mt

特点:

  • 在Momentum优化算法的基础上,对当前梯度值进行矫正
  • 矫正方式为,假设参数往积累的动量方向走了一步时所在位置的梯度作为当前的梯度值

Adagrad

公式:

  • gt=θJ(θ)gt=∇θJ(θ)
  • nt=nt1+(gt)2nt=nt−1+(gt)2
  • θt=θt1ηnt+ϵgtθt=θt−1−ηnt+ϵ∗gt

特点:

  • 适合用于稀疏梯度
  • 前期梯度下降较快,后期梯度下降较慢
  • 具有自适应学习率
  • 训练后期,由于梯度累计较大,会使训练提前结束

Adadelta

公式:

  • gt=θJ(θ)gt=∇θJ(θ)
  • nt=vnt1+(1v)(gt)2nt=v∗nt−1+(1−v)∗(gt)2
  • θt=θt1ηnt+ϵgtθt=θt−1−ηnt+ϵ∗gt

特点:

  • 在Adagrad基础上,减小提前结束训练的风险

Adam

公式:

  • mt=μmt1+(1μ)θJ(θ)mt=μ∗mt−1+(1−μ)∇θJ(θ)
  • nt=vnt1+(1v)(gt)2nt=v∗nt−1+(1−v)∗(gt)2
  • mt^=mt1μtmt^=mt1−μt
  • nt^=nt1vtnt^=nt1−vt
  • θt=θt1mt^ηnt^+ϵgtθt=θt−1−mt^∗ηnt^+ϵ∗gt

特点:

  • Adam梯度经过偏置校正后,每一次迭代学习率都有一个固定范围,使得参数比较平稳
  • 结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点
  • 为不同的参数计算不同的自适应学习率
  • 也适用于大多非凸优化问题——适用于大数据集和高维空间

各优化算法的分类

2  表2  各优化算法的分类
梯度修正优化算法
没进入动量,且不具有自适应学习率BGD、SGD
引入动量Momentum、Nesterov
自适应学习率Adagrad、Adadelta、RMSprop
引入动量且自适应学习率Adam、Adamx、Nadam

优化算法使用总结

  • 在不考虑优化算法的使用细节及其技巧的情况下,一般使用Adam
  • 虽然后面的优化算法都是在SGD上改进而来,但是目前很多paper依旧使用SGD
  • 一般在训练时,数据都要进行shuffle
  • 几种优化算法并不一定哪一个绝对好,视模型和数据而定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值