1. 梯度下降与RMSProp算法概述
梯度下降是机器学习中最基础的优化算法,它通过计算损失函数关于参数的梯度来更新模型权重。但传统梯度下降存在一个明显缺陷:所有参数使用相同的学习率。这在处理稀疏数据或不同特征尺度差异较大时效果不佳。
RMSProp(Root Mean Square Propagation)是Geoffrey Hinton在2012年提出的自适应学习率算法。它通过计算梯度平方的指数移动平均来调整每个参数的学习率。与AdaGrad相比,RMSProp引入衰减因子解决了学习率单调递减的问题。我在实际训练NLP模型时发现,RMSProp对词嵌入层的优化效果显著优于普通SGD。
2. RMSProp数学原理详解
2.1 核心公式解析
RMSProp的核心在于维护一个梯度平方的指数加权平均变量v:
v_t = βv_{t-1} + (1-β)(∇J(θ_t))²
其中β通常取0.9或0.99。参数更新公式为:
θ_{t+1} = θ_t - η(∇J(θ_t)/√(v_t + ε))
这里ε(如1e-8)是为数值稳定性添加的小常数。我曾在实验中忘记设置ε导致除零错误,这个细节值得特别注意。
2.2 超参数选择经验
- 基础学习率η:从0.001开始尝试,NLP任务中我常用0.01
- 衰减率β:0.9适用于大多数场景,对于非常不稳定的损失函数可尝试0.99
- ε:固定1e-8即可,除非遇到数值问题
重要提示:β值越大,v的变化越平滑,但对梯度变化的响应也越迟钝。在图像生成任务中,我通过网格搜索发现β=0.9比0.99最终Inception Score高15%
3. 从零实现RMSProp
3.1 Python实现代码
import numpy as

1267

被折叠的 条评论
为什么被折叠?



