行莫
行莫
发布于 2026-01-14 / 3 阅读
0
0

梯度下降优化-RMSProp

梯度下降优化-RMSProp

1. 问题引入

AdaGrad 的问题:

AdaGrad 通过累积所有历史梯度的平方和来自适应调整学习率,但这种方法存在一个严重问题:

  • 学习率衰减过快:随着训练进行,累积梯度平方和 $G_t$ 单调递增,学习率 $\eta / \sqrt{G_t + \epsilon}$ 会越来越小
  • 过早停止:在训练后期,学习率变得极小,参数几乎不再更新,可能无法收敛到最优解
  • 无法适应非平稳问题:对于非平稳优化问题(损失函数形状变化),AdaGrad 无法适应

RMSProp 的解决方案:

RMSProp(Root Mean Square Propagation)由 Geoff Hinton 提出,通过使用 指数移动平均(Exponential Moving Average, EMA) 来替代简单累加,解决了 AdaGrad 学习率衰减过快的问题。

核心改进:

  • 使用指数移动平均累积梯度平方,给最近的梯度更大的权重
  • 学习率不会无限衰减,能够适应非平稳优化问题
  • 在深度学习中表现优异,是 Adam 等更先进算法的基础

2. 理解 RMSProp

2.1 生活中的类比:记忆衰减

想象你在学习一门新技能(比如学习优化算法):

AdaGrad 的类比(简单累加):

  • 你记录下所有学过的知识点,每学一个就加一个
  • 随着学习时间增长,记录本越来越厚
  • 当你需要复习时,你发现记录本太厚了,不知道重点在哪里
  • 就像学习率越来越小,最后几乎不更新了

RMSProp 的类比(指数移动平均):

  • 你使用"记忆衰减"的方式记录知识点
  • 最近学的知识记得更清楚(权重更大)
  • 很久以前学的知识逐渐淡忘(权重变小)
  • 这样你的记忆本不会无限增长,而且总是关注最近的重要信息
  • 就像 RMSProp 的学习率不会无限衰减,而且能适应新的梯度信息

2.2 股票价格的类比

AdaGrad 类似简单移动平均:

  • 计算所有历史价格的平均值
  • 随着时间增长,历史数据越来越多,平均值变化越来越慢
  • 无法快速响应价格的新变化

RMSProp 类似指数移动平均(EMA):

  • 给最近的价格更大的权重
  • 能够快速响应价格的新变化
  • 同时保留历史信息,但不会让历史信息完全主导

2.3 优化问题的具体场景

假设我们在优化一个损失函数,有两个参数 $\theta_1$ 和 $\theta_2$:

场景:非平稳优化问题

  • 前100步:$\theta_1$ 的梯度一直很大(比如都是 10),$\theta_2$ 的梯度一直很小(比如都是 0.1)
  • 第101步开始:由于损失函数形状变化,$\theta_1$ 的梯度突然变小(变成 0.1),$\theta_2$ 的梯度突然变大(变成 10)

AdaGrad 的问题:

  • 对于 $\theta_1$:前100步累积了 $100 \times 10^2 = 10000$,学习率已经很小
  • 即使第101步梯度变小,学习率仍然很小,无法快速适应新情况
  • 对于 $\theta_2$:前100步累积了 $100 \times 0.1^2 = 1$,学习率还比较大
  • 但第101步梯度突然变大,可能更新过快

RMSProp 的优势:

  • 使用指数移动平均,最近的梯度权重更大
  • 对于 $\theta_1$:虽然历史梯度大,但最近的梯度小,累积值会逐渐减小,学习率会逐渐恢复
  • 对于 $\theta_2$:虽然历史梯度小,但最近的梯度大,累积值会快速增大,学习率会快速减小
  • 能够适应非平稳优化问题!

================================================================================
非平稳优化问题对比分析
================================================================================

第50步(梯度变化前):
  AdaGrad 学习率: 0.001414
  RMSProp 学习率: 0.010026

