每天3分钟,彻底弄懂神经网络的优化器(三)Momentum

前面从最初的SGD开始,介绍SGD的算法细节,以及其在深度神经网络中的劣势,本文引入Momentum算法,解决SGD的一些问题。

1. Momentum算法的提出

动量(Momentum)方法最初由B.T.Polyak在1964年提出。这一方法被用来加速梯度下降算法的收敛,特别是在处理具有较大条件数的优化问题时。B.T.Polyak在论文《Some methods of speeding up the convergence of iteration methods》[1]中描述了这一方法,这篇论文发表在了《USSR Computational Mathematics and Mathematical Physics》上。动量方法通过在每一步的更新中加入一部分上一步的速度,帮助算法在相关方向上加速,并减少在目标函数的平坦区域中的震荡。这种方法后来被广泛应用于机器学习领域,尤其是在深度学习中,成为了优化算法中的一个重要组成部分。

2. 指数加权平均

在介绍Momentum算法之前,我们先来了解一下指数加权平均(Exponential Weighted Average)的概念。

指数加权平均(Exponentially Weighted Average,EWA)是一种统计方法,用于计算一组数值的加权平均,其中最近的数据点被赋予更高的权重。这种方法在信号处理、时间序列分析、机器学习等领域中非常有用,尤其是在需要对数据的最新变化做出快速反应时。

指数加权平均的计算公式如下:

EWA t = β ⋅ EWA t − 1 + ( 1 − β ) ⋅ x t \text{EWA}_t = \beta \cdot \text{EWA}_{t-1} + (1 - \beta) \cdot x_t EWAt=βEWAt1+(1β)xt

其中:

  • $ \text{EWA}_t $ 是在时间点 t t t 的指数加权平均值。
  • β \beta β 是介于 0 和 1 之间的衰减系数(decay factor),决定了历史数据的权重。
  • x t x_t xt 是在时间点 t t t 的观测值。
  • EWA t − 1 \text{EWA}_{t-1} EWAt1 是前一时间点的指数加权平均值。

衰减系数 β \beta β 的选择对指数加权平均的影响很大。如果 β \beta β 接近 1,那么历史数据的影响会持续很长时间,平滑效果更强;如果 β \beta β 接近 0,则新数据的影响更大,对变化的反应更快。

指数加权平均的一个特性是它对异常值(outliers)不太敏感,因为每个数据点的权重都会随着时间的推移而指数级减少。这使得它在处理含有噪声的数据时非常有用。

3. Momentum

动量(Momentum)方法是一种在深度学习中广泛使用的优化策略,它通过引入动量项来加速梯度下降算法的收敛并提高其稳定性。动量方法的核心思想是模拟物理学中的动量概念,通过累积过去梯度的信息来调整参数更新的方向和幅度。动量通过指数加权平均的方式来计算。

请添加图片描述

动量方法的更新公式可以表示为:
v t = γ v t − 1 + η t ∇ J ( θ t ) θ t = θ t − 1 − v t \begin{align} v_t &= \gamma v_{t-1} + \eta_t \nabla J(\theta_t) \\ \theta_t &= \theta_{t-1} - v_t \end{align} vtθt=γvt1+ηtJ(θt)=θt1vt

其中:

  • $ v_t$ 是时间步 t t t 的动量项, 这个动量项是通过指数加权平均的方式计算得到的;
  • γ \gamma γ 是动量衰减系数,通常设置在 [ 0 , 1 ) [0,1) [0,1) 之间,如 0.9 或 0.99;
  • η t \eta_t ηt 是学习率;
  • $\nabla J(\theta_t) $ 是在参数 θ t \theta_t θt 处的损失函数梯度。

动量方法的优势包括:

  1. 加速收敛:通过累积历史梯度,可以在相关方向上加速参数更新;
  2. 抑制振荡:有助于减少训练过程中的震荡,特别是在目标函数的平坦区域或接近最小值时;
  3. 跳出局部最小值:在某些情况下,动量可以帮助算法跳出局部最小值,从而找到更好的全局最小值。

4. 指数加权平均为什么叫“指数”?

之所以被称为“指数”,是因为它在计算平均值时,给予不同时间点的数据以指数级衰减的权重。

在每次计算时,新数据 x t x_t xt 被赋予的权重是 ( 1 − β ) (1 - \beta) (1β),而之前的指数加权平均 EWA t − 1 \text{EWA}_{t-1} EWAt1 被赋予的权重是 β \beta β。由于 β \beta β 接近 1,所以越早的数据其权重会以 β \beta β 的多次方的速度迅速减小,这就是“指数”名称的来源。

