机器学习-优化器:梯度下降法的原理及其优缺点

批量梯度下降法

在机器学习中,优化问题的目标函数通常可以表示成
在这里插入图片描述
其中, θ是待优化的模型参数 , x是模型输入, f ( x , θ ) f(x,θ) f(x,θ)的是模型的实际输出,y是模型的目标输出,函数 L 刻画了模型在数据 (x,y) 上的损失 p d a t a p_{data} pdata表示数据的分布, E表示期望。 因此 , L ( θ ) L(θ) L(θ)的刻画了当参数为 θ 时, 模型在所有数据上的平均损失。我们希望能够找到平均损失最小的模型参数,也就是求解优化问题
在这里插入图片描述
经典的梯度下降法采用所有训练数据的平均损失来近似目标函数,即
在这里插入图片描述
在这里插入图片描述
其中,M是训练样本的个数。模型参数的重新公式为
在这里插入图片描述
因此,经典的梯度下降法在每次对模型参数进行更新时,需要遍历所高的训练数据。当 M很大时,这需要很大的计算量 ,耗费很长的计算时间 ,在实际应用中基本不可行。

为了解决该问题,提出了随机梯度下降法。

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

随机梯度下降法每次用单个训练样本的损失来近似平均损失,即
在这里插入图片描述
因此,随机梯度下降法用单个训练数据即可对模型参数进行一次重新,大大加快了收敛速率。此方法也非常适用于数据源源不断到来的在线重新场景。

小批量梯度下降法( Mini-Batch Gradient Descent )

为了降低随机梯度的万差,从而使得迭代算法更加稳定,也为了充分利用高度优化的矩阵运算操作,在实际应用中我们会同时处理若干训练数据,该方法被称为小批量梯度下降法( Mini-Batch Gradient Descent )。假设需要同时处理 m 个训练数据 则目标函数及其梯度为
在这里插入图片描述
对于小批量梯度下降法的使用,有以下三点需要注意的地方:

( 1 )如何选取参数 m ?
在不同的应用中,最优的 m 通常会不一样,需要通过调参选取。一般 m 取 2 的幂次方时能充分利用矩阵运算操作,所以可以在 2 的幂次中挑选最优的取值,例如 32 、 64、 128 、 256 等。
( 2 )如何挑选 m 个训练数据?
为了避免数据的特定顺序给算法收敛带来的影响,一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,然后在每次迭代时按顺序挑选 m 个训练、数据直至遍历完所有的数据。
( 3 )如何选取学习速率α?
为了加快收敛速率,同时提高求解精度, 通常会采用衰减学习速率的方案 一开始算法采用较大的学习速率,当 误差曲线进入平台期后,减小学习速率做更精细的调整。最优的学习速率方案也通常需要调参才能得到。

综上,通常采用小批量梯度下降法解决训练数据量过大的问题。每次更新模型参数时,只需要处理 m 个训练数据即可,其中 m 是一个远小于总数据量 M的常数,这样能够大大加快训练过程。

随机梯度下降法失效的原因

深度学习中最常用的优化方法是随机梯度下降法,但是随机梯度下降法偶尔也会失效 ,无法给出满意的训练结果 , 这是为什么?

为了回答这个问题,我们先做一个形象的比喻。 想象一下,你正在下山 , 视力很好,能看清自己所处位置的坡度,那么沿着坡向下走,最终你会走到山底。如果你被蒙上双眼 ,只能凭脚底睬石头的感觉判断当前位置的坡度 , 精确性就大大下降,有时候你认为的坡 ,3实际上可能并不是坡,走上一段时间发现没有下山,或者曲曲折忻走了好多弯路才下山 。

类似地,批量梯度下降法( Batch Gradi ent Descent, BGD )就好比正常下山, 而随机梯度下降法就好比蒙着眼睛下山 。为了获取准确的梯度,批量梯度下降法的每步都把整个训练集载入进来进行计算,时间花费和内存开销部非常大,无法应用于大数据集、大模型的场景。相反, 随机梯度下降法则放弃了对梯度准确性的追求,每步仅仅随机采样一个(或少量)样本来估计当前梯度,计算速度快,内存开销小。但由于每步接受的信息量有限 ,随机梯度下降法对梯度的估计常常出现偏差,造成目标函数曲线收敛得很不稳定,
伴有剧烈波动,有时甚至出现不收敛的情况。 下图展示了两种方法在优化过程中的参数轨迹,可以看出,批量梯度下降法稳定地逼近最低点,而随机梯度下降;去的参数轨迹曲曲折折简直是 “黄河十八弯”。
在这里插入图片描述
进一步地,有人会说深度学习中的优化问题本身就很难,有太多局部最优点的陷阱。没错,这些陷阱对随机梯度下降法和批量梯度下降法都是普遍存在的 。 但对随机梯度下降法来说 , 可怕的不是局部最优点,而是山谷和鞍点两类地形。 山谷顾名思义就是狭长的山间小道,左右两 边是峭壁;鞍点的形状像是一个马鞍, 一个方向上两头翘,另一个方向上两头垂 , 而中心区域是一片近乎水平的平地。 为什么随机梯度下降法最害怕遇上这两类地形呢?在山谷中,准确的梯度方向是沿山道向下,稍有偏离就会撞向山壁,而粗糙的梯度估计使得它在两山壁间来回反弹震荡,不能沿山道方向迅速下降 ,导致收敛不稳定和收敛速度慢。在鞍点处,随机梯度下降法会走入一片平坦之地(此时离最低点还很远,故也称 plateau ) 。 想象一下蒙着双眼只凭借脚底感觉坡度 ,如果坡度很明显,那么基本能估计出下山的大致方向 , 如果坡度不明显,则很可能走错方向 。 同样,在梯度近乎为零的区域,随机梯度下降法无法准确察觉出梯度的微小变化, 结果就停滞下来。

下一节将介绍为了改进随机梯度下降法,研究者作出的改进,提出的新的优化方法 动量SGD、AdaGrad 以及Adam

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值