【机器学习300问】85、Adam梯度下降优化算法的原理是什么?

        Adam优化算法取了两个算法名称的首字母——Adaptive Moment Estimation的缩写,结合了Momentum算法和RMSprop算法的优点。在Momentum中,会计算前一时刻的梯度,并将其用于当前时刻的梯度更新;而RMSprop会对梯度的大小进行自适应调整。Adam算法将这两种思想汇集于一体,通过计算梯度的一阶矩(即均值)和二阶矩(即方差),来调整参数更新的步长。

​​​​​​​​​​​​​​【机器学习300问】81、什么是动量梯度下降算法?icon-default.png?t=N7T8http://t.csdnimg.cn/Kw6cf

【机器学习300问】82、RMSprop梯度下降优化算法的原理是什么?icon-default.png?t=N7T8http://t.csdnimg.cn/pTxlo

一、 Adam算法的原理

Adam算法的更新规则如下

(1)计算梯度的一阶矩和二阶矩的指数移动平均值

m_t = \beta_1 m_{t-1} + (1-\beta_1) g_t

v_t = \beta_2 v_{t-1} + (1-\beta_2) g_t^2

  • 一阶矩估计(动量项)

        类似于动量梯度下降,Adam跟踪了梯度(即一阶导数)的指数加权移动平均,记作m_t。这有助于捕捉梯度的方向并加速学习过程。其中g_t是当前梯度,\beta_1是衰减因子(通常设置接近于0.9)

  • 二阶矩估计(方差项)

        Adam还计算了梯度平方的指数加权移动平均,记作v_t,用来估计每个参数的方差,帮助调整学习率。这类似于RMSprop中的做法。其中\beta_2​是另一个衰减因子(通常设置接近于0.999)

(2)对m和v进行偏差修正

\hat{m_t} = \frac{m_t}{1 - \beta_1^t}

\hat{v_t} = \frac{v_t}{1 - \beta_2^t}

         由于在算法初期m_tv_t会有较大的偏置,为了应对算法在初始阶段的梯度估计不准确的问题在实际应用中通常会对其进行偏置修正。通过偏差修正,可以使得算法在初始阶段更快地适应真实的梯度均值和方差,从而避免了由于偏差造成的过小更新步长问题。随着迭代次数的增加,修正项趋于1,其影响逐渐减小,保证算法长期的稳定性和收敛性。

(3)更新参数

\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v_t}} + \epsilon} \hat{m_t}

        \epsilon是一个非常小的数,防止除以零,默认为10^{-8}

符号解释
\theta_t在时刻t的模型参数
m_t在时刻t的一阶矩估计,即过去梯度的指数移动平均值,可以视为动量项,初始值通常设为0
v_t在时刻t的二阶矩估计,即过去梯度平方的指数移动平均值,与RMSprop中的梯度平方累积相似,初始值通常设为0
\hat{m_t}偏差校正后的一阶矩估计
\hat{v_t}偏差校正后的二阶矩估计
\beta_1一阶矩的指数衰减率,用于控制一阶矩估计的滑动更新,常设为0.9
\beta_2二阶矩的指数衰减率,用于控制二阶矩估计的滑动更新,常设为0.999
g_t在时刻t的梯度,即损失函数对参数\theta_t的导数
\eta学习率,控制参数更新的步长
\epsilon一个非常小的数值,用以防止在除法操作中分母为零,为了数值稳定性,常设为10^{-8}
t当前迭代次数或时刻

二、Adam算法的优点

(1)Adam在实际中广泛应用

        它在多种深度学习网络和任务中表现较为稳健,尤其是在大数据集和高维空间的问题上。

(2)自适应学习率

        每个参数都有自己的学习率,这意味着它能很好地处理特征尺度不同的问题,且不需要手动调整学习率。

(3)稳定且高效

        即使在高维空间中也能快速收敛。通过结合动量和RMSprop的优点,Adam在多种类型的优化问题中表现稳定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/687692.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提高Rust安装与更新的速度

