当前位置: 首页 > news >正文

【AI知识】常见的优化器及其原理:梯度下降、动量梯度下降、AdaGrad、RMSProp、Adam、AdamW

常见的优化器

  • 梯度下降(Gradient Descent, GD)
  • 局部最小值、全局最小值和鞍点
  • 凸函数和非凸函数
  • 动量梯度下降(Momentum)
  • 自适应学习率优化器
    • AdaGrad(Adaptive Gradient Algorithm)​
    • RMSProp(Root Mean Square Propagation)​
    • ​Adam(Adaptive Moment Estimation)​
    • AdamW(Adam with Weight Decay)

在机器学习和深度学习中,优化器用于调整模型参数以最小化损失函数,是训练模型的关键组件。以下是一些常见的优化器:

梯度下降(Gradient Descent, GD)

梯度下降是最基础的优化算法,核心思想是:沿着损失函数梯度的反方向更新参数,即参数的更新方向是损失函数梯度的负方向。(梯度解释:【AI知识】导数,偏导,梯度的解释),梯度下降的公式为:

学习率解释: 表示模型参数更新的步长大小,控制着迭代过程中参数沿着梯度方向调整的幅度。

  • 较大的学习率可以加快收敛速度,但可能导致参数更新过大,错过最优解甚至发散(模型发散是指在数值计算或优化过程中,模型的解或参数随着迭代次数的增加变得不稳定,甚至趋向于无穷大,导致计算结果失去物理意义或无法收敛到预期值)
  • 较小的学习率虽然更新稳定,但收敛速度慢,可能需要更多的训练时间

梯度下降有以下几个变种:

  • 批量梯度下降(Batch Gradient Descent, BGD):使用整个训练数据计算梯度,更新参数。收敛稳定,但计算开销大,每次迭代都需要遍历整个数据集,不适合处理超大规模数据集

  • 随机梯度下降(Stochastic Gradient Descent, SGD):每次迭代随机选择一个训练样本计算梯度,并更新模型参数,计算效率高但收敛不稳定(由于每次更新的方向不同,参数更新过程会有较大波动,可能无法很好地收敛到最优点)

  • 小批量梯度下降(Mini-Batch Gradient Descent):在 BGD 和 SGD 之间折中,每次使用一个小批量(一般大小为 32、64、128 等)样本计算梯度。
    1)相比于 BGD,每次更新的计算量更少,适合大规模数据。
    2)相比于SGD,梯度更新不会剧烈震荡,收敛更平稳。
    3)小批量计算可以并行处理,提高计算效率。
    4)但批量大小(Batch Size)影响训练效果,太大会导致模型训练慢,太小会导致震荡。

局部最小值、全局最小值和鞍点

1. 局部最小值: 是指函数在某个邻域内取得的最小值。局部最小值只是在某个局部范围内最小,不一定是整个函数的最小值(全局最小值)。如果函数可微分,在局部最小值点处,梯度通常为零。

2. 全局最小值: 是指函数在整个定义域内取得的最小值。全局最小值点可能不存在(例如,函数无下界),也可能不唯一(例如,常数函数)。

3.鞍点: 鞍点是指函数在某个点处梯度为零,但该点既不是局部最小值也不是局部最大值。(可以通过 Hessian 矩阵来判断一个点是否为鞍点,我也不懂T T )

鞍点在某些方向上是局部最小值,而在另一些方向上是局部最大值。

在优化问题中,鞍点通常是一个挑战,因为梯度下降算法可能会在鞍点处停滞

凸函数和非凸函数

在数学优化和机器学习中,函数的**凸性(Convexity)**是一个非常重要的概念,凸函数和非凸函数在函数形状和优化性质上有显著区别,它直接影响梯度下降算法的收敛性和是否能找到全局最优解。

1. 凸函数(Convex Function): 函数的任意两个点连成的直线,不会低于函数曲线(即函数曲线在直线的下方或重合)。

此图参考自:凸函数与非凸函数

