凸优化(Convex Optimization)理论(1)

一、什么是凸优化(Convex Optimization)

1.1 优化问题的基本形态(背景)

一般的优化问题可以写成:

min⁡x∈Df(x) \min_{x \in \mathcal{D}} f(x) x∈Dminf(x)

其中:

  • xxx:优化变量
  • f(x)f(x)f(x):目标函数
  • D\mathcal{D}D:可行域(约束集合)

所有优化问题,本质上都是在问

在允许的区域 D\mathcal{D}D 内,哪个 xxx 让 f(x)f(x)f(x) 最小?


1.2 为什么"形状"决定了一切

优化问题难不难,不取决于维数,而取决于两件事:

  1. 函数 f(x)f(x)f(x) 的形状
  2. 集合 D\mathcal{D}D 的形状

这两者分别对应后面的两节:

  • 凸函数(Chapter 3)
  • 凸集(Chapter 2)

1.3 什么是"凸优化"的严格定义

凸优化是指满足以下两点的优化问题:

  1. 目标函数是凸函数
  2. 可行域是凸集

用数学语言就是:

min⁡x∈Cf(x),f 凸, C 凸 \min_{x \in \mathcal{C}} f(x), \quad f\ \text{凸},\ \mathcal{C}\ \text{凸} x∈Cminf(x),f 凸, C 凸

给出的文字定义正是这一点:

目标函数是凸函数,约束集合是凸集的优化问题


1.4 最关键的性质:局部最优 = 全局最优

结论(这是凸优化的灵魂)

只要是局部最优解,一定是全局最优解


为什么这在数学上成立?

设 x⋆x^\starx⋆ 是一个局部最小点,但不是全局最小点。

那么存在某个 yyy 使得:

f(y)<f(x⋆) f(y) < f(x^\star) f(y)<f(x⋆)

由于 C\mathcal{C}C 是凸集,对任意 θ∈(0,1)\theta \in (0,1)θ∈(0,1):

z=θy+(1−θ)x⋆∈C z = \theta y + (1-\theta)x^\star \in \mathcal{C} z=θy+(1−θ)x⋆∈C

由凸函数定义:

f(z)≤θf(y)+(1−θ)f(x⋆)<f(x⋆) f(z) \le \theta f(y) + (1-\theta) f(x^\star) < f(x^\star) f(z)≤θf(y)+(1−θ)f(x⋆)<f(x⋆)

这与 x⋆x^\starx⋆ 是局部最优解矛盾。

因此假设不成立,全局最优性得证。


几何直觉比拟

  • 凸函数像一个

  • 凸集像一个完整、没有洞的区域

  • 在碗里找最低点:

    • 不可能存在"局部坑"

1.5 和"非凸优化"的本质对比

非凸优化会发生什么?

  • 多个局部极小值
  • 初值决定结果
  • 算法容易卡死

举例:

f(x)=sin⁡(x)+x2 f(x) = \sin(x) + x^2 f(x)=sin(x)+x2

  • 无数局部极小
  • 梯度下降极度依赖初始化

一个关键事实

非凸优化 = 数值不稳定 + 工程不可控

而凸优化:

收敛性、稳定性、可重复性


1.6 为什么整个优化理论"偏爱"凸优化?

数学层面

  • KKT 条件是 充要条件
  • 对偶间隙为 0(强对偶)
  • 多项式时间可解

算法层面

  • 梯度下降
  • 牛顿法
  • 内点法
  • ADMM

都有全局收敛性保证


工程层面

  • 不依赖初始化
  • 可预期行为
  • 可大规模部署

1.7 凸优化在 实际SLAM / 估计中的真实地位

一个非常重要的事实

SLAM 本身是非凸的
但 SLAM 的"每一步"都是凸的


为什么?

原始问题:

min⁡x∑i∣ri(x)∣2 \min_x \sum_i |r_i(x)|^2 xmini∑∣ri(x)∣2

这是非凸的(旋转、投影)。

但在当前线性化点 xkx_kxk:

r(xk+δx)≈r(xk)+Jδx r(x_k + \delta x) \approx r(x_k) + J \delta x r(xk+δx)≈r(xk)+Jδx

得到:

min⁡δx∣Jδx+r∣2 \min_{\delta x} |J \delta x + r|^2 δxmin∣Jδx+r∣2

这是:

  • 二次目标
  • 无约束
  • Hessian 半正定

标准凸二次优化问题(QP)


工程操作手段

我们用"非凸问题 + 一系列凸子问题"来逼近真实解

这正是:

  • Gauss--Newton
  • Levenberg--Marquardt
  • Dogleg

的本质。


1.8 为什么说"凸优化是工程安全区"?

问题类型 特性
凸优化 全局最优、稳定、可复现
非凸优化 局部极小、依赖初始化

