梯度下降优化算法-RMSProp

RMSProp(Root Mean Square Propagation)是一种自适应学习率的优化算法,旨在解决 AdaGrad 学习率单调递减的问题。RMSProp 通过引入衰减系数(decay rate),使得历史梯度平方和不会无限增长,从而更好地适应非凸优化问题。


1. RMSProp 的数学原理

1.1 AdaGrad 的问题回顾

AdaGrad 的核心思想是为每个参数分配自适应的学习率,其更新公式为:

G t = G t − 1 + g t 2 G_t = G_{t-1} + g_t^2 Gt=Gt1+gt2

θ t + 1 = θ t − η G t + ϵ ⋅ g t \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot g_t θt+1=θtGt+ϵ ηgt

其中:

  • G t G_t Gt 是历史梯度平方和的累积值。
  • η \eta η 是全局学习率。
  • ϵ \epsilon ϵ 是一个很小的常数,用于避免分母为零。

AdaGrad 的问题是:

  1. 学习率单调递减:由于 G t G_t Gt 是单调递增的,学习率会逐渐减小,可能导致训练后期学习率过小,收敛缓慢。
  2. 内存开销较大:需要存储每个参数的历史梯度平方和。

1.2 RMSProp 的引入

RMSProp 通过引入衰减系数 γ \gamma γ,解决了 AdaGrad 学习率单调递减的问题。其核心思想是对历史梯度平方和进行指数加权移动平均(Exponential Moving Average, EMA),而不是简单累加。


1.3 RMSProp 的更新规则

RMSProp 的更新规则分为以下几个步骤:

1.3.1 梯度计算

首先,计算当前时刻的梯度:

g t = ∇ θ J ( θ t ) g_t = \nabla_\theta J(\theta_t) gt=θJ(θt)

其中:

  • g t g_t gt 是当前时刻的梯度向量,形状与参数 θ t \theta_t θt 相同。

1.3.2 历史梯度平方和的指数加权平均

RMSProp 使用指数加权移动平均来计算历史梯度平方和:

E [ g 2 ] t = γ ⋅ E [ g 2 ] t − 1 + ( 1 − γ ) ⋅ g t 2 E[g^2]_t = \gamma \cdot E[g^2]_{t-1} + (1 - \gamma) \cdot g_t^2 E[g2]t=γE[g2]t1+(1γ)gt2

其中:

  • E [ g 2 ] t E[g^2]_t E[g2]t 是历史梯度平方和的指数加权平均值。
  • γ \gamma γ 是衰减系数(decay rate),通常取值在 [ 0.9 , 0.99 ) [0.9, 0.99) [0.9,0.99) 之间。
  • g t 2 g_t^2 gt2 表示对梯度向量 g t g_t gt 逐元素平方。

注意:

  • 初始时, E [ g 2 ] 0 E[g^2]_0 E[g2]0 通常设置为 0。

1.3.3 自适应学习率的计算

RMSProp 使用历史梯度平方和的指数加权平均值 E [ g 2 ] t E[g^2]_t E[g2]t 来调整学习率。具体来说,学习率被调整为:

学习率 = η E [ g 2 ] t + ϵ \text{学习率} = \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} 学习率=E[g2]t+ϵ η

其中:

  • η \eta η 是全局学习率。
  • ϵ \epsilon ϵ 是一个很小的常数(通常为 1 0 − 8 10^{-8} 108),用于避免分母为零。
  • E [ g 2 ] t + ϵ \sqrt{E[g^2]_t + \epsilon} E[g2]t+ϵ 是对历史梯度平方和的指数加权平均值逐元素开平方。

1.3.4 参数更新

最后,RMSProp 的参数更新公式为:

θ t + 1 = θ t − η E [ g 2 ] t + ϵ ⋅ g t \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t θt+1=θtE[g2]t+ϵ ηgt

其中:

  • η E [ g 2 ] t + ϵ \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} E[g2]t+ϵ η 是自适应学习率。
  • g t g_t gt 是当前时刻的梯度。

2. RMSProp 的详细推导

2.1 指数加权移动平均的意义

RMSProp 使用指数加权移动平均(EMA)来计算历史梯度平方和,其意义在于:

  1. 最近梯度的影响更大:由于 γ < 1 \gamma < 1 γ<1,最近的梯度平方 g t 2 g_t^2 gt2 E [ g 2 ] t E[g^2]_t E[g2]t 的影响更大。
  2. 历史梯度的影响逐渐衰减:较早的梯度平方会随着时间步的增加而逐渐衰减。

