Batch 和 Momentum 训练技巧

Batch 

Batch 当初解释过,一次epoch遍历完所有的training set,由于Batch的存在,在一次epoch中要分为多次batch进行训练学习,目的是我们在一次epoch中可以进行多次优化,从而更快地找到最优参数值。

shuffle 在Batch中的作用:

在每一次epoch开始之前,会分Batch

而每一epoch的Batch都是不一样的

就是说,第一次epoch的batch是那样的,第二次epoch的batch会重新对batch进行分配

所以,每个epoch中batch的资料都是不一样的

 为什么要用Batch 呢?

首先、我们要知道,由于GUP的出现,在进行update时,

Large Batch(稍微大)所需要的时间 \approx small Batch所花费的时间

其次,当Batch越来越大时,一次update所花费的时间会快速上升。

这告诉我们,Batch size 的选择也是一种技术。

在GPU的前提下,但time for one update 与 time for one epoch 正好相反(符合逻辑)

 那就说明Batch size在1000左右就是完美了吗?

并不!

small Batch在training acc 中往往表现比较出色的(这完全和我们想的不一样嘞)

Batch对Training带来怎样的影响呢?

如下图所示:

左右两个表格使用是同一个模型,同一个network,按理说他们所表示的function是一样的

但神奇的是,大的batch size在training中,会带来差的结果

出现此结果的原因 当batch size过大时,Optimization出现了问题

 那么 为什么smal batch 有利于training呢?

如下图所示:

因为,当small batch时,一次epoch就会进行多次update,每次update的L_{i}都不一样

所以,当L_{1}在某点中stuck(即在该点中的gradient=0)

并不代表该点在L_{2}就会stuck,相反还会正常求取该点在L_{2}​​​​​的gradient,并进行update

 

 并且,Small Batch 在Testting Acc 中也是优于 Large Batch(记住此结论即可)

理由有,但此种解释还要进一步探究。关于视频讲解--定位到17:19

如下图,就是对Batch size small or large 总结: 

S

  Momentum -  可以对抗Saddle Point 或 Local minima的技巧

首先,我们先回顾之前的梯度递减(Gradient Descent)

每次计算出gradient,\theta就按照gradient反方向进行移动

 其次,研究Gradient Descent +  Momentum

 对于Momentum的另一种解读:如下图

 我们update方向,不只是考虑现在的gradient,而是考虑过去所有gradient综合 

 如果对于上图不是很理解,我们将Momentum 进行形象化,如下图所示。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值