Badge

本文目标:让没有任何最优化基础的读者,从零开始系统掌握最优化的核心概念——无约束优化、梯度下降家族(SGD/Momentum/Adam)、凸优化、约束优化、以及强化学习中的策略优化(PPO)。全文采用”概念→定义→性质→历史→应用”教学法,所有概念都连接到已发表的YOLO训练、端到端自动驾驶和无人机控制文章。


一、什么是最优化——寻找”最好”

1.1 最优化问题的标准形式

定义:在给定的约束下,寻找使目标函数取得最小值(或最大值)的参数。

minxf(x)s.t.gi(x)0,hj(x)=0 \min_{\mathbf{x}} f(\mathbf{x}) \quad \text{s.t.} \quad g_i(\mathbf{x}) \leq 0, \quad h_j(\mathbf{x}) = 0
  • x\mathbf{x}:决策变量(我们要找的参数)
  • f(x)f(\mathbf{x}):目标函数(衡量"好坏"的指标)
  • gi(x)0g_i(\mathbf{x}) \leq 0:不等式约束
  • hj(x)=0h_j(\mathbf{x}) = 0:等式约束

在深度学习中的具体例子——YOLOv8训练:

minθL(θ)=Lcls+Lbox+Ldfl \min_{\theta} \mathcal{L}(\theta) = \mathcal{L}_{\text{cls}} + \mathcal{L}_{\text{box}} + \mathcal{L}_{\text{dfl}}
  • θ\theta:YOLOv8的**数千万个网络权重**
  • L\mathcal{L}:分类损失 + 边界框损失 + 分布聚焦损失
  • 约束:无(无约束优化)

1.2 最优化发展简史

历史

  • 1847年:柯西提出梯度下降法——最优化算法的开端
  • 1940年代:丹齐格(George Dantzig)发明线性规划的单纯形法
  • 1951年:罗宾斯(Robbins)和门罗(Monro)提出随机梯度下降(SGD)
  • 1980年代:卡尔卡(Karmarkar)发明线性规划的内点法
  • 2014年:Kingma和Ba提出Adam优化器——深度学习的事实标准

二、分类——不同类型的最优化问题

2.1 按约束条件分类

类型 定义 例子
无约束优化 没有约束条件 深度学习训练(参数自由调整)
约束优化 有限制条件 PID参数不能超过安全范围
等式约束 hj(x)=0h_j(\mathbf{x}) = 0 控制分配中总拉力必须等于重力
不等式约束 gi(x)0g_i(\mathbf{x}) \leq 0 电机转速不能超过最大转速

2.2 按凸性分类

凸优化:目标函数和可行域都是凸的

凸函数的定义:对任意 λ[0,1]\lambda \in [0,1]

f(λx+(1λ)y)λf(x)+(1λ)f(y) f(\lambda x + (1-\lambda)y) \leq \lambda f(x) + (1-\lambda)f(y)

几何意义:函数图像上任意两点连线都在函数图像上方。

为什么凸性极其重要?

  • 凸优化只有一个全局最小值(没有”坑坑洼洼”)
  • 任何下降方法都能保证找到全局最优解
  • 可以用成熟的算法高效求解

非凸优化:不满足凸性条件。深度学习的损失函数就是非凸的——存在多个局部极小值。

2.3 按变量性质分类

类型 变量 例子
连续优化 xRn\mathbf{x} \in \mathbb{R}^n 神经网络权重、PID参数
离散优化 xZn\mathbf{x} \in \mathbb{Z}^n 网络架构选择、锚点框数量
组合优化 排列组合问题 YOLO的匈牙利匹配(NMS替代方案)

三、无约束优化——梯度下降家族

3.1 梯度下降法

一阶必要条件:如果 x\mathbf{x}^* 是极小值点,则 f(x)=0\nabla f(\mathbf{x}^*) = 0

梯度下降迭代公式

xk+1=xkηf(xk) \mathbf{x}_{k+1} = \mathbf{x}_k - \eta \nabla f(\mathbf{x}_k)

其中 η>0\eta > 0学习率(步长)。

几何理解:梯度 f\nabla f 指向函数上升最快的方向,负梯度指向下降最快的方向。就像在山上找下山的路——每一步都朝最陡的方向走。

学习率的选择至关重要

  • η\eta 太大:发散,不收敛
  • η\eta 太小:收敛极慢
  • 理想:开始时大步快走,接近最优时小步精细调整

