线性回归之随机梯度下降法(Stochastic Gradient Descent,SGD)

通俗易懂

一个经典的例子就是假设你现在在山上,为了以最快的速度下山,且视线良好,你可以看清自己的位置以及所处位置的坡度,那么沿着坡向下走,最终你会走到山底。但是如果你被蒙上双眼,那么你则只能凭借脚踩石头的感觉判断当前位置的坡度,精确性就大大下降,有时候你认为的坡,实际上可能并不是坡,走一段时间后发现没有下山,或者曲曲折折走了好多路才能下山。

渐入佳境

批量梯度下降法(Batch Gradient Descent,BGD)就好比正常下山,而随机梯度下降法就好比蒙着眼睛下山,数学上的表达式为。

批量梯度下降法在全部训练集上计算准确的梯度,公式为
∑ i = 1 n ∇ θ f ( θ ; x i , y i ) + ∇ θ ϕ ( θ ) \sum_{i=1}^{n} \nabla_{\theta} f\left(\theta ; x_{i}, y_{i}\right)+\nabla_{\theta} \phi(\theta) i=1nθf(θ;xi,yi)+θϕ(θ)

其中 f ( θ ; x i , y i ) 表示在每个样本的损失函数, ϕ ( θ ) 为正则项。 随机梯度下降法则采样单个样本来估计当前的梯度,即 ∇ θ ​ f ( θ ; x i ​ , y i ​ ) + ∇ θ ​ ϕ ( θ ) 其中f\left(\theta ; x_{i}, y_{i}\right)表示在每个样本的损失函数,\phi(\theta) 为正则项。\\ 随机梯度下降法则采样单个样本来估计当前的梯度,即\\ ∇θ​f(θ;xi​,yi​)+∇θ​ϕ(θ) 其中f(θ;xi,yi)表示在每个样本的损失函数,ϕ(θ)为正则项。随机梯度下降法则采样单个样本来估计当前的梯度,即θf(θ;xi,yi)+θϕ(θ)

遇到的问题

进步地,有人会说深度学习中的优化问基本身就很难,有太多局部最优点的陷阱,没错,这些陷阱对于随机梯度下降法和批量梯度下降都是普遍存在的。但对随机梯度下降法来说,可怕的不是局部最优点,而是山谷和鞍点两类地形。山谷顾名思义就是狭长的山间小道,左右两边是峭壁;鞍点的形状像是一个马鞍,一个方向上两头翘, 另一个方向上两头垂,而中心区域是一片近乎水平的平地。为什么随机梯度下降法最害怕遇上这两类地形呢?在山谷中,准确的梯度方向是沿山道向下,稍有偏离就会撞向山壁,而粗糙的梯度估计使得它在两山壁间来回反弹震荡,不能沿山道方向迅速下降,导致收敛不稳定和收敛速度慢。在鞍点处,随机梯度下降法会走入一片平坦之地(此时离最低点还很远,故也称plateau)。想象一下蒙着双眼只凭借脚底感觉坡度,如果坡度很明显,那么基本能估计出下山的大致方向;如果坡度不明显,则很可能走错方向。同样,在梯度近乎为零的区域,随机梯度下降法无法准确察觉出梯度的微小变化,结果就停滞下来。

解决的思路

动量(Momentum)方法
为了解决随机梯度下降法山谷震荡和鞍点停滞的问题,我们做一个简单的思维实验。想象一下纸团在山谷和鞍点处的运动轨迹,在山谷中纸团受重力作用沿山道滚下,两边是不规则的山壁,纸团不可避免地撞在山壁上,由于质量小受山壁弹力的干扰大,从一侧山壁反弹回来撞向另一侧山壁,结果来回震荡地滚下;如果当纸团来到鞍点的一片平坦之地时,还是由于质属小,速度很快减为零。纸团的情况和随机梯度下降法遇到的问题面直如出一辙。直观地,如果换成一个铁球,当沿着山谷滚下时,不容易受到途中旁力的干扰,轨迹会更稳更直;当来到鞍点中心处,在惯性作用下继续前行,从而有机会冲出这片平坦的陷阱,因此,有了动量方法,模型参数的迭代公式为:
v t ​ = γ v t − 1 ​ + η g t ​ θ t + 1 = θ t ​ − v t ​ vt​=γvt−1​+ηgt​\\ \theta_{t+1}=θ_t​−v_t​ vt=γvt1​+ηgtθt+1=θtvt