这种机制使得 RMSProp 能够更好地适应非平稳目标函数(如非凸优化问题)。


2.2 衰减系数 γ \gamma γ 的作用

衰减系数 γ \gamma γ 控制历史梯度平方和的衰减速度:

  • γ \gamma γ 较大时(如 0.99),历史梯度平方和的变化较慢,学习率调整较为平滑。
  • γ \gamma γ 较小时(如 0.9),历史梯度平方和的变化较快,学习率调整较为敏感。

2.3 小常数 ϵ \epsilon ϵ 的作用

小常数 ϵ \epsilon ϵ 的作用是避免分母为零。具体来说:

  • E [ g 2 ] t E[g^2]_t E[g2]t 很小时, E [ g 2 ] t + ϵ \sqrt{E[g^2]_t + \epsilon} E[g2]t+ϵ 接近于 ϵ \sqrt{\epsilon} ϵ ,避免学习率过大。
  • E [ g 2 ] t E[g^2]_t E[g2]t 很大时, ϵ \epsilon ϵ 的影响可以忽略不计。

3. PyTorch 中的 RMSProp 实现

在 PyTorch 中,RMSProp 通过 torch.optim.RMSprop 实现。以下是 torch.optim.RMSprop 的主要参数:

参数名含义
params需要优化的参数(通常是模型的参数)。
lr全局学习率(learning rate),即 η \eta η,默认值为 1 0 − 2 10^{-2} 102
alpha衰减系数(decay rate),即 γ \gamma γ,默认值为 0.99。
eps分母中的小常数 ϵ \epsilon ϵ,用于避免除零,默认值为 1 0 − 8 10^{-8} 108
weight_decay权重衰减(L2 正则化)系数,默认值为 0。
momentum动量系数,默认值为 0。如果大于 0,则使用动量法。
centered是否使用中心化的 RMSProp,默认值为 False

3.1 使用 RMSProp 的代码示例

以下是一个使用 RMSProp 的完整代码示例:

import torch
import torch.nn as nn
import torch.optim as optim# 定义一个简单的线性模型
model = nn.Linear(10, 1)# 定义损失函数
criterion = nn.MSELoss()# 定义优化器,使用 RMSProp
optimizer = optim.RMSprop(model.parameters(), lr=0.01, alpha=0.99, eps=1e-8, weight_decay=0.01)# 模拟输入数据和目标数据
inputs = torch.randn(32, 10)  # 32 个样本,每个样本 10 维
targets = torch.randn(32, 1)  # 32 个目标值# 训练过程
for epoch in range(100):# 前向传播outputs = model(inputs)loss = criterion(outputs, targets)# 反向传播optimizer.zero_grad()  # 清空梯度loss.backward()        # 计算梯度# 更新参数optimizer.step()       # 更新参数# 打印损失if (epoch + 1) % 10 == 0:print(f"Epoch [{epoch+1}/100], Loss: {loss.item():.4f}")

3.2 参数设置说明

  1. 学习率 (lr)

    • 学习率 η \eta η 控制每次参数更新的步长。
    • 在 RMSProp 中,学习率会自适应调整,因此初始学习率可以设置得稍大一些。
  2. 衰减系数 (alpha)

    • 衰减系数 γ \gamma γ 控制历史梯度平方和的衰减速度,通常取值在 [ 0.9 , 0.99 ) [0.9, 0.99) [0.9,0.99) 之间。
  3. 小常数 (eps)

    • 小常数 ϵ \epsilon ϵ 用于避免分母为零,通常设置为 1 0 − 8 10^{-8} 108
  4. 权重衰减 (weight_decay)

    • 权重衰减系数用于 L2 正则化,防止过拟合。
  5. 动量 (momentum)

    • 如果大于 0,则使用动量法,进一步加速收敛。
  6. 中心化 (centered)

    • 如果设置为 True,则使用中心化的 RMSProp,计算梯度平方的均值。

