【机器学习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://xiahunao.cn/news/3031187.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

闭散列哈希表

一、什么是 哈希 ? 1.1 哈希概念 与 哈希冲突 在正式介绍闭散列哈希之前,我们需要明确 哈希 的概念。 哈希 :构造一种数据存储结构,通过函数 HashFunc() ,使 元素的存储位置 与 其对应的键值 建立一一映射关系&…

数电——集成计数器(部分)

数电77-集成二进制同步计数器_哔哩哔哩_bilibili 74LS191 同步二进制可逆计数器 单时钟 功能: 要想有置零功能,可以将输入改为0000,然后运用功能里的置数功能 双时钟74LS193 四位同步二进制可逆计数器 功能: 74LS197 二-八-…

nestjs 全栈进阶--中间件

视频教程 22_nest中中间件_哔哩哔哩_bilibili 1. 介绍 在Nest.js框架中,中间件(Middleware)是一个非常重要的概念,它是HTTP请求和响应生命周期中的一个重要组成部分,允许开发者在请求到达最终的目的控制器方法之前或…

Java苍穹外卖05-订单状态定时处理-数据统计-导出excel

一、订单状态定时处理 1.Spring Task ①介绍 应用场景: ②cron表达式 https://cron.qqe2.com/ ③入门案例 2.需求分析 3.代码开发 每一分钟检查是否存在超时15分钟的订单 每天凌晨一点处理上一条处于派送中的订单 mapper: 二、来单提醒、客户催单 1…

前端崽的java study笔记

文章目录 basic1、sprint boot概述2、sprint boot入门3、yml 配置信息书写和获取 basic 1、sprint boot概述 sprint boot特性: 起步依赖(maven坐标):解决配置繁琐的问题,只需要引入sprint boot起步依赖的坐标就行 自动…

IF:23.2|从实验室到田间,微生物干预提高植物抗逆

期刊:Nature Food 影响因子:23.2 发表时间:2023年10月 本研究介绍了一种名为SynCom的微生物组合,该组合Rhodococcus erythropolis和Pseudomonas aeruginosa两种微生物组成。这两种微生物能够帮助水稻抵抗铝毒害和磷缺乏&…

##13 如何在Python中优雅地使用异常处理

文章目录 引言1. 异常处理基础2. 处理多种异常3. 捕捉所有异常4. finally 语句5. 自定义异常结语参考链接 引言 在编程中,错误是在所难免的。Python提供了异常处理机制,允许程序在遇到错误时优雅地恢复。本文将介绍Python中异常处理的基本概念&#xff…

activiti 工作流基本使用

Activiti 介绍 Activiti 是一个开源架构的工作流引擎,基于bpmn2.0 标准进行流程定义。其前身是JBPM,Activiti 通过嵌入到业务系统开发中进行使用。 官方是这样介绍 activiti的: Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎&…

前端小技巧:如何自定义网页的右键菜单(如何禁用网页的右键菜单)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 右键菜单设置 📒📝 自定义右键菜单实现步骤📝 示例代码📝 涉及的JavaScript语法和参数📝 禁用特定区域的右键菜单⚓️ 相关链接 ⚓️📖 介绍 📖 在网页设计中,一个直观且个性化的右键菜单可以显著提升用户的交互…

【全开源】JAVA上门家政服务系统源码微信小程序+微信公众号+APP+H5

功能介绍 用户端:精准分类、支持家政、维修、万能服务、一口价、报价、线上、各类家政服务、优惠专区、师傅入驻、商家入驻、我的需求、补费明细、我的投诉 师傅端:接单池、消息通知、接单管理、今日订单、师傅入驻、我的钱包、实名认证 商家端&#…

WM Transaction Code 仓库管理模块事务代码大全

1.1 LE-WM 仓库管理 Warehouse Management 仓库管理事务码 描述 LB01 Create Transfer Requirement 创建转储需求 LB02 Change transfer requirement 修改转储需求 LB03 Display Transfer Requirement 显示转储需求 LB10 TRs for Storage Type 按仓储类型的转储请求 …

乡村振兴与农村基础设施建设:加大农村基础设施建设投入,提升农村公共服务水平,改善农民生产生活条件,构建宜居宜业的美丽乡村

一、引言 乡村振兴是我国现代化进程中的重要战略,而农村基础设施建设则是乡村振兴的基石。随着城市化进程的加快,农村基础设施建设滞后的问题日益凸显,成为制约乡村发展的瓶颈。因此,加大农村基础设施建设投入,提升农…

利用自适应深度学习优化OCR文字识别性能

摘要: 随着深度学习技术的不断发展,OCR(Optical Character Recognition,光学字符识别)系统在文档处理、图像搜索和自动化数据提取等领域扮演着重要角色。然而,由于不同场景下文本的多样性和复杂性&#xf…

uni-appH5Android混合开发三 || uni-app调用Android原生方法的三种方式

前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式。 uni-app跨平台框架介绍和快速入门 uni-app跨平台框架介绍和快速入门 一、H5方法调用android原生方法 H5 Android开发规范官方文档&#…

08.1.自定义图形

自定义图形 创建图形 随便选择几个参数直接添加 选择自定义折线图形查看

大语言模型的后处理

后处理的输入 常规意义上的大模型处理流程 import torch from transformers import LlamaForCausalLM, LlamaTokenizer# 加载模型和tokenizer model LlamaForCausalLM.from_pretrained("decapoda-research/llama-7b-hf") tokenizer LlamaTokenizer.from_pretrain…

c++11 标准模板(STL)本地化库 - 平面类别(std::money_put) - 格式化货币值为字符序列以输出

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 平面类别 格式化货币值为字符序列以输出 std::money_put template< …

OpenCV使用 Kinect 和其他兼容 OpenNI 的深度传感器(75)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:使用 OpenCV 创建视频(74) 下一篇 :OpenCV使用 Orbbec Astra 3D 相机(76) 目的&#xff1a;​ 通过 VideoCapture 类支持与 OpenNI 兼容的深度传感器&#xff08;Kinect、XtionPRO 等&#xff09;。…

Soviet Kitchen

苏联厨房-具有道具和带有碰撞器的模块化建筑部件的游戏环境资产 内部资产包: 网格-253 前言-98 材料-26 纹理-116 网格格式-(FBX) 纹理格式-(PNG) 资产列表: _BigShelf 多边形计数-1986 文本大小-2048x2048 可以 多边形计数-277 结构尺寸-512x512 _Celling 多边形计数-1 …

STL——queue容器【队列】

queue的基本概念&#xff1a; 概念&#xff1a;queue是一种先进先出的数据结构&#xff0c;它有两个出口 queue的构造函数&#xff1a; 构造函数&#xff1a; queue<T>que:采用模板类实现&#xff0c;queue对象的默认构造形式 queue(const queue &que):拷贝构造函…