深度学习中的优化算法

本文详细探讨了深度学习中的优化算法,包括批量算法与小批量算法的使用原因、随机梯度下降及其变种(如SGD、动量SGD、Nesterov动量)、自适应学习率算法(AdaGrad、AdaDelta、RMSProp、Adam)、二阶近似方法(牛顿法、共轭梯度、BFGS、L-BFGS)以及批标准化的作用和实现。此外,还讨论了不同算法的鲁棒性和实际使用中的策略。
摘要由CSDN通过智能技术生成

梯度下降沿着整个训练集的梯度方向下降。可以使用随机梯度下降很大程度地加速,沿着随机挑选的小批量数据的梯度下降。

批量算法和小批量算法

使用小批量的原因

  • n个样本均值的标准差是σn√σn,其中σσ是样本值真实的标准差。分母n−−√n表明使用更多的样本来估计梯度的方法的回报是低于线性的。
  • 另一个促使从小数目样本中获得梯度的统计估计的动机是训练集的冗余。大量样本可能对梯度做出了非常相似的贡献。
  • 可能是由于小批量在学习过程中加入了噪声,它们会有一些正则化效果。

其他

  • 鲁棒性
    不同的算法使用不同的方法从小批量中获取不同的信息。有些算法对采样误差比其他算法更敏感,这通常有两个原因。一个是它们使用了很难在少量样本上精确估计的信息,另一个是它们以放大采样误差的方式使用了信息。
    基于梯度gg的更新方法通常相对鲁棒,并能使用较小的批量获得成功,如100。使用Hessian矩阵HH,计算如H−1gH−1g更新的二阶方法通常需要更大的批量,如10000。

  • 随机顺序
    小批量是随机抽取的这点也很重要。从一组样本中计算出梯度期望的无偏估计要求这些样本是独立的。在数据集中的顺序有很大影响的情况下,有必要在抽取小批量样本前打乱样本顺序。
    不以某种方式打乱样本顺序会极大地降低算法的性能。

  • 异步并行
    在计算小批量样本XX上最小化J(X)J(X)的更新时,同时可以计算其他小于样本上的更新。
  • 无重复样本,遵循真实泛化误差的梯度
    很多小批量随机梯度下降方法的实现都会打乱数据顺序一次,然后多次遍历数据来更新参数。第一次遍历,每个小批量样本都用来计算真实泛化误差的无偏估计。第二次遍历,估计将会是有偏的,因为重新抽取了已经用过的样本,而不是从和原先样本相同的数据生成分布中获取新的无偏的样本。
  • 在线学习中的SGD
    在线学习中,样本永远不会重复,每次更新的样本是从分布中采样获得的无偏样本。
  • 实际使用
    在实际使用中,除非训练集特别大,通常还是多次遍历训练集,额外的遍历会由于减小训练误差而得到足够的好处,以抵消其带来的训练误差和测试误差差距的增加。

基本算法

随机梯度下降SGD

SGD及其变种是深度学习中应用最多的优化算法。按照数据生成分布抽取m个小批量(独立同分布)样本,通过计算它们的梯度均值,我们可以得到梯度无偏估计。
这里写图片描述
SGD算法中的一个关键参数是学习率。在实践中,有必要随着时间的推移逐渐降低学习率。
将第k步迭代的学习率记作ϵkϵk。一般会线性衰减学习率直到第ττ次迭代:
ϵk=(1−α)ϵ0+αϵτϵk=(1−α)ϵ0+αϵτ
其中α=kτα=kτ。在ττ次迭代之后,一般使ϵϵ保持常数。
通常ϵτϵτ应设为大约ϵ0ϵ0的1%。
对于足够大的数据集,SGD可能会在处理整个训练集之前就收敛到最终测试集误差的某个固定容差范围内。
批量梯度下降在理论上比随机梯度下降有更好的收敛率。可以在学习过程中逐渐增大批量大大小,以此权衡批量梯度下降和随机梯度下降两者的优点。

带动量的SGD

指数加权平均数
vt=βvt−1+(1−β)θtvt=βvt−1+(1−β)θt
该公式利用过去11−β11−β项的θθ的加权平均来计算当前的vtvt
偏差修正
使用vt1−βtvt1−βt来对进行修正,当t比较大的时候,分母接近于1。
在机器学习中,一般不进行偏差修正,人们一般不使用初期的参数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值