学习率是如何影响模型训练的?

server/2024/12/22 19:18:01/

一、概念

        在深度学习中,学习率(Learning Rate,LR)是一个至关重要的超参数,它控制着模型参数在梯度下降过程中的更新步长。在每次训练迭代中,模型参数按照损失函数关于参数的梯度方向进行更新,而学习率决定了更新的幅度。我们可以通过公式更为直观地理解学习率的作用,例如在梯度下降算法中,我们用 α 来表示学习率,则基本公式如下:

\theta = \theta - \alpha \cdot \bigtriangledown _{\theta}J(\theta)

        其中,θ 表示模型的参数向量,\bigtriangledown _{\theta}J(\theta)表示损失函数 J(θ) 关于参数 θ 的梯度。这个公式表示在每次迭代中,我们通过计算损失函数关于参数的梯度,然后乘以学习率 α,并从当前参数值中减去这个乘积,来更新参数 θ。很明显,学习率越大,待减的乘积则越大,参数更新的幅度也就越大。

二、影响

        学习率对模型训练过程的影响主要是以下两个方向:

  • 学习率过高:如果学习率设置得较高,模型参数的更新步长会较大,这可能导致模型在最优解附近“跳跃”,甚至发散,从而减慢收敛速度或导致无法收敛
  • 学习率过低:如果学习率设置得较低,模型参数的更新步长会较小,这可能导致模型训练过程缓慢,需要更多的迭代次数才能收敛

        下面我们通过实例来可视化学习率的影响。这里,我们使用之前的文章《python实战(十一)——情感分析》中的数据集和torch版模型代码来进行演示。首先,我们来看一下学习率设置为0.001的损失下降情况。很明显模型的损失不断地在下降,当然由于Epoch只有20个,所以存在过拟合的情况,这里我们不关注。

        接着,我们保持其他配置不动,仅将学习率调整为0.0000001,重新运行代码,结果如下。可以看到,损失也是在单调下降的,但是定睛一看就会发现,训练半小时损失下降的幅度都没有0.1!

        下面,我们还是老配方,但是学习率调整到0.05,重新运行代码。这次,我们直接将三次的训练损失情况绘制到同一张图,便于比较。

        可以清晰地看到,合适的学习率才能让模型的训练有效,否则模型很难收敛。当然,我们并不需要找出一个确切的取值,只需要根据模型的特点和常规的经验把学习率设置在一个合理的范围内即可。例如,我们不设置任何学习率参数,优化器默认的初始学习率一般是0.001,这个取值能够适用于大部分建模任务了。另外,像Bert之类的预训练模型也有它比较舒适的一个学习率取值范围,对Bert而言一般是3e-5到5e-5之间,这种就需要我们去查阅文献总结经验了。只要学习率的设置能够让模型的损失按照我们预期的速度下降即可,剩下的无非是多几个epoch或者少几个epoch就能够解决的事情。

        需要注意的是,我们在这次实验中使用的优化器是Adam,这意味着我们所设置的其实是初始学习率,Adam能够根据历史的梯度信息自动调整训练过程中的学习率。但即便如此,当学习率的取值大大超出合理范围,Adam也束手无策!

三、调整策略

        对于学习率的设置,除了在训练的全程固定学习率之外,也有一些动态调整学习率的方法,这里简单列举几个例子。

1. 学习率衰减(Exponential Decay)

        这是一种常见的学习率调整策略,其中学习率按照指数函数随时间衰减。这种策略可以帮助模型在训练初期快速收敛,然后在后期逐渐减小步长以细化解。

2. 步进学习率调整(Step Decay)

        在这种策略中,学习率会按照设定的步长周期性地减少。例如,可以设置每经过一定数量的epoch后,学习率乘以一个小于1的因子(如0.1),从而实现学习率的逐步降低。

3. 余弦退火(Cosine Annealing)

        余弦退火策略根据余弦函数调整学习率,使其在训练过程中先增加后减少,模拟余弦波形的变化。这种方法可以帮助模型在训练后期更细致地逼近最优解。

4. 自适应学习率优化器

        一些优化器如Adam、Adagrad等,能够根据每个参数的梯度历史自动调整学习率,从而减少手动调整学习率的需求。

5. 学习率预热(Warm-up)

        在学习率预热策略中,训练开始时使用较小的学习率,并逐渐增加到预定的学习率。这有助于模型在初始阶段更稳定地适应数据。


http://www.ppmy.cn/server/152303.html

相关文章

docker 软连接修改存储位置

查看docker路径 默认情况下Docker的存放位置为:/var/lib/docker,也可以通过如下命令查看docker存储路径 docker info | grep "Docker Root Dir" 停掉docker服务 systemctl stop docker 移动docker目录 mv /var/lib/docker /var/sda1/docker_…

【蓝桥杯每日一题】选数异或——线段树

选数异或 蓝桥杯每日一题 2024-12-16 选数异或 线段树 DP 思维 题目大意 给定一个长度为 n n n 的数组 A 1 , A 2 , ⋯ , A n A_1, A_2, \cdots, A_n A1​,A2​,⋯,An​ 和一个非负整数 x x x,给定 m m m 次查询,每次询问能否从某个区间 [ l , r ] …

独孤思维:最近有新副业项目?

01 最近很多读者问我。 有没有新的项目? 其实独孤这边有一大把项目。 但是结合和他们的过往接触。 即便给他们了,他们也不会上手。 即便上手了,也不会坚持下去。 因为之前他们基本上没有做成过一个项目。 都是在不断找,不…

前端开放性技术面试—面试题

1. 上线出现问题如何解决? 步骤: 立即响应:迅速确认问题的存在和影响范围。回滚:如果问题严重影响用户,考虑立即回滚到上一个稳定版本。日志分析:查看服务器日志、应用日志和前端日志,定位问题…

黑客术语3

19、免杀 : 就是通过加壳、加密、修改特征码、加花指令等等技术来修改程序, 使其逃过杀毒软件的查杀。 20 、加壳 : 就是利用特殊的算法,将 EXE 可执行程序或者 DLL 动态连接库文件的 编码进行改变(比如实现压缩、加密)&a…

致远互联OA使用问题及解决方法记录(个人)

1、更换设备登录账号出现绑定要求 解决:后台管理员账号——M3安全管理——安全设置——删除绑定 2、审批消息错误回退 解决:协同工作——一已办事项——取回——重新审批/流程监督里撤回/流程索道节点回退 3、签章图片在表单上显示过大 解决&#x…

厦门凯酷全科技有限公司怎么样靠谱吗?

在数字经济蓬勃发展的今天,抖音电商以其独特的短视频和直播模式,迅速成为品牌与消费者之间的重要桥梁。作为一家专注于抖音电商服务的专业机构,厦门凯酷全科技有限公司凭借其深厚的技术实力、创新的服务模式和专业的团队支持,已经…

C语言进阶(2) ---- 指针的进阶

前言:指针的主题,我们在初阶的《指针》章节已经接触过了,我们知道了指针的概念: 1.指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2.指针的大小是固定的4/8个字节(32位平台/64位平台)。 3.指针是…