深入理解梯度下降算法:从基础到多维优化

深入理解梯度下降算法:从基础到多维优化

d2l-zh 《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。 d2l-zh 项目地址: https://gitcode.com/gh_mirrors/d2/d2l-zh

引言

梯度下降是机器学习中最基础也最重要的优化算法之一。虽然现代深度学习很少直接使用原始梯度下降,但理解它的原理对于掌握更高级的优化技术至关重要。本文将系统性地介绍梯度下降算法,从一维情况开始,逐步扩展到多维空间,并探讨其变种和改进方法。

一维梯度下降:直观理解

泰勒展开与梯度下降原理

考虑一个连续可微的实值函数f: ℝ → ℝ,我们可以使用泰勒展开来理解梯度下降的工作原理。在一阶近似下:

f(x + ε) ≈ f(x) + εf'(x)

这里的关键观察是:如果我们沿着负梯度方向(即ε = -ηf'(x))移动一小步,函数值会减小:

f(x - ηf'(x)) ≈ f(x) - η(f'(x))²

只要学习率η选择得当,这个更新过程就能保证函数值不断减小,最终收敛到局部最小值。

学习率的选择

学习率η是梯度下降中的关键超参数:

  • η太小:收敛速度过慢,需要大量迭代
  • η太大:可能导致振荡甚至发散

通过简单的二次函数f(x)=x²的实验,我们可以清楚地看到不同学习率的影响:

  • η=0.2:稳定收敛
  • η=0.05:收敛过慢
  • η=1.1:直接发散

局部最小值问题

对于非凸函数(如f(x)=x·cos(cx)),梯度下降可能陷入局部最小值而非全局最小值。高学习率尤其容易导致这个问题,因为大的步长可能使算法"跳过"全局最小值区域。

多维梯度下降:扩展到高维空间

在多元情况下,梯度∇f(x)是一个由各维度偏导数组成的向量。多维泰勒展开类似:

f(x + ε) ≈ f(x) + εᵀ∇f(x)

更新规则变为:

x ← x - η∇f(x)

以二维二次函数f(x)=x₁²+2x₂²为例,我们可以观察到梯度下降的轨迹。由于不同维度的曲率不同(这里x₂方向曲率更大),固定学习率会导致优化路径出现振荡。

梯度下降的改进方法

牛顿法:利用二阶信息

牛顿法通过引入Hessian矩阵(二阶导数)来改进收敛速度:

x ← x - [∇²f(x)]⁻¹∇f(x)

优点:

  • 对于二次函数一步收敛
  • 在凸函数附近收敛极快

缺点:

  • 计算和存储Hessian矩阵代价高
  • 对于非凸函数可能不稳定

预处理技术

预处理通过调整不同维度的尺度来改善优化:

  • 对角预处理:仅使用Hessian的对角元素
  • 绝对值预处理:避免负曲率问题

预处理本质上相当于为不同参数设置不同的学习率,这在各维度尺度差异大时特别有用。

线搜索方法

线搜索通过在梯度方向上寻找最优步长来改善收敛:

  • 精确线搜索:计算代价高
  • 回溯线搜索:实用折中方案

虽然线搜索理论上很吸引人,但在深度学习中由于计算代价很少使用。

实践建议与总结

  1. 学习率选择至关重要:需要平衡收敛速度和稳定性
  2. 高维问题中,预处理可以显著改善性能
  3. 牛顿法在凸优化中表现优异,但对深度学习不实用
  4. 对于非凸问题,原始梯度下降可能比二阶方法更稳定

梯度下降虽然简单,但包含了优化算法的核心思想。理解这些基础原理对于掌握更复杂的优化技术如Adam、RMSProp等至关重要。在实际应用中,我们通常需要根据具体问题特点选择合适的优化算法和参数。

d2l-zh 《动手学深度学习》:面向中文读者、能运行、可讨论。中英文版被70多个国家的500多所大学用于教学。 d2l-zh 项目地址: https://gitcode.com/gh_mirrors/d2/d2l-zh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

侯滔武Dark

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值