adadelta算法_从SGD到NadaMax,十种优化算法原理及实现

本文详述了优化算法的演变过程,从基本的SGD开始,逐步讲解Momentum、Nesterov Momentum、AdaGrad、RMSProp、AdaDelta、Adam、AdaMax、Nadam和NadaMax。每种算法通过公式解释原理,并展示了它们如何解决梯度下降的问题。特别地,AdaGrad和RMSProp在处理非凸函数时的改进,以及Adam和Nesterov Momentum的结合体Nadam的提出,都是为了更好地适应不同的学习率需求。文章还提供了相关算法的代码实现,帮助理解其工作方式。
摘要由CSDN通过智能技术生成

无论是什么优化算法,最后都可以用一个简单的公式抽象:

是参数,而
是参数的增量,而各种优化算法的主要区别在于对
的计算不同,本文总结了下面十个优化算法的公式,以及简单的Python实现:
  1. SGD
  2. Momentum
  3. Nesterov Momentum
  4. AdaGrad
  5. RMSProp
  6. AdaDelta
  7. Adam
  8. AdaMax
  9. Nadam
  10. NadaMax
  • SGD

虽然有凑数的嫌疑,不过还是把SGD也顺带说一下,就算做一个符号说明了。常规的随机梯度下降公式如下:

其中

是学习率,
是损失关于参数的梯度(有的资料中会写成
等形式),不过相比SGD,用的更多的还是小批量梯度下降(mBGD)算法,不同之处在于一次训练使用多个样本,然后取所有参与训练样本梯度的平均来更新参数,公式如下:

其中

是第
次训练中
个样本损失关于参数梯度的均值,如无特别声明,下文所出现
也遵循该定义

另外

或者
在下面的优化算法中,只是作为一个传入的变量,其具体的计算是由其他模块负责,可以参考下面两个链接:
永远在你身后:Numpy实现神经网络框架(3)——线性层反向传播推导及实现​zhuanlan.zhihu.com
永远在你身后:卷积核梯度计算的推导及实现​zhuanlan.zhihu.com
  • Momentum

Momentum,也就是动量的意思。该算法将梯度下降的过程视为一个物理系统,下图是在百度图片中找的(侵删)

bea1bf3fda5d30a68139e905f8f48a0d.png
图片来自网络

如上图所示,在该物理系统中有一个小球(质点),它所处的水平方向的位置对应为

的值,而垂直方向对应为损失。设其质量
,在第
时刻,在单位时间内,该质点受外力而造成的动量改变为:

(1.1)到(1.2)是因为

,所以约去了。另外受到的外力可以分为两个分量:
重力沿斜面向下的力
粘性阻尼力

代入(1.2)式中:

然后对“位置”进行更新:

所以这里

,另外
的方向与损失的梯度方向相反,并取系数为
,得到:

代入(1.4),得到速度的更新公式:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值