在高维系统中:

可解释性 > 理论最优性


二、凸集(Convex Set)

这一节解决的是一个根本问题:

"优化变量可以落在哪些位置上?"

在凸优化中,可行域必须是凸集,否则即使目标函数是凸的,问题也会变成非凸。


2.1 定义(Definition)

数学定义回顾

集合 C⊆Rn\mathcal{C} \subseteq \mathbb{R}^nC⊆Rn 是凸的,当且仅当:

∀x,y∈C, ∀θ∈0,1,θx+(1−θ)y∈C \forall x, y \in \mathcal{C},\ \forall \theta \in 0,1,\quad \theta x + (1-\theta)y \in \mathcal{C} ∀x,y∈C, ∀θ∈0,1,θx+(1−θ)y∈C


这条定义在"几何上"说了什么?

设:

z(θ)=θx+(1−θ)y z(\theta) = \theta x + (1-\theta)y z(θ)=θx+(1−θ)y

当 θ\thetaθ 从 000 到 111 连续变化时:

  • z(0)=yz(0) = yz(0)=y
  • z(1)=xz(1) = xz(1)=x

因此:

z(θ)z(\theta)z(θ) 描述的是从 yyy 到 xxx 的整条线段

定义要求:

这条线段上的每一点都属于 C\mathcal{C}C

这正是标注的几何解释:

任意两点的连线完全落在集合内部


一个重要等价说法

C\mathcal{C}C 是凸集
  ⟺  \iff⟺
∀x,y∈C\forall x,y \in \mathcal{C}∀x,y∈C,有:

x,y⊆C x,y \subseteq \mathcal{C} x,y⊆C

其中 x,yx,yx,y 表示闭线段。



2.2 常见凸集

下面每一个集合,都满足上面的定义,我们逐一说明为什么


1 欧几里得空间 Rn\mathbb{R}^nRn

显然:

∀x,y∈Rn,θx+(1−θ)y∈Rn \forall x,y \in \mathbb{R}^n,\quad \theta x + (1-\theta)y \in \mathbb{R}^n ∀x,y∈Rn,θx+(1−θ)y∈Rn

整个空间永远是凸的

意味着:无约束优化默认就是凸集


2 仿射子空间:Ax=bAx = bAx=b

集合定义为:

C=x∣Ax=b \mathcal{C} = {x \mid Ax = b} C=x∣Ax=b

取任意 x1,x2∈Cx_1, x_2 \in \mathcal{C}x1,x2∈C:

Ax1=b,Ax2=b Ax_1 = b,\quad Ax_2 = b Ax1=b,Ax2=b

对它们做凸组合:

A(θx1+(1−θ)x2)=θb+(1−θ)b=b A(\theta x_1 + (1-\theta)x_2) = \theta b + (1-\theta)b = b A(θx1+(1−θ)x2)=θb+(1−θ)b=b

因此:

θx1+(1−θ)x2∈C \theta x_1 + (1-\theta)x_2 \in \mathcal{C} θx1+(1−θ)x2∈C

仿射子空间是凸集。

在工程SLAM 中:

  • 固定某个位姿
  • gauge constraint
  • 锚定坐标系

3 半空间:aTx≤ba^T x \le baTx≤b

定义:

C=x∣aTx≤b \mathcal{C} = {x \mid a^T x \le b} C=x∣aTx≤b

取任意 x1,x2∈Cx_1,x_2 \in \mathcal{C}x1,x2∈C:

aTx1≤b,aTx2≤b a^T x_1 \le b,\quad a^T x_2 \le b aTx1≤b,aTx2≤b

则:

aT(θx1+(1−θ)x2)=θaTx1+(1−θ)aTx2≤b a^T(\theta x_1 + (1-\theta)x_2) = \theta a^T x_1 + (1-\theta) a^T x_2 \le b aT(θx1+(1−θ)x2)=θaTx1+(1−θ)aTx2≤b

半空间是凸集。

所有线性不等式约束的基础。


4 多面体(Polytope)

多面体定义为半空间的交集:

P=x∣Ax≤b \mathcal{P} = {x \mid Ax \le b} P=x∣Ax≤b

关键性质:

  • 半空间是凸的
  • 凸集的交仍是凸集

因此:

P 是凸集 \mathcal{P}\ \text{是凸集} P 是凸集

LP / QP 的可行域就是多面体。


5 二范数球:∣x∣2≤r|x|_2 \le r∣x∣2≤r

定义:

B=x∣∣x∣2≤r \mathcal{B} = {x \mid |x|_2 \le r} B=x∣∣x∣2≤r

由三角不等式:

∣θx+(1−θ)y∣2≤θ∣x∣2+(1−θ)∣y∣2≤r |\theta x + (1-\theta)y|_2 \le \theta |x|_2 + (1-\theta)|y|_2 \le r ∣θx+(1−θ)y∣2≤θ∣x∣2+(1−θ)∣y∣2≤r

