904 字
5 分钟
数据科学与工程优化(四)

一、梯度法复杂度总结#

  • 对于 LL-光滑但非凸的 ff,最速下降法(Steepest Descent)收敛速率为 O(1k)O\left(\frac{1}{\sqrt{k}}\right)
  • 对于 LL-光滑且凸的 ffO(1k)O\left(\frac{1}{k}\right)
  • ff 还是 γ\gamma-强凸,则线性收敛速率 (1γL)k\left(1 - \frac{\gamma}{L}\right)^k

二、重球法(Heavy Ball Method)#

1、适用范围#

适合凸二次型函数:

minxRnf(x)=12xTAxbTx\min_{x \in \mathbb{R}^n} f(x) = \frac{1}{2}x^T A x - b^T x

其中 AA 对称,特征值落在 [γ,L][\gamma, L],即 ffLL-光滑且 γ\gamma-强凸。

2、迭代公式#

xk+1=xkαkf(xk)+βk(xkxk1)x_{k+1} = x_k - \alpha_k \nabla f(x_k) + \beta_k (x_k - x_{k-1})
  • 第一步是梯度下降,第二项是动量项(momentum)。

3、收敛性定理(无需证明)#

αkα=4(L+γ)2,βkβ=LγL+γ\alpha_k \equiv \alpha = \frac{4}{(\sqrt{L}+\sqrt{\gamma})^2}, \quad \beta_k \equiv \beta = \frac{\sqrt{L}-\sqrt{\gamma}}{\sqrt{L}+\sqrt{\gamma}}

则存在常数 C>0C>0,有

xkxCβk\|x_k - x^*\| \leq C \beta^k
  • γL\gamma \approx Lα1L\alpha \approx \frac{1}{L}β0\beta \approx 0(退化为普通梯度下降)。
  • γL\gamma \ll Lα4L\alpha \approx \frac{4}{L}β1\beta \approx 1

4、目标函数收敛速率#

利用 LL-光滑性,

f(xk)f(x)L2xkx2LC22β2kf(x_k) - f(x^*) \leq \frac{L}{2} \|x_k - x^*\|^2 \leq \frac{L C^2}{2} \beta^{2k}

近似有

β2k(12γ/L)2k\beta^{2k} \approx (1-2\sqrt{\gamma/L})^{2k}

5、与最速下降法比较#

  • γ=0.01L\gamma = 0.01L,则重球法每步目标函数减少三分之一 (12γ/L)2=0.64(1-2\sqrt{\gamma/L})^2 = 0.64
  • 最速下降法每步仅减少 1%1\%(1γ/L)=0.99(1-\gamma/L) = 0.99
  • 重球法对病态(ill-conditioned)问题优势明显。

三、Nesterov加速梯度法(Nesterov Acceleration)#

3.1 算法思想#

Nesterov加速法是重球法的推广,适用于一般强凸目标。

标准形式#

xk+1=xkαkf(xk+βk(xkxk1))+βk(xkxk1)x_{k+1} = x_k - \alpha_k \nabla f\left(x_k + \beta_k(x_k - x_{k-1})\right) + \beta_k(x_k - x_{k-1})
  • 与重球法的区别:梯度在 xk+βk(xkxk1)x_k + \beta_k(x_k - x_{k-1}) 处计算。

2、收敛性定理(强凸情形)#

ff LL-光滑且 γ\gamma-强凸,取

αkα=1L,βkβ=LγL+γ\alpha_k \equiv \alpha = \frac{1}{L}, \qquad \beta_k \equiv \beta = \frac{\sqrt{L} - \sqrt{\gamma}}{\sqrt{L} + \sqrt{\gamma}}

f(xk)f(x)L+γ2x0x2(1γ/L)kf(x_k) - f(x^*) \leq \frac{L+\gamma}{2} \|x_0 - x^*\|^2 \cdot (1-\sqrt{\gamma/L})^k
  • 加速收敛,(1γ/L)<(1γ/L)(1-\sqrt{\gamma/L}) < (1-\gamma/L)
  • 例如 γ=0.01L\gamma = 0.01L,Nesterov每步减少 10%10\%,而最速下降法仅 1%1\%

