ARTICLE

梯度下降法 (Gradient Descent)

梯度下降法 (Gradient Descent) 梯度下降法是一种求解无约束或带约束优化问题的一阶迭代算法,其核心思想是:沿着目标函数在当前点梯度的负方向(即函数值下降最快的方向)逐步移动,直至收敛到局部极小值。该算法由法国数学家柯西 (Augustin-Louis Cauchy) 于1847年首次提出,现已成为机器学习、计量经济学和数值优化领域最基础、最广

浏览 0 更新 2026-05-25

梯度下降法 (Gradient Descent)

梯度下降法是一种求解无约束或带约束优化问题的一阶迭代算法,其核心思想是:沿着目标函数在当前点梯度的负方向(即函数值下降最快的方向)逐步移动,直至收敛到局部极小值。该算法由法国数学家柯西 (Augustin-Louis Cauchy) 于1847年首次提出,现已成为机器学习计量经济学数值优化领域最基础、最广泛使用的优化工具之一。

梯度下降的直观类比是:一位盲人登山者想要下到山谷底部,他只需感知脚下每一步最陡峭的下坡方向并迈出一步,反复进行即可到达谷底。

数学原理与迭代公式

设目标函数 f:RnRf: \mathbb{R}^n \to \mathbb{R} 是连续可微的。在点 x(k)\mathbf{x}^{(k)} 处,梯度 f(x(k))\nabla f(\mathbf{x}^{(k)}) 指向函数值增加最快的方向,因此 f(x(k))-\nabla f(\mathbf{x}^{(k)}) 指向下降最快的方向。梯度下降的迭代公式为:

x(k+1)=x(k)αkf(x(k))\mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} - \alpha_k \nabla f(\mathbf{x}^{(k)})

其中 αk>0\alpha_k > 0 称为学习率 (learning rate) 或步长 (step size),控制每一轮迭代沿梯度方向移动的距离。

对于凸函数,任意局部极小值即为全局极小值;对于非凸函数,梯度下降通常只能保证收敛到局部极小值或鞍点。

学习率的选择

学习率 αk\alpha_k 的选择至关重要:

  • 固定学习率:取常数 αk=α\alpha_k = \alpha。过大会导致震荡或发散,过小则收敛缓慢。实践中常通过网格搜索或经验法则确定。
  • 线搜索 (Line Search):在每一步沿下降方向精确或近似地求解一维优化问题 minα>0f(x(k)αf(x(k)))\min_{\alpha > 0} f(\mathbf{x}^{(k)} - \alpha \nabla f(\mathbf{x}^{(k)}))Armijo条件Wolfe条件是常用的非精确线搜索准则。
  • 衰减学习率:令 αk=α0/(1+γk)\alpha_k = \alpha_0 / (1 + \gamma k) 等随迭代递减的策略,有利于算法初期的快速推进和后期的精细收敛。
  • 自适应方法AdaGradRMSPropAdam (Adaptive Moment Estimation) 等自适应算法为每个参数独立维护学习率,综合梯度的历史信息和二阶矩估计,是目前深度学习的主流选择。

三种主要变体

根据每次参数更新所依据的样本量不同,梯度下降可分为三类:

  1. 批量梯度下降 (Batch Gradient Descent, BGD):每次迭代使用全部 nn 个样本计算梯度。更新方向最稳定,但计算代价为 O(n)O(n),当数据量极大时不可行。目标函数单调递减。
  2. 随机梯度下降 (Stochastic Gradient Descent, SGD):每次迭代仅随机抽取一个样本计算梯度并更新参数。计算代价为 O(1)O(1),但梯度方向噪声大、波动剧烈。SGD 由RobbinsMonro (1951) 首次系统研究,其学习率需满足 αk=\sum \alpha_k = \inftyαk2<\sum \alpha_k^2 < \infty(Robbins-Monro 条件)以保证收敛。
  3. 小批量梯度下降 (Mini-batch Gradient Descent):折中方案,每次使用 mm 个随机样本(典型的 m=32,64,128m = 32, 64, 128)计算平均梯度。兼顾了 BGD 的稳定性和 SGD 的计算效率,是深度学习中 GPU 训练的标准做法。