第51步(梯度变化后):
  AdaGrad 学习率: 0.001414 (变化: 1.0000x)
  RMSProp 学习率: 0.010568 (变化: 1.0541x)

第51步更新量:
  AdaGrad 更新量: 0.000141
  RMSProp 更新量: 0.001057
  RMSProp 是 AdaGrad 的 7.47 倍

关键观察:
  - AdaGrad 学习率几乎不变,无法适应梯度变化
  - RMSProp 学习率快速增大,能够适应新的梯度模式

3. AdaGrad 回顾:理解问题所在

3.1 AdaGrad 的更新公式

AdaGrad 的更新公式:

$$
G_t = G_{t-1} + g_t^2
$$

$$
\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot g_t
$$

其中:

  • $g_t = \nabla_\theta L(\theta_t)$:第 $t$ 步的梯度
  • $G_t$:累积梯度平方和(从第1步到第 $t$ 步)
  • $\eta$:初始学习率
  • $\epsilon$:小常数(通常 $10^{-8}$),防止除零

3.2 AdaGrad 的问题分析

问题1:$G_t$ 单调递增

$$
G_t = g_1^2 + g_2^2 + \cdots + g_t^2
$$

由于 $g_i^2 \geq 0$,所以 $G_t$ 是单调递增的:

$$
G_1 < G_2 < G_3 < \cdots < G_t
$$

问题2:学习率单调递减

$$
\text{学习率}_t = \frac{\eta}{\sqrt{G_t + \epsilon}}
$$

由于 $G_t$ 单调递增,所以学习率单调递减:

$$
\text{学习率}_1 > \text{学习率}_2 > \text{学习率}_3 > \cdots > \text{学习率}_t
$$

问题3:学习率趋于零

当 $t \to \infty$ 时,如果梯度不为零,则 $G_t \to \infty$,因此:

$$
\lim_{t \to \infty} \frac{\eta}{\sqrt{G_t + \epsilon}} = 0
$$

这意味着在训练后期,参数几乎不再更新!

3.3 数值示例

假设 $\eta = 0.1$,$\epsilon = 10^{-8}$,每步梯度都是 $g_t = 1$:

步数$t$$G_t$学习率更新步长
110.1000.100
10100.0320.032
1001000.0100.010
100010000.0030.003
10000100000.0010.001

可以看到,即使梯度保持不变,学习率也在不断减小!

初始学习率: 0.100000
第10步学习率: 0.031623
第100步学习率: 0.010000
第1000步学习率: 0.003162
学习率衰减比例(第1000步/第1步): 0.0316

5. RMSProp 的数学公式详解

5.1 RMSProp 的完整更新公式

RMSProp 的核心更新公式包含两个主要步骤:

步骤1:更新梯度平方的指数移动平均

$$
E[g^2]t = \beta \cdot E[g^2]{t-1} + (1-\beta) \cdot g_t^2
$$

步骤2:更新参数

$$
\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t
$$

5.2 公式中每一项的详细说明

5.2.1 梯度 $g_t$

$$
g_t = \nabla_\theta L(\theta_t)
$$

含义:

  • $g_t$ 表示在第 $t$ 步迭代时,损失函数 $L(\theta)$ 关于参数 $\theta$ 的梯度
  • 梯度指向损失函数增长最快的方向
  • 在优化过程中,我们沿着梯度的负方向更新参数以减小损失

计算方式:

  • 对于单参数:$g_t = \frac{\partial L}{\partial \theta}\Big|_{\theta=\theta_t}$
  • 对于多参数:$g_t$ 是一个向量,每个分量对应一个参数的偏导数

示例:

  • 如果损失函数是 $L(\theta) = \theta^2$,则 $g_t = 2\theta_t$
  • 如果 $\theta_t = 3$,则 $g_t = 2 \times 3 = 6$

5.2.2 梯度平方 $g_t^2$

