楼层: 首页/ 数学/ 研究生进阶/ 最优化理论:在限制中找最好的
10

最优化理论:在限制中找最好的

Optimization · 凸优化、拉格朗日、KKT
先想个场景:你开个小厂,生产 A、B 两种产品。原料和工时都有限,怎么分配生产,利润最大?这不是凭感觉拍脑袋,是一道有标准答案的数学题。这就是最优化。

是什么(大白话):在约束下找一组变量让目标函数最大或最小。生活比喻:在预算和时间限制下,怎么安排才能赚最多。AI 训练本质也是它。

卡必背公式 / 记忆口诀
凸优化:局部最优=全局最优
KKT 条件(有约束)
梯度下降法
口诀:优化就是在限制里找最好
这一节在走廊里的位置:应用数学的心脏:在限制里找最好。它就是训练大模型的那台引擎——梯度下降、Adam 全是它的孙子。
这节要学:梯度下降 → 拉格朗日乘子 → KKT → 凸优化

因怎么想到的:约束下的取舍

动机:现实里资源永远有限,怎么分配最划算?数学家把它写成统一形式:

min_x f(x) s.t. gᵢ(x) ≤ 0 , hⱼ(x) = 0

路考点心法:看到「最优化理论:在限制中找最好的」先想什么

• 直觉优先:研究生数学从具体到抽象——先用生活直觉类比理解,再看严格定义

• 反例思维:对任意定理,先想一个反例看看它到底在保证什么条件

• 历史脉络:每门抽象数学都有几十年的酝酿——知道为什么需要它才能真正懂

线性规划:f 和约束都线性。最优解一定出现在可行域(多边形)顶点上。

凸优化:目标凸、可行域凸——只有一个谷底,局部最优即全局最优,靠谱。机器学习大多落在凸优化或可凸化问题。

拉格朗日乘子法 / KKT:把约束揉进目标函数,用梯度为零找极值点,是带约束优化的总开关。

完整解法:工厂利润最大化

A 每件利润 3 元耗 1 工时,B 每件利润 4 元耗 2 工时,总工时 8,怎么生产?
审题:设 A=x, B=y,列线性规划。
思路max 3x+4y,约束 x+2y ≤ 8,x,y ≥ 0。 逐步可行域顶点枚举:
(0,0) → 0;(8,0) → 24;(0,4) → 16。
答案顶点 (8,0) 最大 → 全生产 A,x=8, y=0,利润 24 元。

用途与案例

训练神经网络

几百万参数里找一组让误差最小的组合。整个深度学习,本质就是大规模最优化。

物流与投资

外卖员怎么跑最省时间、基金怎么配股收益风险最佳,都是约束优化。

延展:和谁交叉

最优化连着机器学习(损失最小化)、运筹学(运输、排班)、金融(马科维茨投资组合)、控制论(模型预测控制)。凸优化是 ML 理论的硬通货。

防坑警示

坑:局部最优 = 全局最优。非凸问题(神经网络就是)沿下坡走容易卡在小盆地。为什么错?损失函数像连绵群山,小山谷不是最低点。所以要随机初始化、用动量、调学习率——都是为了别困在小坑里。

练习与答案

1. 为什么凸优化比非凸靠谱?

思路与解答凸函数像一个碗,全局只有一个最低点,任何局部最低都是全局最低,收敛解不用怀疑;非凸像群山,容易卡在局部小山谷。
【自评反馈】和答案对得上 → 继续下一题;对不上 → 回到本页"是什么"和例题区,把卡住的那步再推一遍。

2. 拉格朗日乘子法解决什么问题?

思路与解答把等式/不等式约束"揉进"目标函数里,变成一个无约束问题来求极值,由 KKT 条件给出最优解必须满足的方程,是带约束优化的总开关。
【自评反馈】和答案对得上 → 继续下一题;对不上 → 回到本页"是什么"和例题区,把卡住的那步再推一遍。
费曼学习法:讲给别人听
① 用自己的话讲:最优化就是"在一堆限制里找最好":梯度下降往坡底走,拉格朗日乘子把约束变成等式。
② 举个反例(什么条件下不成立):非凸问题梯度下降只到局部最优;目标不可微(L1)时梯度法直接卡壳。
③ 哪里还说不清:KKT 条件什么时候只是"必要"不是"充分"?
记
这节你该带走

① 最优化 = min f(x) s.t. g≤0, h=0。

② 凸优化只有一个谷底;AI 训练 = 大规模最优化。

费曼学习法
合上书,给一个完全不懂的人讲清楚「最优化理论:在限制中找最好的」——说不清楚的地方就是你没真懂的。

证最优化理论:在限制中找最好的的关键定理与公式

核心性质:① 一阶最优条件(无约束):可微函数 $f$ 的局部极小点 $x^*$ 满足 $\nabla f(x^*)=0$;② KKT 必要条件:约束规范下,约束极小点存在乘子 $\lambda_i\ge0,\mu_j$ 使 $\nabla f+\sum_i\lambda_i\nabla g_i+\sum_j\mu_j\nabla h_j=0$ 且 $\lambda_i g_i(x^*)=0$;③ 凸性:若 $f$ 凸、$g_i$ 凸、$h_j$ 仿射,则 KKT 也是全局最优的充分条件。

推导思路:① 无约束时,在 $x^*$ 沿任意方向 $d$ 有 $\frac{d}{dt}f(x^*+td)|_{t=0}=\nabla f(x^*)\cdot d=0$ 对所有 $d$,故 $\nabla f=0$;② 有约束时把可行方向限制为切空间,拉格朗日函数 $L=f+\sum_i\lambda_i g_i+\sum_j\mu_j h_j$ 对 $x$ 的梯度为零即驻值条件;③ 互补松弛 $\lambda_i g_i=0$ 表示"不起作用的约束乘子为零",凸情形下驻点即全局最小。

