相关内容:凸优化(Convex Optimization)理论(1)
四、标准凸优化问题形式
这一节的核心目标总结如下:
什么样的优化问题,能够被"可靠、稳定、全局最优"地求解
4.1 一般形式(General Convex Optimization)
原始问题形式
min x f ( x ) s.t. g i ( x ) ≤ 0 , i = 1 , ... , m h j ( x ) = 0 , j = 1 , ... , p \begin{aligned} \min_{x} \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \le 0,\quad i=1,\dots,m \\ & h_j(x) = 0,\quad j=1,\dots,p \end{aligned} xmins.t.f(x)gi(x)≤0,i=1,...,mhj(x)=0,j=1,...,p
这是所有凸优化问题的母形式,LP、QP、SOCP、SDP 都是它的特例。
每一项的数学含义(非常关键)
(1)优化变量 x x x
-
x ∈ R n x \in \mathbb{R}^n x∈Rn
-
可以是:
- 状态向量(位姿、速度、偏置)
- 控制量
- 参数向量
(2)目标函数 f ( x ) f(x) f(x):凸函数
f ( θ x + ( 1 − θ ) y ) ≤ θ f ( x ) + ( 1 − θ ) f ( y ) f(\theta x + (1-\theta)y) \le \theta f(x) + (1-\theta)f(y) f(θx+(1−θ)y)≤θf(x)+(1−θ)f(y)
数学意义:
- 函数"向上开"
- 没有局部极小陷阱
- 梯度为 0 ⇒ 全局最优
工程意义(SLAM):
- 线性最小二乘
- 线性化后的重投影误差
- 信息矩阵加权误差
(3)不等式约束 g i ( x ) ≤ 0 g_i(x) \le 0 gi(x)≤0
要求:
g i ( x ) 是凸函数 g_i(x)\ \text{是凸函数} gi(x) 是凸函数
几何含义:
- 每个 g i ( x ) ≤ 0 g_i(x) \le 0 gi(x)≤0 定义一个凸可行域
- 多个约束交集仍是凸集
典型例子:
- 范围约束: ∣ x ∣ 2 − r ≤ 0 |x|_2 - r \le 0 ∣x∣2−r≤0
- 物理边界
- 正定性约束(间接)
(4)等式约束 h j ( x ) = 0 h_j(x) = 0 hj(x)=0
要求:
h j ( x ) = a j T x + b j h_j(x) = a_j^T x + b_j hj(x)=ajTx+bj
即 必须是仿射函数。
为什么不能是一般函数?
- 非线性等式会破坏凸性
- 等式约束会"切"集合,一旦是曲面就可能非凸
SLAM 中的例子:
- 固定某个位姿
- 施加 gauge constraint
- 坐标系锚定
一个极重要的结论
只要满足上述三点,这个问题一定是凸优化问题
并且:
KKT 条件 ⇔ 全局最优解
4.2 线性规划(LP)
数学形式
min x c T x s.t. A x ≤ b \begin{aligned} \min_x \quad & c^T x \ \text{s.t.} \quad & Ax \le b \end{aligned} xmincTx s.t.Ax≤b
为什么 LP 是凸优化?
(1)目标函数是线性的
f ( x ) = c T x f(x) = c^T x f(x)=cTx
- Hessian:
∇ 2 f ( x ) = 0 ⪰ 0 \nabla^2 f(x) = 0 \succeq 0 ∇2f(x)=0⪰0
凸函数(也是凹函数)
(2)约束是线性的
A x ≤ b Ax \le b Ax≤b
每一行都是:
a i T x − b i ≤ 0 a_i^T x - b_i \le 0 aiTx−bi≤0
- 线性函数 ⇒ 凸函数
- 半空间 ⇒ 凸集
几何解释
- 可行域是一个凸多面体
- 最优解一定在**顶点(极点)**上
这就是单纯形法有效的根本原因。
工程视角
LP 常见于:
- 资源分配
- 约束调度
- 松弛后的 L1 最小化
例如:
min x ∣ A x − b ∣ 1 \min_x |Ax-b|_1 xmin∣Ax−b∣1
可以转成 LP。
4.3 二次规划(QP)
数学形式
min x 1 2 x T Q x + c T x s.t. A x ≤ b \begin{aligned} \min_x \quad & \frac{1}{2} x^T Q x + c^T x \ \text{s.t.} \quad & Ax \le b \end{aligned} xmin21xTQx+cTx s.t.Ax≤b
关键条件: Q ⪰ 0 Q \succeq 0 Q⪰0
Q ⪰ 0 Q \succeq 0 Q⪰0
表示:
∀ x , x T Q x ≥ 0 \forall x,\quad x^T Q x \ge 0 ∀x,xTQx≥0
这是 QP 是否凸的唯一关键
为什么目标函数是凸的?
目标函数:
f ( x ) = 1 2 x T Q x + c T x f(x) = \frac{1}{2} x^T Q x + c^T x f(x)=21xTQx+cTx
梯度:
∇ f ( x ) = Q x + c \nabla f(x) = Qx + c ∇f(x)=Qx+c
Hessian:
∇ 2 f ( x ) = Q \nabla^2 f(x) = Q ∇2f(x)=Q
因此:
∇ 2 f ( x ) ⪰ 0 ⟺ f ( x ) 凸 \nabla^2 f(x) \succeq 0 \iff f(x)\ \text{凸} ∇2f(x)⪰0⟺f(x) 凸
无约束 QP(最重要特例)
min x 1 2 x T Q x + c T x \min_x \frac{1}{2} x^T Q x + c^T x xmin21xTQx+cTx
一阶最优条件:
Q x ⋆ + c = 0 Qx^\star + c = 0 Qx⋆+c=0
解为:
x ⋆ = − Q − 1 c x^\star = -Q^{-1} c x⋆=−Q−1c
这就是 正规方程
高斯--牛顿 = 无约束 QP(关键连接)
在 SLAM / BA 中:
min x ∑ i ∣ r i ( x ) ∣ 2 \min_x \sum_i |r_i(x)|^2 xmini∑∣ri(x)∣2
线性化:
r ( x + δ x ) ≈ r ( x ) + J δ x r(x + \delta x) \approx r(x) + J \delta x r(x+δx)≈r(x)+Jδx
得到:
min δ x ∣ J δ x + r ∣ 2 \min_{\delta x} |J \delta x + r|^2 δxmin∣Jδx+r∣2
展开为标准 QP:
min δ x 1 2 δ x T ( 2 J T J ) ⏟ ∗ Q ⪰ 0 δ x + ( 2 J T r ) ⏟ ∗ c T δ x \min_{\delta x} \frac{1}{2} \delta x^T \underbrace{(2J^T J)}*{Q \succeq 0} \delta x + \underbrace{(2J^T r)}*{c}^T \delta x δxmin21δxT (2JTJ)∗Q⪰0δx+ (2JTr)∗cTδx
其中:
Q = 2 J T J ⪰ 0 Q = 2J^T J \succeq 0 Q=2JTJ⪰0
这就是标注的那句话的严格数学原因:
SLAM / BA 中的高斯牛顿本质就是无约束 QP
小结
- 凸优化 = 凸目标 + 凸不等式 + 仿射等式
- LP 是目标和约束都线性的特例
- QP 是目标二次、约束线性的特例
- Q ⪰ 0 Q \succeq 0 Q⪰0 是 QP 凸性的根本
- 高斯牛顿 ≡ 无约束凸 QP
五、无约束凸优化的最优性条件
我们考虑如下问题:
min x ∈ R n f ( x ) \min_{x \in \mathbb{R}^n} f(x) x∈Rnminf(x)
其中
- f : R n → R f : \mathbb{R}^n \to \mathbb{R} f:Rn→R
- f f f 凸(convex)
- 在二阶条件中进一步假设 f ∈ C 2 f \in C^2 f∈C2
5.1 一阶最优性条件(First-Order Condition, FOC)
5.1.1 凸函数的一阶刻画(核心定理)
若 f f f 是可导凸函数,则以下命题等价:
x ⋆ 是全局最优解 ⟺ ∇ f ( x ⋆ ) = 0 x^\star \text{ 是全局最优解} \quad \Longleftrightarrow \quad \nabla f(x^\star) = 0 x⋆ 是全局最优解⟺∇f(x⋆)=0
这是充要条件,不是"必要但不充分"。
5.1.2 为什么成立?(从凸性推导)
凸函数定义(可导版本):
f ( y ) ≥ f ( x ) + ∇ f ( x ) T ( y − x ) , ∀ x , y f(y) \ge f(x) + \nabla f(x)^T (y - x), \quad \forall x,y f(y)≥f(x)+∇f(x)T(y−x),∀x,y
令 x = x ⋆ x = x^\star x=x⋆,若
∇ f ( x ⋆ ) = 0 \nabla f(x^\star) = 0 ∇f(x⋆)=0
则
f ( y ) ≥ f ( x ⋆ ) , ∀ y f(y) \ge f(x^\star), \quad \forall y f(y)≥f(x⋆),∀y
这意味着 x ⋆ x^\star x⋆ 是全局最小点。
5.1.3 反向也成立(必要性)
若 x ⋆ x^\star x⋆ 是全局最小点,则对任意方向 d d d:
d d t f ( x ⋆ + t d ) ∣ t = 0 ∇ f ( x ⋆ ) T d 0 \frac{d}{dt} f(x^\star + t d)\Big|_{t=0} \nabla f(x^\star)^T d 0 dtdf(x⋆+td) t=0∇f(x⋆)Td0
对所有 d d d 成立
⇒
∇ f ( x ⋆ ) = 0 \nabla f(x^\star) = 0 ∇f(x⋆)=0
5.1.4 几何直觉
- 凸函数图像像一个"碗"
- 梯度给出最陡下降方向
- 在最小点,任何方向都不再下降
- 因此梯度必须为零
5.1.5 与非凸情形的根本区别
| 情形 | ∇ f = 0 \nabla f = 0 ∇f=0 含义 |
|---|---|
| 凸函数 | 全局最优 |
| 非凸函数 | 可能是极小 / 极大 / 鞍点 |
这也是为什么 SLAM / BA / ICP 极度依赖"局部凸性近似"。
5.2 二阶最优性条件(Second-Order Condition)
现在假设:
f ∈ C 2 f \in C^2 f∈C2
5.2.1 Hessian 的意义
∇ 2 f ( x ) = [ ∂ 2 f ∂ x 1 2 ⋯ ⋮ ⋱ ] \nabla^2 f(x) = \begin{bmatrix} \frac{\partial^2 f}{\partial x_1^2} & \cdots \\ \vdots & \ddots \end{bmatrix} ∇2f(x)= ∂x12∂2f⋮⋯⋱
它刻画了:
- 曲率
- 局部"碗"的形状
- 是否存在下降方向
5.2.2 二阶必要条件(一般函数)
若 x ⋆ x^\star x⋆ 是局部最小点(不要求凸):
∇ f ( x ⋆ ) = 0 , ∇ 2 f ( x ⋆ ) ⪰ 0 \nabla f(x^\star) = 0, \quad \nabla^2 f(x^\star) \succeq 0 ∇f(x⋆)=0,∇2f(x⋆)⪰0
即对任意方向 d d d:
d T ∇ 2 f ( x ⋆ ) d ≥ 0 d^T \nabla^2 f(x^\star) d \ge 0 dT∇2f(x⋆)d≥0
否则沿某个方向可以二阶下降。
5.2.3 二阶充分条件(严格最小)
若
∇ f ( x ⋆ ) = 0 , ∇ 2 f ( x ⋆ ) ≻ 0 \nabla f(x^\star) = 0, \quad \nabla^2 f(x^\star) \succ 0 ∇f(x⋆)=0,∇2f(x⋆)≻0
则 x ⋆ x^\star x⋆ 是 严格局部最小点。
5.2.4 在凸函数中的特殊性(关键)
对凸函数,Hessian 自动半正定
如果 f f f 是凸且二阶可导:
∇ 2 f ( x ) ⪰ 0 , ∀ x \nabla^2 f(x) \succeq 0, \quad \forall x ∇2f(x)⪰0,∀x
因此在凸优化中:
∇ f ( x ⋆ ) = 0 ⇒ x ⋆ 是全局最优 \nabla f(x^\star) = 0 \quad \Rightarrow \quad x^\star \text{ 是全局最优} ∇f(x⋆)=0⇒x⋆ 是全局最优
二阶条件在"判别最优性"上是冗余的 ,但在算法设计上至关重要。
5.2.5 用泰勒展开看二阶条件(非常重要)
在 x ⋆ x^\star x⋆ 附近:
f ( x ⋆ + δ ) = f ( x ⋆ ) + ∇ f ( x ⋆ ) T δ ⏟ = 0 + 1 2 δ T ∇ 2 f ( x ⋆ ) δ + o ( ∣ δ ∣ 2 ) \begin{aligned} f(x^\star + \delta) &= f(x^\star)+ \underbrace{\nabla f(x^\star)^T \delta}_{=0}+ \frac{1}{2} \delta^T \nabla^2 f(x^\star) \delta+ o(|\delta|^2) \end{aligned} f(x⋆+δ)=f(x⋆)+=0 ∇f(x⋆)Tδ+21δT∇2f(x⋆)δ+o(∣δ∣2)
因此:
- 若 Hessian 半正定 ⇒ 不会下降
- 若存在负特征值 ⇒ 鞍点或极大点
5.3 与数值优化方法的直接联系
5.3.1 牛顿法
目标:解
∇ f ( x ) = 0 \nabla f(x) = 0 ∇f(x)=0
牛顿更新:
x k + 1 = x k − ∇ 2 f ( x k ) − 1 ∇ f ( x k ) x_{k+1}= x_k - \nabla^2 f(x_k)^{-1} \nabla f(x_k) xk+1=xk−∇2f(xk)−1∇f(xk)
要求:
- Hessian 可逆
- 近似正定
5.3.2 高斯--牛顿(GN)
对最小二乘:
f ( x ) = 1 2 ∣ r ( x ) ∣ 2 f(x) = \frac{1}{2}|r(x)|^2 f(x)=21∣r(x)∣2
∇ f = J T r , ∇ 2 f ≈ J T J \nabla f = J^T r, \quad \nabla^2 f \approx J^T J ∇f=JTr,∇2f≈JTJ
这里:
J T J ⪰ 0 J^T J \succeq 0 JTJ⪰0
天然满足凸二阶结构(局部)
5.3.3 Levenberg--Marquardt(LM)
为确保:
H + λ I ≻ 0 H + \lambda I \succ 0 H+λI≻0
即强制二阶充分条件成立。
5.4 总结
无约束凸优化最优性条件
若 f f f 是凸且可导,则:
∇ f ( x ⋆ ) = 0 \boxed{ \nabla f(x^\star) = 0 } ∇f(x⋆)=0
是 充要条件
二阶视角(理解算法)
- Hessian ⪰ 0 \succeq 0 ⪰0:保证局部不下降
- Hessian ≻ 0 \succ 0 ≻0:保证唯一极小
- 数值优化本质:逼近满足这些条件的点
六、带约束凸优化:KKT 条件
考虑带等式/不等式约束的凸优化问题:
min x ∈ R n f ( x ) s.t. g i ( x ) ≤ 0 , i = 1 , ... , m , h j ( x ) = 0 , j = 1 , ... , p \begin{aligned} \min_{x \in \mathbb{R}^n} \quad & f(x) \\ \text{s.t.} \quad & g_i(x) \le 0, \quad i=1,\dots,m, \\ & h_j(x) = 0, \quad j=1,\dots,p \end{aligned} x∈Rnmins.t.f(x)gi(x)≤0,i=1,...,m,hj(x)=0,j=1,...,p
其中:
- f f f 是凸函数
- g i g_i gi 是凸函数(不等式约束)
- h j h_j hj 是仿射或凸函数(等式约束)
6.1 拉格朗日函数(Lagrangian)
引入拉格朗日乘子 λ i \lambda_i λi 和 ν j \nu_j νj,构造拉格朗日函数:
L ( x , λ , ν ) = f ( x ) + ∑ i = 1 m λ i g i ( x ) + ∑ j = 1 p ν j h j ( x ) \mathcal{L}(x, \lambda, \nu)= f(x) + \sum_{i=1}^m \lambda_i g_i(x)+ \sum_{j=1}^p \nu_j h_j(x) L(x,λ,ν)=f(x)+i=1∑mλigi(x)+j=1∑pνjhj(x)
- λ i ≥ 0 \lambda_i \ge 0 λi≥0 对应不等式约束
- ν j ∈ R \nu_j \in \mathbb{R} νj∈R 对应等式约束
拉格朗日函数核心作用:
- 把约束问题转化为无约束问题
- 通过一阶条件寻找最优点
6.2 KKT 条件(Karush-Kuhn-Tucker Conditions)
若 ( x ⋆ , λ ⋆ , ν ⋆ ) (x^\star, \lambda^\star, \nu^\star) (x⋆,λ⋆,ν⋆) 为最优解及对应拉格朗日乘子,则必须满足:
{ ∇ x L ( x ⋆ , λ ⋆ , ν ⋆ ) = 0 (一阶可行性 / 梯度平衡) g i ( x ⋆ ) ≤ 0 (不等式约束可行性) h j ( x ⋆ ) = 0 (等式约束可行性) λ i ⋆ ≥ 0 (拉格朗日乘子非负) λ i ⋆ g i ( x ⋆ ) = 0 (互补松弛条件, Complementary Slackness) \begin{cases} \nabla_x \mathcal{L}(x^\star, \lambda^\star, \nu^\star) = 0 & \text{(一阶可行性 / 梯度平衡)} \\ g_i(x^\star) \le 0 & \text{(不等式约束可行性)} \\ h_j(x^\star) = 0 & \text{(等式约束可行性)} \\ \lambda_i^\star \ge 0 & \text{(拉格朗日乘子非负)} \\ \lambda_i^\star g_i(x^\star) = 0 & \text{(互补松弛条件, Complementary Slackness)} \end{cases} ⎩ ⎨ ⎧∇xL(x⋆,λ⋆,ν⋆)=0gi(x⋆)≤0hj(x⋆)=0λi⋆≥0λi⋆gi(x⋆)=0(一阶可行性 / 梯度平衡)(不等式约束可行性)(等式约束可行性)(拉格朗日乘子非负)(互补松弛条件, Complementary Slackness)
逐条解释:
- 一阶可行性(梯度平衡):
∇ x f ( x ⋆ ) + ∑ i = 1 m λ i ⋆ ∇ g i ( x ⋆ ) + ∑ j = 1 p ν j ⋆ ∇ h j ( x ⋆ ) = 0 \nabla_x f(x^\star) + \sum_{i=1}^m \lambda_i^\star \nabla g_i(x^\star)+ \sum_{j=1}^p \nu_j^\star \nabla h_j(x^\star) = 0 ∇xf(x⋆)+i=1∑mλi⋆∇gi(x⋆)+j=1∑pνj⋆∇hj(x⋆)=0
表示在最优点,梯度方向被约束"拉回",无法沿任何可行方向下降。
- 约束可行性:
- 不等式约束: g i ( x ⋆ ) ≤ 0 g_i(x^\star) \le 0 gi(x⋆)≤0
- 等式约束: h j ( x ⋆ ) = 0 h_j(x^\star) = 0 hj(x⋆)=0
确保最优点位于可行域内。
- 拉格朗日乘子非负:
- 对应不等式约束的拉格朗日乘子必须非负
- 否则可能沿负梯度方向继续下降,违背最优性
- 互补松弛条件(Complementary Slackness):
λ i ⋆ g i ( x ⋆ ) = 0 \lambda_i^\star g_i(x^\star) = 0 λi⋆gi(x⋆)=0
解释:
- 如果约束 g i ( x ⋆ ) < 0 g_i(x^\star) < 0 gi(x⋆)<0 不活跃,则 λ i ⋆ = 0 \lambda_i^\star = 0 λi⋆=0
- 如果约束 g i ( x ⋆ ) = 0 g_i(x^\star) = 0 gi(x⋆)=0 活跃,则 λ i ⋆ ≥ 0 \lambda_i^\star \ge 0 λi⋆≥0
- 保证只有"紧约束"施加梯度修正
6.3 KKT 条件的充分性与凸性
凸问题 + Slater 条件 (存在严格可行点 x x x,使得 g i ( x ) < 0 g_i(x) < 0 gi(x)<0, h j ( x ) = 0 h_j(x) = 0 hj(x)=0)下:
KKT 条件 ⟺ 全局最优解 \text{KKT 条件} \quad \Longleftrightarrow \quad \text{全局最优解} KKT 条件⟺全局最优解
解释:
- 对凸问题,KKT 一阶条件 不仅必要,而且充分
- 不需要检查二阶条件(Hessian 已半正定)
- 这在数值优化中至关重要:GN / LM / SQP 都基于 KKT 结构构造线性化方程
6.4 KKT 条件与数值优化方法
- 拉格朗日-牛顿法(Newton for constrained problems):
线性化 KKT 系统:
∇ x x 2 L ∇ g T ∇ h T diag ( λ ) ∇ g diag ( g ) 0 ∇ h 0 0 \] \[ Δ x Δ λ Δ ν \] = − \[ ∇ x L diag ( λ ) g h \] \\begin{bmatrix} \\nabla\^2_{xx} \\mathcal{L} \& \\nabla g\^T \& \\nabla h\^T \\\\ \\text{diag}(\\lambda) \\nabla g \& \\text{diag}(g) \& 0 \\\\ \\nabla h \& 0 \& 0 \\end{bmatrix} \\begin{bmatrix} \\Delta x \\\\ \\Delta \\lambda \\\\ \\Delta \\nu \\end{bmatrix}=- \\begin{bmatrix} \\nabla_x \\mathcal{L} \\\\ \\text{diag}(\\lambda) g \\\\ h \\end{bmatrix} ∇xx2Ldiag(λ)∇g∇h∇gTdiag(g)0∇hT00 ΔxΔλΔν =− ∇xLdiag(λ)gh 迭代更新 ( x , λ , ν ) (x, \\lambda, \\nu) (x,λ,ν),直至收敛。 2. **SLAM / BA / Constrained ICP**: * 不等式约束可用于防止"负深度"或"点云穿透" * KKT 系统对应增量优化方程(线性化 GN / LM) *** ** * ** *** ### 6.5 总结 * 拉格朗日函数:将约束合并到目标 * KKT 条件:一阶必要(凸问题下充分) * 互补松弛:区分活跃约束与非活跃约束 * 数值算法:通过线性化 KKT 构造增量更新 > 对凸优化问题而言,只需求解 KKT 系统即可得到 **全局最优解**。 *** ** * ** ***