式\((11.78)\)的直观理解:最开始的时候梯度很大,为了防止震荡,我们需要减小步长,这是分母的作用,但是梯度大就表示参数更新也应该大,所以需要增大步长,这是分子的作用;迭代一段时间之后,梯度就变小了,此时为了加速收敛,我们需要增大步长,这是分母的作用(注意这里跟\(\text{AdaGrad}\)不一样,这里用的是泄露平均值),但是此时参数已经接近收敛了,所以也要减少步长,这是分子的作用。DeepSeek的回答见下
Adadelta算法中调整后的梯度更新公式(式11.9.3)的直观理解可以通过以下三个关键视角展开:
1. 动态平衡的双历史视角
公式的核心结构:
[
g't = \underbrace{\frac{\sqrt{\Delta x{t-1}}}{\sqrt{s_t}}}_{\text{自适应杠杆}} \odot g_t
]
- 分母 ( \sqrt{s_t} ):继承自RMSProp思想,代表梯度二阶矩的历史衰减平均。
- 作用:对当前梯度 ( g_t ) 进行归一化,抑制波动剧烈的参数更新(如梯度爆炸时,分母增大会缩小步长)。
- 分子 ( \sqrt{\Delta x_{t-1}} ):Adadelta的独特设计,代表参数更新量二阶矩的历史衰减平均。
- 作用:将过去参数的实际更新幅度作为参考基准,动态校准当前步长(若历史更新幅度大,则适当放大当前步长)。
直观意义:
通过同时考虑梯度波动历史(分母)和参数更新历史(分子),算法自动平衡了以下矛盾:
- 梯度大时需缩小步长(防止震荡),但若参数本身需要大幅调整(Δx_{t-1}大),则允许适当放大步长;
- 梯度小时需放大步长(加速收敛),但若参数已接近稳定(Δx_{t-1}小),则抑制无效噪声。
2. 无学习率的自洽系统
传统优化器(如SGD)需要手动设置学习率 ( \eta ),而Adadelta通过式11.9.3-11.9.4构建了一个自洽的更新系统:
- 分子隐含学习率:式11.9.3中的 ( \sqrt{\Delta x_{t-1}} ) 实际替代了人工设定的 ( \eta )。
- 自反馈机制:当前调整后的梯度 ( g'_t ) 会通过式11.9.4更新到 ( \Delta x_t ),进而影响下一时间步的分子值,形成闭环反馈。
物理类比:
想象一个弹簧系统,弹簧的伸缩幅度(步长)不仅取决于当前外力(梯度),还受之前伸缩历史(Δx)的影响。系统通过历史记忆自动调节刚性系数,无需外部设定初始参数。
3. 对病态条件的鲁棒性
通过对比其他优化器分析其优势:
优化器 | 核心缺陷 | Adadelta的改进策略 |
---|---|---|
AdaGrad | 学习率单调递减至零(早停问题) | 使用泄露平均(ρ < 1)替代累积和,避免分母膨胀 |
RMSProp | 依赖人工设定初始学习率η | 用Δx_{t-1}动态替代η,实现无超参数自适应 |
Momentum | 在梯度方向突变时产生振荡 | 通过Δx_{t-1}平滑历史更新,抑制方向抖动 |
实例说明:
假设某参数在训练初期需要大幅调整(Δx_{t-1}较大),但当前梯度因噪声突然增大(s_t骤升):
- AdaGrad:分母持续累积,步长被过度压制,导致收敛停滞;
- Adadelta:分子Δx_{t-1}较大,部分抵消分母s_t的影响,保持合理步长,继续推进参数更新。
总结:核心直觉
Adadelta的梯度调整公式本质上构建了一个双历史驱动的自适应杠杆:
- 分母压制梯度方向的瞬时波动(防震荡);
- 分子放大参数维度的长期趋势(促收敛);
- 二者通过比值动态平衡,使优化过程既稳定又能快速适应不同参数的尺度差异,最终实现无需手动调学习率的高效优化。