2-2. 改善深层神经网络

MiniBatch M i n i − B a t c h

1. 简述

所谓$mini-batch$,就是将整个样本集划分成很多个小的样本集。

2. 两个概念

  • . Batch gradient descent B a t c h   g r a d i e n t   d e s c e n t :相当于大小为m (m为样本数量)的mini-batch
  • . stochastic gradient descent s t o c h a s t i c   g r a d i e n t   d e s c e n t :相当于大小为1 的mini-batch

3. 为Mini-Batch选择合适的大小

3-1. 为什么要选择合适的大小

如果直接用 Batch gradient descent B a t c h   g r a d i e n t   d e s c e n t 的话,一次迭代( iteration i t e r a t i o n ) 花的时间太长了;而大小太小的话( Stochastic gradient descent 如 S t o c h a s t i c   g r a d i e n t   d e s c e n t ),则丧失了很多向量化 带来的加速。所以我们要选择合适的大小。

3-2. 如何选择大小

考虑到电脑的内存设置和使用方式,建议选择为2的整数次方,这样代码运行更快。一般我们将其size设置为64,128,256,512。1024的话就有点过大了。

最后还要注意要符合CPU/GPU的内存方式,否则结果会惨不忍睹。

4. 指数加权(移动)平均数

  • vt¯¯¯¯=βvt1¯¯¯¯¯¯¯¯¯+(1β)vt v t ¯ = β ⋅ v t − 1 ¯ + ( 1 − β ) ⋅ v t
  • vtaverageing over 11β days v t ≈ a v e r a g e i n g   o v e r   1 1 − β   d a y s
  • β β 越大,曲线越平缓,但对新数据适应得也越慢; β β 越小,曲线对新数据的适应越灵敏,但可能会出现很多噪音。
  • 偏差修正: vt¯¯¯¯1βt v t ¯ 1 − β t 。主要可以帮助我们修正早期的偏差。

5. 动量梯度下降法( Gradient descent with momentum G r a d i e n t   d e s c e n t   w i t h   m o m e n t u m )

5-1. 为什么要用动量梯度下降法

由于采用mini batch会使得我们的代价函数在接近最小值的过程中不断摆动,所以我们不能将学习率(learning rate)设置得太大,因为这在加大迈向最小值的过程(下称“横向”)中也增大了摆动(“纵向”)的幅度。于是我们要找的一个方法能够在减小纵向幅度的同时,增大横向步长。

5-2. 动量梯度下降法的过程

在进行动量梯度下降法时,我们对每一个mini batch进行一次梯度下降,我感觉大致上可以理解为把对每一个mini batch进行一次 Batch gradient descent B a t c h   g r a d i e n t   d e s c e n t 。具体过程如下:

On each iteration t:Compute dW, db on current MinibatchvdW=βvdW+(1β)dWvdb=βvdb+(1β)dbW=WαvdW, b=bαvdb O n   e a c h   i t e r a t i o n   t : C o m p u t e   d W ,   d b   o n   c u r r e n t   M i n i − b a t c h v d W = β ⋅ v d W + ( 1 − β ) ⋅ d W v d b = β ⋅ v d b + ( 1 − β ) ⋅ d b W = W − α ⋅ v d W ,   b = b − α ⋅ v d b

6. RMSprop( Root Mean Square Prop R o o t   M e a n   S q u a r e   P r o p )

这个算法的原理我还不是很明白,好像是说W,b是两个高维空间,它在某些维度上摆动较大,我们需要减小;而在某些维度上我们又希望它有比较大的步长,所以我们在梯度下降的时候给 vdW v d W vdb v d b 除以一个 SdW S d W Sdb S d b 来做相应的调整。

On each iteration t:Compute dW, db on current MinibatchSdW=β2SdW+(1β2)dW2Sdb=β2Sdb+(1β2)db2W=WαvdWSdW+ϵ, b=bαvdbSdb+ϵ O n   e a c h   i t e r a t i o n   t : C o m p u t e   d W ,   d b   o n   c u r r e n t   M i n i − b a t c h S d W = β 2 ⋅ S d W + ( 1 − β 2 ) ⋅ d W 2 S d b = β 2 ⋅ S d b + ( 1 − β 2 ) ⋅ d b 2 W = W − α ⋅ v d W S d W + ϵ ,   b = b − α ⋅ v d b S d b + ϵ

其中\epsilon是用来防止分母为零而加的一个特别小的数,大约为10^{-8}

7. Adam 优化算法( Adaptive Moment Estimation A d a p t i v e   M o m e n t   E s t i m a t i o n

Adam算法相当于是把上面两个算法结合起来,其优越性更加明显,并且适应范围非常广。

On each iteration t:Compute dW, db on current MinibatchvdW=β1vdW+(1β1)dW,  vdb=βvdb+(1β)dbSdW=β2SdW+(1β2)dW2,  Sdb=β2Sdb+(1β2)db2VcorrectdW=vdW1βt1,  Vcorrectdb=vdb1βt1ScorrectdW=SdW1βt2,  Scorrectdb=Sdb1βt2W:=WαVcorrectdWScorrectdW+ϵ,  b:=bαVcorrectdbScorrectdb+ϵ O n   e a c h   i t e r a t i o n   t : C o m p u t e   d W ,   d b   o n   c u r r e n t   M i n i − b a t c h v d W = β 1 ⋅ v d W + ( 1 − β 1 ) ⋅ d W ,     v d b = β ⋅ v d b + ( 1 − β ) ⋅ d b S d W = β 2 ⋅ S d W + ( 1 − β 2 ) ⋅ d W 2 ,     S d b = β 2 ⋅ S d b + ( 1 − β 2 ) ⋅ d b 2 V d W c o r r e c t = v d W 1 − β 1 t ,     V d b c o r r e c t = v d b 1 − β 1 t S d W c o r r e c t = S d W 1 − β 2 t ,     S d b c o r r e c t = S d b 1 − β 2 t W := W − α ⋅ V d W c o r r e c t S d W c o r r e c t + ϵ ,     b := b − α ⋅ V d b c o r r e c t S d b c o r r e c t + ϵ

      We recommend:             W e   r e c o m m e n d :
αneedstobetuneβ1=0.9β2=0.999ϵ=108(not important) α : n e e d s t o b e t u n e β 1 = 0.9 β 2 = 0.999 ϵ = 10 − 8 ( n o t   i m p o r t a n t )

8. 学习率衰减( Learning rate decay L e a r n i n g   r a t e   d e c a y

当我们的参数值逐渐趋向最优点或者说我们的代价函数逐渐趋于最小值时,我们希望这时的学习率变小一些来使得我们的结果能更精确地收敛与最优解附近。
具体的方法有很多,这里列举一些:

α=11+decayrateepochnumα=0.95epochnumα0α=kepochnumα0    α = 1 1 + d e c a y − r a t e ⋅ e p o c h − n u m α = 0.95 e p o c h − n u m ⋅ α 0 α = k e p o c h − n u m ⋅ α 0 ⋅   ⋅   ⋅  

9. 局部最优问题

这一部分我们主要面临两个问题:

  • 在有多个局部最优解的情况下,如果我们被困在了某一个极差的最优解上,该怎么办?
    事实上,由于我们所要优化的参数是一个维数极高的空间,在如此之多的元素影响下我们很难被困在某个极差的局部最优解上。
  • 当我们的函数走进了一个平缓段导致优化速率大大降低,该怎么办?
    实际上这
    也正是Momentum和Adam算法可以加速算法的地方。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值