收敛性分析

对于 LL-光滑(梯度Lipschitz连续)的函数,梯度下降在固定步长 α1/L\alpha \leq 1/L 下可保证函数值单调递减:

f(x(k+1))f(x(k))α2f(x(k))2f(\mathbf{x}^{(k+1)}) \leq f(\mathbf{x}^{(k)}) - \frac{\alpha}{2} \|\nabla f(\mathbf{x}^{(k)})\|^2

进一步,若 ffμ\mu-强凸函数,则梯度下降以线性速率收敛到全局最优值 x\mathbf{x}^*

x(k)x(κ1κ+1)kx(0)x\|\mathbf{x}^{(k)} - \mathbf{x}^*\| \leq \left(\frac{\kappa - 1}{\kappa + 1}\right)^k \|\mathbf{x}^{(0)} - \mathbf{x}^*\|

其中 κ=L/μ\kappa = L/\mu 称为条件数。条件数越大,收敛越慢;病态问题在实践中往往需要预条件二阶方法(如牛顿法)加速。

对于非凸目标,梯度下降仅能保证梯度范数趋于零(即收敛到驻点),且收敛速率通常为 O(1/k)O(1/\sqrt{k})。SGD 在非凸场景下可达到 O(1/k)O(1/\sqrt{k}) 的收敛速率,且通过注入噪声可能逃离不可欲的鞍点。

动量法与加速

普通梯度下降在狭窄峡谷形目标函数上容易产生锯齿形震荡。动量法 (Momentum) 引入速度变量 v\mathbf{v} 平滑梯度方向:

v(k+1)=βv(k)+αf(x(k)),x(k+1)=x(k)v(k+1)\mathbf{v}^{(k+1)} = \beta \mathbf{v}^{(k)} + \alpha \nabla f(\mathbf{x}^{(k)}), \quad \mathbf{x}^{(k+1)} = \mathbf{x}^{(k)} - \mathbf{v}^{(k+1)}

其中 β[0,1)\beta \in [0, 1) 是动量系数。动量在持续下降的方向上累积速度,在震荡方向上相互抵消,加速收敛。

Nesterov加速梯度 (NAG, 1983) 在动量法的基础上进一步对梯度评估点进行"前瞻"修正,在凸光滑优化中达到一阶方法的最优收敛速率 O(1/k2)O(1/k^2)

经济学与计量经济学中的应用

梯度下降在经济学和计量经济学中有广泛的实际应用:

  • 极大似然估计 (MLE):许多计量经济学模型的对数似然函数没有解析解(如Logit模型Probit模型混合模型),需借助梯度下降或其变体进行数值最大化。
  • 广义矩方法 (GMM)GMM的目标函数是二次型的加权组合,梯度下降可用于迭代求解最优权重矩阵和参数向量。
  • 神经网络经济学深度学习在经济预测、因果推断(如Double Machine Learning)和文本分析中日益普及,反向传播算法本质上是梯度下降在复合函数上的链式法则应用。
  • 计算一般均衡 (CGE):大型CGE模型的求解常涉及高维非线性方程组的数值求解,梯度类方法是核心工具。
  • 强化学习与动态规划策略梯度方法直接在策略空间上执行梯度下降以求解马尔可夫决策过程,应用于拍卖设计、定价策略等场景。

局限性与扩展

梯度下降的主要局限包括:(1) 仅利用一阶导数信息,对病态问题收敛缓慢;(2) 容易陷入非凸函数的局部极小值或鞍点;(3) 对学习率超参数敏感。

重要扩展包括:次梯度方法(处理不可微函数)、近端梯度法(处理带不可微正则项的复合优化,如LASSO)、坐标下降法(每次仅优化一个坐标方向),以及拟牛顿法(如BFGSL-BFGS)利用近似的二阶信息在不计算完整海塞矩阵的条件下获得超线性收敛。

梯度下降虽已诞生逾一个半世纪,但凭借其极简的原理、低廉的每次迭代开销和在大规模数据下的可扩展性,始终是现代计算科学与数据驱动经济分析的核心算法。