神经网络优化方法

0. 参考

72 优化算法
王木头学科学
简单认识Adam优化器

1. 梯度下降法

需要计算训练集全部 n n n 个样本的损失 L = 1 n ∑ i = 1 n l o s s ( y i , y ^ i ) L=\frac{1}{n}\sum_{i=1}^nloss(y_i, \hat{y}_i) L=n1i=1nloss(yi,y^i),进行梯度下降法优化。
W → W − η ∇ L ( W ) W \to W-\eta \nabla L(W) WWηL(W)
η \eta η 为学习率。

2. 随机梯度下降法(SGD)

由于梯度下降法每次把训练集全部样本计算损失,计算量太大,随机梯度下降法就是每次随机取一个数据近似损失,然后进行梯度下降。
虽然有噪音,但是对于凸问题来说,经过 k k k 次训练后,SGD 能达到的误差量级为 O ( 1 k ) O(\frac{1}{\sqrt{k}}) O(k 1);对于强凸问题误差量级为 O ( 1 k ) O(\frac{1}{k}) O(k1)

3. ★小批量随机梯度下降法(Mini-batch SGD)

随机挑小批量进行训练,充分利用硬件资源。

4. 冲量法(Momentum)

使用平滑过的梯度对权重更新
V t = β V t − 1 + ( 1 − β ) ∇ L ( W t − 1 ) W t = W t − 1 − η V t V_t = \beta V_{t-1} + (1-\beta)\nabla L(W_{t-1}) \\ W_t = W_{t-1}-\eta V_t Vt=βVt1+(1β)L(Wt1)Wt=Wt1ηVt
第一个式子的方法叫指数加权移动平均法。 β \beta β 常取值 [ 0.5 , 0.9 , 0.95 , 0.99 ] [0.5, 0.9, 0.95, 0.99] [0.5,0.9,0.95,0.99]

5.★ Adam(Adaptive Moment Estimation)

Adam 对梯度做平滑,而且对梯度的各个维度值做重新调整。

首先,计算梯度的指数移动平均数, V 0 V_0 V0 初始化为 0 0 0,类似于Momentum算法,综合考虑之前时间步的梯度动量, β 1 \beta_1 β1 为指数衰减率,控制权重分配(动量与当前梯度),通常取 0.9 0.9 0.9
V t = β 1 V t − 1 + ( 1 − β 1 ) ∇ L ( W t − 1 ) V_t=\beta_1 V_{t-1}+(1-\beta_1)\nabla L(W_{t-1}) Vt=β1Vt1+(1β1)L(Wt1)

其次,计算梯度平方的指数移动平均数, S t S_t St 初始化为 0 0 0 β 2 \beta_2 β2 为指数衰减率,控制之前的梯度平方的影响情况,一般取 0.999 0.999 0.999
S t = β 2 S t − 1 + ( 1 − β 2 ) ∇ L 2 ( W t − 1 ) S_t = \beta_2 S_{t-1} + (1-\beta_2) \nabla L^2(W_{t-1}) St=β2St1+(1β2)L2(Wt1)

第三,由于 V 0 V_0 V0 初始化为 0 0 0,会导致 V t V_t Vt 偏向于 0 0 0,尤其在训练初期阶段。所以,此处需要对梯度均值 V t V_t Vt 进行偏差纠正,降低偏差对训练初期的影响:
修 正 V ^ t = V t ( 1 − β 1 t ) 修正\hat{V}_t = \frac{V_t}{(1-\beta_1^t)} V^t=(1β1t)Vt

第四,与 V 0 V_0 V0 类似,因为 S 0 S_0 S0 初始化为 0 0 0 导致训练初始阶段 S t S_t St 偏向 0 0 0,对其进行修正:
修 正 S ^ t = S t ( 1 − β 2 t ) 修正\hat{S}_t=\frac{S_t}{(1-\beta_2^t)} S^t=(1β2t)St

第五,更新参数,初始的学习率 α \alpha α 乘以梯度均值与梯度方差的平方根之比, ϵ \epsilon ϵ 一般取一个很小的值防止除数为 0 0 0
W t = W t − 1 − α V ^ t S ^ t + ϵ W_t = W_{t-1} - \alpha \frac{\hat{V}_t}{\sqrt{ \hat{S}_t}+\epsilon} Wt=Wt1αS^t +ϵV^t

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哇咔咔负负得正

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

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

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

打赏作者

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

抵扣说明:

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

余额充值