4. 总结

  • RMSProp 的核心思想:通过指数加权移动平均计算历史梯度平方和,自适应调整学习率。
  • RMSProp 的更新公式
    E [ g 2 ] t = γ ⋅ E [ g 2 ] t − 1 + ( 1 − γ ) ⋅ g t 2 E[g^2]_t = \gamma \cdot E[g^2]_{t-1} + (1 - \gamma) \cdot g_t^2 E[g2]t=γE[g2]t1+(1γ)gt2
    θ t + 1 = θ t − η E [ g 2 ] t + ϵ ⋅ g t \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t θt+1=θtE[g2]t+ϵ ηgt
  • PyTorch 实现:使用 torch.optim.RMSprop,设置 lralphaeps 等参数。
  • 优缺点
    • 优点:自适应学习率,适合非凸优化问题。
    • 缺点:需要手动调整衰减系数 γ \gamma γ

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

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

相关文章

C++封装红黑树实现mymap和myset和模拟实现详解

文章目录 map和set的封装map和set的底层 map和set的模拟实现insertiterator实现的思路operatoroperator- -operator[ ] map和set的封装 介绍map和set的底层实现 map和set的底层 一份模版实例化出key的rb_tree和pair<k,v>的rb_tree rb_tree的Key和Value不是我们之前传统意…

单片机基础模块学习——PCF8591芯片

一、A/D、D/A模块 A——Analog 模拟信号:连续变化的信号(很多传感器原始输出的信号都为此类信号)D——Digital 数字信号:只有高电平和低电平两种变化(单片机芯片、微控制芯片所能处理的都是数字信号) 下面是模拟信号和连续信号的区别 为什么需要进行模拟信号和数字信号之…

Blazor-Blazor Web App项目结构

让我们还是从创建项目开始&#xff0c;来一起了解下Blazor Web App的项目情况 创建项目 呈现方式 这里我们可以看到需要选择项目的呈现方式&#xff0c;有以上四种呈现方式 ● WebAssembly ● Server ● Auto(Server and WebAssembly) ● None 纯静态界面静态SSR呈现方式 WebAs…

自动驾驶中的多传感器时间同步

目录 前言 1.多传感器时间特点 2.统一时钟源 2.1 时钟源 2.2 PPSGPRMC 2.3 PTP 2.4 全域架构时间同步方案 3.时间戳误差 3.1 硬件同步 3.2 软件同步 3.2.3 其他方式 ① ROS 中的 message_filters 包 ② 双端队列 std::deque 参考&#xff1a; 前言 对多传感器数据…

神经网络|(一)加权平均法,感知机和神经元

【1】引言 从这篇文章开始&#xff0c;将记述对神经网络知识的探索。相关文章都是学习过程中的感悟和理解&#xff0c;如有雷同或者南辕北辙的表述&#xff0c;请大家多多包涵。 【2】加权平均法 在数学课本和数理统计课本中&#xff0c;我们总会遇到求一组数据平均值的做法…

算法题(48):反转链表

审题&#xff1a; 需要我们将链表反转并返回头结点地址 思路&#xff1a; 一般在面试中&#xff0c;涉及链表的题会主要考察链表的指向改变&#xff0c;所以一般不会允许我们改变节点val值。 这里是单向链表&#xff0c;如果要把指向反过来则需要同时知道前中后三个节点&#x…

DroneXtract:一款针对无人机的网络安全数字取证工具

关于DroneXtract DroneXtract是一款使用 Golang 开发的适用于DJI无人机的综合数字取证套件&#xff0c;该工具可用于分析无人机传感器值和遥测数据、可视化无人机飞行地图、审计威胁活动以及提取多种文件格式中的相关数据。 功能介绍 DroneXtract 具有四个用于无人机取证和审…

SpringBoot中Excel表的导入、导出功能的实现

文章目录 一、easyExcel简介二、Excel表的导出2.1 添加 Maven 依赖2.2 创建导出数据的实体类4. 编写导出接口5. 前端代码6. 实现效果 三、excel表的导出1. Excel表导入的整体流程1.1 配置文件存储路径 2. 前端实现2.1 文件上传组件 2.2 文件上传逻辑3. 后端实现3.1 文件上传接口…

C语言,无法正常释放char*的空间

问题描述 #include <stdio.h> #include <stdio.h>const int STRSIZR 10;int main() {char *str (char *)malloc(STRSIZR*sizeof(char));str "string";printf("%s\n", str);free(str); } 乍一看&#xff0c;这块代码没有什么问题。直接书写…

2025蓝桥杯JAVA编程题练习Day1