因此:

θx+(1−θ)y∈B \theta x + (1-\theta)y \in \mathcal{B} θx+(1−θ)y∈B

二范数球是凸集。

SLAM 中:

  • 速度限制
  • 噪声置信域
  • 椭球协方差

6 正定矩阵集合:X≻0X \succ 0X≻0

定义:

S++n=X∣X≻0 \mathcal{S}_{++}^n = {X \mid X \succ 0} S++n=X∣X≻0

取任意 X1,X2≻0X_1,X_2 \succ 0X1,X2≻0,有:

∀v≠0,vTX1v>0,vTX2v>0 \forall v \ne 0,\quad v^T X_1 v > 0,\quad v^T X_2 v > 0 ∀v=0,vTX1v>0,vTX2v>0

则:

vT(θX1+(1−θ)X2)vθvTX1v+(1−θ)vTX2v0 v^T (\theta X_1 + (1-\theta) X_2) v \theta v^T X_1 v + (1-\theta) v^T X_2 v 0 vT(θX1+(1−θ)X2)vθvTX1v+(1−θ)vTX2v0

因此:

θX1+(1−θ)X2≻0 \theta X_1 + (1-\theta) X_2 \succ 0 θX1+(1−θ)X2≻0

正定矩阵集合是凸集。

SDP、信息矩阵、协方差优化的数学基础。


一个非常重要的闭包性质

凸集的任意交集仍然是凸集

但注意:

凸集的并集一般不是凸的

这是很多非凸问题的根源。


非凸集合的典型反例

  • 圆环(中空)
  • 离散集合
  • 多个不相连区域
  • 旋转群 SO(3)SO(3)SO(3)(非凸!)

这也是:

位姿空间天然非凸


三、凸函数(Convex Function)

这一节是整个凸优化理论的地基

一句话总结:

凸函数 = 没有"坑"的函数


3.1 定义

数学定义回顾

函数 f:Rn→Rf: \mathbb{R}^n \to \mathbb{R}f:Rn→R 是凸函数,当且仅当:

f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y),∀x,y, θ∈0,1 f(\theta x + (1-\theta)y) \le \theta f(x) + (1-\theta)f(y), \quad \forall x,y,\ \theta\in0,1 f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y),∀x,y, θ∈0,1


这条不等式"到底在说什么"

令:

z=θx+(1−θ)y z = \theta x + (1-\theta)y z=θx+(1−θ)y

则:

  • 左边:f(z)f(z)f(z) ------ 中间点的真实函数值
  • 右边:θf(x)+(1−θ)f(y)\theta f(x) + (1-\theta)f(y)θf(x)+(1−θ)f(y) ------ 端点函数值的线性插值

这条不等式等价于:

函数在中间点的值 ≤ 两端点连线的高度


几何解释

  • 图像在 Rn+1\mathbb{R}^{n+1}Rn+1 中
  • 任取两点 (x,f(x)),(y,f(y))(x,f(x)), (y,f(y))(x,f(x)),(y,f(y))
  • 连接成一条线段
  • 整个函数图像都在该线段下方或重合

这正是标注的那句话:

函数图像永远在两点连线下方


一个重要等价表述(切线形式)

若 fff 可导,则凸性等价于:

f(y)≥f(x)+∇f(x)T(y−x) f(y) \ge f(x) + \nabla f(x)^T (y - x) f(y)≥f(x)+∇f(x)T(y−x)

含义:

函数图像永远在任意切平面之上

这是工程中最常用的凸性判据之一。


工程 / SLAM 含义

  • 若代价函数是凸的:

    • 梯度下降不会掉进局部极小
    • 牛顿法一次到位(理想情况下)
  • 若非凸:

    • 初始化决定生死

3.2 二阶判据

数学表述

若 fff 二阶可导,则:

∇2f(x)⪰0∀x \nabla^2 f(x) \succeq 0 \quad \forall x ∇2f(x)⪰0∀x

Hessian 半正定


为什么 Hessian 决定凸性?

对 fff 在 xxx 处做二阶 Taylor 展开:

f(x+d)≈f(x)+∇f(x)Td+12dT∇2f(x)d f(x + d) \approx f(x) + \nabla f(x)^T d + \frac{1}{2} d^T \nabla^2 f(x) d f(x+d)≈f(x)+∇f(x)Td+21dT∇2f(x)d

若:

dT∇2f(x)d≥0,∀d d^T \nabla^2 f(x) d \ge 0,\quad \forall d dT∇2f(x)d≥0,∀d

则:

  • 二阶项永远"向上弯"
  • 没有向下凹陷

半正定 vs 正定

