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

【深度学习】Adam(Adaptive Moment Estimation)优化算法

概述

Adam算法结合了动量法(Momentum)RMSProp的思想,能够自适应调整每个参数的学习率。通过动态调整每个参数的学习率,在非平稳目标(如深度神经网络的损失函数)中表现优异

目录

  1. 基本原理和公式
  2. 笼统说明:为什么Adam算法可以帮助模型找到更好的参数

基本概念

  • 动量(Momentum):跟踪梯度的指数衰减平均(一阶矩),加速收敛并减少震荡。
  • 自适应学习率:跟踪梯度平方的指数衰减平均(二阶矩),调整不同参数的学习率。
    设模型参数为 θ \theta θ,损失函数为 J ( θ ) J(\theta) J(θ),梯度为 g t = ∇ θ J ( θ t ) g_t = \nabla_\theta J(\theta_t) gt=θJ(θt)。Adam 的更新步骤如下:

步骤 1:计算一阶矩(动量)

m t = β 1 ⋅ m t − 1 + ( 1 − β 1 ) ⋅ g t m_t = \beta_1 \cdot m_{t-1} + (1 - \beta_1) \cdot g_t mt=β1mt1+(1β1)gt

  • 含义:对梯度做指数移动平均(EMA),保留历史梯度方向的信息。
  • 作用:缓解梯度震荡,加速收敛(类似物理中的动量)。
  • 超参数 β 1 \beta_1 β1(通常设为 0.9),控制历史梯度的衰减速度。

步骤 2:计算二阶矩(自适应学习率)

v t = β 2 ⋅ v t − 1 + ( 1 − β 2 ) ⋅ g t 2 v_t = \beta_2 \cdot v_{t-1} + (1 - \beta_2) \cdot g_t^2 vt=β2vt1+(1β2)gt2

  • 含义:对梯度平方做指数移动平均,反映梯度的变化幅度。
  • 作用:对频繁更新的参数减小学习率,对稀疏参数增大学习率。
  • 超参数 β 2 \beta_2 β2(通常设为 0.999),控制梯度平方的衰减速度。

步骤 3:偏差修正(Bias Correction)

由于初始时刻 m 0 = 0 , v 0 = 0 m_0 = 0, v_0 = 0 m0=0,v0=0,早期估计会偏向于零。Adam 通过以下修正消除偏差:
m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} m^t=1β1tmt,v^t=1β2tvt

  • 含义:随着时间步 (t) 增大,分母 1 − β t 1 - \beta^t 1βt逐渐趋近于 1,修正早期估计的偏差。
  • 作用:确保训练初期( t t t 较小时)的更新量不会过小。

步骤 4:参数更新

θ t + 1 = θ t − α ⋅ m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \alpha \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θtαv^t +ϵm^t

  • 含义:用修正后的动量 m ^ t \hat{m}_t m^t除以修正后的梯度平方根 v ^ t \sqrt{\hat{v}_t} v^t ,再乘以学习率 α \alpha α
  • 作用
    • m ^ t \hat{m}_t m^t:提供稳定的更新方向(类似动量)。
    • 1 v ^ t + ϵ \frac{1}{\sqrt{\hat{v}_t} + \epsilon} v^t +ϵ1:自适应调整学习率,抑制梯度变化大的参数的学习率。
  • 超参数
    • α \alpha α:基础学习率(通常需手动调节)。
    • ϵ \epsilon ϵ:极小值(如 1 0 − 8 10^{-8} 108),防止除以零。

为什么 Adam 能帮助模型找到更好的参数?

Adam 的有效性源于以下设计:

1. 自适应学习率
  • 对每个参数独立调整学习率:梯度大的参数学习率小,梯度小的参数学习率大。
  • 优势:处理稀疏梯度(如 NLP 任务)时效果显著,避免手动调节学习率的麻烦。
2. 动量机制
  • 通过一阶矩 m t m_t mt 保留历史梯度方向,加速收敛并减少震荡。
  • 优势:在梯度方向变化剧烈时(如鞍点附近),动量帮助参数快速通过平缓区域。
3. 偏差修正
  • 修正早期估计的偏差,避免训练初期更新量过小。
  • 优势:提升训练稳定性,尤其在前几个 epoch 中。
4. 鲁棒性
  • 对超参数选择相对鲁棒(如 β 1 , β 2 \beta_1, \beta_2 β1,β2通常固定为 0.9 和 0.999)。
  • 优势:广泛适用于不同任务(CV、NLP 等),减少调参成本。

http://www.kler.cn/a/574188.html

相关文章:

  • dify + ollama + deepseek-r1+ stable-diffusion 构建绘画智能体
  • 从零开始在Windows使用VMware虚拟机安装黑群晖7.2系统并实现远程访问
  • .keystore文件转成pkcs1.pem文件记录
  • 阿里云 DataWorks面试题集锦及参考答案
  • 产品需求分析-概览
  • 高效便捷的 Spring Boot 通用控制器框架
  • c# wpf 开发中安装使用SqlSugar操作MySql数据库具体操作步骤保姆级教程
  • 智慧校园可视化:开启校园管理的数字化新未来
  • 2005-2019年各省城镇人口数据
  • 【hello git】git 扫盲(add、commit、push、reset、status、log、checkout)
  • 【论文分享】推理大模型Post-Training技术的全面综述
  • Java数组详解/从JVM理解数组/数组反转/随机排名/数组在计算机如何存储
  • Unity Shader 学习15:可交互式雪地流程
  • Codepen和tailwindcss 进行UI布局展示
  • VBA第十八期 如何获得WPS中已经安装字体的列表
  • 在vue2项目中el-table表格的表头和内容错位问题
  • 责任链模式:让请求在链条中流动
  • 基于GeoTools的GIS专题图自适应边界及高宽等比例生成实践
  • pytorch3d学习(二)——安装与纹理显示demo测试
  • 2025年中职大数据应用与服务竞赛培训方案分享