四、Nesterov加速法(L-光滑凸函数)#

1、算法步骤#

适用于 ff LL-光滑凸,L不一定已知。算法采用两组变量 xk,ykx_k, y_k,并自适应步长。

算法流程:

  1. y0zRny_0 \neq z \in \mathbb{R}^nα1:=y0zf(y0)f(z)\alpha_{-1} := \frac{\|y_0 - z\|}{\|\nabla f(y_0) - \nabla f(z)\|}λ0:=1\lambda_0 := 1x1:=y0x_{-1} := y_0
  2. k=0,1,2,k = 0, 1, 2, \ldots,重复:
    1. 回溯线搜索找最小 ii 使 f(yk2iαk1f(yk))f(yk)2(i+1)αk1f(yk)2f\left(y_k - 2^{-i} \alpha_{k-1} \nabla f(y_k)\right) \leq f(y_k) - 2^{-(i+1)} \alpha_{k-1} \|\nabla f(y_k)\|^2αk=2iαk1\alpha_k = 2^{-i} \alpha_{k-1}
    2. xk=ykαkf(yk)x_k = y_k - \alpha_k \nabla f(y_k)
    3. λk+1=12(1+4λk2+1)\lambda_{k+1} = \frac{1}{2}\left(1 + \sqrt{4\lambda_k^2 + 1}\right)
    4. yk+1=xk+λk1λk+1(xkxk1)y_{k+1} = x_k + \frac{\lambda_k - 1}{\lambda_{k+1}}(x_k - x_{k-1})
  3. 直到 xkxk1\|x_k - x_{k-1}\| 足够小。

关键点#

  • 回溯线搜索保证步长不会太小或太大。
  • λk\lambda_k 控制动量,数值上渐进变大,增加加速效果。

2、理论最优复杂度#

  • 该方法的迭代复杂度O(ϵ1/2)O(\epsilon^{-1/2}),即达到 f(xk)f<ϵf(x_k) - f^* < \epsilon 只需 O(1/ϵ)O(1/\sqrt{\epsilon}) 步。
  • 这是理论上最优的复杂度

五、收敛性分析(以Nesterov加速为例)#

1、主要结论#

ffLL-光滑凸函数,有极小点 xx^*,则算法产生的序列满足

f(xk)f+4Lx0x2(k+2)2f(x_k) \leq f^* + \frac{4L\|x_0 - x^*\|^2}{(k+2)^2}

因此,ϵ\epsilon-最优所需迭代步数为

kN(ϵ)=2Lx0xϵ1k \geq N(\epsilon) = \left\lfloor 2\sqrt{L}\frac{\|x_0 - x^*\|}{\sqrt{\epsilon}} \right\rfloor - 1

2、关键推导步骤(简要概述)#

  • 定义辅助变量 pk=(λk1)(xk1xk)p_k = (\lambda_k - 1)(x_{k-1} - x_k),随 kk 增大逐步变大。
  • 通过一系列递推与凸性、不等式,建立 pk+1xk+1+xp_{k+1} - x_{k+1} + x^* 的范数递推关系。
  • 用望远镜求和技巧,最终得出 f(xk)ff(x_k) - f^* 的上界随 1/(k+2)21/(k+2)^2 衰减。

六、算法直观理解#

  • 动量思想:通过利用前一步的信息,使得算法能够“沿谷底滑行”,减少传统梯度法的锯齿状(zig-zag)慢收敛。
  • 自适应步长:当L未知时,算法自动调整步长,避免手动设置不当导致的收敛慢或不收敛。
  • 理论最优:加速梯度法已达到理论上最优的迭代复杂度。
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

数据科学与工程优化(四)
https://www.laoguantx.cn/posts/datascienceandengineeringoptimization4/
作者
老官童鞋gogo
发布于
2025-07-23
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00