训练 AI 模型时调学习率,看着损失曲线一路往下,你以为快到谷底了,换个随机种子重跑,却停在了另一个更差的位置。这种「结果取决于起点」的挫败感,正是非凸优化的日常。凸优化研究的是一类特殊问题:在这里,这种挫败不会发生。它离大模型训练不远,很多训练技巧、正则项设计、求解器选择,都建立在凸性直觉上。本文拆四件事:凸到底指什么、它换来了哪些确定性、现实问题为什么大多不凸、以及这套理论在什么情况下会失效。
两种地形,两种结局
把优化想象成在雾里下山,你只能感知脚下这一小片的坡度。地形是一个碗,无论从哪个位置出发,顺着最陡的方向走,最后都滑到同一个碗底。地形是一片丘陵,你会停在自己碰到的第一个坑里,坑底平坦,四周都往上,于是你以为到底了。凸性的几何定义很朴素:在曲面上任取两点连一条直线,这条线始终不低于曲面。碗满足,丘陵不满足。这个定义看着抽象,用处却很直接:它把「有没有别的更低的坑」这个无法就地验证的问题,变成可以整体判定的性质。顺着坡度往下走的那套动作,本身就是 梯度下降,坡度怎么算则见 梯度与偏导。
凸性换来的四样东西
| 性质 | 数学上意味着 | 工程上省掉什么 | 非凸时只能怎么办 |
|---|---|---|---|
| 局部即全局 | 任何局部极小点都是全局最优 | 不用多次随机初始化做对比 | 换种子重跑,取其中最优的一次 |
| 最优唯一 | 严格凸时解只有一个 | 不用纠结换个算法会不会更好 | 接受结果不可复现 |
| 收敛可估 | 迭代次数有上界,误差随步数下降 | 能提前估算算力和时间 | 只能看曲线,凭经验停 |
| 对偶可解 | 原问题难解时转成对偶问题 | 约束条件能直接进模型 | 用罚函数近似,调权重调到崩溃 |
四行里第一行最值钱。调试重心可以从「换初始值试试」转到「把问题建模对」,只要模型凸,求解器迟早给出同一个答案。第四行常被低估:现实问题往往带预算、时延这类约束,对偶理论能把约束吸收进目标;近似方法只能反复调惩罚系数,多一个超参就多一层不确定。
为什么碗形这么稀缺
现实里的目标函数很少天生是碗。神经网络每层输出都经过非线性变换,参数之间是乘性交互,损失曲面布满鞍点、平台和峡谷。组合优化更极端:排班、装箱、路径规划的解空间离散,连「连线」都不成立。带整数约束的问题,哪怕目标本身线性,加上「必须取整」也立刻失去凸性。所以凸优化的适用范围比教科书给人的印象窄:线性规划、二次规划、正则化 之后的回归、最大间隔分类是主场;跨出这个范围,就得靠松弛、近似,或者放弃最优性。
深度学习为什么干脆不追全局最优
既然兜不住,工程上的选择是换目标:不求最低点,只求泛化够好。参数量远大于样本量时,坏局部极小点反而变少,大量临界点其实是鞍点,鞍点在几百维空间里很容易被随机扰动推开。真正影响泛化的是解的平坦程度,平坦区域对参数扰动不敏感,测试更稳,这也是小批量噪声反而有用的原因。深度学习的成功,有一部分来自「放弃凸性之后发现没那么可怕」,并没有把非凸问题变成凸问题。
这套理论的边界在哪
凸优化能承诺的,是在给定模型和数据下找到唯一最优解,它管不了模型本身对不对。目标函数写错了,最优解只是把一个错误目标做到极致,这比次优解更危险,关于目标怎么定义,可以看 损失函数。规模也是硬约束:通用求解器要存二阶信息,变量到百万级时内存先撑不住,只能改一阶方法,收敛变慢。数值精度也咬人,条件数大的问题里,浮点误差足以让最优解在最后几位失真。还有一类误用是把非凸问题硬套成凸的:松弛后的点可能不满足原约束,要再取整或修补,修补完的最优性没有承诺。理解这些边界,比记住定义有用。
判断一个问题难在哪
拿到优化任务,先问三句:目标函数是碗形吗,约束是线性的吗,规模撑得住精确求解吗。三句都是「是」,直接上成熟求解器,精力花在建模上;有一句「否」,就提前想退路:接受近似解,还是换个更易优化的替代目标。这个顺序比一上来就调学习率有效。迁移到日常也一样:遇到怎么调都不对的问题,先确认它本身是不是就没有唯一答案。
速查:凸优化
- 几何判据:曲面上任取两点连线,线始终不低于面
- 核心红利:局部最优即全局最优,结果不依赖初始值
- 常见主场:线性规划、二次规划、带 L2 正则的回归、最大间隔分类
- 失效场景:神经网络损失面、离散组合问题、整数约束
- 易踩的坑:目标写错时,最优解等于把错误做到极致


