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

Adam优化器

文章目录

    • Adam
      • 拐点
      • 缓坡
      • 局部极小值
      • 悬崖
      • 最值点
      • 扩展到三维

Adam

  • 同时调节梯度项和学习率项,基于这种想法衍生出来的方法是Adam。

  • Adam表达式
    x t + 1 = x t − η v t + ϵ m t v t = β 1 V t − 1 + ( 1 − β 1 ) ∇ 2 f ( x t ) m t = β 2 m t − 1 + ( 1 − β 2 ) ∇ f ( x t ) \begin{aligned} &\mathbf{x}_{t+1} =\mathbf{x}_{t}-\frac{\eta}{\sqrt{v_t} + \epsilon} m_t \\ &v_t = \beta_1 V_{t-1}+(1-\beta_1)\nabla^2 f\left(\mathbf{x}_{t}\right)\\ &m_t = \beta_2 m_{t-1}+(1-\beta_2)\nabla f\left(\mathbf{x}_{t}\right) \end{aligned} xt+1=xtvt +ϵηmtvt=β1Vt1+(1β1)2f(xt)mt=β2mt1+(1β2)f(xt)
    注意, m t m_t mt 中的梯度是没有平方的

    偏差修正
    x t + 1 = x t − η v ^ t + ϵ m ^ t v t = β 1 V t − 1 + ( 1 − β 1 ) ∇ 2 f ( x t ) m t = β 2 m t − 1 + ( 1 − β 2 ) ∇ f ( x t ) v ^ t = v t 1 − β 1 t m ^ t = m t 1 − β 2 t \begin{aligned} &\mathbf{x}_{t+1} =\mathbf{x}_{t}-\frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \hat{m}_t \\ &v_t = \beta_1 V_{t-1}+(1-\beta_1)\nabla^2 f\left(\mathbf{x}_{t}\right)\\ &m_t = \beta_2 m_{t-1}+(1-\beta_2)\nabla f\left(\mathbf{x}_{t}\right)\\ &\hat{v}_{t} = \frac{v_t}{1-\beta_1^t}\\ &\hat{m}_{t} = \frac{m_t}{1-\beta_2^t}\\ \end{aligned} xt+1=xtv^t +ϵηm^tvt=β1Vt1+(1β1)2f(xt)mt=β2mt1+(1β2)f(xt)v^t=1β1tvtm^t=1β2tmt

  • 观察Adam的表达式,可以看到由于在 v t v_t vt m t m_t mt中都用到了指数加权平均,这种计算方法会导致在训练的前几步,无论是 v t v_t vt还是 m t m_t mt的值都会偏小。

    例如在缓坡中,缓坡梯度0.001,beta为0.9,梯度的期望应该与斜率一致,mt计算出来的第一步的值仅为斜率的1/10,可能会使训练初期不稳定,造成震荡或收敛困难等问题。image-20250608224325228

    因此通常需要额外对VT和mt进行偏差修正,解决前期估计值偏小的问题,使得即使在前几步vt和mt较小,也能拉回真实的统计量期望。

拐点

  • 当来到鞍点时,梯度修正项mt会在惯性助力下顺利通过鞍点。image-20250608224921951

缓坡

  • 当来到缓坡区域时,学习率修正项 v t v_t vt会使目标点加速通过。image-20250608225009950

局部极小值

  • 当来到局部最小值区域时, m t m_t mt项中累积的惯性以及 v t v_t vt项在平缓区域对学习率的动态增大,会共同协助目标点更大希望的跳出局部最小值区域。image-20250608225058620

悬崖

  • 来到悬崖区域,受到梯度瞬间增大的影响, v t v_t vt会迅速减小,导致学习率随之减小,从而一定程度缓解了跳崖问题。

    image-20250608225201938

最值点

  • 来到终点附近,当目标点开始在终点两边震荡时,受 m t m_t mt影响,正反方向的梯度会进行一定程度的相互抵消,会迅速减小震荡,加速收敛。image-20250608225247312

扩展到三维

  • 多参数下,扩展到三维,在a方向上 m t m_t mt可以减小震荡,加速收敛,B方向受到 v t v_t vt影响,学习率增大,加速下降。同时a、b方向都能自适应的调整学习率大小,使得针对多个参数的训练更加灵活。image-20250608225508520
  • 然而虽然Adam看似具有了很大的优势,但在实际训练中并不一定Adam就是最好的选择。有时候选择标准动量法或RMSprop反而会有更好的效果。Adam是比较常用的,但是不是必须要用的,因为sgd+momentum 效果已经非常好了,Adam不一定有sgd+momentum 好,但是Adam对学习率不敏感,所以实践中还是要多尝试

http://www.lqws.cn/news/526681.html

相关文章:

  • Nuitka 打包Python程序
  • NoSQL之Redis集群
  • 智慧生产管控数字化平台(源码+文档+讲解+演示)
  • Datax报错:在有总bps限速条件下,单个channel的bps值不能为空,也不能为非正数
  • Flutter 多平台项目开发指南
  • 使用Charles中文版抓包工具进行高效的API调试与性能优化
  • openharmony 性能检测工具
  • [架构之美]Spring Boot 3.5.3新特性解析及JDK21集成
  • Socket 编程 TCP
  • 小程序入门:理解小程序页面配置
  • ZYNQ GP总线深度实战:智能灯光控制器的PS-PL交互艺术
  • 128K 长文本处理实战:腾讯混元 + 云函数 SCF 构建 PDF 摘要生成器
  • 如何解决本地DNS解析失败问题?以连接AWS ElastiCache Redis为例
  • 华曦达港股IPO递表,AI Home生态构建智能生活新蓝图
  • dockercompose快速安装ELK
  • 设计模式 | 原型模式
  • 分布式I/O在风电行业的应用
  • 向量数据库milvus中文全文检索取不到数据的处理办法
  • Python 惰性求值实战:用生成器重构 Sentence 类
  • Milvus中 Collections 级多租户 和 分区级多租户 的区别
  • kubernetes架构原理
  • 【Docker基础】Docker容器管理:docker rm及其参数详解
  • Axure版TDesign 组件库-免费版
  • Ubuntu中使用netcat发送16进制网络数据包
  • android 11.0 打开ALOGV ALOGI ALOGD日志输出的方法
  • git 多用户管理 跨平台
  • 远程玩3A大作要多少帧?ToDesk、向日葵、UU远程性能对决
  • mysql 安装vc++2013 没有权限问题。
  • 使用 DHTMLX Gantt 添加迷你地图:提升大型项目可视化与导航体验
  • 996引擎-假人系统