v 100 = 0.9 ⋅ v 99 + 0.1 ⋅ θ 100 v 99 = 0.9 ⋅ v 98 + 0.1 ⋅ θ 99 v 98 = 0.9 ⋅ v 97 + 0.1 ⋅ θ 98 v 97 = 0.9 ⋅ v 96 + 0.1 ⋅ θ 97 ⋯ v 1 = 0.9 ⋅ v 0 + 0.1 ⋅ θ 1 v 0 = 0 \begin{align*} v_{100} &= 0.9 \cdot v_{99} + 0.1 \cdot \theta_{100} \\ v_{99} &= 0.9 \cdot v_{98} + 0.1 \cdot \theta_{99} \\ v_{98} &= 0.9 \cdot v_{97} + 0.1 \cdot \theta_{98} \\ v_{97} &= 0.9 \cdot v_{96} + 0.1 \cdot \theta_{97} \\ \cdots \\ v_{1} &= 0.9 \cdot v_{0} + 0.1 \cdot \theta_{1} \\ v_{0} &= 0 \end{align*} v100v99v98v97v1v0=0.9v99+0.1θ100=0.9v98+0.1θ99=0.9v97+0.1θ98=0.9v96+0.1θ97=0.9v0+0.1θ1=0

将其展开计算 v 100 v_{100} v100

v 100 = 0.1 ⋅ θ 100 + 0.9 ⋅ 0.1 ⋅ θ 99 + 0. 9 2 ⋅ 0.1 ⋅ θ 98 + ⋯ + 0. 9 99 ⋅ 0.1 ⋅ θ 1 v_{100} = 0.1 \cdot \theta_{100} + 0.9 \cdot 0.1 \cdot \theta_{99} + 0.9^2 \cdot 0.1 \cdot \theta_{98} + \cdots + 0.9^{99} \cdot 0.1 \cdot \theta_{1} v100=0.1θ100+0.90.1θ99+0.920.1θ98++0.9990.1θ1

一般来讲,超过一定时间步后,前面的数据对最终结果的影响会变得非常小,当 β = 0.9 \beta = 0.9 β=0.9 时, 0. 9 99 ≈ 1.0 × 1 0 − 5 0.9^{99} \approx 1.0 \times 10^{-5} 0.9991.0×105,这意味着 v 100 v_{100} v100 中的 θ 1 \theta_{1} θ1 对结果的影响几乎可以忽略不计。一般来说,我们最多取到 1 / 1 − β 1/1-\beta 1/1β 个时间步的数据,之后的数据对结果的影响可以忽略不计。

根据极限公式:

l i m x → 0 ( 1 − x ) 1 x = 1 e lim_{{x\to 0}}{(1-x)^{\frac{1}{x}}} = \frac{1}{e} limx0(1x)x1=e1

这边,当 $x= 1- \beta $ 时, β 1 1 − β = 1 e {\beta^{\frac{1}{1-\beta}}} = \frac{1}{e} β1β1=e1

5. Momentum算法为什么要叫“动量”?

动量算法的命名灵感来源于物理学中的动量概念,它通过在参数更新中加入过去迭代的梯度信息,模拟了物体运动时动量的效果,使得算法在优化过程中能够保持一定的“惯性”,从而在面对目标函数的曲率变化或噪声时,能够更加平滑地调整搜索方向和步长。

在物理学中,动量是物体运动状态的量度,它与物体的质量和速度有关。类似地,动量算法在机器学习中的作用可以类比为在优化过程中增加了一种“惯性”,使得算法在迭代过程中能够根据之前的梯度信息调整当前的更新方向和步长,从而在目标函数的曲面上更加平滑地滚动,避免在局部最小值或平坦区域停滞不前。

请添加图片描述

参考

[1] Some methods of speeding up the convergence of iteration methods

欢迎关注我的GitHub和微信公众号,来不及解释了,快上船!

GitHub: LLMForEverybody

仓库上有原始的Markdown文件,完全开源,欢迎大家Star和Fork!
请添加图片描述

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

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

相关文章

国庆节快乐|中国何以成为中国

华夏之土,广袤无垠;中华之史,源远流长。自古以来,中原大地物华天宝,人杰地灵,遂成一国,是谓中国。然中国之所以为中国,非徒地大物博、历史悠久也,更有其深厚之文化底蕴、…

改善大模型 RAG 效果:结合检索和重排序模型

最近这一两周不少大厂都已经开始秋招面试了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友解惑答疑&am…

苹果退出OpenAI融资谈判

🦉 AI新闻 🚀 苹果退出OpenAI融资谈判 摘要:据《华尔街日报》报道,苹果公司已决定不参与OpenAI的新一轮融资,计划筹集约65亿美元(约454.98亿元人民币)。OpenAI正进行从非营利到盈利性公司的转…

【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级

【图解秒杀系列】秒杀技术点——隔离、熔断、限流、降级 隔离熔断限流降级 隔离 隔离的思想其实就是舱壁模式,这在Docker中有所体现。在Docker中,容器与容器间互相隔离互不影响。一个容器有它独立的与外界隔离的环境与资源,包括CPU、内存等&…

AI读教链《关于美国、中国和BTC的三个超级变量​》