$$
g_t^2 = (\nabla_\theta L(\theta_t))^2
$$

含义:

  • $g_t^2$ 是当前梯度 $g_t$ 的平方
  • 对于多参数情况,$g_t^2$ 表示逐元素的平方(element-wise square)
  • 梯度平方反映了当前梯度的"大小"或"强度"

作用:

  • 用于估计梯度的方差或二阶矩
  • 梯度平方越大,说明该方向的梯度变化越剧烈
  • RMSProp 使用梯度平方来调整学习率:梯度平方大的方向,学习率会相应减小

示例:

  • 如果 $g_t = 6$,则 $g_t^2 = 36$
  • 如果 $g_t = 0.1$,则 $g_t^2 = 0.01$

5.2.3 梯度平方的指数移动平均 $E[g^2]_t$

$$
E[g^2]t = \beta \cdot E[g^2]{t-1} + (1-\beta) \cdot g_t^2
$$

含义:

  • $E[g^2]_t$ 表示到第 $t$ 步为止,梯度平方的指数移动平均(Exponential Moving Average, EMA)
  • 这是 RMSProp 的核心创新,替代了 AdaGrad 中的简单累加

递推关系:

  • 初始值:$E[g^2]_0 = 0$(或初始化为一个很小的值)
  • 更新规则:$E[g^2]t = \beta \cdot E[g^2]{t-1} + (1-\beta) \cdot g_t^2$

展开形式:

$$
E[g^2]t = (1-\beta) \sum{i=1}^{t} \beta^{t-i} \cdot g_i^2
$$

这个展开式表明:

  • 第 $i$ 步的梯度平方 $g_i^2$ 的权重是 $(1-\beta) \beta^{t-i}$
  • 最近的梯度($i$ 接近 $t$)权重更大
  • 历史梯度($i$ 远离 $t$)权重指数衰减

权重分布示例($\beta = 0.9$):

  • 当前梯度 $g_t^2$ 的权重:$(1-0.9) \times 0.9^0 = 0.1$
  • 上一步梯度 $g_{t-1}^2$ 的权重:$(1-0.9) \times 0.9^1 = 0.09$
  • 两步前梯度 $g_{t-2}^2$ 的权重:$(1-0.9) \times 0.9^2 = 0.081$
  • 十步前梯度 $g_{t-10}^2$ 的权重:$(1-0.9) \times 0.9^{10} \approx 0.035$

关键特性:

  1. 有界性:$E[g^2]_t$ 不会无限增长,而是趋向于一个稳定值
  2. 适应性:如果梯度模式发生变化,$E[g^2]_t$ 能够快速适应新的梯度大小
  3. 记忆衰减:历史梯度的影响会随时间指数衰减

5.2.4 衰减系数 $\beta$(Beta)

含义:

  • $\beta$ 是衰减系数(decay rate),控制历史信息的权重
  • $\beta$ 的取值范围:$0 < \beta < 1$,通常取 $\beta = 0.9$ 或 $\beta = 0.99$

作用:

  • $\beta$ 越大(如 0.99):

    • 历史信息权重更大,$E[g^2]_t$ 变化更缓慢
    • 对梯度变化的响应更慢,更稳定
    • 适合梯度变化缓慢的优化问题
  • $\beta$ 越小(如 0.5):

    • 当前信息权重更大,$E[g^2]_t$ 变化更快
    • 对梯度变化的响应更快,更灵活
    • 适合梯度变化快速的优化问题

权重分配:

  • 当前梯度权重:$(1-\beta)$
  • 历史梯度权重:$\beta$
  • 总权重:$(1-\beta) + \beta = 1$(归一化)

常见选择:

  • $\beta = 0.9$:默认值,适合大多数情况
  • $\beta = 0.99$:梯度变化非常缓慢的情况
  • $\beta = 0.5$:梯度变化非常快速的情况

5.2.5 学习率 $\eta$(Eta)

