高级优化器

目录

1.Momentum(动量)

2.自适应学习率

3.Adam和AdamW


神经网络的基础优化算法是随机梯度下降 (SGD)。SGD是一种迭代型的算法,在训练开始的时候,模型参数被随机初始化,记为,然后依次更新为。在每个迭代时刻t,随机从训练集中选择一小批样本计算损失函数,以及参数的梯度:

则参数更新的公式为:

基础的SGD算法容易遇到以下问题:

(1)训练被卡在不理想的梯度为0的点 (全局极小点或鞍点)。虽然随机梯度下降具有一定的逃离能力,但当微批的大小较大 (为了提高训练效率) 或者"平原"的范围较大时,训练仍然有可能被卡在不理想的优化点。

(2)不同参数方向上的梯度幅度可能相差较大,梯度大的参数可能会来回振荡,而梯度小的参数迭代速度又过慢。

1.Momentum(动量)

带动量的SGD,不仅会利用当前时刻的梯度,同时会用到历史梯度信息:

其中,为梯度,。则参数更新的公式为:

可以按时刻逐步展开一下动量的计算公式:

......

ps:

动量的效果类似给梯度增加了"惯性",梯度较大但是来回振荡的方向会互相抵消,从而加速收敛。

在同一圈的loss一样,越往中心loss越小。

同时,动量的累积效果可以得优化过程在损失函数的平坦区域或局部极小点附近能够"冲过"这些区域,从而找到更好的极小值点。

2.自适应学习率

在优化过程中,不同的参数方向上所需要的学习率可能会有所不同:

(1)由于神经网络的稀疏性,每个参数被激活 (即对应的输入不为零) 的频率不同,因此激活频率低的参数方向需要较大的学习率以加快收敛。

(2)即使进行了数据归一化,不同参数方向上梯度的幅度仍然存在差异。梯度幅度大的方向需要较小的学习率以防止振荡甚至发散,梯度幅度小的方向需要较大的学习率以加快收敛。

参数更新的公式如下:

3.Adam和AdamW

Adam优化算法集成了动量和自适应学习率,算法如下:

在Adam算法中,L2正则项的梯度是直接计入在中的 (权重为),也被包含在一阶矩 ()和二阶矩 ()的计算中。但在一些训练任务中(例如BERT微调),这种做法的效果不好,此时应该使用如下的AdamW算法:

此时在梯度中没有计入L2正则项的影响,因此对于一阶矩和二阶矩的计算没有影响,只是在参数更新的时候加入了weight decay的影响。

Adam和AdamW优化器的PyTorch文档链接如下:

Adam --- PyTorch 2.13 documentationhttps://docs.pytorch.org/docs/2.13/generated/torch.optim.Adam.html#torch.optim.AdamAdamW --- PyTorch 2.13 documentationhttps://docs.pytorch.org/docs/2.13/generated/torch.optim.AdamW.html#torch.optim.AdamW在模型训练中,绝大部分时候使用的都是AdamW优化器,一般情况下使用默认的超参数即可达到理想的效果。

👇尝试一下在MNIST实验中使用Adam/AdamW优化器,观察不同优化器对于收敛速度和优化结果的影响。

相关推荐
大模型码小白4 小时前
【AI】一文讲清 RAG:从大模型局限到企业级知识库落地流程
人工智能·深度学习·学习
MomentYY4 小时前
RAG 图检索&多跳推理:有些答案需要“顺藤摸瓜”
人工智能·agent·ai编程
戴维南4 小时前
Ragas核心优势是各种难度的测数据集自动生成,与无标准答案的评测
人工智能
迪康Defender4 小时前
终端邮件安全全覆盖:规则、关键词、附件白名单配置大全
大数据·人工智能·安全
中电金信4 小时前
中电金信“金融信息技术应用中试平台”入选《智能研发生产力工具选型手册》首批推荐工具
大数据·人工智能
百度Geek说4 小时前
从分散提效到 AI Native 组织的实践
人工智能
WoooChi4 小时前
DailyTech-20260810
人工智能·科技·业界资讯
笨鸟先飞,勤能补拙5 小时前
网络安全等级保护 2.0:从定级备案、建设整改到持续合规的系统指南
网络·人工智能·windows·安全·web安全·网络安全·github
karry_k5 小时前
Skill 到底是什么?从提示词、脚本到多智能体工作流的完整指南
java·人工智能·后端
redsea_HR5 小时前
红海云HR系统评测:三级国际医院HR数字化落地全程参考
大数据·人工智能