P4机器学习笔记--李宏毅

一、batchsize大小的差异

我们考虑batchsize的两个情况

1.当batchsize比较大时,每一次更新参数蓄力比较长并且稳定一些,好像每一步是比较稳的又好像花的时间会更长

2.当batchsize比较小时,每一次更新参数蓄力比较短不稳定一些,好像每一步是比较稳的又好像花的时间会更少

事实真的是这样吗?

时间上比较

由于GPU平行运算的缘故,大的batch_size不一定会比小的更慢,小的也不定比大的更快。

上图是竖轴是时间而横轴是batchsize的大小,可以看出由于并行运算的影响不一定大的慢小的快。当batch是1时和batch是1000时每次update参数的时间竟然是差不多的,这就导致小的batch updates次数更多反而花的时间更长了。

准确率比较

那么由于batchsize大的每一步更稳,那么准确率一定比小的高吗?那也是不一定的

上图竖轴为准确率横轴为batchsize大小,这样看来结果也不一定。上图是同一模型的测试结果,所以这不是overfitting造成的结果也不是model bias的问题,这是optimization的问题。当用大的batchsize的optimization时可能会有问题。

 当用Full Batch时由于只更新一次参数,那么你遇到gradient等于0的点时就会停下来。而用samll batch时你在第一次更新停下来的时候你在第二次有可能又会继续走下去。所以说小的反而效果会更好一些。

那什么时候是overfitting的问题呢?

 当你在training 时把大的和小的batch准确率都搞得差不多,但是在testing的时候,大的batch就不行了,这时候这种情况就是overfitting。 那为什么testing的时候小的效果更好呢?

 一种解释就是,我们认为一个local minima在峡谷里也就是sharp minima它是一个好localminima,而在平原上它是一个坏的minima。因为在training和testing有一个mismatch他们的function不一样因为他们得到的data不一样所以loss function会有一点差异,这时候平移时flat minima只会出现一点偏差而在sharp minima会出现大的偏差。而大的batch会更容易走到峡谷里而小的容易走到平原上因为小的一直更新参数很容易跳过峡谷。下面是比较图

二、对抗Critical point(驻点)的方法Momentum 

Momentum可以想象在一个物理世界中当一个球在驻点,它有可能不会停下来

普通的gradient descent方法是根据当前gradient 

而momentum会根据之前移动和当前的gradient一起计算方向

 

会受之前gradient影响

 

当冲到驻点或坡上的时候,如果之前的运动比当前影响大有可能还是会往前走 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值