凸优化(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,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、 −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 中所有线性化后的代价函数都是凸的

相关推荐
珠海西格电力38 分钟前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源
じ☆冷颜〃1 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方1 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
POLITE31 小时前
Leetcode 23. 合并 K 个升序链表 (Day 12)
算法·leetcode·链表
启途AI1 小时前
2026免费好用的AIPPT工具榜:智能演示文稿制作新纪元
人工智能·powerpoint·ppt
TH_11 小时前
35、AI自动化技术与职业变革探讨
运维·人工智能·自动化
楚来客1 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
风送雨1 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
效率客栈老秦2 小时前
Python Trae提示词开发实战(8):数据采集与清洗一体化方案让效率提升10倍
人工智能·python·ai·提示词·trae
小和尚同志2 小时前
虽然 V0 很强大,但是ScreenshotToCode 依旧有市场
人工智能·aigc