[deep learning] Optimizer

  • 本文主要是用于介绍深度学习中常用的几种优化器
  • SGD:这是我们最常用的优化器之一。SGD其实有三个版本:
    • batch-SGD,他是一个epoch更新一次数据,这样子的缺点也是很明显的,对计算的要求大,不能实时增加数据。有冗余的信息。
    • SGD,每个sample更新一次梯度。这样子做的主要问题是网络可能难以收敛,波动较大。
    • Mini-batch SGD,这是我们现在最常用的,就是对一个batch内的数据计算平均梯度,再更新参数。
  • Momentum,主要是方式SGD陷入局部最优点(或鞍点)不能跳出来。相比于SGD,他引入来动量 v v v,来表示之前整个参数更新的趋势。下面是参数 θ \theta θ更新的过程。我们可以看到在计算更新的梯度的时候,我们加入来上一时刻的更新量 μ v t \mu v_{t} μvt,这样可以防止梯度突然变成0。

v t + 1 = μ v t − α ▽ f ( θ t ) θ t + 1 = θ t + v t + 1 v_{t+1} = \mu v_{t} - \alpha \triangledown f(\theta_t) \\ \theta_{t+1} = \theta_t + v_{t+1} vt+1=μvtαf(θt)θt+1=θt+vt+1

  • Momentum的改进,Nesterov’s Accelerate Gradient(NAG) 的更新过程如下所示。相比较于Momentum,他在计算动量的时候,计算的梯度不是当前点的梯度,而是用上一时刻动量更新过点的梯度。他们之间的不同如下图所示(还没看懂这个图)。
    v t + 1 = μ v t − α ▽ f ( θ t + μ v t ) θ t + 1 = θ t + v t + 1 v_{t+1} = \mu v_{t} - \alpha \triangledown f(\theta_t+\mu v_{t}) \\ \theta_{t+1} = \theta_t + v_{t+1} vt+1=μvtαf(θt+μvt)θt+1=θt+vt+1
    NAG
  • 待续
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值