3.2 随机梯度下降(SGD)

问题:如果 f(x)=1Ni=1NLi(x)f(\mathbf{x}) = \frac{1}{N}\sum_{i=1}^N L_i(\mathbf{x})(经验风险最小化),每次计算全部 NN 个样本的梯度代价太大。

SGD:每次随机选一个样本(或一个小批次)计算梯度:

xk+1=xkηLi(xk) \mathbf{x}_{k+1} = \mathbf{x}_k - \eta \nabla L_i(\mathbf{x}_k)

为什么SGD有效?因为梯度的期望等于真实梯度:

E[Li(x)]=f(x) E[\nabla L_i(\mathbf{x})] = \nabla f(\mathbf{x})

虽然每次有噪声,但平均而言方向是对的。

历史

  • 1951年:罗宾斯和门罗提出SGD
  • 2010年代:随着深度学习兴起,SGD成为训练神经网络的核心算法

3.3 动量法(Momentum)

问题:SGD在峡谷地形中会震荡(在陡峭方向来回摆动,在平坦方向移动缓慢)。

动量法累积历史梯度方向:

vk+1=βvk+ηf(xk)xk+1=xkvk+1 \begin{aligned} v_{k+1} &= \beta v_k + \eta \nabla f(\mathbf{x}_k) \\ \mathbf{x}_{k+1} &= \mathbf{x}_k - v_{k+1} \end{aligned}

其中 β\beta 通常取 0.90.9

物理类比:像滚雪球下山——当梯度方向一致时加速(积累动量),当梯度方向变化时抑制震荡。

Nesterov加速梯度(NAG)——动量法的改进版:

vk+1=βvk+ηf(xkβvk) v_{k+1} = \beta v_k + \eta \nabla f(\mathbf{x}_k - \beta v_k)

关键区别:在”向前看一步”的位置计算梯度,而不是当前位置。能更快收敛。

3.4 自适应学习率方法

Adagrad(Duchi et al., 2011):对每个参数使用不同的学习率,频繁更新的参数学习率小,稀疏更新的参数学习率大。

xk+1=xkηGk+ϵf(xk) \mathbf{x}_{k+1} = \mathbf{x}_k - \frac{\eta}{\sqrt{G_k + \epsilon}} \odot \nabla f(\mathbf{x}_k)

其中 GkG_k 是历史梯度平方的累加。

问题:随着训练进行,GkG_k 不断增大,学习率会衰减到0,导致训练提前停止。

RMSProp(Hinton, 2012):用指数移动平均替代累加,解决Adagrad学习率单调递减的问题。

E[g2]k=βE[g2]k1+(1β)(f(xk))2 E[g^2]_k = \beta E[g^2]_{k-1} + (1-\beta) (\nabla f(\mathbf{x}_k))^2

3.5 Adam——最广泛使用的优化器

Adam(Adaptive Moment Estimation, Kingma & Ba, 2014) 结合了动量法(一阶矩)和RMSProp(自适应学习率):

mk=β1mk1+(1β1)gk(梯度的一阶矩:动量)vk=β2vk1+(1β2)gk2(梯度的二阶矩:自适应学习率)m^k=mk1β1k(偏差修正,抵消初始时刻偏小)v^k=vk1β2k(偏差修正)θk+1=θkηm^kv^k+ϵ \begin{aligned} m_k &= \beta_1 m_{k-1} + (1-\beta_1) g_k \quad &\text{(梯度的一阶矩:动量)} \\ v_k &= \beta_2 v_{k-1} + (1-\beta_2) g_k^2 \quad &\text{(梯度的二阶矩:自适应学习率)} \\ \hat{m}_k &= \frac{m_k}{1-\beta_1^k} \quad &\text{(偏差修正,抵消初始时刻偏小)} \\ \hat{v}_k &= \frac{v_k}{1-\beta_2^k} \quad &\text{(偏差修正)} \\ \theta_{k+1} &= \theta_k - \eta \frac{\hat{m}_k}{\sqrt{\hat{v}_k} + \epsilon} \end{aligned}

默认参数η=0.001\eta=0.001, β1=0.9\beta_1=0.9, β2=0.999\beta_2=0.999, ϵ=108\epsilon=10^{-8}

