随机梯度下降算法

本文深入探讨了梯度下降算法,包括其计算困难、学习率选择问题以及随机梯度下降法的优化策略。重点讲述了批量、随机和小批量梯度下降的差异,并介绍了动量法、Nesterov、Adagrad、Adadelta和Adam等优化算法,旨在帮助读者更好地理解和应用这些算法。
摘要由CSDN通过智能技术生成

主要内容:提供不同算法的原理以及效果直观展示,并希望读者能够在实际问题中更合理的选用梯度下降类算法。
目录:
1.简介梯度下降法
2.随机梯度下降
3.随机梯度下降的问题与挑战
4.随机梯度下降的优化算法(主要内容)

梯度下降算法的困难之处:
1.梯度的计算
在机器学习和统计参数估计问题中目标函数经常是求和函数的形式
J x ( θ ) = ∑ i J x i ( θ ) J_x (\theta)= \sum_{i} J_{x_i}(\theta) Jx(θ)=iJxi(θ)

其中每一个函数都对应一个样本
当样本极大时,梯度的计算就变得非常耗时耗力。
2.学习率的选择
学习率选择过小会导致算法收敛太慢,学习率选择过大容易导致算法不收敛

如何选择学习率需要具体问题具体分析:

  1. 局部梯度的反方向不一定是函数整体下降的方向
    对图像比较崎岖的函数,尤其是隧道型曲面,梯度下降表现不佳对图像比较崎岖的函数,尤其是隧道型曲面,梯度下降表现不佳
  2. 预定学习率衰减法的问题
    学习率衰减法很难根据当前数据进行自适应
  3. 对不同参数采取不同的学习率的问题
    在数据由一定稀疏性时,希望对不同特征采取不同的学习率
  4. 神经网络训练中梯度下降法容易被困在鞍点附近的问题
    比起局部极小值,鞍点更加可怕

为什么不用牛顿法?
牛顿法要求计算目标函数的二阶导数,在高维特征情形下这个矩阵非常巨大,计算和存储都成问题
在使用小批量情形下,牛顿法对于二阶导数的估计噪声太大
在目标函数非凸时,牛顿法更容易受到鞍点甚至最大值点的吸引

随机梯度下降法主要为了解决第一问题:梯度计算
由于随机梯度下降的引入,我们通常将梯度下降法分为三种类型:
1.批量梯度下降法(GD)
原始的梯度下降法
2.随机梯度下降法(SGD)
每次梯度计算只使用一个样本

  • 避免在类似样本上计算梯度造成的冗余计算
  • 增加了跳出当前的局部最小值的潜力
  • 在逐渐缩小学习率的情况下,由于批梯度下降法类似的收敛速度

3.小批量随机梯度下降法(Mini Batch SGD)
每次梯度计算使用一个小批量样本

  • 梯度计算比单样本更加稳定
  • 可以很好的利用县城的高度优化的矩阵运算工具

动量法(Momentum)(适用于隧道型曲面)
动量法每次更新都吸收一部分上次更新的余势:
V t = γ V t − 1 + δ ∇ θ J ( θ ) V_t=\gamma V_{t-1} +\delta\nabla \theta J(\theta) Vt=γVt1+δθJ(θ) θ t = θ t − 1 − V t \theta_t= \theta_{t-1} -V_{t} θt=θt1Vt
这样主体方向的更新就得到了更大的保留,从而效果被不断放大。
物理上这就像是推一个很重的铁球下山,因为铁球保持了下山主体方向的动量,所以在隧道伤沿两侧震荡侧次数就会越来越少。

Nesterov(动量法的改进算法)
动量法的一个问题在于:从山顶退下的铁球会越滚越快,以至于到了山底停不下来。我们希望算法更加聪明一些,可以在到达底部之前就自己刹车。
利用主题下降方向提供的先见之明,预判自己下一步的位置,并到预判位置计算梯度。
v t = γ v t − 1 + δ ∇ θ J ( θ − v t − 1 ) v_t=\gamma v_{t-1}+\delta {\nabla \theta} J(\theta - v_{t-1}) vt=γvt1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值