1.刑侦科推理试题 题目描述 有以下10道单选题&#xff0c;编程求这10道题的答案。 这道题的答案是&#xff1a; A. A B. B C. C D. D 第5题的答案是&#xff1a; A. C B. D C. A D. B 以下选项中哪一题的答案与其他三项不同&#xff1a; A. 第3题 B. 第6题 C. 第2题 D.…

图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)

官网编译文档链接&#xff1a; https://doc.percipio.xyz/cam/latest/getstarted/sdk-ros2-compile.html 国内gitee下载SDK链接&#xff1a; https://gitee.com/percipioxyz 国外github下载SDK链接&#xff1a; https://github.com/percipioxyz 1.Camport ROS2 SDK 介绍 1.1 …

汽车网络信息安全-ISO/SAE 21434解析(中)

目录 第七章-分布式网络安全活动 1. 供应商能力评估 2. 报价 3. 网络安全职责界定 第八章-持续的网络安全活动 1. 网路安全监控 2. 网络安全事件评估 3. 漏洞分析 4. 漏洞管理 第九章-概念阶段 1. 对象定义 2. 网路安全目标 3. 网络安全概念 第十章 - 产品开发 第十…

RAG是否被取代(缓存增强生成-CAG)吗?

引言&#xff1a; 本文深入研究一种名为缓存增强生成&#xff08;CAG&#xff09;的新技术如何工作并减少/消除检索增强生成&#xff08;RAG&#xff09;弱点和瓶颈。 LLMs 可以根据输入给他的信息给出对应的输出&#xff0c;但是这样的工作方式很快就不能满足应用的需要: 因…

TCP三次握手和四次挥手

TCP 三次握手和四次挥手 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的协议&#xff0c;在建立连接和断开连接时分别需要通过 三次握手 和 四次挥手 来确保通信的可靠性和完整性。 1. 三次握手 三次握手是 TCP 建立连接的过程&#xff0c;确保客户端和服务器双方…

在线免费快速无痕去除照片海报中的文字logo

上期和大家分享了用photoshop快速无痕去除照片海报中的文字logo的方法&#xff0c;有的同学觉得安装PS太麻烦&#xff0c;有那下载安装时间早都日落西山了&#xff0c;问有没有合适的在线方法可以快速去除&#xff1b;达芬奇上网也尝试了几个网站&#xff0c;今天分享一个对国人…

VS C++ 配置OPENCV环境

VS C 配置OPENCV环境 1.下载opencv2.安装环境3.opencv环境4.VS配置opencv环境5.EXE执行文件路径的环境lib和dll需要根据是debug还是release环境来区分使用哪个 6.Windows环境 1.下载opencv 链接: link 2.安装环境 双击运行即可 3.opencv环境 include文件路径:opencv\build\…

excel如何查找一个表的数据在另外一个表是否存在

比如“Sheet1”有“张三”、“李四”“王五”三个人的数据&#xff0c;“Sheet2”只有“张三”、“李四”的数据。我们通过修改“Sheet1”的“民族”或者其他空的列&#xff0c;修改为“Sheet2”的某一列。这样修改后筛选这个修改的列为空的或者为出错的&#xff0c;就能找到两…

电路研究9.2.2——合宙Air780EP分组域相关命令

这个好像是GPRS网络相关的&#xff0c;我过来研究一下。 8.1GPRS 网络注册状态&#xff1a;ATCGREG 设置指令控制关于GPRS注册状态非请求结果码的显示。 当<n>1 并且 MT 的 GPRS 注册状态发生改变&#xff0c;即会有CGREG:<stat>的 URC 上报。 当 <n>2 并 且…

DeepSeek R1:中国AI黑马的崛起与挑战

文章目录 技术突破&#xff1a;从零开始的推理能力进化DeepSeek R1-Zero&#xff1a;纯RL训练的“自我觉醒”DeepSeek R1&#xff1a;冷启动与多阶段训练的平衡之道 实验验证&#xff1a;推理能力的全方位跃升基准测试&#xff1a;超越顶尖闭源模型蒸馏技术&#xff1a;小模型的…

UiAutomator的详细介绍

UIAutomator作为一种高效的测试框架&#xff0c;通过自动化手段显著提升了用户界面&#xff08;UI&#xff09;测试的效率与准确性。它不仅支持自动生成功能测试用例&#xff0c;还允许开发者在不同设备上执行这些测试&#xff0c;确保了应用程序的一致性和稳定性。 以下是对 …