优化神经网络

mini-batch

在应用梯度下降训练神经网络时,常规的batch训练是一次遍历整个数据集,做一次梯度更新,那么样本量较大的情况下,网络迭代的速度就较慢,mini-batch,则是在每个epoch中,一次遍历mini-batch的样本量,做 b a t c h − s i z e / m i n i − b a t c h − s i z e batch-size/mini-batch-size batchsize/minibatchsize次梯度更新,这样可以加快网络参数更新的速度

当mini-batch-size = m时,叫做batch gradient descent(BGD),大样本情况下,单次迭代训练时间过长
当mini-batch-size = 1时,叫做stochastic gradient descent(SGD),虽然可以通过减小学习率降噪,但是失去了向量化的优势,也会使计算减慢

采用mini-batch 训练的一个问题是会产生梯度下降过程中的波动,如果想要使用一个较大的学习率的话,就要想办法减少梯度更新的波动,也就是后面介绍的以指数加权移动平均理论为基础的网络训练优化方法。

指数加权移动平均

指数加权平均是通过设置不同的权值参数来获得不同的移动平均值,以此作为新数据进行预测
当前时刻的EWMA只需要前一时刻的EWMA加上当前时刻的值,而不需要整个历史序列的数据来计算平均数,这样可以节省存储空间并简化计算

指数加权的由来:离当前时刻越远的值,其权值呈指数衰减,以 1 / e 1/e 1/e作为截止近似,即在权值为 β \beta β时,当前时刻往前推n时刻,权重衰减为原来的1/3,则以近n时刻数据的平均值作为该时刻的加权平均数
v t = β v t − 1 + ( 1 − β ) θ t = β ( β v t − 2 + ( 1 − β ) θ t − 1 ) + ( 1 − β ) θ t = ( 1 − β ) [ θ t + β θ t − 1 + β 2 θ t − 2 + . . . . ] + β t v 0 v_t = \beta v_{t-1}+(1-\beta) \theta_t =\beta (\beta v_{t-2}+(1-\beta) \theta_{t-1})+(1-\beta) \theta_t=(1-\beta)[\theta_t+\beta \theta_{t-1}+\beta^2 \theta_{t-2}+....]+\beta^tv_0 vt=βvt1+(1β)θt=β(βvt2+(1β)θt1)+(1β)θt=(1β)[θt+βθt1+β2θt2+....]+βtv0

偏差修正
在计算时,令 v 0 = 0 v_0=0 v0=0 ,则 v 1 = ( 1 − β ) θ 1 v_1 = (1-\beta) \theta_1 v1=(1β)θ1, v 2 = β ( 1 − β ) θ 1 + ( 1 − β ) θ 2 v_2 = \beta(1-\beta)\theta_1+(1-\beta)\theta_2 v2=β(1β)θ1+(1β)θ2
β \beta β值设置的比较大时,就会出现计算后的EWMA值头部数据较小,即产生了偏差修正的问题:用 v t 1 − β t ≈ v t \frac{v_t}{1-\beta^t }\approx v_t 1βtvtvt

Momentum 动量梯度下降法

d w , d b dw,db dw,db的EWMA值代替 d w , d b dw,db dw,db,实现动量加速的效果
v d w = β v d w + ( 1 − β ) d w v_{dw} = \beta v_{dw}+(1-\beta)dw vdw=βvdw+(1β)dw
v d b = β v d b + ( 1 − β ) d b v_{db} = \beta v_{db}+(1-\beta)db vdb=βvdb+(1β)db
w = w − α v d w w = w-\alpha v_{dw} w=wαvdw
b = b − α v d b b = b-\alpha v_{db} b=bαvdb
超参数 α , β = 0.9 \alpha,\beta=0.9 α,β=0.9

RMSprop(root mean square prop)

d w 2 , d b 2 dw^2,db^2 dw2,db2的加权移动平均,波动越大,所求得的EWMA值越大,在梯度更新时,除以该值,可以减小波动
s d w = β s d w + ( 1 − β ) d w 2 s_{dw} = \beta s_{dw}+(1-\beta) dw^2 sdw=βsdw+(1β)dw2
s d b = β s d b + ( 1 − β ) d b 2 s_{db} = \beta s_{db}+(1-\beta) db^2 sdb=βsdb+(1β)db2
w = w − α d w s d w + ϵ w = w-\alpha \frac{dw}{\sqrt s_{dw}+\epsilon} w=wαs dw+ϵdw
b = b − α d b s d b + ϵ b = b-\alpha \frac{db}{\sqrt s_{db}+\epsilon} b=bαs db+ϵdb
超参数 α , β = 0.999 , ϵ = 1 0 − 8 \alpha,\beta=0.999,\epsilon=10^{-8} α,β=0.999,ϵ=108

Adam(adaptive momentum estimation)

结合了momentum与rmsprop优化方法,适用于大多数网络的优化

初始化 v d w = 0 , v d b = 0 , s d w = 0 , s d b = 0 v_{dw}=0,v_{db}=0,s_{dw}=0,s_{db}=0 vdw=0,vdb=0,sdw=0,sdb=0,在迭代时,首先计算梯度 d w , d b dw,db dw,db

然后推算
v d w = β 1 v d w + ( 1 − β 1 ) d w v_{dw} = \beta_1 v_{dw}+(1-\beta_1)dw vdw=β1vdw+(1β1)dw
v d b = β 1 v d b + ( 1 − β 1 ) d b v_{db} = \beta_1 v_{db}+(1-\beta_1)db vdb=β1vdb+(1β1)db

s d w = β 2 s d w + ( 1 − β 2 ) d w 2 s_{dw} = \beta_2 s_{dw}+(1-\beta_2) dw^2 sdw=β2sdw+(1β2)dw2
s d b = β 2 s d b + ( 1 − β 2 ) d b 2 s_{db} = \beta_2 s_{db}+(1-\beta_2) db^2 sdb=β2sdb+(1β2)db2
梯度更新
w = w − α v d w s d w + ϵ w = w-\alpha \frac{v_{dw}}{\sqrt s_{dw}+\epsilon} w=wαs dw+ϵvdw
b = b − α v d b s d b + ϵ b = b-\alpha \frac{v_{db}}{\sqrt s_{db}+\epsilon} b=bαs db+ϵvdb

超参数 α , β 1 = 0.9 , β 2 = 0.999 , ϵ = 1 0 − 8 \alpha,\beta_1=0.9,\beta_2=0.999,\epsilon=10^{-8} α,β1=0.9,β2=0.999,ϵ=108

学习率衰减

随着时间变化慢慢降低学习率
1. α = 1 1 + d e c a y _ r a t e ∗ e p o c h _ n u m α 0 \alpha = \frac{1}{1+decay\_rate*epoch\_num}\alpha_0 α=1+decay_rateepoch_num1α0
超参数 d e c a y _ r a t e decay\_rate decay_rate

2. α = 0.9 5 e p o c h _ n u m α 0 \alpha = 0.95^{epoch\_num}\alpha_0 α=0.95epoch_numα0指数衰减

3. a l p h a = k e p o c h _ n u m α 0 alpha = \frac{k}{\sqrt epoch\_num}\alpha_0 alpha=e poch_numkα0

4.阶梯状衰减

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值