sgd学习率选择问题

在使用动量SGD(momentum=0.9)时,通过训练一个epoch并调整学习率,观察学习率与平滑损失曲线,选择使损失最小但尚未上升的学习率作为初始值。通常不选曲线最低点,而选择其左侧较小但不过小的学习率,如0.01。不推荐指数下降的学习率调整,建议采用阶梯式降低,每隔一定epoch减小为原来的0.1倍。对于fine-tune和从头训练,初始学习率可分别设为0.01和0.1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于使用SGD时如何选择初始的学习率(这里SGD是指带动量的SGD,momentum=0.9):

训练一个epoch,把学习率从一个较小的值(10-8)上升到一个较大的值(10),画出学习率(取log)和经过平滑后的loss的曲线,根据曲线来选择合适的初始学习率。

从上图可以看出学习率和loss之间的关系,最曲线的最低点的学习率已经有了使loss上升的趋势,曲线的最低点不选。最低点左边的点都是可供选择的点,但是选择太小的学习率会导致收敛的速度过慢,所以根据上图我们可以选择0.01(10-2)为初始的学习率。

关于学习率的调整策略,在使用SGD时不建议使用指数型连续下降的调节方法,建议使用阶梯式调节学习率的方法。每隔一定数量的epoch学习率调节为之前的0.1倍(根据自己实际任务调节每个阶段迭代epoch的数量)。

如果不想使用上述方法,这里提供几个经验值供选择,fine-tune模型初始学习率可设置为0.01,从头开始训练模型学习率可设置为0.1(仅供参考)。

供参考的寻找初始学习率的pytorch代码(根据自己的任务进行修改):

def find_lr(init_value = 1e-8, final_value=10., beta = 0.98
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值