特征:

  • 单峰(一个最低点),类似于碗的形状(开口向上)
  • 任意局部最优解都是全局最优解
  • 在优化问题中,凸函数通常更容易求解,因为其优化过程具有唯一性和稳定性,使用梯度下降算法能保证找到最优解

2. 非凸函数(Non-Convex Function): 如果一个函数不满足凸函数的定义,即为非凸函数。

特征:

  • 多峰(多个局部最小值),类似于山谷或波浪形状
  • 可能存在多个局部最优点,优化过程中可能会卡在局部最优而非全局最优
  • 优化复杂,需要动量、学习率调整等策略避免陷入局部最优

由上可知,非凸函数优化问题是比较难的,其中局部最小值和鞍点可能会阻碍优化算法找到全局最小值,接下来介绍一些别的优化器算法:

动量梯度下降(Momentum)

动量梯度下降(Momentum Gradient Descent)是一种优化梯度下降的方法,它在参数更新时加入 动量(Momentum) 的概念,使得优化过程更平滑、更快,并能够有效跳过鞍点和局部最优。

梯度下降的问题:

  • 收敛速度慢: 在椭圆形的损失函数里(损失函数在不同方向上的曲率相差很大,在某些方向上变化很快,在另一些方向上变化很慢),梯度下降的方向会不断震荡,导致收敛速度慢

  • 容易陷入局部最优: 在非凸优化问题中,梯度下降可能会卡在局部最优,难以继续下降到更优解

  • 鞍点问题: 在高维空间,梯度在某些方向上很小(如鞍点),优化可能会停滞

什么是动量: 模拟物理中的惯性现象,在优化过程中,不仅考虑当前的梯度的方向,还会保留一部分之前梯度的方向,这被称为“动量”,可利用过去梯度的累积信息来平滑当前更新方向,帮助梯度下降更快地收敛,并减少在某些方向上的震荡。

动量梯度下降的更新规则:

其中 β \beta β是动量因子,用于控制历史梯度的影响程度, β = 0 \beta=0 β=0相当于普通梯度下降(没有动量), β = 0.9 \beta=0.9 β=0.9是一般情况下的推荐值,更新较平滑。

优点:

  • 加入“惯性”,类似于物体运动,之前的梯度会影响当前的梯度,在梯度方向变化时减少震荡,使得优化路径更稳定
  • 在鞍点处不会停滞,因为动量会推动参数继续前进,使得参数能突破局部最优点

缺点:

  • 需要调参:动量因子 β 和学习率 α 需要精心调节,否则可能影响收敛效果
  • 可能错过最优解:由于惯性,动量法可能冲过局部最优解或全局最优解

自适应学习率优化器

这类优化器能根据梯度信息动态调整学习率,提高收敛速度,并避免学习率过大或过小导致的训练问题。

AdaGrad(Adaptive Gradient Algorithm)​

AdaGrad通过累积所有梯度的平方来调整学习率。对于每个参数,学习率会根据其历史梯度的大小进行调整,使得频繁出现较大梯度的参数具有较小的学习率,而梯度较小的参数具有较大的学习率。

​优点: 适合处理稀疏数据,对低频参数更新较大,对高频参数更新较小

​缺点: 随着训练进行,累积梯度平方会越来越大,导致学习率逐渐减小,可能使训练过程变得非常缓慢

RMSProp(Root Mean Square Propagation)​

RMSProp通过计算梯度的指数衰减平均来调整学习率,解决了AdaGrad学习率过快减小的问题,它使用一个衰减率(通常表示为 ρ)来控制历史梯度的影响。

优点: 缓解了AdaGrad学习率过快减小的问题,适合处理非平稳目标和有噪声的梯度。

​缺点: 需要手动调整衰减率参数

​Adam(Adaptive Moment Estimation)​

Adam结合了动量法和RMSProp的优点。它不仅考虑了梯度的一阶矩(即动量),还考虑了梯度的二阶矩(即梯度平方的指数移动平均)。通过这两个矩的估计,Adam能够更有效地调整学习率。

优点: 结合了动量和自适应学习率的优点,收敛速度快,性能好

​缺点: 初始学习率可能过高,导致模型发散

AdamW(Adam with Weight Decay)

