
本文目标:让没有任何最优化基础的读者,从零开始系统掌握最优化的核心概念——无约束优化、梯度下降家族(SGD/Momentum/Adam)、凸优化、约束优化、以及强化学习中的策略优化(PPO)。全文采用”概念→定义→性质→历史→应用”教学法,所有概念都连接到已发表的YOLO训练、端到端自动驾驶和无人机控制文章。
一、什么是最优化——寻找”最好”
1.1 最优化问题的标准形式
定义:在给定的约束下,寻找使目标函数取得最小值(或最大值)的参数。
xminf(x)s.t.gi(x)≤0,hj(x)=0
- x:决策变量(我们要找的参数)
- f(x):目标函数(衡量"好坏"的指标)
- gi(x)≤0:不等式约束
- hj(x)=0:等式约束
在深度学习中的具体例子——YOLOv8训练:
θminL(θ)=Lcls+Lbox+Ldfl
- θ:YOLOv8的**数千万个网络权重**
- L:分类损失 + 边界框损失 + 分布聚焦损失
- 约束:无(无约束优化)
1.2 最优化发展简史
历史:
- 1847年:柯西提出梯度下降法——最优化算法的开端
- 1940年代:丹齐格(George Dantzig)发明线性规划的单纯形法
- 1951年:罗宾斯(Robbins)和门罗(Monro)提出随机梯度下降(SGD)
- 1980年代:卡尔卡(Karmarkar)发明线性规划的内点法
- 2014年:Kingma和Ba提出Adam优化器——深度学习的事实标准
二、分类——不同类型的最优化问题
2.1 按约束条件分类
| 类型 |
定义 |
例子 |
| 无约束优化 |
没有约束条件 |
深度学习训练(参数自由调整) |
| 约束优化 |
有限制条件 |
PID参数不能超过安全范围 |
| 等式约束 |
hj(x)=0 |
控制分配中总拉力必须等于重力 |
| 不等式约束 |
gi(x)≤0 |
电机转速不能超过最大转速 |
2.2 按凸性分类
凸优化:目标函数和可行域都是凸的
凸函数的定义:对任意 λ∈[0,1]:
f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y)
几何意义:函数图像上任意两点连线都在函数图像上方。
为什么凸性极其重要?
- 凸优化只有一个全局最小值(没有”坑坑洼洼”)
- 任何下降方法都能保证找到全局最优解
- 可以用成熟的算法高效求解
非凸优化:不满足凸性条件。深度学习的损失函数就是非凸的——存在多个局部极小值。
2.3 按变量性质分类
| 类型 |
变量 |
例子 |
| 连续优化 |
x∈Rn |
神经网络权重、PID参数 |
| 离散优化 |
x∈Zn |
网络架构选择、锚点框数量 |
| 组合优化 |
排列组合问题 |
YOLO的匈牙利匹配(NMS替代方案) |
三、无约束优化——梯度下降家族
3.1 梯度下降法
一阶必要条件:如果 x∗ 是极小值点,则 ∇f(x∗)=0。
梯度下降迭代公式:
xk+1=xk−η∇f(xk)
其中 η>0 是学习率(步长)。
几何理解:梯度 ∇f 指向函数上升最快的方向,负梯度指向下降最快的方向。就像在山上找下山的路——每一步都朝最陡的方向走。
学习率的选择至关重要:
- η 太大:发散,不收敛
- η 太小:收敛极慢
- 理想:开始时大步快走,接近最优时小步精细调整
3.2 随机梯度下降(SGD)
问题:如果 f(x)=N1∑i=1NLi(x)(经验风险最小化),每次计算全部 N 个样本的梯度代价太大。
SGD:每次随机选一个样本(或一个小批次)计算梯度:
xk+1=xk−η∇Li(xk)
为什么SGD有效?因为梯度的期望等于真实梯度:
E[∇Li(x)]=∇f(x)
虽然每次有噪声,但平均而言方向是对的。
历史:
- 1951年:罗宾斯和门罗提出SGD
- 2010年代:随着深度学习兴起,SGD成为训练神经网络的核心算法
3.3 动量法(Momentum)
问题:SGD在峡谷地形中会震荡(在陡峭方向来回摆动,在平坦方向移动缓慢)。
动量法累积历史梯度方向:
vk+1xk+1=βvk+η∇f(xk)=xk−vk+1
其中 β 通常取 0.9。
物理类比:像滚雪球下山——当梯度方向一致时加速(积累动量),当梯度方向变化时抑制震荡。
Nesterov加速梯度(NAG)——动量法的改进版:
vk+1=βvk+η∇f(xk−βvk)
关键区别:在”向前看一步”的位置计算梯度,而不是当前位置。能更快收敛。
3.4 自适应学习率方法
Adagrad(Duchi et al., 2011):对每个参数使用不同的学习率,频繁更新的参数学习率小,稀疏更新的参数学习率大。
xk+1=xk−Gk+ϵη⊙∇f(xk)
其中 Gk 是历史梯度平方的累加。
问题:随着训练进行,Gk 不断增大,学习率会衰减到0,导致训练提前停止。
RMSProp(Hinton, 2012):用指数移动平均替代累加,解决Adagrad学习率单调递减的问题。
E[g2]k=βE[g2]k−1+(1−β)(∇f(xk))2
3.5 Adam——最广泛使用的优化器
Adam(Adaptive Moment Estimation, Kingma & Ba, 2014) 结合了动量法(一阶矩)和RMSProp(自适应学习率):
mkvkm^kv^kθk+1=β1mk−1+(1−β1)gk=β2vk−1+(1−β2)gk2=1−β1kmk=1−β2kvk=θk−ηv^k+ϵm^k(梯度的一阶矩:动量)(梯度的二阶矩:自适应学习率)(偏差修正,抵消初始时刻偏小)(偏差修正)
默认参数:η=0.001, β1=0.9, β2=0.999, ϵ=10−8
为什么Adam这么成功?
- 自适应学习率:不同参数有不同的学习率
- 动量:平滑梯度方向,加速收敛
- 偏差修正:解决初始估计偏小的问题
- 超参数鲁棒:即使不调参也能取得不错的效果
3.6 各优化算法对比
| 算法 |
自适应学习率 |
动量 |
适用场景 |
| SGD |
❌ |
❌ |
简单任务,需要精细调参 |
| SGD+Momentum |
❌ |
✅ |
减少震荡,通用 |
| NAG |
❌ |
✅ |
比Momentum更快收敛 |
| Adagrad |
✅ |
❌ |
稀疏梯度(NLP、词嵌入) |
| RMSProp |
✅ |
❌ |
非平稳目标,RNN训练 |
| Adam |
✅ |
✅ |
通用默认选择 |
四、凸优化——保证找到全局最优
4.1 凸集与凸函数
凸集:集合中任意两点的连线仍在集合中。
∀x,y∈C,λ∈[0,1]:λx+(1−λ)y∈C
凸函数:函数图像上任意两点连线都在函数图像上方。
f(λx+(1−λ)y)≤λf(x)+(1−λ)f(y)
判断凸函数的方法:Hessian矩阵 H=∇2f 半正定(所有特征值 ≥0)。
4.2 凸优化的优良性质
- 局部极小 = 全局极小:凸优化没有”局部陷阱”
- 对偶理论:原问题和对偶问题有强对偶关系
- 可有效求解:内点法、梯度法都能高效求解
4.3 在深度学习中的应用
深度学习的损失函数是非凸的——但实践中,SGD/Adam通常能找到”足够好”的局部极小值。
为什么非凸优化在深度学习中仍然有效?
- 高维空间中的局部极小值通常与全局极小值接近
- 鞍点(Saddle Point)比局部极小值更常见,但SGD能逃离鞍点
- 过参数化使损失景观更平滑
五、约束优化
5.1 拉格朗日乘子法
问题:在等式约束下求极值。
minf(x)s.t.h(x)=0
拉格朗日函数:
L(x,λ)=f(x)+λh(x)
KKT条件(Karush-Kuhn-Tucker,1951):约束优化的必要条件。
对于 minf(x) s.t. gi(x)≤0, hj(x)=0:
∇f(x∗)+i∑μi∇gi(x∗)+j∑λj∇hj(x∗)gi(x∗)μiμigi(x∗)hj(x∗)=0≤0≥0=0(互补松弛性)=0
互补松弛性 μigi(x∗)=0 的含义:如果一个不等式约束不是活跃的(gi<0),它的乘子 μi=0;只有活跃约束(gi=0)才有非零乘子。
5.2 在无人机控制中的应用
控制分配:四旋翼有4个电机,需要产生特定的推力+力矩。
ω2min∥Mω2−τdes∥2s.t.0≤ωi2≤ωmax2
这是一个带不等式约束的最小二乘问题——每个电机的推力不能为负(不能倒转)也不能超过最大值。
六、强化学习中的策略优化
6.1 策略梯度
问题:如何优化一个策略 πθ(a∣s)(在状态 s 下选择动作 a)以最大化累积奖励?
策略梯度定理:
∇θJ(θ)=Eτ∼πθ[t=0∑T∇θlogπθ(at∣st)⋅Rt]
直觉:增加那些带来高回报的动作的概率,降低带来低回报的动作的概率。
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)]
其中 rt(θ)=πθold(at∣st)πθ(at∣st) 是新旧策略的比率。
核心思想:如果新策略偏离旧策略太多(rt 超出 [1−ϵ,1+ϵ]),就截断梯度更新。这保证了每次更新都不会”步子太大”。
在已发表文章中的应用:端到端无人机敏捷飞行中的深度强化学习控制就是使用PPO训练的。
6.3 基于信赖域的方法
自然梯度法:在参数空间中考虑流形结构的梯度下降。
TRPO(Trust Region Policy Optimization):在KL散度约束下优化策略,保证每次更新都有绩效提升。
θmaxEt[πθold(at∣st)πθ(at∣st)A^t]s.t.DKL(πθold∥πθ)≤δ
七、在已发表文章中的出现总表
| 文章 |
最优化理论的使用 |
| 🤖 YOLO |
⭐⭐⭐ SGD/Adam训练、CIoU损失优化、匈牙利匹配 |
| 🔗 端到端 |
⭐⭐⭐ PPO的CLIP目标、联合多任务优化(GradNorm)、逆强化学习 |
| 🛩️ 飞行动力学 |
⭐⭐ 控制分配(约束最小二乘)、PID参数优化 |
| 🧮 线性代数 |
⭐⭐ SVD低秩近似是Eckart-Young最优化问题 |
| 📐 微积分 |
⭐ 梯度下降法本身的数学基础 |
八、核心公式速查卡
| 公式 |
含义 |
应用 |
| xk+1=xk−η∇f(xk) |
梯度下降 |
深度学习训练基础 |
| vk+1=βvk+η∇f(xk) |
动量法 |
加速收敛、减少震荡 |
| θk+1=θk−ηv^k+ϵm^k |
Adam |
深度学习默认优化器 |
| μigi(x∗)=0 |
互补松弛性 |
约束优化的KKT条件 |
| LCLIP=E[min(rA^,clip(r,1−ϵ,1+ϵ)A^)] |
PPO-CLIP |
强化学习稳定训练 |
| minω2∥Mω2−τ∥2 s.t. 0≤ω2≤ωmax2 |
控制分配 |
四旋翼力矩分配 |
参考文献与推荐资源
- Boyd, S., & Vandenberghe, L. (2004). Convex Optimization. Cambridge University Press. — 凸优化经典教材,免费在线
- Nocedal, J., & Wright, S. J. (2006). Numerical Optimization. 2nd ed., Springer. — 数值最优化的标准参考
- Kingma, D. P., & Ba, J. (2015). Adam: A Method for Stochastic Optimization. ICLR. — Adam优化器原始论文
- Schulman, J., et al. (2017). Proximal Policy Optimization Algorithms. arXiv preprint arXiv:1707.06347. — PPO原始论文
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press. Chapter 8. — 深度学习优化
- Robbins, H., & Monro, S. (1951). A Stochastic Approximation Method. The Annals of Mathematical Statistics. — SGD原始论文