ARTICLE

梯度下降

梯度下降 (Gradient Descent) 梯度下降 (Gradient Descent) 是一种基础且极为重要的迭代优化算法,其核心目标是寻找一个可微函数的局部最小值 (local minimum)。在机器学习和统计学领域,该算法被广泛用于通过最小化损失函数 (Loss Function) 或成本函数 (Cost Function) 来训练模型,从而优

浏览 54 更新 2025-10-26

梯度下降 (Gradient Descent)

梯度下降 (Gradient Descent) 是一种基础且极为重要的迭代优化算法,其核心目标是寻找一个可微函数的局部最小值 (local minimum)。在机器学习和统计学领域,该算法被广泛用于通过最小化损失函数 (Loss Function) 或成本函数 (Cost Function) 来训练模型,从而优化模型的参数。

该算法的直观思想类似于一个人在浓雾中下山:由于视野受限,无法直接看到山谷的最低点,最合理的策略是环顾四周,找到当前位置最陡峭的下坡方向,然后沿着这个方向迈出一步。重复此过程,最终将到达一个山谷的底部,即一个局部最低点。

数学原理

假设有一个目标函数 J(θ)J(\theta) 需要最小化,其中 θ=(θ0,θ1,,θn)\theta = (\theta_0, \theta_1, \ldots, \theta_n) 是由模型参数组成的向量。梯度下降算法通过迭代更新这些参数,逐步减小 J(θ)J(\theta) 的值。

首先需要理解梯度的概念。函数 J(θ)J(\theta) 的梯度,表示为 J(θ)\nabla J(\theta),是一个向量,其方向是函数在点 θ\theta 处增长最快的方向,其大小表示增长的速率。梯度的计算方式是求解函数对每个参数的偏导数 (partial derivative):

J(θ)=(Jθ0,Jθ1,,Jθn)\nabla J(\theta) = \left( \frac{\partial J}{\partial \theta_0}, \frac{\partial J}{\partial \theta_1}, \ldots, \frac{\partial J}{\partial \theta_n} \right)

梯度下降的核心思想是朝着与梯度相反的方向更新参数,因为梯度的反方向是函数值下降最快的方向。更新规则如下:

θnew:=θoldαJ(θold)\theta_{\text{new}} := \theta_{\text{old}} - \alpha \nabla J(\theta_{\text{old}})

其中 α\alpha学习率 (Learning Rate),一个正的标量,控制每次参数更新的步长。这个过程持续迭代,直到算法收敛 (converge),即参数更新变得非常小,或达到预设的迭代次数。

学习率 α\alpha 是至关重要的超参数 (hyperparameter)。若 α\alpha 太小,收敛速度极慢,需要大量迭代;若 α\alpha 太大,可能越过最小值点,导致震荡甚至发散。选择合适的学习率是成功应用梯度下降的关键步骤之一。

三种主要类型

根据每次迭代计算梯度时使用的数据量,梯度下降分为三种类型。假设训练数据集有 mm 个样本。

一、批量梯度下降 (Batch Gradient Descent, BGD)。每次参数更新都需要计算整个训练数据集的梯度,即对所有 mm 个样本求损失后取平均梯度。优点在于梯度方向准确、收敛稳定;对于凸函数 (convex function) 保证收敛到全局最小值,对非凸函数收敛到局部最小值。缺点是数据集巨大时计算开销极大,且无法用于在线学习。

二、随机梯度下降 (Stochastic Gradient Descent, SGD)。与 BGD 相反,每次更新仅随机选择一个训练样本来计算梯度并更新参数。更新规则为:

θ:=θαθJ(θ;x(i),y(i))\theta := \theta - \alpha \nabla_{\theta} J(\theta; x^{(i)}, y^{(i)})

优点是更新速度极快,且由于随机性(噪声)可能跳出浅的局部最小值,适用于在线学习。缺点是梯度估计方差大,参数更新方向不稳定,损失函数下降过程伴随剧烈震荡,永不精确收敛。

三、小批量梯度下降 (Mini-Batch Gradient Descent, MBGD)。这是 BGD 和 SGD 的折中方案,也是现代深度学习中最常用的方法。每次更新使用一小批(通常 10 到 1000 个)随机选择的样本:

θ:=θαθJ(θ;XB,yB)\theta := \theta - \alpha \nabla_{\theta} J(\theta; X_{B}, y_{B})

相比 SGD,通过对小批量梯度平均降低了更新方差,收敛更稳定;相比 BGD,大幅减少了单次迭代计算量。此外还可充分利用 GPU 的并行计算能力,通过矩阵运算高效处理小批量数据。缺点是需要额外调节批量大小 (batch size) 这一超参数。

挑战与局限性

梯度下降虽然强大,但面临若干关键挑战。第一是局部最小值和鞍点问题:对于复杂非凸函数(如深度神经网络损失函数),梯度下降可能陷入局部最小值或鞍点 (Saddle Point),梯度为零导致算法停滞。第二是特征缩放问题:若不同特征的数值范围差异巨大,损失函数等高线图变得狭长陡峭,收敛速度极为缓慢。因此,在应用梯度下降前进行特征缩放(如归一化或标准化)通常是必要的预处理步骤。第三是学习率选择:不恰当的学习率导致收敛缓慢或发散。为此,研究者开发了多种自适应学习率优化算法,如 AdagradRMSpropAdam,根据梯度历史信息自动调整学习率。

应用领域与经济学关联

梯度下降是众多机器学习算法的基石。在经典统计学习中,它用于线性回归 (Linear Regression) 和逻辑回归 (Logistic Regression) 模型的参数求解;在深度学习中,它是训练各类人工神经网络 (Artificial Neural Networks) 的核心引擎。在统计学中用于最大似然估计等参数估计问题。

在经济学与计量经济学中,梯度下降的应用同样广泛。DSGE模型的贝叶斯估计常涉及高维参数空间的优化,梯度类方法(或其随机变体)是实现数值最大化的标准工具。在离散选择模型(如混合 Logit 模型)中,对数似然函数通常没有解析解,依赖基于梯度的数值优化。此外,现代宏观经济学中的异质性代理人模型 (Heterogeneous Agent Models) 需要求解高维偏微分方程或使用神经网络逼近政策函数,梯度下降在此类计算框架中扮演核心角色。在金融领域,期权定价中的模型校准(如根据市场报价反推隐含波动率曲面)同样可转化为损失函数最小化问题,由梯度下降或其变体求解。

计量经济学的惩罚回归方法中(如 Lasso 和岭回归),目标函数在普通最小二乘基础上加入惩罚项,梯度下降(特别是坐标下降和近端梯度法)是求解此类不可微优化问题的关键算法。机器学习与经济学交叉的前沿领域——如因果森林 (Causal Forest) 和双重机器学习 (Double Machine Learning)——同样依赖基于梯度优化的神经网络或梯度提升框架进行估计与推断,梯度下降作为底层优化引擎贯穿始终。