含义:

  • $\eta$ 是初始学习率(learning rate),控制参数更新的步长
  • 学习率是优化算法中最重要的超参数之一

作用:

  • 学习率越大,参数更新步长越大,收敛可能更快,但可能不稳定
  • 学习率越小,参数更新步长越小,收敛更稳定,但可能较慢

在 RMSProp 中:

  • RMSProp 使用自适应学习率:$\text{有效学习率} = \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}}$
  • 实际的学习率会根据 $E[g^2]_t$ 动态调整
  • 梯度平方大的方向,有效学习率会减小
  • 梯度平方小的方向,有效学习率会增大

常见选择:

  • $\eta = 0.001$:深度学习中的常用默认值
  • $\eta = 0.01$:较小的模型或简单问题
  • $\eta = 0.1$:简单优化问题

与 AdaGrad 的对比:

  • AdaGrad:学习率单调递减,最终趋于零
  • RMSProp:学习率有界,不会无限衰减

5.2.6 小常数 $\epsilon$(Epsilon)

含义:

  • $\epsilon$ 是一个很小的正数,通常取 $10^{-8}$
  • 添加到分母 $\sqrt{E[g^2]_t + \epsilon}$ 中,防止除零错误

作用:

  1. 数值稳定性

    • 当 $E[g^2]_t = 0$ 时(初始状态或梯度为零),$\sqrt{E[g^2]_t} = 0$ 会导致除零错误
    • 添加 $\epsilon$ 后,$\sqrt{E[g^2]_t + \epsilon} \geq \sqrt{\epsilon} > 0$,避免除零
  2. 防止学习率过大

    • 当 $E[g^2]_t$ 很小时,$\frac{\eta}{\sqrt{E[g^2]_t}}$ 会很大
    • 添加 $\epsilon$ 后,学习率有上界:$\frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \leq \frac{\eta}{\sqrt{\epsilon}}$

常见选择:

  • $\epsilon = 10^{-8}$:最常用的默认值
  • $\epsilon = 10^{-7}$:某些实现中的选择
  • $\epsilon$ 不能太大:否则会影响自适应学习率的效果

数值示例:

  • 如果 $E[g^2]_t = 0$,则 $\sqrt{E[g^2]_t + 10^{-8}} = \sqrt{10^{-8}} = 10^{-4}$
  • 如果 $E[g^2]_t = 1$,则 $\sqrt{E[g^2]_t + 10^{-8}} \approx \sqrt{1} = 1$($\epsilon$ 的影响可忽略)

5.2.7 自适应学习率 $\frac{\eta}{\sqrt{E[g^2]_t + \epsilon}}$

$$
\text{自适应学习率} = \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}}
$$

含义:

  • 这是 RMSProp 的核心创新:每个参数(或每个方向)都有自己的自适应学习率
  • 学习率不是固定的,而是根据梯度平方的历史平均值动态调整

工作原理:

  1. 梯度平方大 → $E[g^2]_t$ 大 → 分母大 → 学习率小 → 更新步长小
  2. 梯度平方小 → $E[g^2]_t$ 小 → 分母小 → 学习率大 → 更新步长大

优势:

  • 自适应调整:不同参数有不同的学习率,适应各自的梯度特性
  • 稳定训练:梯度大的方向更新更谨慎,避免震荡
  • 加速收敛:梯度小的方向更新更大胆,加快收敛

与 AdaGrad 的对比:

  • AdaGrad:$\frac{\eta}{\sqrt{G_t + \epsilon}}$,其中 $G_t$ 单调递增,学习率单调递减
  • RMSProp:$\frac{\eta}{\sqrt{E[g^2]_t + \epsilon}}$,其中 $E[g^2]_t$ 有界,学习率有下界

