梯度下降法与优化

梯度下降法的数学原理

梯度下降法

目标:求可微函数 f:Rn→Rf: \mathbb{R}^n \to \mathbb{R} 的最小值。

迭代公式: x⃗k+1=x⃗k−αk∇f(x⃗k)\vec{x}_{k+1} = \vec{x}_k - \alpha_k \nabla f(\vec{x}_k)

其中:

  • x⃗k\vec{x}_k 是第 kk 步的迭代点
  • αk>0\alpha_k > 0 是学习率(步长)
  • ∇f(x⃗k)\nabla f(\vec{x}_k) 是梯度,负号表示沿梯度反方向更新

核心思想:梯度方向是函数值增长最快的方向,因此负梯度方向是函数值下降最快的方向(最速下降方向)。

收敛性分析

定理1

设 ff 是 LL-光滑凸函数(梯度 LL-Lipschitz连续,即 ∣∣∇f(x)−∇f(y)∣∣≤L∣∣x−y∣∣||\nabla f(x)-\nabla f(y)|| \leq L||x-y||),取固定学习率 α∈(0,1L)\alpha \in (0, \frac{1}{L}),则梯度下降法满足:

f(x⃗k)−f∗≤∣∣x⃗0−x⃗∗∣∣22αkf(\vec{x}_k) - f^* \leq \frac{||\vec{x}_0 - \vec{x}^*||^2}{2\alpha k}

即收敛速率为 O(1k)O(\frac{1}{k})(次线性收敛)。

若 ff 还是 μ\mu-强凸的(∇2f⪰μI\nabla^2 f \succeq \mu I),则收敛速率为线性收敛:

∣∣x⃗k−x⃗∗∣∣2≤(1−μL)k∣∣x⃗0−x⃗∗∣∣2||\vec{x}_k - \vec{x}^*||^2 \leq \left(1 - \frac{\mu}{L}\right)^k ||\vec{x}_0 - \vec{x}^*||^2

其中 κ=Lμ\kappa = \frac{L}{\mu} 称为条件数,条件数越大收敛越慢。

线搜索

精确线搜索与非精确线搜索

精确线搜索:每一步选择最优步长 αk=arg⁡min⁡α>0f(x⃗k−α∇f(x⃗k))\alpha_k = \arg\min_{\alpha > 0} f(\vec{x}_k - \alpha \nabla f(\vec{x}_k))

非精确线搜索:只要求函数值有足够下降,常用Armijo条件: f(x⃗k−α∇f(x⃗k))≤f(x⃗k)−cα∣∣∇f(x⃗k)∣∣2f(\vec{x}_k - \alpha \nabla f(\vec{x}_k)) \leq f(\vec{x}_k) - c\alpha ||\nabla f(\vec{x}_k)||^2

其中 c∈(0,1)c \in (0,1) 是常数。非精确线搜索计算量小,是实践中的主流选择。

梯度下降法的变体

随机梯度下降(SGD)

随机梯度下降

当目标函数是大量样本的损失之和 f(x)=1N∑i=1Nfi(x)f(x) = \frac{1}{N}\sum_{i=1}^N f_i(x) 时,每次迭代只用一个(或一小批)样本的梯度近似全梯度:

x⃗k+1=x⃗k−α∇fik(x⃗k)\vec{x}_{k+1} = \vec{x}_k - \alpha \nabla f_{i_k}(\vec{x}_k)

优点:计算快,适合大数据;缺点:梯度有噪声,收敛过程震荡。小批量SGD(Mini-batch SGD)是折中方案,每次用一批样本计算梯度。

动量法(Momentum)

动量法

v⃗k+1=βv⃗k+∇f(x⃗k)\vec{v}_{k+1} = \beta \vec{v}_k + \nabla f(\vec{x}_k) x⃗k+1=x⃗k−αv⃗k+1\vec{x}_{k+1} = \vec{x}_k - \alpha \vec{v}_{k+1}

其中 β∈[0,1)\beta \in [0,1) 是动量系数(通常取0.9)。动量法积累历史梯度,能够加速收敛、减少震荡,特别适合处理病态条件数问题。

Adam(Adaptive Moment Estimation)

Adam算法

mk=β1mk−1+(1−β1)∇f(xk)m_k = \beta_1 m_{k-1} + (1-\beta_1)\nabla f(x_k) vk=β2vk−1+(1−β2)(∇f(xk))2v_k = \beta_2 v_{k-1} + (1-\beta_2)(\nabla f(x_k))^2 m^k=mk1−β1k,v^k=vk1−β2k\hat{m}_k = \frac{m_k}{1-\beta_1^k}, \quad \hat{v}_k = \frac{v_k}{1-\beta_2^k} xk+1=xk−αv^k+εm^kx_{k+1} = x_k - \frac{\alpha}{\sqrt{\hat{v}_k} + \varepsilon}\hat{m}_k

默认参数:β1=0.9,β2=0.999,ε=10−8\beta_1=0.9, \beta_2=0.999, \varepsilon=10^{-8}。Adam结合了动量法和自适应学习率,是深度学习中最常用的优化器之一。

典型例题

