深度学习学习笔记——BatchSize与LR

主要参考:
【AI不惑境】学习率和batchsize如何影响模型的性能?
深度学习中的batch的大小对学习效果有何影响?
学习率直接影响模型的收敛状态,batchsize则影响模型的泛化性能
一般batch_size增大,LR也相应增大,这是因为要保证经过同样的样本后更新的权重相等。

深度学习学习笔记——BatchSize与LR_第1张图片
图片来源:github上对faster rcnn的源码

一、学习率

学习率决定了权重迭代的步长,因此是一个非常敏感的参数,它对模型性能的影响体现在两个方面 ,第一个是初始学习率的大小,第二个是学习率的变换方案。

学习率在模型的训练过程中很少有不变的,通常会有两种方式对学习率进行更改,一种是预设规则学习率变化法,一种是自适应学习率变换方法。

1.预设规则学习率变化方法: 固定步长、指定步长、指数衰减、cyclical learning rate(余弦降火衰减),其中余弦退火衰减学习率调度策略可以帮助模型跳离局部最优点。

2.自适应学习率变换方法: Adam,使用梯度一阶矩估计和二阶矩估计来动态调整每个参数的学习率。因为参数更新的步长和梯度的一阶和二阶有关,所以可以动态的改变学习步长而不完全取决于学习率,对学习率就没有那么敏感了。但是并非真实参数不敏感,还是要注意学习率对模型收敛的影响。
深度学习学习笔记——BatchSize与LR_第2张图片
图片来源

二、batch_size

1.大的batchsize减少训练时间,提高稳定性
优: batchsize大,相同epochs训练步数少,训练时间减少;另一方面,大的batch size梯度的计算更加稳定,因为模型训练曲线会更加平滑。在微调的时候,大的batch size可能会取得更好的结果。
缺: 但是也意味着参数更新次数变少,想要达到相同精度需要更多epoch,同时也容易达到局部最优。
2.大的batchsize导致模型泛化能力下降
batchsize小,能引入随机误差提高模型精度和泛化能力,但是每个样本分布不同初期很难收敛。
batchsize在变得很大(超过一个临界点)时,会降低模型的泛化能力。在此临界点之下,模型的性能变换随batch size通常没有学习率敏感。

总结:摘自

学习率和batchsize是影响模型性能极其重要的两个参数,我们应该非常谨慎地对待。

对于学习率算法,可以选择Adam等自适应学习率策略先训练模型看看收敛结果,再考虑使用SGD等算法进一步提升性能。
对于Batchsize,大部分人并不会使用几千上万的batchsize,因此也不用担心模型性能的下降,用大一点(比如128)的batchsize吧,这样需要的迭代次数更少,结果也更加稳定。

你可能感兴趣的:(深度学习学习笔记,深度学习,神经网络,人工智能)