【中短文--深度学习笔记】Batchsize的选择、批量归一化、loss是否已经收敛(更新中-ing)

一、如何选择合适的Batchsize?

如果你没有任何参考,那么选择2的n次方(即64、128、256、512、1024等)可以会更加直接和易于管理。而对于上限来说,batchsize大小最好<=数据集样本数*0.1

why?

梯度下降算法

        在更新模型参数时,我们一般会用到梯度下降算法。这个时候,我们就会有一个问题,每次拿多少训练样本进行更新参数呢?

        这个时候有两个极端情况:
        (1)资源够,把所有数据都丢进去,我们称之为批量梯度下降法(Batch Gradient Descent,BGD)。
        (2)另外一个极端,每次都拿一个数据去训练,此时我们称之为随机梯度下降法(Stochastic Gradient Descent,SGD)。
        批量梯度下降法(BGD)的好处是稳定下降,loss下降得也快,但容易到极小值;而随机梯度下降法(SGD)的梯度上引入了随机噪声,因此在非凸优化问题中,其相比批量梯度下降更容易逃离局部最小值

        如果拿不同的批量来训练模型来做图像识别问题,实验结果如图所示,横轴是批量大小,纵轴是正确率。结果是可能出乎一部分人的意料:批量大小越大,验证集准确率越差。 这个是优化的问题,大的批量大小优化可能会有问题,小的批量大小优化的结果反而是比较好的。

我很赞同一种说法——有噪声可能是一种好事

        有可能存在的解释是,批量梯度下降法因为沿着一个损失函数,所以比较容易出现局部极小值或者鞍点。而小批量梯度下降法每次都是挑一次批量计算损失,所以每一次更新参数的时候所使用的损失函数是有差异的

        选到第一个批量的时候,用L1计算梯度;选到第二个批量的时候,用L2计算梯度。
        假设用L1算梯度的时候,梯度是零,就会卡住。但L2的函数跟L1又不一样,L2不一定会卡住,可以换下个批量的损失L2计算梯度,模型还是可以训练,还是有办法让损失变小,所以这种有噪声的更新方式反而对训练其实是有帮助的。

On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima 中,作者在不同数据集上训练了六个网络(包括全连接网络、不同的卷积神经网络),在很多不同的 情况都观察到一样的结果。
        在小的批量中,一个批量里面有256笔样本。在大的批量中,批量大小等于数据集样本数乘0.1,大的批量跟小的批量的训练准确率(accuracy)差不多。 但就算是在训练的时候结果差不多,测试的时候,大的批量比小的批量差,代表过拟合。


二、批量归一化的好处


三、我们是怎样判断模型的loss已经收敛的? 


最后,附上学习参考(更新中-ing):


理清一些可能被忽视但重要的知识点 ,更有助于我们进步。
希望和你一起打好基础,稳步进步。
你的点赞、评论和关注是对我最大的支持 ~ 谢谢!

上一篇:ES6语法有哪些


下一篇:QToss——基于.NET架构的跨境电商的工具,助力企业实现智能数据营销