为什么Adam这么成功?

  1. 自适应学习率:不同参数有不同的学习率
  2. 动量:平滑梯度方向,加速收敛
  3. 偏差修正:解决初始估计偏小的问题
  4. 超参数鲁棒:即使不调参也能取得不错的效果

3.6 各优化算法对比

算法 自适应学习率 动量 适用场景
SGD 简单任务,需要精细调参
SGD+Momentum 减少震荡,通用
NAG 比Momentum更快收敛
Adagrad 稀疏梯度(NLP、词嵌入)
RMSProp 非平稳目标,RNN训练
Adam 通用默认选择

四、凸优化——保证找到全局最优

4.1 凸集与凸函数

凸集:集合中任意两点的连线仍在集合中。

x,yC,λ[0,1]:λx+(1λ)yC \forall x,y \in C, \lambda \in [0,1]: \lambda x + (1-\lambda)y \in C

凸函数:函数图像上任意两点连线都在函数图像上方。

f(λx+(1λ)y)λf(x)+(1λ)f(y) f(\lambda x + (1-\lambda)y) \leq \lambda f(x) + (1-\lambda)f(y)

判断凸函数的方法:Hessian矩阵 H=2fH = \nabla^2 f 半正定(所有特征值 0\geq 0)。

4.2 凸优化的优良性质

  1. 局部极小 = 全局极小:凸优化没有”局部陷阱”
  2. 对偶理论:原问题和对偶问题有强对偶关系
  3. 可有效求解:内点法、梯度法都能高效求解

4.3 在深度学习中的应用

深度学习的损失函数是非凸的——但实践中,SGD/Adam通常能找到”足够好”的局部极小值。

为什么非凸优化在深度学习中仍然有效?

  • 高维空间中的局部极小值通常与全局极小值接近
  • 鞍点(Saddle Point)比局部极小值更常见,但SGD能逃离鞍点
  • 过参数化使损失景观更平滑

五、约束优化

5.1 拉格朗日乘子法

问题:在等式约束下求极值。

minf(x)s.t.h(x)=0 \min f(\mathbf{x}) \quad \text{s.t.} \quad h(\mathbf{x}) = 0

拉格朗日函数

L(x,λ)=f(x)+λh(x) \mathcal{L}(\mathbf{x}, \lambda) = f(\mathbf{x}) + \lambda h(\mathbf{x})

KKT条件(Karush-Kuhn-Tucker,1951):约束优化的必要条件。

对于 minf(x)\min f(\mathbf{x}) s.t. gi(x)0g_i(\mathbf{x}) \leq 0, hj(x)=0h_j(\mathbf{x}) = 0

f(x)+iμigi(x)+jλjhj(x)=0gi(x)0μi0μigi(x)=0(互补松弛性)hj(x)=0 \begin{aligned} \nabla f(\mathbf{x}^*) + \sum_i \mu_i \nabla g_i(\mathbf{x}^*) + \sum_j \lambda_j \nabla h_j(\mathbf{x}^*) &= 0 \\ g_i(\mathbf{x}^*) &\leq 0 \\ \mu_i &\geq 0 \\ \mu_i g_i(\mathbf{x}^*) &= 0 \quad \text{(互补松弛性)} \\ h_j(\mathbf{x}^*) &= 0 \end{aligned}

互补松弛性 μigi(x)=0\mu_i g_i(\mathbf{x}^*) = 0 的含义:如果一个不等式约束不是活跃的(gi<0g_i < 0),它的乘子 μi=0\mu_i = 0;只有活跃约束(gi=0g_i = 0)才有非零乘子。

5.2 在无人机控制中的应用

控制分配:四旋翼有4个电机,需要产生特定的推力+力矩。

minω2Mω2τdes2s.t.0ωi2ωmax2 \min_{\boldsymbol{\omega}^2} \|M\boldsymbol{\omega}^2 - \boldsymbol{\tau}_{\text{des}}\|^2 \quad \text{s.t.} \quad 0 \leq \omega_i^2 \leq \omega_{\max}^2

这是一个带不等式约束的最小二乘问题——每个电机的推力不能为负(不能倒转)也不能超过最大值。


六、强化学习中的策略优化

6.1 策略梯度

问题:如何优化一个策略 πθ(as)\pi_\theta(a|s)(在状态 ss 下选择动作 aa)以最大化累积奖励?

策略梯度定理