例题1:梯度下降求二次函数最小值

用梯度下降法求 f(x,y)=x2+2y2f(x,y) = x^2 + 2y^2 的最小值,初始点 (1,1)(1,1),学习率 α=0.1\alpha=0.1,写出前3步迭代并分析收敛性。

参考答案
梯度下降二次函数收敛性
  1. ∇f=(2x,4y)\nabla f = (2x, 4y)
  2. 初始:x0=(1,1)x_0=(1,1),f(x0)=3f(x_0)=3
  3. 第1步:x1=(1,1)−0.1(2,4)=(0.8,0.6)x_1 = (1,1) - 0.1(2,4) = (0.8, 0.6),f=0.64+0.72=1.36f=0.64+0.72=1.36
  4. 第2步:x2=(0.8,0.6)−0.1(1.6,2.4)=(0.64,0.36)x_2 = (0.8,0.6) - 0.1(1.6,2.4) = (0.64, 0.36),f=0.4096+0.2592=0.6688f=0.4096+0.2592=0.6688
  5. 第3步:x3=(0.64,0.36)−0.1(1.28,1.44)=(0.512,0.216)x_3 = (0.64,0.36) - 0.1(1.28,1.44) = (0.512, 0.216),f=0.2621+0.0933=0.3554f=0.2621+0.0933=0.3554
  6. 收敛性:L=4L=4(最大特征值),α=0.1<1L=0.25\alpha=0.1 < \frac{1}{L}=0.25,满足收敛条件。xx 方向收敛因子 1−2α=0.81-2\alpha=0.8,yy 方向 1−4α=0.61-4\alpha=0.6,yy 方向收敛更快。

答案:前3步函数值从3降至0.3554,逐步收敛到最小值点 (0,0)(0,0)。

例题2:精确线搜索

对 f(x,y)=x2+2y2f(x,y) = x^2 + 2y^2,从 (1,1)(1,1) 出发,用精确线搜索求第一步的最优步长。

参考答案
精确线搜索最速下降二次函数
  1. 搜索方向 d=−∇f(1,1)=(−2,−4)d = -\nabla f(1,1) = (-2,-4)
  2. f((1,1)+α(−2,−4))=(1−2α)2+2(1−4α)2f((1,1) + \alpha(-2,-4)) = (1-2\alpha)^2 + 2(1-4\alpha)^2
  3. =1−4α+4α2+2(1−8α+16α2)=3−20α+36α2= 1-4\alpha+4\alpha^2 + 2(1-8\alpha+16\alpha^2) = 3-20\alpha+36\alpha^2
  4. 对 α\alpha 求导:−20+72α=0-20+72\alpha=0,α=2072=518≈0.278\alpha = \frac{20}{72} = \frac{5}{18} \approx 0.278
  5. 下一步点:(1−1018,1−2018)=(49,−19)(1-\frac{10}{18}, 1-\frac{20}{18}) = (\frac{4}{9}, -\frac{1}{9})

答案:最优步长 α=518\alpha = \frac{5}{18},下一步点 (49,−19)(\frac{4}{9}, -\frac{1}{9})。


总结

本文出现的符号

符号类型读音/说明在本文中的含义
α\alpha学习率learning rate梯度下降的步长
x⃗k\vec{x}_k迭代点iteration point第k步的迭代点
v⃗k\vec{v}_k动量velocity / momentum动量法中的累积梯度
β\beta动量系数momentum coefficient动量法的衰减系数
LLLipschitz常数Lipschitz constant梯度的Lipschitz常数
μ\mu强凸参数strong convexity强凸函数的参数
κ\kappa条件数condition numberL/μL/\mu
mk,vkm_k, v_kAdam矩momentsAdam算法的一阶和二阶矩
ε\varepsilon小常数epsilonAdam中防止除零的小常数

中英对照

中文术语英文术语音标
梯度下降法gradient descent/ˈɡreɪdiənt dɪˈsɛnt/
最速下降法steepest descent/ˈstiːpɪst dɪˈsɛnt/
学习率learning rate/ˈlɜːrnɪŋ reɪt/
收敛性convergence/kənˈvɜːrdʒəns/
线性收敛linear convergence/ˈlɪniər kənˈvɜːrdʒəns/
次线性收敛sublinear convergence/sʌbˈlɪniər kənˈvɜːrdʒəns/
随机梯度下降stochastic gradient descent/stoʊˈkæstɪk ˈɡreɪdiənt dɪˈsɛnt/
小批量mini-batch/ˈmɪni bætʃ/
动量法momentum/moʊˈmɛntəm/
AdamAdam/ˈædəm/
线搜索line search/laɪn sɜːrtʃ/
Armijo条件Armijo condition/ɑːrˈmiːhoʊ kənˈdɪʃən/
强凸strongly convex/ˈstrɒŋli ˈkɒnvɛks/
光滑smooth/smuːð/
条件数condition number/kənˈdɪʃən ˈnʌmbər/
自适应学习率adaptive learning rate/əˈdæptɪv ˈlɜːrnɪŋ reɪt/

发现内容有问题?

告诉我们哪里需要改进。