DeepLearning:训练神经网络—学习率及BatchSize

本文探讨了训练神经网络时学习率和BatchSize的重要性。学习率是影响模型性能的关键超参数,过高或过低都会影响收敛。介绍了人工和策略调整学习率的方法,如固定衰减、指数衰减、余弦周期衰减等,并展示了PyTorch中实现这些策略的lr_scheduler模块。BatchSize的选择也会影响模型性能,增大BatchSize能减少训练时间但可能导致泛化能力下降。学习率与BatchSize之间存在线性缩放和方差不变两种调整关系,建议在调整学习率时同步调整BatchSize以保持模型稳定性。
摘要由CSDN通过智能技术生成

训练神经网络—学习率及batchSize


本文参考:
炼丹手册——学习率设置
【AI不惑境】学习率和batchsize如何影响模型的性能?
PyTorch 学习笔记(八):PyTorch的六个学习率调整方法

1、学习率(Learning Rate)

定义

​ 学习率是梯度下降公式中的超参数,代表了在训练神经网络时,随时间推移,信息累积的速度。学习率是最影响性能的超参数之一,选择最优学习率是很重要的,因为它决定了神经网络是否可以收敛到全局最小值,不同学习率对比如下图:

image-20211116114719622

image-20211116105411400

从上面两个图中我们可以看出:

  • 蓝线:若学习率设置的过小,训练收敛较慢,此时需要更多的epoch才能到达一个较好的局部最小值。
  • 绿线:若学习率设置的较大,训练可能会在接近局部最优点附近震荡,无法达到局部最优点。
  • 黄线:若学习率设置的特别大,那么会在山间“跳跃”难以下山。
  • 红线:合适的学习率。

调整策略

​ 在实际中我们可以在开始时大跨步下山,后期使用小学习率来精耕细作,我们可以在训练初期采用大学习率,后期采用小学习率。想要达到这个目的有两种策略:人工调整或策略调整。

人工调整策略

​ 一般是根据我们的经验值来调整,通过实践我也发现,在整个神经网络的训练过程种学习率不可能一直是同一个固定的值,初期我会将学习率设置为0.1或0.01以观察训练阶段的train_loss,具体遵循以下准则:

​ ①如果开始时train_loss出现梯度爆炸,说明初始学习率偏大,这样就缩小学习率,再次运行。

​ ②如果开始时train_loss下降缓慢,说明初始学习率偏小,我们可以扩大学习率,再次运行。

​ ③在训练过程中如果发现train_loss下降缓慢或者出现震荡现象,可能进入了局部最小值点或者鞍点附近。若为局部最小值附近,需要降低学习率,精耕细作。如果处于鞍点附近,需要适当增加学习率跳出鞍点。

策略调整学习率

​ 策略调整学习率包括固定策略的学习衰减和自适应学习率衰减。由于学习率的变化,在相似训练数据下训练参数更新速度也会放慢,相当于减小了训练数据对模型训练结果的影响,编程中,我们通常是以epoch为单位衰减学习率。

固定学习率衰减
分段减缓

​ 指定每N轮学习率发生变化(如减半)或者在不同训练阶段设置不同的学习率,便于精细的调参。

分数减缓

​ 将学习率随着epoch的轮数以分数的形式进行衰减,具体公式如下:
α = 1 ( 1 + d e c a y _ r a t e ∗ e p o c h ) ∗ l r \alpha =\frac{1}{\left( 1+decay\_\mathrm{rate}*epoch \right)}*lr α=(1+decay_rateepoch)1

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值