数值示例:

  • 假设 $\eta = 0.1$,$\epsilon = 10^{-8}$
  • 如果 $E[g^2]_t = 1$,则学习率 $= \frac{0.1}{\sqrt{1 + 10^{-8}}} \approx 0.1$
  • 如果 $E[g^2]_t = 100$,则学习率 $= \frac{0.1}{\sqrt{100 + 10^{-8}}} = 0.01$
  • 如果 $E[g^2]_t = 0.01$,则学习率 $= \frac{0.1}{\sqrt{0.01 + 10^{-8}}} \approx 1.0$

5.2.8 参数更新量 $\frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t$

$$
\Delta \theta_t = -\frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t
$$

含义:

  • 这是第 $t$ 步的参数更新量(更新步长)
  • 负号表示沿着梯度的负方向(损失函数减小的方向)更新

组成:

  • 方向:$-g_t$(梯度的负方向)
  • 步长:$\frac{\eta}{\sqrt{E[g^2]_t + \epsilon}}$(自适应学习率)

更新规则:

$$
\theta_{t+1} = \theta_t + \Delta \theta_t = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t
$$

特性:

  • 更新量的大小取决于:
    1. 当前梯度 $g_t$ 的大小
    2. 梯度平方的历史平均值 $E[g^2]_t$
    3. 初始学习率 $\eta$

示例:

  • 如果 $g_t = 6$,$E[g^2]_t = 36$,$\eta = 0.1$,$\epsilon = 10^{-8}$
  • 则更新量 $= -\frac{0.1}{\sqrt{36 + 10^{-8}}} \times 6 = -\frac{0.1}{6} \times 6 = -0.1$
  • 参数更新:$\theta_{t+1} = \theta_t - 0.1$

5.3 RMSProp 算法的完整流程

初始化:

  • 参数:$\theta_0$(初始参数值)
  • 梯度平方的指数移动平均:$E[g^2]_0 = 0$
  • 超参数:$\eta$(学习率),$\beta$(衰减系数),$\epsilon$(小常数)

迭代过程(对于每一步 $t = 1, 2, 3, \ldots$):

  1. 计算梯度

    $$
    g_t = \nabla_\theta L(\theta_t)
    $$

  2. 更新梯度平方的指数移动平均

    $$
    E[g^2]t = \beta \cdot E[g^2]{t-1} + (1-\beta) \cdot g_t^2
    $$

  3. 计算自适应学习率

    $$
    \text{lr}_t = \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}}
    $$

  4. 更新参数

    $$
    \theta_{t+1} = \theta_t - \text{lr}_t \cdot g_t
    $$

  5. 检查收敛:如果满足收敛条件,停止迭代;否则继续


5.4 公式总结表

符号名称含义典型值
$g_t$梯度第$t$ 步的梯度计算得出
$g_t^2$梯度平方梯度的平方计算得出
$E[g^2]_t$梯度平方的指数移动平均梯度平方的历史加权平均递推计算
$\beta$衰减系数控制历史信息的权重0.9
$\eta$学习率初始学习率0.001 或 0.01
$\epsilon$小常数防止除零$10^{-8}$
$\theta_t$参数第$t$ 步的参数值优化目标
$\theta_{t+1}$更新后的参数第$t+1$ 步的参数值优化目标

5.5 关键公式的数学性质

5.5.1 $E[g^2]_t$ 的有界性

性质: 如果梯度有界,即 $|g_t| \leq M$,则 $E[g^2]_t$ 有上界。

证明:

$$
E[g^2]t = (1-\beta) \sum{i=1}^{t} \beta^{t-i} \cdot g_i^2 \leq (1-\beta) \sum_{i=1}^{t} \beta^{t-i} \cdot M^2
$$

当 $t \to \infty$ 时:

$$
\lim_{t \to \infty} E[g^2]t \leq (1-\beta) M^2 \sum{i=0}^{\infty} \beta^i = (1-\beta) M^2 \cdot \frac{1}{1-\beta} = M^2
$$

因此,$E[g^2]_t \leq M^2$,有上界。

意义: 学习率 $\frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \geq \frac{\eta}{\sqrt{M^2 + \epsilon}}$ 有下界,不会趋于零。


