本文主要是介绍选取训练神经网络时的Batch size ,BatchNorm,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
BatchNorm
优点:对于隐藏层的每一层输入,因为经过激活函数的处理,可能会趋向于大的正值和负值,容易出现梯度下降和梯度消失。所以强行拉回到服从均值为0,方差为1的标准正态分布,避免过拟合
缺点:正是因为这种强行改变分布的手段,使得隐层输入和原始数据分布差异太大,如果数据量不大时,容易欠拟合。可能不用更好一些
https://www.zhihu.com/search?type=content&q=batchnorm
BatchNorm的原理及代码实现
结论:
- batch size 一般为2的幂次方,128为分位线,向下(乘以0.5)或向上(乘以2)测试效果,若向下效果继续,乘以0.5,直指结果不再变好,数值范围一般在:2到512.有论文说最好的实验表现都是在batch size处于2~32之间得到的
- 一阶优化算法:sgd,adam等,一般Batch size比较小.二阶优化算法:共轭梯度法,L-BFGS等需要二阶导数,太小,对二阶导数误差累积太大,所以需要只比较大,可以几千到两万
- batch size 初衷是为了解决内存不够问题,但是却带来了跳出局部最优的增益,因为小批量数据对梯度带来了噪音,相对于完成梯度来说,每步更新的梯度下降了,但是总体来说,却避免了局部最优
- 大批量的batchsize 等价于小的学习率
- 小batch训练的稳定性较差。小batch确实有这个缺点,而且对设置学习速率有更高的要求,否则可能引起恶性的震荡无法收敛。但是小batch的优点仍然是显著的,DL书里建议使用逐步增加的batch size来兼并两者的优点。
参考文献
怎么选取训练神经网络时的batch size
深度学习的跃进来源于不同技术的组合:层、梯度更新方式、初始化方式、非线性、目标函数、正规项
这篇关于选取训练神经网络时的Batch size ,BatchNorm的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!