一、什么是凸优化(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,y\]\[x,y\]\[x,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\\in\[0,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 中所有线性化后的代价函数都是凸的