深度学习中的batch size 以及learning rate参数理解
2017-05-26 19:44
591 查看
batch size 参数
https://www.zhihu.com/question/32673260在合理范围内,增大 Batch_Size 有何好处?
内存利用率提高了,大矩阵乘法的并行化效率提高跑完一次epoch(全数据集)所需要的迭代次数减小,对于相同数据量的处理速度进一步加快
在一定范围内,一般来说batch size越大,其确定的下降方向越准,引起的训练震荡越小
盲目增大batch size 有什么坏处
内存利用率提高了,但是内存容量可能撑不住了跑完一次epoch(全数据集)所需要的迭代次数减少,但是想要达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢
batch size 大到一定的程度,其确定的下降方向已经基本不再变化
fine tuning
http://bealin.github.io/2016/10/23/Caffe%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E2%80%94%E2%80%943Fine-tuning%E5%BE%AE%E8%B0%83%E7%BD%91%E7%BB%9C/fine tuning 流程
准备数据集(包括训练数据和测试数据)计算数据集的均值文件,因为某个特定领域的图像均值文件会跟ImageNet上的数据均值不太一样
修改网络最后一层的输出类别数,以及最后一层网络的名称,加大最后一层的参数学习速率
调整solver的配置参数
加载预训练模型的参数,启动训练
fine tuning 参数调整
一般fine tuning的方式,都是把learning rate(solver.prototxt)调低(为原来的十分之一),之后把训练模型的最后一层或者两层的学习速率调大一点————这就相当于,把模型的前面那些层的学习调低,使得参数更新的慢一点以达到微调的目的。但有可能会导致整个收敛速度变慢,因此还需要增加最大迭代次数。需要调节的参数(solver.prototxt)主要包括:
base_lr:初始学习率,这个是非常重要的一个参数;momentum:一般设置为0.9,如果base_lr特别低的话也可以设置为0.99或0.999等 weight_decay:默认0.005,可以适当调整,类似于正则化项;
lr_policy:学习率变化策略,常见的有fixed(固定), inv,step等,详细的说明见http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe
最后如果loss出现不收敛的情况,可以尝试一下以下几种方法:
调小solver里的初始学习率
数据量小的话,可以只对最后几层的权重进行调整,前面权重保持不变,即把前面的学习率置为0,一定程度上限制了激活的大小,这样就限制了某一过大的误差的影响,这样可以避免迭代方向出现过大的变化。
在GPU可承受的范围内调大batch_size的大小(贾扬清的解释:理论上batch小是不会影响收敛的。小batch主要的问题是在FC层的计算可能会不是很efficient,如果实在无计可施,可以试试 ;网上其他博主的解释:batch比较小 ,导致样本覆盖面过低,产生了非常多的局部极小点,在步长和方向的共同作用下,导致数据产生了震荡,导致了不收敛 )
相关文章推荐
- 深度学习 14. 深度学习调参,CNN参数调参,各个参数理解和说明以及调整的要领。underfitting和overfitting的理解,过拟合的解释。
- 深度学习 14. 深度学习调参,CNN参数调参,各个参数理解和说明以及调整的要领。underfitting和overfitting的理解,过拟合的解释。
- Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解
- 深度学习超参数简单理解------>learning rate,weight decay和momentum
- 吴恩达-深度学习笔记《改善深层神经网络:超参数调试、正则化以及优化》
- 深度学习超参数简单理解 learning rate,weight decay和momentum
- 深度学习第二课 改善深层神经网络:超参数调试、正则化以及优化 第三周超参数调试+Batch normalization笔记和作业
- Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解
- DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--Week1深度学习的实用层面
- 深度学习炼丹师的养成之路之——Batch size/Epoch/Learning Rate的设置和学习策略
- 深度学习超参数简单理解------>learning rate,weight decay和momentum
- 深度学习DeepLearning.ai系列课程学习总结:13. 超参数调优、Batch正则化理论及深度学习框架学习
- 深度学习Tracking(1)——Learning to Track at 100 FPS with Deep Regression Networks(代码理解)
- 【文献阅读】understanding deep learning requires rethinking generalization 理解深度学习需要重新思考一下“泛化”
- 深度学习的一些参数说明以及trick
- 深度学习论文理解2:on random weights and unsupervised feature learning
- 深度学习笔记-模型参数理解
- 深度学习笔记——Word2vec和Doc2vec训练实例以及参数解读
- 论文学习1----理解深度学习需要重新思考泛化Understanding deep learning requires rethinking generalization
- 深度学习之---batchsize与lr rate之间的关系以及批处理梯度下降法