5.5.2 权重归一化

性质: 展开式中的权重总和为 $1-\beta^t$。

证明:

$$
\sum_{i=1}^{t} (1-\beta) \beta^{t-i} = (1-\beta) \sum_{j=0}^{t-1} \beta^j = (1-\beta) \cdot \frac{1-\beta^t}{1-\beta} = 1-\beta^t
$$

当 $t$ 很大时,$1-\beta^t \approx 1$,权重近似归一化。

意义: $E[g^2]_t$ 可以理解为梯度平方的加权平均,权重总和接近 1。


5.5.3 有效窗口大小

定义: 有效窗口大小是指包含总权重的一定比例(如 90%)所需的步数。

计算: 对于 $\beta = 0.9$,包含 90% 权重的步数 $k$ 满足:

$$
(1-\beta) \sum_{j=0}^{k-1} \beta^j = 1-\beta^k \geq 0.9
$$

解得:$k \geq \frac{\ln(0.1)}{\ln(0.9)} \approx 22$ 步

意义: RMSProp 主要关注最近约 20-30 步的梯度信息,历史更远的信息影响很小。

5.6 RMSProp 的详细计算示例

5.6.1 单参数优化示例

假设我们要优化函数 $f(\theta) = \theta^2$,初始值 $\theta_0 = 3$。

参数设置:

  • 学习率 $\eta = 0.1$
  • 衰减系数 $\beta = 0.9$
  • 小常数 $\epsilon = 10^{-8}$

梯度计算:

$$
g_t = \frac{\partial f}{\partial \theta} = 2\theta_t
$$

让我们逐步计算前5步:

初始状态:

  • $\theta_0 = 3$
  • $E[g^2]_0 = 0$

第1步:

  • $g_1 = 2 \times 3 = 6$
  • $E[g^2]_1 = 0.9 \times 0 + 0.1 \times 6^2 = 0 + 3.6 = 3.6$
  • 学习率 = $\frac{0.1}{\sqrt{3.6 + 10^{-8}}} \approx 0.0527$
  • $\theta_1 = 3 - 0.0527 \times 6 = 3 - 0.316 = 2.684$

第2步:

  • $g_2 = 2 \times 2.684 = 5.368$
  • $E[g^2]_2 = 0.9 \times 3.6 + 0.1 \times 5.368^2 = 3.24 + 2.879 = 6.119$
  • 学习率 = $\frac{0.1}{\sqrt{6.119 + 10^{-8}}} \approx 0.0404$
  • $\theta_2 = 2.684 - 0.0404 \times 5.368 = 2.684 - 0.217 = 2.467$

第3步:

  • $g_3 = 2 \times 2.467 = 4.934$
  • $E[g^2]_3 = 0.9 \times 6.119 + 0.1 \times 4.934^2 = 5.507 + 2.434 = 7.941$
  • 学习率 = $\frac{0.1}{\sqrt{7.941 + 10^{-8}}} \approx 0.0355$
  • $\theta_3 = 2.467 - 0.0355 \times 4.934 = 2.467 - 0.175 = 2.292$

第4步:

  • $g_4 = 2 \times 2.292 = 4.584$
  • $E[g^2]_4 = 0.9 \times 7.941 + 0.1 \times 4.584^2 = 7.147 + 2.101 = 9.248$
  • 学习率 = $\frac{0.1}{\sqrt{9.248 + 10^{-8}}} \approx 0.0329$
  • $\theta_4 = 2.292 - 0.0329 \times 4.584 = 2.292 - 0.151 = 2.141$

第5步:

  • $g_5 = 2 \times 2.141 = 4.282$
  • $E[g^2]_5 = 0.9 \times 9.248 + 0.1 \times 4.282^2 = 8.323 + 1.834 = 10.157$
  • 学习率 = $\frac{0.1}{\sqrt{10.157 + 10^{-8}}} \approx 0.0314$
  • $\theta_5 = 2.141 - 0.0314 \times 4.282 = 2.141 - 0.134 = 2.007$