θJ(θ)=Eτπθ[t=0Tθlogπθ(atst)Rt] \nabla_\theta J(\theta) = E_{\tau \sim \pi_\theta} \left[ \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot R_t \right]

直觉:增加那些带来高回报的动作的概率,降低带来低回报的动作的概率。

6.2 PPO——最稳定的策略优化

PPO(Proximal Policy Optimization, Schulman et al., 2017) 通过限制每次更新的步长来保持训练稳定。

PPO的CLIP目标函数

LCLIP(θ)=Et[min(rt(θ)A^t,clip(rt(θ),1ϵ,1+ϵ)A^t)] L^{\text{CLIP}}(\theta) = E_t \left[ \min(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t) \right]

其中 rt(θ)=πθ(atst)πθold(atst)r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} 是新旧策略的比率。

核心思想:如果新策略偏离旧策略太多(rtr_t 超出 [1ϵ,1+ϵ][1-\epsilon, 1+\epsilon]),就截断梯度更新。这保证了每次更新都不会”步子太大”。

在已发表文章中的应用:端到端无人机敏捷飞行中的深度强化学习控制就是使用PPO训练的。

6.3 基于信赖域的方法

自然梯度法:在参数空间中考虑流形结构的梯度下降。

TRPO(Trust Region Policy Optimization):在KL散度约束下优化策略,保证每次更新都有绩效提升。

maxθEt[πθ(atst)πθold(atst)A^t]s.t.DKL(πθoldπθ)δ \max_\theta E_t \left[ \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} \hat{A}_t \right] \quad \text{s.t.} \quad D_{KL}(\pi_{\theta_{\text{old}}} \| \pi_\theta) \leq \delta

七、在已发表文章中的出现总表

文章 最优化理论的使用
🤖 YOLO ⭐⭐⭐ SGD/Adam训练、CIoU损失优化、匈牙利匹配
🔗 端到端 ⭐⭐⭐ PPO的CLIP目标、联合多任务优化(GradNorm)、逆强化学习
🛩️ 飞行动力学 ⭐⭐ 控制分配(约束最小二乘)、PID参数优化
🧮 线性代数 ⭐⭐ SVD低秩近似是Eckart-Young最优化问题
📐 微积分 ⭐ 梯度下降法本身的数学基础

八、核心公式速查卡

公式 含义 应用
xk+1=xkηf(xk)\mathbf{x}_{k+1} = \mathbf{x}_k - \eta \nabla f(\mathbf{x}_k) 梯度下降 深度学习训练基础
vk+1=βvk+ηf(xk)v_{k+1} = \beta v_k + \eta \nabla f(\mathbf{x}_k) 动量法 加速收敛、减少震荡
θk+1=θkηm^kv^k+ϵ\theta_{k+1} = \theta_k - \eta \frac{\hat{m}_k}{\sqrt{\hat{v}_k} + \epsilon} Adam 深度学习默认优化器
μigi(x)=0\mu_i g_i(\mathbf{x}^*) = 0 互补松弛性 约束优化的KKT条件
LCLIP=E[min(rA^,clip(r,1ϵ,1+ϵ)A^)]L^{\text{CLIP}} = E[\min(r\hat{A}, \text{clip}(r,1-\epsilon,1+\epsilon)\hat{A})] PPO-CLIP 强化学习稳定训练
minω2Mω2τ2\min_{\boldsymbol{\omega}^2} \|M\boldsymbol{\omega}^2 - \boldsymbol{\tau}\|^2 s.t. 0ω2ωmax20 \leq \omega^2 \leq \omega_{\max}^2 控制分配 四旋翼力矩分配

参考文献与推荐资源

  1. Boyd, S., & Vandenberghe, L. (2004). Convex Optimization. Cambridge University Press. — 凸优化经典教材,免费在线
  2. Nocedal, J., & Wright, S. J. (2006). Numerical Optimization. 2nd ed., Springer. — 数值最优化的标准参考
  3. Kingma, D. P., & Ba, J. (2015). Adam: A Method for Stochastic Optimization. ICLR. — Adam优化器原始论文
  4. Schulman, J., et al. (2017). Proximal Policy Optimization Algorithms. arXiv preprint arXiv:1707.06347. — PPO原始论文
  5. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. Chapter 8. — 深度学习优化
  6. Robbins, H., & Monro, S. (1951). A Stochastic Approximation Method. The Annals of Mathematical Statistics. — SGD原始论文