这篇文章探讨了美国、中国及比特币(BTC)当前经济形势中的三个超级变量,强调了对经济状况的重新审视。 美国经济与衰退:尽管有观点认为美国经济正在衰退,文章指出这取决于如何定义衰退。美股市场的市盈率处于高位&#…

实用工具推荐---- PDF 转换

直接上链接:爱PDF |面向 PDF 爱好者的在线 PDF 工具 (ilovepdf.com) 主要功能如下: 全免费!!!!

低功耗4G模组Air780E的串口通信指南

今天我们来讲解低功耗4G模组Air780E的串口通信的基本用法,合宙的小伙伴们,学起来吧! 一、硬件准备 780E开发板一套,包括天线、USB数据线。 USB转TTL工具或线(例如ch340、ft232) PC电脑,串口…

【系统方案】智慧城市大数据平台建设方案(Word)

第1章 总体说明 1.1 建设背景 1.2 建设目标 1.3 项目建设主要内容 1.4 设计原则 第2章 对项目的理解 2.1 现状分析 2.2 业务需求分析 2.3 功能需求分析 第3章 大数据平台建设方案 3.1 大数据平台总体设计 3.2 大数据平台功能设计 3.3 平台应用 第4章 政策标准保障体系 4.1 政策…

零基础学习AI大模型,手把手带你从入门到实践!看过的已经月入6w了!

引言: 在2024年这个充满挑战的就业市场环境下,许多人都在寻求掌握一门技术以增强自己的竞争力,但往往不知道该选择学习什么。今年,学习人工智能无疑是一个明智的选择。 对于外行人而言,AI可以被理解为一种模拟人类智…

【ASE】第四课_护盾效果(有碰撞效果)

今天我们一起来学习ASE插件,希望各位点个关注,一起跟随我的步伐 今天我们来学习护盾的效果。 思路: 1.添加纹理贴图和法线贴图(这里省略) 2.添加护盾边缘顶点扰动效果,也可以理解成变形效果 3.添加碰撞…

远程服务器安装anaconda并创建虚拟环境

1、承接上文新用户zrcs,在服务器的zrcs文件夹下直接下载anaconda(很慢): wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh 或者选择本地下载,清华大学开源软件镜像站:https:/…

德克威尔FS系列一体式PROFINET协议模块组态步骤

1、通讯连接图 2、硬件配置 3、安装GSD文件 4、新建工程与设备组态 1 打开TIA Portal V16,选择新建工程并组态。 2.组态设备,切换到网络视图窗口中,右侧展开硬件目录,选择PN-HH00-C1NN拖拽到网络视图中。 3.在网络视图中为远程IO模块分配控制器,鼠标单击IO模块中“未分配”…

VSCode 中配置 C/C++ 环境的步骤

VSCode 中配置 C/C 环境的步骤 1. 安装 VSCode 1、下载位置 https://code.visualstudio.com/Download2、安装 正常操作步骤,同意协议,下一步,点击完成即可 2. 安装 C/C 扩展 打开 VSCode。 点击左侧的扩展图标(或使用快捷键…

【经验技巧】如何做好S参数的仿测一致性

根据个人经验,想要做好电路板S参数的仿测一致性,如下的相关信息必须被认真对待: 1. PCB叠构(Stack up),仿真模型需要保证设计参数与板厂供应商的生产参数完全一样,这些参数包括: 叠层结构数据;介电常数;损耗因子;蚀刻因子;表面粗糙度。 2. 仿真中,需要保证信号测试…

大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【漏洞复现】孚盟云oa AjaxSendDingdingMessage接口 存在sql注入漏洞

》》》产品描述《《《 孚盟与阿里强强联手将最受青睐的经典C系列产品打造成全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化…

AI数字人:终于知道视频号咋爆的了

点击下方👇“拂晓AI数字人”关注公众号 一起学习AI 数字人,让服务更高效! 做视频号是不是有这种感觉,辛辛苦苦剪了几个小时的视频,上去就是几百播放量,就没有流量了,很抓狂。 找别人的爆的视频&…

等保2.0标准执行之高风险判定(物理环境篇)

2019年5月13日下午,国家标准新闻发布会新闻发布厅召开,网络安全等级保护2.0系列核心标准在千呼万唤中终于正式发布,等保2.0时代又迈出坚实一步。 等级保护2.0标准发布后,对广大等级保护测评机构的工作提出了更高的要求&#xff0…

【含文档】基于Springboot+Vue的个人博客系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

基于AM6254+FPGA的车载中控板,支持PC104,QNX, VXWORKS

Specification Description 处理器 TI AM625X at up to 1.4GHz 操作系统 LINUX, VXWORKS 存储 2GB DDR4, 2 x128GB EMMC, TF卡座,128Mb QSPI 接口 •标准PC104接口 •2个USB2.0 •1路VGA显示 •2路10/100/1000 Mbps ETH •1路10/1…