一、背景 因为rust安装过程中,默认的下载服务器为crates.io,这是一个国外的服务器,国内用户使用时,下载与更新的速度非常慢,因此,我们需要使用一个国内的服务器来提高下载与更新的速度。 本文推荐使用字节…

在windows下安装wsl子系统

一、安装环境 windows规格 版本Windows 10企业版版本号22H2操作系统内部版本19045.4291 二、安装过程 2.1 以管理员身份打开PowerShell(win X快捷键); 2.2 输入命令:wsl --list --online(简写:wsl -l …

FreeRTOS学习 -- 列表和列表项

列表和列表项是 FreeRTOS 的一个数据结构,FreeRTOS 大量使用到了列表和列表项。 一、什么是列表和列表项 1、列表 列表是 FreeRTOS 中的一个数据结构,被用来跟踪 FreeRTOS 中的任务。与列表相关的全部东西都在文件 list.c 和 list.h中。 List_t 结构体…

手写一个SPI FLASH 读写擦除控制器(未完)

文章目录 flash读写数据的特点1. 扇擦除SE(Sector Erase)1.1 flash_se 模块设计1.1.1 信号连接示意图:1.1.2 SE状态机1.1.3 波形图设计:1.1.4 代码 2. 页写PP(Page Program)2.1 flash_pp模块设计2.1.1 信号连接示意图:…

Python注意事项【自我维护版】

各位大佬好 ,这里是阿川的博客 , 祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 本篇博客在之前的博客上进行的维护 创建Python…

服务器内存占用不足会怎么样,解决方案

在当今数据驱动的时代,服务器对于我们的工作和生活起着举足轻重的作用。而在众多影响服务器性能的关键因素当中,内存扮演着极其重要的角色。 服务器内存,也称RAM(Random Access Memory),是服务器核心硬件部…

AC/DC电源模块的节能技术与环保优势

BOSHIDA AC/DC电源模块的节能技术与环保优势 AC/DC电源模块是一种广泛应用于各种电子设备中的电源转换器。随着环保意识的增强,节能技术成为了设计和生产这些模块的关键考虑因素。本文将介绍AC/DC电源模块的节能技术以及它们所带来的环保优势。 首先,AC…

Ps 滤镜:深色线条

Ps菜单:滤镜/滤镜库/画笔描边/深色线条 Filter Gallery/Brush Strokes/Dark Strokes 深色线条 Dark Strokes滤镜通过以独特的线条风格重绘图像的暗部和亮部来增强图像的视觉效果,适用于创作具有强烈对比和动态线条效果的艺术作品。 “深色线条”滤镜可以…

MySQL企业级开发重点之事物和索引

事物 -- 解散学工部 delete from tb_dept where id 1;-- 删除部门下的员工 delete from tb_emp where dept_id 1; 介绍和操作 我们应该将两个语句写成一个语句 -- 开启事物 start transaction ;-- 解散学工部 delete from tb_dept where id 3;-- 删除部门下的员工 delete fr…

Java设计模式 _行为型模式_解释器模式

一、解释器模式 1、解释器模式 解释器模式(Interpreter Pattern)是一种行为型模式。它提供了评估语言的语法或表达式的方式。通过实现了一个表达式接口,通常该接口解释一个特定且重复出现的问题。 2、实现思路 (1)、…

担心源代码泄露?五种有效的方式做到源代码加密防泄露!

对于软件开发公司来说,源代码是企业的核心财产,其安全性不容忽视。源代码泄露不仅可能导致技术秘密被窃取,还可能给企业带来法律纠纷和经济损失。因此,保护源代码的安全至关重要。本文将介绍五种有效的方式进行源代码保护&#xf…

一次完整的GC流程

Java堆中内存区分 Java的堆由新生代(Young Generation)和老年代(Old Generation)组成。新生代存放新分配的对象,老年代存放长期存在的对象。 新生代(Young)由年轻区(Eden&a…