梯度下降法
字数 1602 2025-10-27 08:14:12

梯度下降法

梯度下降法是一种用于寻找函数局部最小值的迭代优化算法。它通过沿着函数梯度(即最陡下降方向)的反方向逐步调整参数来逼近最小值点。这个方法在机器学习和运筹学中应用广泛,特别是在处理大规模优化问题时。

第一步:理解梯度的概念
梯度是一个向量,包含函数在各个方向上的偏导数。对于一个多元函数 \(f(x_1, x_2, \dots, x_n)\),其梯度记为 \(\nabla f\),定义为:

\[\nabla f = \left( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \dots, \frac{\partial f}{\partial x_n} \right) \]

梯度指向函数值增长最快的方向,而负梯度(\(-\nabla f\))则指向函数值下降最快的方向。例如,若 \(f(x, y) = x^2 + y^2\),则梯度为 \((2x, 2y)\),在点 (1,1) 处,梯度指向 (2,2)(上升方向),负梯度指向 (-2,-2)(下降方向)。

第二步:梯度下降法的基本原理
算法的核心思想是:从初始点 \(x^{(0)}\) 开始,迭代更新参数:

\[x^{(k+1)} = x^{(k)} - \alpha \nabla f(x^{(k)}) \]

其中:

  • \(x^{(k)}\) 是第 \(k\) 次迭代的参数值。
  • \(\alpha\) 是学习率(步长),控制每次更新的幅度。
  • \(\nabla f(x^{(k)})\) 是当前点的梯度。

每次迭代沿负梯度方向移动一小步,逐步逼近局部最小值。例如,对于函数 \(f(x) = x^2\),梯度为 \(2x\),从 \(x=3\) 开始,若 \(\alpha=0.1\),则迭代过程为:
\(x^{(1)} = 3 - 0.1 \times 6 = 2.4\)
\(x^{(2)} = 2.4 - 0.1 \times 4.8 = 1.92\)
逐渐收敛到最小值点 \(x=0\)

第三步:学习率的选择
学习率 \(\alpha\) 是关键超参数:

  • \(\alpha\) 太小,收敛速度慢,需要大量迭代(如图1左)。
  • \(\alpha\) 太大,可能越过最小值点,导致振荡甚至发散(如图1右)。
  • 自适应学习率策略(如Adam算法)可动态调整 \(\alpha\),提高效率。

第四步:梯度下降法的变种
根据数据使用方式,可分为三类:

  1. 批量梯度下降:每次迭代使用全部数据计算梯度。优点是精度高,但计算成本高。
  2. 随机梯度下降:每次随机选择一个样本计算梯度。计算快,但收敛不稳定。
  3. 小批量梯度下降:折中方案,每次使用一小批样本(如32个)。兼顾稳定性和效率,最为常用。

第五步:收敛性与停止条件
梯度下降法在函数凸且光滑时保证收敛到全局最小值。非凸函数可能陷入局部极小值。常用停止条件:

  • 梯度范数小于阈值(如 \(\| \nabla f \| < 10^{-6}\))。
  • 相邻迭代点变化很小(如 \(\| x^{(k+1)} - x^{(k)} \| < \epsilon\))。
  • 达到最大迭代次数。

第六步:实际应用中的注意事项

  • 特征缩放:若输入特征量纲差异大(如年龄 vs. 收入),需标准化(如Z-score)以加速收敛。
  • 非凸问题:结合动量法(如加入惯性项)避免卡在局部极小值。
  • 正则化:在机器学习中,常加入L1/L2正则项防止过拟合。

通过以上步骤,梯度下降法成为一个灵活且强大的工具,可用于训练神经网络、拟合逻辑回归模型等复杂任务。其核心优势在于简单通用,尤其适合大规模数据场景。

梯度下降法 梯度下降法是一种用于寻找函数局部最小值的迭代优化算法。它通过沿着函数梯度(即最陡下降方向)的反方向逐步调整参数来逼近最小值点。这个方法在机器学习和运筹学中应用广泛,特别是在处理大规模优化问题时。 第一步:理解梯度的概念 梯度是一个向量,包含函数在各个方向上的偏导数。对于一个多元函数 \( f(x_ 1, x_ 2, \dots, x_ n) \),其梯度记为 \( \nabla f \),定义为: \[ \nabla f = \left( \frac{\partial f}{\partial x_ 1}, \frac{\partial f}{\partial x_ 2}, \dots, \frac{\partial f}{\partial x_ n} \right) \] 梯度指向函数值增长最快的方向,而负梯度(\( -\nabla f \))则指向函数值下降最快的方向。例如,若 \( f(x, y) = x^2 + y^2 \),则梯度为 \( (2x, 2y) \),在点 (1,1) 处,梯度指向 (2,2)(上升方向),负梯度指向 (-2,-2)(下降方向)。 第二步:梯度下降法的基本原理 算法的核心思想是:从初始点 \( x^{(0)} \) 开始,迭代更新参数: \[ x^{(k+1)} = x^{(k)} - \alpha \nabla f(x^{(k)}) \] 其中: \( x^{(k)} \) 是第 \( k \) 次迭代的参数值。 \( \alpha \) 是学习率(步长),控制每次更新的幅度。 \( \nabla f(x^{(k)}) \) 是当前点的梯度。 每次迭代沿负梯度方向移动一小步,逐步逼近局部最小值。例如,对于函数 \( f(x) = x^2 \),梯度为 \( 2x \),从 \( x=3 \) 开始,若 \( \alpha=0.1 \),则迭代过程为: \( x^{(1)} = 3 - 0.1 \times 6 = 2.4 \), \( x^{(2)} = 2.4 - 0.1 \times 4.8 = 1.92 \), 逐渐收敛到最小值点 \( x=0 \)。 第三步:学习率的选择 学习率 \( \alpha \) 是关键超参数: 若 \( \alpha \) 太小,收敛速度慢,需要大量迭代(如图1左)。 若 \( \alpha \) 太大,可能越过最小值点,导致振荡甚至发散(如图1右)。 自适应学习率策略(如Adam算法)可动态调整 \( \alpha \),提高效率。 第四步:梯度下降法的变种 根据数据使用方式,可分为三类: 批量梯度下降 :每次迭代使用全部数据计算梯度。优点是精度高,但计算成本高。 随机梯度下降 :每次随机选择一个样本计算梯度。计算快,但收敛不稳定。 小批量梯度下降 :折中方案,每次使用一小批样本(如32个)。兼顾稳定性和效率,最为常用。 第五步:收敛性与停止条件 梯度下降法在函数凸且光滑时保证收敛到全局最小值。非凸函数可能陷入局部极小值。常用停止条件: 梯度范数小于阈值(如 \( \| \nabla f \| < 10^{-6} \))。 相邻迭代点变化很小(如 \( \| x^{(k+1)} - x^{(k)} \| < \epsilon \))。 达到最大迭代次数。 第六步:实际应用中的注意事项 特征缩放 :若输入特征量纲差异大(如年龄 vs. 收入),需标准化(如Z-score)以加速收敛。 非凸问题 :结合动量法(如加入惯性项)避免卡在局部极小值。 正则化 :在机器学习中,常加入L1/L2正则项防止过拟合。 通过以上步骤,梯度下降法成为一个灵活且强大的工具,可用于训练神经网络、拟合逻辑回归模型等复杂任务。其核心优势在于简单通用,尤其适合大规模数据场景。