5.6.2 关键观察

  1. $E[g^2]_t$ 的变化:从 3.6 → 6.119 → 7.941 → 9.248 → 10.157

    • 虽然递增,但增长速度在减慢(因为梯度在减小)
    • 不会像 AdaGrad 那样无限增长
  2. 学习率的变化:从 0.0527 → 0.0404 → 0.0355 → 0.0329 → 0.0314

    • 学习率在减小,但减小的速度在减慢
    • 不会像 AdaGrad 那样趋于零
  3. 参数更新的效果:$\theta$ 从 3 → 2.684 → 2.467 → 2.292 → 2.141 → 2.007

    • 逐渐接近最优值 0
    • 更新步长适中,不会过大或过小

================================================================================
RMSProp 详细计算示例:f(θ) = θ²
================================================================================
初始参数:θ₀ = 3.0
学习率:η = 0.1
衰减系数:β = 0.9
小常数:ε = 1e-08
================================================================================
步数     θ            g            E[g²]        学习率          更新量          θ_new     
--------------------------------------------------------------------------------
1      3.000000     6.000000     3.600000     0.052705     -0.316228    2.683772  
2      2.683772     5.367544     6.121053     0.040419     -0.216951    2.466821  
3      2.466821     4.933642     7.943030     0.035482     -0.175055    2.291766  
4      2.291766     4.583532     9.249603     0.032881     -0.150709    2.141057  
5      2.141057     4.282114     10.158293    0.031375     -0.134353    2.006704  
6      2.006704     4.013408     10.753208    0.030495     -0.122390    1.884314  
7      1.884314     3.768629     11.098143    0.030018     -0.113125    1.771189  
8      1.771189     3.542379     11.243173    0.029823     -0.105645    1.665544  
9      1.665544     3.331088     11.228471    0.029843     -0.099409    1.566135  
10     1.566135     3.132270     11.086735    0.030033     -0.094071    1.472064  
================================================================================
最终参数:θ = 1.472064
最优值:θ* = 0.0
误差:|θ - θ*| = 1.472064
================================================================================

6. RMSProp 的变体形式

6.1 标准形式(我们使用的)

$$
E[g^2]t = \beta \cdot E[g^2]{t-1} + (1-\beta) \cdot g_t^2
$$

$$
\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t
$$

6.2 另一种常见形式

有些文献中使用以下形式:

$$
E[g^2]t = \beta \cdot E[g^2]{t-1} + g_t^2
$$

$$
\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t
$$

区别: 在更新 $E[g^2]_t$ 时,没有 $(1-\beta)$ 系数。

等价性: 这两种形式在数学上不等价,但可以通过调整 $\beta$ 和学习率 $\eta$ 来达到相似的效果。

我们使用标准形式的原因:

  • 权重归一化:$(1-\beta) \sum_{i=1}^{t} \beta^{t-i} = 1-\beta^t \approx 1$(当 $t$ 很大时)
  • 更符合指数移动平均的标准定义
  • 与 Adam 等后续算法保持一致

6.3 参数 $\beta$ 的选择

$\beta$ 的影响:

$\beta$ 值历史信息权重当前信息权重适用场景
0.9默认选择,适合大多数情况
0.99很大很小梯度变化缓慢的情况
0.5梯度变化快速的情况

经验法则:

  • 大多数情况下,$\beta = 0.9$ 是一个很好的默认值
  • 如果优化过程不稳定,可以尝试减小 $\beta$(如 0.5)
  • 如果优化过程过于保守,可以尝试增大 $\beta$(如 0.99)

6.4 学习率 $\eta$ 的选择

RMSProp 的学习率选择:

  • RMSProp 对学习率的选择比 AdaGrad 更不敏感
  • 通常可以使用比 AdaGrad 稍大的学习率
  • 常见的选择:0.001, 0.01, 0.1
  • 建议从 0.001 开始,根据训练效果调整

