随机梯度下降与动量详解

1. SGD图示

随机梯度下降


红色表示SGD的收敛路径,棕色表示梯度下降的收敛路径。普通的GD算法就是计算出每一时刻最陡的下降趋势(梯度),SGD在随机挑选某一分量的梯度方向进行收敛,详细解释可继续往下看。


2. SGD公式理解


注:这一部分引用自知乎用户Qi Qi,原回答链接

随机梯度下降主要用来求解类似于如下求和形式的优化问题:

f(x)=i=1nfi(w,xi,yi) f ( x ) = ∑ i = 1 n f i ( w , x i , y i )

普通梯度下降算法:

wt+1=wtηt+1f(wt)=wtηt+1i=1nfi(wt,xi,yi) w t + 1 = w t − η t + 1 ∇ f ( w t ) = w t − η t + 1 ∑ i = 1 n ∇ f i ( w t , x i , y i )

n n 很大时,每次迭代计算所有的会非常耗时。fi随机梯度下降的想法就是: 每次在 fi ∇ f i 随机选取一个计算代替如上的 f ∇ f ,以这个随机选取的方向作为下降的方向。

wt+1=wtηt+1fik(wt,xik,yik) w t + 1 = w t − η t + 1 ∇ f i k ( w t , x i k , y i k )

      由于 E[fik(wt,xik,yik)] E [ ∇ f i k ( w t , x i k , y i k ) ] = f(wt) ∇ f ( w t ) , 当选取学习率 ηt=O(1/t) η t = O ( 1 / t ) 时,算法在期望的意义下收敛。
      注意到在 wt w t 靠近极小值点 w w ∗ 时, f(w) ∇ f ( w ∗ ) ≠ 0,这导致随机梯度下降法精度低。由于方差的存在,要使得算法收敛,就需要 ηt η t 随t逐渐减小。因此导致函数即使在强凸且光滑的条件下,收敛速度也只有 O(1/T) O ( 1 / T ) . 后来提出的变种SAGSVRGSDCA都是在降方差,为了保证在 wt w t w w ∗ 时,方差趋于0。以上提到的几种变种都能达到线性收敛速度。


3. momentum 动量

“动量”这个概念源自于物理学,解释力在一段时间内作用所产生的物理量。我们没必要往复杂想,其实我们可以将动量约等于惯性。我们对惯性的基本理解就是: 当你跑起来,由于惯性的存在你跑起来会比刚起步加速的时候更轻松,当你跑过头,想调头往回跑,惯性会让你拖着你。
在普通的梯度下降法 w=w+v w = w + v 中,每次 x x 的更新量v

v=ηdw v = − η d w
当使用动量时,则把每次 x x 的更新量v考虑为本次的梯度下降量 ηdw − η d w 与上次 w w 的更新量v乘上一个介于[0, 1]的因子momentum的和,即 v v
vt=ηdw+vt1momentum

如果这一时刻更新度 vt v t 与上一时刻更新度 vt1 v t − 1 的方向相同,则会加速。反之,则会减速。加动量的优势有两点:
1. 加速收敛
2. 提高精度(减少收敛过程中的振荡)

  • 17
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木盏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值