一、什么是凸优化(Convex Optimization)
1.1 优化问题的基本形态(背景)
一般的优化问题可以写成:
minx∈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 为什么"形状"决定了一切
优化问题难不难,不取决于维数,而取决于两件事:
- 函数 f(x)f(x)f(x) 的形状
- 集合 D\mathcal{D}D 的形状
这两者分别对应后面的两节:
- 凸函数(Chapter 3)
- 凸集(Chapter 2)
1.3 什么是"凸优化"的严格定义
凸优化是指满足以下两点的优化问题:
- 目标函数是凸函数
- 可行域是凸集
用数学语言就是:
minx∈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 的"每一步"都是凸的
为什么?
原始问题:
minx∑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、 −logdetX- \log \det X−logdetX
定义域:
X≻0 X \succ 0 X≻0
性质:
∇2(−logdetX)⪰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
用于:
- 对数似然
- 熵
- 指数族分布
重要结论
- 凸性是全局性质,不是局部性质
- Hessian 半正定 ⇔ 二阶可导凸函数
- SLAM 中所有线性化后的代价函数都是凸的