Hessian 含义
∇2f≻0\nabla^2 f \succ 0∇2f≻0 严格凸,唯一极小值
∇2f⪰0\nabla^2 f \succeq 0∇2f⪰0 凸,可能平坦方向
不定 非凸

在 SLAM 中:

  • JTJ⪰0J^T J \succeq 0JTJ⪰0(一定成立)
  • 但 ≻0\succ 0≻0 需要 gauge fix

一个关键结论

二次函数是否凸 ⇔ Hessian 是否半正定


3.3 常见凸函数


1、 ∣x∣22|x|_2^2∣x∣22

f(x)=∣x∣22=xTx f(x) = |x|_2^2 = x^T x f(x)=∣x∣22=xTx

梯度:

∇f(x)=2x \nabla f(x) = 2x ∇f(x)=2x

Hessian:

∇2f(x)=2I≻0 \nabla^2 f(x) = 2I \succ 0 ∇2f(x)=2I≻0

严格凸

SLAM:最小二乘误差的核心


2、 ∣x∣1|x|_1∣x∣1

f(x)=∣x∣1=∑i∣xi∣ f(x) = |x|_1 = \sum_i |x_i| f(x)=∣x∣1=i∑∣xi∣

  • 每个 ∣xi∣|x_i|∣xi∣ 是凸函数
  • 凸函数的非负加和仍是凸

虽不可导,但次梯度存在

工程含义:

  • 稀疏优化
  • 鲁棒估计(近似 L0)

3、 ∣Ax−b∣22|Ax - b|_2^2∣Ax−b∣22

f(x)=∣Ax−b∣22 f(x) = |Ax - b|_2^2 f(x)=∣Ax−b∣22

展开:

=xTATAx−2bTAx+bTb = x^T A^T A x - 2 b^T A x + b^T b =xTATAx−2bTAx+bTb

Hessian:

∇2f(x)=2ATA⪰0 \nabla^2 f(x) = 2A^T A \succeq 0 ∇2f(x)=2ATA⪰0

这正是线性最小二乘


4、 −log⁡det⁡X- \log \det X−logdetX

定义域:

X≻0 X \succ 0 X≻0

性质:

∇2(−log⁡det⁡X)⪰0 \nabla^2 (-\log \det X) \succeq 0 ∇2(−logdetX)⪰0

直观理解:

  • 行列式是"体积"
  • −log⁡-\log−log 抑制体积塌缩

工程应用:

  • 协方差估计
  • 信息矩阵优化
  • SDP / 内点法

5、 xTQx, Q⪰0x^T Q x,\ Q \succeq 0xTQx, Q⪰0

Hessian:

∇2f(x)=2Q \nabla^2 f(x) = 2Q ∇2f(x)=2Q

因此:

Q⪰0  ⟺  f(x) 凸 Q \succeq 0 \iff f(x)\ \text{凸} Q⪰0⟺f(x) 凸

QP 的理论根基


6、 exp⁡(x)\exp(x)exp(x)

二阶导数:

d2dx2exp⁡(x)=exp⁡(x)>0 \frac{d^2}{dx^2} \exp(x) = \exp(x) > 0 dx2d2exp(x)=exp(x)>0

多维情况:

∇2exp⁡(x)=exp⁡(x)⪰0 \nabla^2 \exp(x) = \exp(x) \succeq 0 ∇2exp(x)=exp(x)⪰0

用于:

  • 对数似然
  • 指数族分布

重要结论

  1. 凸性是全局性质,不是局部性质
  2. Hessian 半正定 ⇔ 二阶可导凸函数
  3. SLAM 中所有线性化后的代价函数都是凸的

相关推荐
Saniffer_SH5 分钟前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
ZHW_AI课题组10 分钟前
Python 调用百度智能云 API 实现地址识别
开发语言·人工智能·python·机器学习·百度·数据挖掘
俊哥V10 分钟前
每日 AI 研究简报 · 2026-06-15
人工智能·ai
Kurisu_红莉栖16 分钟前
前缀和的另外一种用法,前缀和分解
算法
王木风21 分钟前
Spring Boot + LLM 工程化:把短视频流水线拆成 16 个独立角色的踩坑记录
人工智能·spring boot·后端·开源·新媒体运营·音视频·agent
信实翻译22 分钟前
分账模式翻译:跨越商业与语言的精密计算
人工智能
EAIReport25 分钟前
企业级AI智能体平台说明
人工智能
智海观潮27 分钟前
UniScientist:30B开源科研大模型突破,重构AI自主研究范式
人工智能·ai·大模型
88号技师27 分钟前
2026年2月一区SCI-交叉传播优化算法Propagation Alongside Crossover-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
悠仁さん27 分钟前
数据结构 图(代码实现篇 C语言版)
数据结构·算法·图论