跳到主内容
快讯直播
AI智模界
AI 词典

凸松弛:先放松,再求解

一句话定义:凸松弛(Convex Relaxation)是指把一个难解的非凸优化问题,通过扩大可行域、简化约束,换成一个凸问题来求解,并把它的解当作原问题的近似答案或下界。

原理:把山地先抹成一只碗

想象你要找一片山地的最低点。非凸优化(non-convex optimization)就像一片坑坑洼洼的丘陵:从某个点往下走,很容易掉进一个小水坑,以为已经到底了,其实远处还有更深的山谷,这就是局部最优(local optimum)。而凸问题(convex problem)像一只光滑的大碗:碗里只有一个最低点,从任何位置往下滑,最终都会落到碗底。

凸松弛做的事,就是先把这片山地“抹平”成一只碗。碗底不一定正好对应原来山地最深的山谷,但通常离它不远,因此我们拿碗底的位置当作答案、初始点或者下界。

具体到技术上,常见手法有三种:把整数约束 x∈{0,1} 放宽成 x∈[0,1];把“非零元素越少越好”的 L0 约束换成 L1 范数(L1 norm);把非凸可行域换成它的凸包(convex hull)。松弛问题解出来之后,如果解恰好落在整数点上,这叫“松弛是紧的”(tight),那就是原问题的最优解;如果落在中间,就把它作为线索,继续用取整(rounding)、分支定界(branch and bound)等手段寻找原问题的解。

原问题(非凸)凸松弛后
可行域离散取值或非凸连续、凸
求解难度通常 NP-hard多项式时间可解
解的含义真正想要的答案近似解、下界或起点
风险陷入局部最优松弛太松,与真实解差距大

和相邻概念的区别

凸松弛和梯度下降不同:梯度下降是直接硬解原问题,凸松弛是换一个更好解的问题来解。它也和近似算法(approximation algorithm)不同:后者往往带有理论上的近似比保证,前者更强调“先换个问题求解,再想办法把解映射回原问题”。

对实际工作的意义

如果你是算法工程师,遇到组合优化、稀疏学习、半正定松弛(SDR)这类“一听就 NP-hard”的问题时,可以先问自己一句:能不能松弛?Lasso 里用 L1 代替 L0,整数规划里用线性规划松弛给分支定界提供下界,都是同一套思路。同时要清醒:松弛解不等于原问题的解,需要取整并验证;如果积分间隙(integrality gap)很大,松弛可能松得没有参考价值。

对普通职场人,这套思路同样好用:面对一个算不准、想不清的复杂决策,先构造一个“简化版但保证可算”的模型,拿到一个大致范围,再逐步收紧。先求可行,再求最优。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。