什么是 梯度下降?
梯度下降是一阶优化方法,通过反复从参数中减去目标函数梯度与正步长的乘积,利用局部斜率信息寻找更低的目标函数值。
快速了解
| 全称 | Gradient Descent Optimization Algorithm |
|---|---|
| 创建时间 | 1847 年由 Augustin-Louis Cauchy 提出 |
| 规范文档 | 官方规范 |
工作原理
区分求导与优化
反向传播或自动微分负责计算复合模型与损失的导数,梯度下降负责把导数转换为参数更新。普通梯度下降使用全量梯度,随机和小批量方法则从样本估计梯度。Momentum、Adam 等优化器还会变换梯度历史或按坐标缩放,因此属于相关的一阶方法,不是基本更新公式的同义词。
控制步长、噪声与条件数
学习率过大可能振荡或发散,过小则浪费计算;特征尺度不一致和病态曲率会导致缓慢的之字形轨迹。小批量大小同时影响梯度方差与硬件效率,因此不能脱离批量单独调学习率。Warmup、衰减、归一化、Momentum、裁剪和预条件解决的是不同症状,应依据训练监控选择。
验证优化过程,但不要混淆泛化
持续记录训练损失、验证指标、梯度范数、更新量与参数量之比、非有限值和吞吐。对小型确定性样例使用有限差分核对解析梯度,可以发现求导实现错误。驻点不一定是全局最优,训练损失更低也不保证未见数据表现更好;发布还需独立的留出任务评估。
主要特点
- 使用一阶导数信息构造局部参数更新
- 是否下降或收敛取决于步长规则与目标函数几何
- 可使用全数据、单样本或小批量梯度估计
- 不同于负责计算梯度的反向传播
- 可能接近驻点但无法普遍保证全局最优
- 需要数值、优化过程和留出任务三类诊断
常见用途
- 通过最小化经验风险拟合线性或逻辑模型
- 使用反向传播梯度更新神经网络参数
- 优化向量嵌入与矩阵分解目标
- 用确定性凸函数测试优化器实现
- 使用分布式小批量梯度训练大模型
示例
Loading code...常见问题
沿负梯度更新一定会降低损失吗?
梯度存在时,无穷小的负梯度方向才保证局部下降。有限更新还取决于步长和曲率;使用有噪小批量梯度时,即使算法在期望上改善,全数据损失也可能在某一次更新后升高。
批量、随机和小批量梯度下降有什么区别?
批量梯度下降每次使用全数据,基础 SGD 每次采样一个样本,小批量 SGD 则平均一组样本。三者的单步成本、方差、并行效率和收敛行为不同;小批量方法能高效利用加速器,因此在深度学习中更常见。
梯度下降和反向传播有什么区别?
反向传播负责沿计算图高效求导,梯度下降负责消费这些导数并更新参数。模型可以用反向传播配合 Adam 等其他优化器,梯度下降也可以使用解析推导、自动微分或数值方法得到的梯度。
梯度下降能找到全局最小值吗?
对满足条件的凸目标和步长可以给出较强收敛保证;神经网络损失是非凸的,实践通常只寻找有用的低损失驻点,而不是证明全局最优。初始化、噪声、条件数、调度和架构都会影响结果。
如何排查梯度下降训练异常?
先在小型确定性批次上用中心有限差分核对解析梯度,并确认足够小的步长能降低损失。随后监测非有限值、梯度与更新范数、学习率、训练和验证指标及吞吐,再逐步加入分布式或混合精度复杂度。