7. RMSProp 、AdaGrad 、普通梯度下降完整对比

7.1 算法对比总结

特性普通梯度下降AdaGradRMSProp
学习率固定自适应(单调递减)自适应(有界)
历史信息不使用简单累加指数移动平均
学习率衰减过快,趋于零适中,有界
非平稳适应
参数$\eta$$\eta, \epsilon$$\eta, \beta, \epsilon$
适用场景简单凸优化稀疏梯度问题深度学习、非平稳问题

7.2 数学公式对比

普通梯度下降:

$$
\theta_{t+1} = \theta_t - \eta \cdot g_t
$$

AdaGrad:

$$
G_t = G_{t-1} + g_t^2
$$

$$
\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot g_t
$$

RMSProp:

$$
E[g^2]t = \beta \cdot E[g^2]{t-1} + (1-\beta) \cdot g_t^2
$$

$$
\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t
$$

7.3 关键区别

  1. 历史信息的处理方式

    • AdaGrad:简单累加,所有历史梯度权重相等
    • RMSProp:指数移动平均,最近梯度权重更大
  2. 学习率的衰减

    • AdaGrad:单调递减,趋于零
    • RMSProp:有界衰减,能够适应非平稳问题
  3. 计算复杂度

    • 两者相同:都是 $O(n)$,其中 $n$ 是参数数量
    • 都需要存储每个参数的累积值($G_t$ 或 $E[g^2]_t$)

测试函数:Rosenbrock 函数(经典的优化测试函数)
f(x, y) = (1-x)² + 100(y-x²)²

8. RMSProp 的优缺点总结

8.1 优点

  1. 解决 AdaGrad 学习率衰减过快的问题

    • 使用指数移动平均,学习率不会无限衰减
    • 能够适应非平稳优化问题
  2. 自适应学习率

    • 每个参数有自己的学习率
    • 梯度大的参数学习率小,梯度小的参数学习率大
  3. 计算效率高

    • 计算复杂度与 AdaGrad 相同:$O(n)$
    • 只需要存储每个参数的 $E[g^2]_t$
  4. 在深度学习中表现优异

    • 是 Adam 等更先进算法的基础
    • 适合处理大规模神经网络
  5. 对超参数不敏感

    • 默认参数($\beta=0.9$)在大多数情况下表现良好
    • 比 AdaGrad 对学习率的选择更不敏感

8.2 缺点

  1. 仍然可能陷入局部最优

    • 与所有基于梯度的优化算法一样,可能陷入局部最优
    • 需要结合其他技术(如学习率调度、动量等)
  2. 需要额外的超参数

    • 需要选择衰减系数 $\beta$
    • 虽然默认值通常有效,但在某些问题上可能需要调整
  3. 内存开销

    • 需要存储每个参数的 $E[g^2]_t$
    • 对于超大规模模型,内存开销可能较大
  4. 可能的学习率过小

    • 在某些情况下,$E[g^2]_t$ 可能很大,导致学习率过小
    • 需要合理设置初始学习率 $\eta$

8.3 适用场景

RMSProp 特别适合:

  • 深度学习(神经网络训练)
  • 非平稳优化问题
  • 稀疏梯度问题
  • 大规模参数优化

RMSProp 可能不适合:

  • 简单的凸优化问题(普通梯度下降可能更简单)
  • 需要精确控制学习率衰减的问题
  • 内存受限的场景

8.4 与其他算法的关系

RMSProp 是以下算法的基础:

  • Adam:RMSProp + Momentum
  • AdaDelta:RMSProp 的改进版本(不需要学习率)
  • Nadam:Adam + Nesterov 加速梯度

RMSProp 的改进方向:

  • 结合动量(Momentum)→ Adam
  • 自适应学习率衰减 → AdaDelta
  • 二阶信息 → 自然梯度方法

评论