直觉把握:KKT 就是"在边界上爬坡,梯度被约束掰回来"——乘子 $\lambda_i$ 是"约束有多紧"的价格(影子价格);这正是 SVM、带约束神经网络训练的数学内核。

凸优化进阶:次梯度 / Proximal / ADMM

严为什么 L1 正则需要次梯度

次梯度定义:对凸函数 $f$,若对任意 $y$ 都有 $f(y)\ge f(x)+g^T(y-x)$,则 $g$ 称为 $f$ 在 $x$ 处的次梯度,全体记作 $\partial f(x)$。当 $f$ 可微时 $\partial f(x)=\{\nabla f(x)\}$ 退化成普通梯度。

关键麻烦:L1 正则项 $f(x)=|x|$ 在 $x=0$ 处不可导——左右导数分别是 $-1$ 和 $+1$,所以 $\partial|x|_{x=0}=[-1,1]$ 是一个区间而非单点。梯度下降在 0 处"卡住",必须用次梯度(或下面讲的软阈值)才能处理 Lasso。

证Lasso 的 Proximal 梯度解法(软阈值)

核心性质:带 L1 正则的问题 $\min_x \frac12\|Ax-b\|^2+\lambda\|x\|_1$ 的 Proximal 梯度步,对光滑项做梯度下降、对正则项做软阈值:$\operatorname{soft}(z,\lambda)=\operatorname{sign}(z)(|z|-\lambda)_+$,其中 $(t)_+=\max(t,0)$。

推导思路:把目标拆成光滑部分 $h(x)=\frac12\|Ax-b\|^2$ 与正则部分 $r(x)=\lambda\|x\|_1$。一步更新 $x^{k+1}=\operatorname{prox}_{\eta r}(x^k-\eta\nabla h(x^k))$。对 $r$ 的近端算子可逐坐标求解:$\min_z \frac12(z-u)^2+\lambda|z|$,令导数为零(在 $z\neq0$ 处)得 $z=u-\lambda\operatorname{sign}(u)$,再投影回使目标最小的区间,合起来就是 $\operatorname{sign}(u)(|u|-\lambda)_+$。

直觉把握:软阈值就是把小系数"压成 0"、大系数"削掉 $\lambda$"——这正是 Lasso 做特征选择的机制:不重要特征的权重被直接归零,模型自动变稀疏。AI 落点:Lasso / 稀疏注意力 / 模型压缩都靠它。

为什么不直接用梯度下降?在 $x=0$ 处 $|x|$ 没有梯度,普通梯度法无定义;次梯度法虽能用(随机次梯度下降 SGD 本质如此),但收敛慢且要在 0 附近"抖"。Proximal 把不可微项单独"精确吃掉",又快又稳。
AI 落点 1:Adam 与稀疏正则

Adam 用梯度的一阶/二阶矩估计做自适应步长;当它遇上 L1/Lasso 这类不可微正则,工程上常配合 Proximal 步骤(Proximal-Adam),否则稀疏性出不来。

AI 落点 2:ADMM 与分布式训练

ADMM 把大问题拆成可并行的小问题。标准形式三步:$x^{k+1}=\arg\min_x L_\rho(x,z^k,y^k)$,$z^{k+1}=\arg\min_z L_\rho(x^{k+1},z,y^k)$,$y^{k+1}=y^k+\rho(x^{k+1}-z^{k+1})$;其中增广拉格朗日 $L_\rho=f(x)+g(z)+\frac{\rho}{2}\|x-z+y/\rho\|^2$。每个子问题可分开在各机器/设备上解,是分布式优化的主力。

证收敛率三档:凸 / 光滑 / 强凸

核心性质:对凸目标:次梯度法 $O(1/\sqrt{k})$;对 Lipschitz 光滑凸目标:梯度下降 / FISTA $O(1/k)$ 或 $O(1/k^2)$;对 $\mu$-强凸目标:线性收敛 $O((1-\mu/L)^k)$ 即指数速率。

推导思路:凸情形下次梯度法误差平方 $\mathbb E\|x^k-x^*\|^2\le \frac{G^2}{k}$ 推出 $O(1/\sqrt{k})$;光滑凸用梯度下降的下降引理 $\|x^{k+1}-x^*\|^2\le\|x^k-x^*\|^2-2\eta(1-\eta L)\|\nabla f(x^k)\|^2$ 累积得 $O(1/k)$;强凸($\|\nabla f(x)-\nabla f(y)\|\ge\mu\|x-y\|$)使误差每步乘 $(1-\mu/L)$,呈线性(指数)衰减。

直觉把握:"越凸得狠、越光滑,收敛越快"——强凸像一个深碗,走一步就逼近底;非强凸的平坦区只能慢慢蹭。这条曲线决定了你训练神经网络时要不要上动量、要不要调学习率衰减。

变式追问:举一反三

① 跨尺度:把凸优化的 KKT 条件放到非凸的深度神经网络上,为什么"梯度为零"只是驻点而非最优?此时二阶信息(海森矩阵 $\nabla^2 f$)能告诉你这个驻点是谷底、山尖还是马鞍面的哪一类?

② 改条件:若目标函数不可微(如带 ReLU 的网络、带 L1 正则的 Lasso),次梯度法收敛率为什么是 $O(1/\sqrt{k})$ 而非光滑凸的 $O(1/k)$?"Adam 一定比 SGD 快"这个说法在什么意义下其实是错的?

③ 反向应用:ADMM 把大问题拆成可并行的小问题(各自更新 $x,z$ 再更新对偶 $y$),这和分布式训练 / 联邦学习(各设备本地更新、中心聚合)在数学结构上是否同构?哪些约束会破坏这种可并行性?