AdamW 是 Adam 优化器的一个改进版本,全称为 ​Adam with Weight Decay。它通过将权重衰减(Weight Decay)与梯度更新过程解耦,解决了传统 Adam 优化器中权重衰减与自适应学习率机制之间的冲突问题,从而提升了模型训练的稳定性和泛化性能。

1. 这里先介绍一下什么是权重衰减?

权重衰减(Weight Decay)是 一种正则化技术,主要作用如下:

  • 防止过拟合:减少模型复杂度,避免学习到过拟合的参数。
  • 稳定训练:通过逐步缩小权重,使模型收敛更稳定。
  • 提高泛化能力:让模型在测试集上表现更好。

在优化过程中,权重衰减会在每次参数更新时,对模型的权重施加一个额外的惩罚,使模型参数(权重)逐渐缩小,从而控制模型的复杂度。权重衰减通常是通过 L2 正则化 实现的,即在损失函数中加入 权重的平方和 作为惩罚项:

2. Adam中的权重衰减有什么问题?

传统 Adam 将权重衰减(L2 正则化项)直接添加到损失函数中,导致权重衰减与梯度更新耦合。由于 Adam 的自适应学习率机制,这种耦合会导致权重衰减的实际效果被学习率缩放,降低正则化效果

3. AdamW如何改进?

AdamW 将权重衰减从损失函数中解耦,直接在参数更新步骤中独立应用权重衰减,解决了 Adam 的错误 L2 正则化问题,避免了自适应学习率对权重衰减的干扰

4. 为什么 AdamW 更适合深度学习?

  • 减少 L2 正则化的梯度缩放影响:在大规模深度学习模型(如 BERT、GPT、ResNet)中,Adam 的 L2 正则化可能会导致模型的某些层参数衰减过快或过慢。 AdamW 使权重衰减独立于梯度计算,提高训练稳定性。

  • 更快收敛:由于 AdamW 避免了 L2 正则化的错误影响,使优化器能更快找到最优解。

  • 更好的泛化能力:AdamW 在训练过程中对参数进行正确的权重衰减,减少过拟合,提高泛化能力。

总结: AdamW 通过改进权重衰减的方式,提升了模型的正则化效果和训练稳定性,是当前深度学习中的重要优化器之一

相关文章:

  • 线程池学习
  • 如何在Linux中实现scp命令自动输入密码
  • 使用Trae 生成的React版的贪吃蛇
  • 算法刷题记录——LeetCode篇(2) [第101~200题](持续更新)
  • android MutableLiveData setValue 响应速速 postValue 快
  • Collection系列集合的小结+集合并发修改异常问题
  • storeToRefs
  • 【C#】合理使用DeepSeek相关AI应用为我们提供强有力的开发工具,在.net core 6.0框架下使用JsonNode动态解析json字符串,如何正确使用单问号和双问号做好空值处理
  • 基于分类算法的学习失败预警(下)
  • 函数的介绍
  • 降低时间复杂度---特殊方程的正整数解(双指针)
  • java八股文之常见的集合
  • DeepSeek 模型的成本效益深度解析:低成本、高性能的AI新选择
  • 深入理解【双指针】:从基础概念到实际例题
  • 【实测】单卡跑满血版DeepSeek|CSGHub集成KTransformers
  • 算法——广度优先搜索——跨步迷宫
  • Spark大数据分析与实战笔记(第四章 Spark SQL结构化数据文件处理-01)
  • Java 并发集合:ConcurrentHashMap 深入解析
  • 「C++输入输出」笔记
  • 上取整,下取整,四舍五入
  • 网红街区如厕难,如何多管齐下补缺口?
  • 竞彩湃|德甲欧冠资格竞争白热化,伯恩茅斯主场迎恶战
  • 2025上海十大动漫IP评选活动启动
  • 印方称所有敌对行动均得到反击和回应,不会升级冲突
  • 游戏论|暴君无道,吊民伐罪——《苏丹的游戏》中的政治
  • 兵韬志略|美2026国防预算未达1万亿,但仍寻求“暗度陈仓”