具体来说,前进步伐 v t ,由两部分组成。一是学习速率 η 乘以当前估计的梯度 g t ;二是带衰减的前一次步伐 v t − 1 这里, 惯性就体现在对前一次步伐信息的重利用上。 类比中学物理知识,当前梯度就好比当前时刻受力产生的加速度, 前一次步伐好比前一 − 时刻的速度,当前步伐好比当前时刻的速度。 为了计算当前时刻的速度,应当考虑前一时刻速度和当前加速度共同作用的结果, 因此 v t ​直接依赖于 v t − 1 和 g t ,而不仅仅是 g t 。另外,衰减系数 γ 扮演了阻力的作用。 中学物理还告诉我们,刻画惯性的物理量是动量,这也是算法名字的由来。沿山谷滚下的铁球, 会受到沿坡道向下的力和与左右山壁碰撞的弹力。向下的力稳定不变,产生的动量不断累积, 速度越来越快;左右的弹力总是在不停切换,动量累积的结果是相互抵消,自然减弱了球的来回震荡。 因此,与随机梯度下降法相比,动量方法的收敛速度更快, 收敛曲线也更稳定,如下图示 具体来说,前进步伐 v_{t},由两部分组成。一是学习速率 η 乘以当前估计的梯度 g_{t} ;二是带衰减的前一次步伐 v_{t-1}这里,\\惯性就体现在对前一次步伐信息的重利用上。\\类比中学物理知识,当前梯度就好比当前时刻受力产生的加速度,\\前一次步伐好比前一-时刻的速度,当前步伐好比当前时刻的速度。\\为了计算当前时刻的速度,应当考虑前一时刻速度和当前加速度共同作用 的结果,\\因此v_{t}​直接依赖于v_{t -1}和 g_{t},而不仅仅是g_{t}。另外,衰减系数 γ扮演了阻力的作用。\\ 中学物理还告诉我们,刻画惯性的物理量是动量,这也是算法名字的由来。沿山谷滚下的铁球,\\会受到沿坡道向下的力和与左右山壁碰撞的弹力。向下的力稳定不变,产生的动量不断累积,\\速度越来越快;左右的弹力总是在不停切换,动量累积的结果是相互抵消,自然减弱了球的来回震荡。\\因此,与随机梯度下降法相比,动量方法的收敛速度更快,\\收敛曲线也更稳定,如下图示 具体来说,前进步伐vt,由两部分组成。一是学习速率η乘以当前估计的梯度gt;二是带衰减的前一次步伐vt1这里,惯性就体现在对前一次步伐信息的重利用上。类比中学物理知识,当前梯度就好比当前时刻受力产生的加速度,前一次步伐好比前一时刻的速度,当前步伐好比当前时刻的速度。为了计算当前时刻的速度,应当考虑前一时刻速度和当前加速度共同作用的结果,因此vt直接依赖于vt1gt,而不仅仅是gt。另外,衰减系数γ扮演了阻力的作用。中学物理还告诉我们,刻画惯性的物理量是动量,这也是算法名字的由来。沿山谷滚下的铁球,会受到沿坡道向下的力和与左右山壁碰撞的弹力。向下的力稳定不变,产生的动量不断累积,速度越来越快;左右的弹力总是在不停切换,动量累积的结果是相互抵消,自然减弱了球的来回震荡。因此,与随机梯度下降法相比,动量方法的收敛速度更快,收敛曲线也更稳定,如下图示

计算损失函数

梯度下降最简单的用法是计算损失函数(数据集中所有样本的损失均值) 关于模型参数的导数(在这里也可以称为梯度)。 但实际中的执行可能会非常慢:因为在每一次更新参数之前,我们必须遍历整个数据集。 因此,我们通常会在每次需要计算更新的时候随机抽取一小批样本, 这种变体叫做小批量随机梯度下降(minibatch stochastic gradient descent).

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tomorrowave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值