不确定性规划方向级综述:五种安全谱的全景、流派脉络与选型¶
本篇性质:方向级综述(survey),不是教程。它站在 Part-U 不确定性规划专题(深度教程 U0–U5 见
30_不确定性规划/)之上,做一次**鸟瞰式的横切缝合**——把"集合/概率/多模态/认知/尾部"五种不确定性、五条算法流派(分支场景、鲁棒 Tube、机会约束、POMDP、风险敏感 CVaR)放在同一坐标系里互相对照,给出**选型矩阵**与**开放问题清单**。它回答的不是"某个方法怎么推导"(那是 U1–U5),而是"面对一个真实的不确定性问题,我该走哪条谱、为什么、代价是什么、前沿走到哪了"。读者画像:已通读或正在通读 Part-U 教程(至少读完 U0 总论),掌握 C++17 / Eigen / 凸优化(QP/NLP)、用过一种 MPC(acados / OCS2 / CasADi)、对贝叶斯滤波与 MDP 有概念的算法工程师与博士生。本篇默认你已经知道"什么是 Tube MPC""什么是 belief",因此不重新定义这些术语,而是把它们当作既有词汇拿来**比较与缝合**。
与深度教程的分工:U0–U5 是"把每条谱讲透"的**纵深**;本篇是"把五条谱并排比较"的**横切**。如果说 U0–U5 让你认识每一棵树,本篇要让你看清整片森林——森林的边界在哪、哪些树长在同一片土壤、哪条小径通向 RL 的版图。读完本篇,你应当能在白板上独立画出"不确定性 → 安全谱 → 算法 → 开源抓手 → RL 同义表达"的完整映射图。
前置自测¶
下面 6 题确认你是否具备读这篇综述的基础。综述比教程更"跳"——它假设你能在多个概念之间快速横跳。答不出 \(\ge 3\) 题,建议先回 U0 总论与对应深度章补齐,再回来读这篇横切。
- 用一句话分别说出"鲁棒""机会约束""风险敏感"三者对约束违反的态度有什么本质不同?(→ U0 §3 / U2 / U3 / U5)
- "他车意图"和"阵风扰动"这两种不确定性,为什么需要**根本不同**的建模工具?前者是什么型、后者是什么型?(→ U0 §2 五范式主线 / U1 / U2)
- belief(信念)为什么被称为"历史的充分统计量"?它和"状态"的区别是什么?(→ U4 §U4.1)
- CVaR\(_\alpha\) 与"期望"和"最坏情况"分别是什么极限关系?\(\alpha\to 0\) 和 \(\alpha\to 1\) 各退化成什么?(→ U5 §U5.1)
- 为什么说"MPDM 是简化的 MCTS、EPSILON 是简化的 POMCP"?这个类比的桥梁是什么?(→ U1 §U1.7 / 80_综述 §RL 贯穿)
- 一个标准 MPC 优化问题对"未来"做了什么假设?这个假设在不确定环境下为什么是危险的?(→ U0 §1 / 任一方向 MPC 基础)
这 6 题对应本篇的六根支柱:安全谱的态度光谱(贯穿全文)、不确定性的类型学(第一章)、belief 充分统计量(POMDP 一章的地基)、CVaR 的极限定位(风险敏感一章)、搜索-RL 桥(RL 贯穿视角)、MPC 的确定性假设(所有方法共同的"靶子")。第 1、2 题尤其关键——整篇综述的骨架就是"不同态度 × 不同类型"的二维网格。
本篇目标¶
读完这篇方向级综述,你应该能够:
- 建立"不确定性类型学":把机器人面对的所有不确定性归到五个相互正交的桶里(集合型 / 概率型 / 多模态型 / 认知型 / 尾部型),并能对任意一个真实问题判断它"主要落在哪个桶、次要落在哪个桶"。
- 画出"五安全谱"的态度光谱:从最保守(鲁棒 100% 保证)到最激进(风险中性只看期望),把五条流派排在一条线上,说清每条谱的"信息需求—保守度—计算量"三角权衡。
- 复述五条流派的发展脉络主干:每条流派从奠基论文到工业落地到 2024–2026 前沿的关键节点,以及它们之间的"借力"关系(如机会约束借了鲁棒的约束收紧、风险敏感借了机会约束做尾部、POMDP 借了分支做近似)。
- 使用选型矩阵:拿到一个新任务(形态 × 不确定性来源 × 实时性 × 安全等级),能在矩阵里查到"首选谱、备选谱、不该用什么",并说出理由。
- 辨认五条流派在 RL 版图上的位置:鲁棒↔Robust RL、机会约束↔Safe RL/CMDP、风险敏感↔Distributional RL、POMDP↔Recurrent/Model-based RL、分支↔MCTS/Dreamer——以及 2024–2026 的合流前沿(neural-guided POMDP、可微 MPC、diffusion risk-aware planner)。
- 列举并讨论开放问题:知道这个方向"还没解决什么"——分布漂移下的鲁棒性、保守度与性能的根本张力、多模态意图的长尾、风险度量的时间一致性、C++ 工程生态的空白带。
写作约定(与 U0 一致):本篇符号沿用 U0 总论。状态 \(x\)、控制 \(u\)、扰动 \(w\)、扰动集 \(\mathcal{W}\)、观测 \(y\)、信念 \(b\)、风险水平 \(\alpha\)/违反概率 \(\delta\)、代价 \(J\)、策略 \(\pi\)。引用具体论文时给出"作者-年-载体",便于回到 U1–U5 的代表性论文表对照。
知识导航¶
本篇的逻辑主线是一条"从分类到比较到选型到展望"的链:
| 节 | 主题 | 你将获得 | 对应深度章 |
|---|---|---|---|
| §1 | 不确定性的类型学 ⭐⭐ | 五个正交的"不确定性桶",判断问题归属 | U0 §2 |
| §2 | 五安全谱的态度光谱 ⭐⭐ | 一条从保守到激进的线,三角权衡 | U0 §3 |
| §3 | 流派 1:分支 / 场景规划脉络 ⭐⭐ | 多模态意图的处理史 | U1 |
| §4 | 流派 2:鲁棒 / Tube MPC 脉络 ⭐⭐ | 集合型扰动的硬保证史 | U2 |
| §5 | 流派 3:机会约束规划脉络 ⭐⭐ | 概率型违反的可控放松史 | U3 |
| §6 | 流派 4:POMDP / Belief 规划脉络 ⭐⭐⭐ | 认知不确定性的决策史 | U4 |
| §7 | 流派 5:风险敏感 / CVaR 脉络 ⭐⭐⭐ | 尾部风险的度量与优化史 | U5 |
| §8 | 五谱横向对比矩阵 ⭐⭐⭐ | 多维对照大表 + 本质异同 | U0 附录 |
| §9 | 方法选型矩阵 ⭐⭐⭐ | 拿到任务怎么选谱(决策树) | U0 附录 |
| §10 | RL 贯穿:五谱在强化学习版图的位置 ⭐⭐⭐ | 经典↔RL 同义映射 | 80_综述 §RL 贯穿 |
| §11 | 开放问题与 2024–2026 前沿 ⭐⭐⭐⭐ | 还没解决什么、合流走向 | 各章前沿节 |
| §12 | C++ 工程生态总评 ⭐⭐ | 哪条谱有代码、哪条得自己写 | U0 附录 / 各章 |
节奏提示:§1–§2 是地基(类型学 + 态度光谱),相对轻松;§3–§7 是五条脉络,密度中等、可跳读你最关心的谱;§8–§9 是全篇高潮(对比矩阵 + 选型),需要回看前面所有脉络;§10–§12 是收官与展望。建议第一遍线性读 §1–§2 + §8–§9,再回头补 §3–§7 的脉络细节。
前置知识桥接¶
这篇综述横切五条谱,复用了 Part-U 教程里的多块前置。这里用 3–5 行各激活一次核心要点,让你不翻回去也能跟上;需要细节时再回对应章。
回顾 U0 §2「五范式主线」:U0 把机器人不确定性按"该用什么数学工具"分成五条主线——确定性等价(忽略不确定性,风险中性 MPC)、鲁棒(最坏情况)、随机/机会约束(按分布、允许小概率违反)、风险敏感(度量尾部)、信息状态/POMDP(连状态都看不清)。本篇 §2 把这五条主线重新组织成一条"态度光谱",并在 §8 做横向对比。复用方式:U0 给的是"五条主线各是什么",本篇要做的是"它们排在一起谁更保守、谁信息需求更高、谁该在什么时候用"。
回顾 U2「约束收紧」:Tube MPC 的核心动作是把名义约束 \(g(x)\le 0\) 收紧成 \(g(\bar x)\le -\rho\)(\(\rho\) 是 RPI 集在约束方向的支撑),从而对扰动集内所有 \(w\) 都满足原约束。复用方式:本篇 §5 会指出机会约束"借用"了同一套收紧逻辑,只是把"对所有 \(w\)"换成"以概率 \(1-\delta\)",收紧量从"集合支撑"换成"分位数 \(\Phi^{-1}(1-\delta)\sigma\)"——理解这个"同构"是看懂鲁棒↔机会约束关系的关键。
回顾 U4「belief = 充分统计量」:POMDP 里 agent 看不到真实状态 \(s\),只能维护一个分布 \(b(s)\)(belief),它压缩了整段观测-动作历史且对未来决策"足够用"。复用方式:本篇 §6 会用这一点把 POMDP 与 RL 的循环网络(R2D2、Dreamer 的 RNN/RSSM 隐状态)缝在一起——"隐状态 ≈ 摊销的 belief"是经典↔RL 在认知不确定性上的主桥。
回顾 U5「Rockafellar–Uryasev 变分公式」:\(\mathrm{CVaR}_\alpha(Z)=\min_t\{t+\frac{1}{1-\alpha}\mathbb{E}[(Z-t)_+]\}\) 把"尾部均值"写成一个凸优化(样本化后是 LP)。复用方式:本篇 §7 用它把风险敏感与机会约束的关系点破——机会约束管"尾部有多厚"(违反概率),CVaR 管"尾部有多深"(违反后有多糟),后者是前者的"公理化升级"。
回顾 U1「共享干 + 分支」:分支规划对多个离散未来各备一条 backup,但要求它们共享一段不可分叉的初始轨迹(非预期约束),因为"现在还分不清是哪个未来"。复用方式:本篇 §3 与 §6 会指出这正是 POMDP belief 树的"廉价近似"——把连续 belief 演化离散成 \(K\) 个场景分支,DESPOT 的确定化稀疏树就是这个思想的严格版。
本质洞察:Part-U 五条谱看似各管一摊,底层其实只有**两个旋钮**在变——"你假设不确定性长什么样(集合 / 分布 / 多模态 / 不可观)"和"你对违反持什么态度(绝不 / 小概率 / 看尾部 / 不管)"。这篇综述的全部内容,都可以折叠进这两个旋钮张成的二维平面。记住这一点,下面所有脉络细节都只是这张平面图上的一个个坐标点。
§1 不确定性的类型学:五个正交的桶 ⭐⭐¶
1.1 动机:为什么"不确定性"这个词太笼统了¶
工程师口中的"不确定性"是一个被严重过载的词。"地形摩擦不确定""他车意图不确定""我看不清前方"——这三句话都用了"不确定",但它们要求的数学工具**完全不同**:第一个要扰动集,第二个要离散概率分布,第三个要 belief。如果不先把"不确定性"拆开,就会犯一类最常见的工程错误——用错工具:拿 Tube MPC 去处理他车意图(结果保守到寸步难行),或拿分支规划去处理连续阵风(结果分支数爆炸)。
不是 X 而是 Y:很多初学者以为"处理不确定性 = 加大安全裕度"。不是。加裕度只对**集合型有界扰动**有效;对**多模态意图**,加裕度会让你同时远离所有可能的未来,反而更危险(在两条可能车道中间行驶);对**认知不确定性**,加裕度根本不解决问题(你需要的是主动观测去消除不确定,而不是躲)。"不确定性的类型决定了应对策略的形态"——这是整个 Part-U 的第一性原理。
1.2 五个桶:一个穷举式的维度分类¶
按"该用什么数学对象建模",把机器人不确定性穷举成五个相互正交的桶。这不是随意举例,而是一个**思考框架**——拿到任何新问题,先问"它在这五个桶里各占多少"。
| 桶 | 数学对象 | 典型来源 | 对应谱 | 一句话刻画 |
|---|---|---|---|---|
| ① 集合型(set-bounded) | 扰动集 \(\mathcal{W}\)(紧致集) | 阵风、模型失配、有界外力 | 鲁棒 / Tube MPC | "扰动在一个盒子里,但不知道具体多大" |
| ② 概率型(probabilistic) | 概率分布 \(w\sim p(w)\) | 传感器噪声、过程噪声(已知统计) | 机会约束 / 随机 MPC | "扰动服从已知分布,可以谈概率" |
| ③ 多模态型(multimodal) | 离散场景集 \(\{\omega_k, P_k\}\) | 他车意图、路口让/抢、人手抓/不抓 | 分支 / 场景规划 | "未来是几种**离散**可能之一" |
| ④ 认知型(epistemic) | 信念 \(b(s)\)(状态上的分布) | 状态不可观、遮挡、地图未知 | POMDP / Belief 规划 | "连真实状态都看不清,只能推断" |
| ⑤ 尾部型(tail) | 风险度量 \(\rho(Z)\)(如 CVaR) | 罕见但致命的事件(碰撞、摔倒) | 风险敏感 / CVaR | "平均没事,但小概率的灾难要单独管" |
这五个桶并非互斥——一个真实任务往往**同时**落在多个桶里。但它们在"建模对象"层面是正交的:集合型管"范围",概率型管"分布形状",多模态管"离散分叉",认知型管"可观性",尾部型管"分布的尾巴"。理解正交性的好处是:复合不确定性可以分层处理——例如自动驾驶里,他车意图(③多模态)+ 他车轨迹噪声(②概率)+ ego 自身动力学扰动(①集合)可以叠成"分支 × 机会约束 × Tube"的三层架构(这正是 EPSILON + SSC + 收紧约束的工程形态)。
1.3 双重解读:aleatoric vs epistemic 的另一张地图¶
上面五个桶是按"数学对象"切的。还有一张正交的地图——机器学习社区更熟悉的 aleatoric(偶然)vs epistemic(认知) 二分,它从"不确定性能否被消除"的角度切:
- 角度 1(数学对象视角,上面的五桶):你拿什么对象去建模它。
- 角度 2(可消除性视角,aleatoric/epistemic):偶然不确定性(aleatoric)是世界本身的随机性,再多数据也消不掉(投骰子);认知不确定性(epistemic)来自"我知道得不够",收集更多数据/观测能消掉(不知道这条路通不通,走一趟就知道了)。
两张地图的对应关系值得画清楚——这是 R6A 要求的"双重解读":
| 五桶 | aleatoric/epistemic 归属 | 含义 |
|---|---|---|
| ① 集合型 | 偏 aleatoric(有界随机) | 阵风每次不同,消不掉,只能包络 |
| ② 概率型 | aleatoric | 噪声是世界的随机性 |
| ③ 多模态型 | epistemic(他人意图未知)+ aleatoric(执行噪声) | 意图一旦观测到就坍缩 → epistemic |
| ④ 认知型 | 纯 epistemic | belief 就是 epistemic 的显式表示,观测降低它 |
| ⑤ 尾部型 | 跨两者(管的是"后果"不是"来源") | 尾部可以来自任一种不确定性 |
本质洞察:epistemic 不确定性有一个 aleatoric 没有的"出路"——主动信息收集。这就是为什么 POMDP(④认知型)会自然涌现出"探索行为"(先看一眼再决定),而鲁棒 MPC(①集合型)永远只会"保守地躲"。一个规划器会不会"主动消除不确定性",取决于它建模的是 epistemic 还是 aleatoric。这一点在 §10 RL 贯穿里会再次出现——RL 的"探索-利用权衡"本质上就是 epistemic 不确定性的主动消除。
1.4 类型学的工程价值:误判类型的代价¶
把类型学讲清楚不是学术洁癖,而是因为**误判类型的工程代价极高**。下面三个反事实是真实项目里反复出现的坑:
- 把多模态当集合型:他车"可能左转可能直行",若用一个大扰动集把两种轨迹都包进去,ego 会在两条轨迹的"中间地带"行驶——而中间地带恰恰是最危险的(既不让也不抢)。正确做法是分支(U1):为每个意图单独优化,共享一段不分叉的初始段。
- 把认知当概率型:机器人不知道门后有没有障碍,若假设"障碍以 50% 概率在此"用机会约束处理,它会一直保守减速却永远不去**看一眼**。正确做法是 POMDP(U4):把"看一眼"作为一个降低 belief 熵的动作纳入决策。
- 把尾部当期望:99% 的情况下平均代价很低,但 1% 的碰撞是灾难。若只优化期望(风险中性),规划器会为了那 99% 的微小收益去赌 1% 的灾难。正确做法是风险敏感(U5):用 CVaR 把尾部 \(\alpha\) 单独拎出来优化。
这三个反事实合起来就是一句话:先分类,再选谱。这也是 §9 选型矩阵的逻辑起点。
§2 五安全谱的态度光谱:从"绝不违反"到"不管违反" ⭐⭐¶
2.1 动机:把五条谱排成一条线¶
§1 按"建模对象"把不确定性分了类。但工程师还需要第二个视角——对"约束违反"持什么态度。这个视角能把五条谱排成一条**单调的线**,从最保守到最激进。理解这条线,是做"保守度 ↔ 性能"权衡的前提。
考虑同一个约束——"不撞墙"\(g(x)\le 0\)。在不确定下,"满足"这个约束有五种渐次放松的解释:
| 态度 | 形式化 | 谱 | 保守度 |
|---|---|---|---|
| 绝不违反(对所有扰动) | \(g(x_w)\le 0,\ \forall w\in\mathcal{W}\) | 鲁棒 / Tube | 最保守 |
| 几乎不违反(小概率例外) | \(\Pr[g(x)\le 0]\ge 1-\delta\) | 机会约束 | 次保守 |
| 违反也别太惨(管尾部深度) | \(\mathrm{CVaR}_\alpha[g(x)]\le 0\) | 风险敏感 | 中等 |
| 多准备几手(按场景兜底) | \(g(x_k)\le 0\) 各分支独立 + 共享干 | 分支 / 场景 | 与意图离散度相关 |
| 不管违反(只看期望) | \(\min\mathbb{E}[J]\),约束当软的 | 风险中性 MPC | 最激进 |
阶段小结:到这里我们有了两张正交的地图——§1 的"五桶类型学"(按建模对象切)和 §2 的"态度光谱"(按违反态度切)。接下来 §2.2 把这两张地图叠成一张二维网格,那张网格就是整篇综述的骨架。
2.2 二维网格:类型 × 态度¶
把"不确定性类型"(横轴)与"违反态度"(纵轴)叠起来,得到一张网格。每个流派落在网格的某个区域——这就是 §1.4 末尾说的"先分类,再选谱"的可视化:
态度(纵轴,越往上越保守)
绝不违反 │ Tube MPC · ·
│ (①集合)
小概率 │ · CC-MPC/CC-RRT ·
│ (②概率)
管尾部 │ · · CVaR-MPC/CVaR-POMDP
│ (⑤尾部,可叠加任一类型)
多手兜底 │ · 分支/MPDM/EPSILON ·
│ (③多模态)
POMDP │ ─────────── belief 规划贯穿(④认知,正交于纵轴)───────────
└──────────────────────────────────────────────────────────
集合① 概率② 多模态③ 尾部⑤ 横轴:类型
这张网格揭示了三件关键的事:
- 鲁棒、机会约束、CVaR 在纵轴上是一条放松链:它们处理的常是同一类(连续)扰动,区别只在"违反态度"——这解释了为什么三者在数学上高度同构(§5、§7 会展开"机会约束是鲁棒的概率松弛、CVaR 是机会约束的公理化升级")。
- 分支规划单独占一列(多模态③),它不是"态度"的放松,而是"类型"的不同——它处理的是离散分叉而非连续扰动。
- POMDP 横跨整行(认知④正交于纵轴),因为它处理的是"可观性"这个更底层的问题——一旦状态可观,POMDP 退化,上面四条谱才登场。这就是为什么 U0 把 POMDP 放在"最底层"。
2.3 三角权衡:信息需求—保守度—计算量¶
每条谱在三个维度上各有取舍,没有免费午餐。这是选型时最该盯住的三角:
| 谱 | 信息需求 | 保守度 | 在线计算量 | 三角小结 |
|---|---|---|---|---|
| 鲁棒 / Tube | 最低(只需扰动集边界 \(\mathcal{W}\)) | 最高 | 低(名义 MPC + 离线 RPI) | 信息要得少,代价是保守 |
| 机会约束 | 中(需分布的均值+协方差) | 中(\(\delta\) 可调) | 中(SOCP / 采样) | 拿分布换保守度下降 |
| 风险敏感 / CVaR | 中高(需分布或样本) | 中(\(\alpha\) 可调) | 中高(LP dual / 分布 RL) | 精细管尾部,要更多分布信息 |
| 分支 / 场景 | 中(需场景集 + 概率) | 与意图离散度相关 | 中高(\(K\) 倍优化 + 仿真) | 多模态专用,\(K\) 是成本旋钮 |
| POMDP | 最高(需 \(T,O,R\) 全模型 + belief) | 自适应(最优权衡探索-利用) | 最高(信念树搜索) | 信息要得最多,换最优决策 |
本质洞察:这个三角的"守恒律"是——你想少假设不确定性的结构(信息需求低),就得接受更保守的结果;你想要最优而不保守的决策,就得提供最完整的模型(信息需求高)并付出最高计算量。鲁棒和 POMDP 是这个守恒律的两个极端,机会约束/风险敏感/分支落在中间。选型的本质,就是在你"能提供多少信息""能容忍多少保守""有多少在线算力"这三者之间找平衡点。
2.4 一个统一的视角:所有谱都在"收紧或加权"¶
退一步看,五条谱在**优化层面**其实只做两件事之一:
- 收紧约束(鲁棒、机会约束):把可行域往里缩,缩多少取决于不确定性。鲁棒缩"集合支撑",机会约束缩"分位数 × 标准差"。
- 重塑代价(风险敏感、分支、POMDP):改目标函数。CVaR 把"期望"换成"尾部均值",分支把"单轨迹代价"换成"场景加权代价 + 共享干约束",POMDP 把"状态代价"换成"belief 上的期望代价 + 信息增益"。
这个"收紧 vs 重塑"的二分,是把五条谱塞进同一个 MPC/优化框架的统一接口——也是为什么工程上能用同一个求解器(acados / OSQP / IPOPT)承载多条谱:你只是在往优化问题里注入不同的收紧量或代价项。U2 累积项目"同一测试台扫 \(\delta\)"的设计,正是利用了这个统一接口。
§3 流派 1:分支 / 场景规划脉络(多模态意图的处理史)⭐⭐¶
本节定位:处理 §1 的"③多模态型"不确定性——未来是几种离散可能之一(他车让/抢、人手抓/不抓)。深度推导见 U1,本节只梳理脉络、点出流派之间的"借力"关系,并补 2024–2026 前沿。
3.1 这条谱要解决的核心问题¶
分支规划的诞生动机是一个单轨迹规划永远解不了的困境:当未来有几种离散可能、且现在还分不清是哪种时,"赌最可能的那个"会在赌错时酿成灾难,而"取平均"会落到所有可能的中间地带(更危险)。它的答案是"共享干 + 分支"——为每个离散场景各备一条 backup 轨迹,但要求它们共享一段不可分叉的初始段(非预期约束 non-anticipativity),因为当前时刻还没有信息区分场景。这个结构既不赌单一未来,也不取危险的平均,而是"对所有未来都保持兼容,等信息到了再分叉"。
3.2 发展脉络主干¶
这条线的演进可以分成"形式化奠基 → 多策略闭环仿真 → 工业级实时化 → 风险感知 → 学习驱动"五个阶段:
| 阶段 | 时间 | 关键工作 | 贡献 |
|---|---|---|---|
| 形式化奠基 | 2013 | Hardy & Campbell(IEEE T-RO) | 把"为不同障碍物预测各备 backup、共享初始段"写成连续样条优化 |
| 多策略闭环仿真 | 2015–2017 | MPDM(Cunningham, ICRA'15)/ Galceran(IJRR'17) | ego 候选策略 × 他车候选策略组合成闭环前向仿真森林 |
| 工业级实时化 | 2020–2022 | EUDM(ICRA'20)/ EPSILON(T-RO'22) | DCP-Tree + CFB 把组合爆炸压回可实时;EPSILON 开源 C++ |
| 风险感知 | 2023 | MARC(RA-L'23) | 动态分支点(按场景 divergence)+ CVaR 双层风险偏好 |
| 学习驱动 | 2022–2026 | Contingencies-from-Observations(CoRL'22)/ diffusion scenario | learned latent 场景分布驱动分支;扩散先验生成场景 |
脉络的内在逻辑:每一步都在解决上一步暴露的瓶颈。MPDM 的闭环仿真森林复杂度是 \(O(|\Pi|^n)\)(\(|\Pi|\) 策略数、\(n\) agent 数),组合爆炸——EUDM 用 DCP-Tree(只展开策略**序列**而非全组合)+ CFB(Conditional Focused Branching,只在危险交互处分支)把它压回实时。EPSILON 在 EUDM 上加 SSC(Spatio-temporal Semantic Corridor)运动规划层,成为"行为决策(EUDM)+ 运动规划(SSC-QP)"的分层架构。MARC 再指出 EPSILON 的固定分支点不够灵活,改成按场景轨迹散度动态决定何时分叉,并把代价从期望换成 CVaR(与 §7 风险敏感谱合流)。
3.3 子路线分类¶
同属"分支",但技术形态分五类(这是 R6E 的系统性分类):
| 子路线 | 代表 | 形式 | 抓手 |
|---|---|---|---|
| (a) Scenario-tree 优化 | Hardy-Campbell, MARC, branch MPC | 共享根节点的树形 QP/NLP | — |
| (b) Multipolicy / 前向仿真 | MPDM, EUDM, EPSILON | 枚举语义 ego 策略闭环仿真打分 | EPSILON (C++) |
| (c) POMDP 近似 / belief-tree | (与 U4 交界) | 保留 belief 节点严格剪枝 | DESPOT |
| (d) Scenario Manager / FSM | Apollo, Autoware | 工程视角状态机 | Apollo / Autoware |
| (e) Learned Contingency | Rhinehart, diffusion-based | 神经先验生成场景/分支概率 | (Python 为主) |
3.4 与相邻谱的"借力"关系¶
分支规划不是孤岛,它和另外两条谱有明确的借用:
- 借 POMDP 做形式化背景:EPSILON 的行为层本质是一个被语义动作和闭环仿真简化的 POMDP——belief 树被压成"几个语义策略 × 几个意图场景"的稀疏树。这就是 §1.3 末尾"共享干 + 分支 = belief 树的廉价近似"的来源。
- 借 CVaR 做风险偏好:MARC 把场景加权从"期望"换成 CVaR,让规划器对"小概率但致命的场景"加权更重。这是分支谱(③多模态)与风险敏感谱(⑤尾部)的合流点。
3.5 2024–2026 前沿与开放问题¶
近年的活跃方向(与 §11 呼应):
- 学习场景分布:CoRL 2022 的 Contingencies-from-Observations 用观测数据训练 latent 场景分布,再驱动 learned contingency;2024–2026 出现 diffusion prior 直接采样场景集,绕开手工枚举意图。
- 意图长尾问题:手工枚举的意图集(让/抢/直行)覆盖不了真实路口的长尾行为(违章、犹豫、误判)。如何让分支集"自适应扩张"是开放问题。
- 分支数 \(K\) 的自适应:固定 \(K\) 在简单场景浪费算力、复杂场景不够用。MARC 的动态分支点是一步,但"该分几支"仍多靠启发式。
本质洞察:分支规划的全部精髓是一句话——"在信息到来之前保持选择权"(preserve optionality until information arrives)。共享干是"还没信息时不乱动",分支是"信息一到就能立刻切到对的那手"。这与金融期权、与 RL 的"价值of信息"是同一个数学直觉——这也是为什么它能自然地与 MCTS/POMCP 缝合(§10)。
§4 流派 2:鲁棒 / Tube MPC 脉络(集合型扰动的硬保证史)⭐⭐¶
本节定位:处理 §1 的"①集合型"不确定性——扰动在一个紧致集 \(\mathcal{W}\) 里,要对集内**所有**扰动给 100% 约束满足保证。深度推导见 U2,本节梳理脉络 + 工程生态 + 前沿。
4.1 这条谱要解决的核心问题¶
鲁棒规划回答的是安全关键场景里最硬的问题:**在扰动有界但具体值未知时,如何保证约束在最坏情况下也不被违反?**它的答案是 Tube MPC——把真实轨迹"包"进一条以名义轨迹为中心的管道(tube),管道半径由扰动通过反馈后的不变集(RPI, Robust Positively Invariant set)决定;只要把名义约束按管道半径收紧,真实轨迹就被锁在安全区内。这是 §2 态度光谱上"绝不违反"的一端,也是信息需求最低(只需扰动集边界)、保守度最高的一端。
4.2 发展脉络主干¶
鲁棒 MPC 是五条谱里理论最成熟、历史最长的一条:
| 阶段 | 时间 | 关键工作 | 贡献 |
|---|---|---|---|
| min-max 奠基 | 1998 | Scokaert-Mayne | 把最坏情况写进 MPC 目标,但保守且难算 |
| 名义+管道分离 | 2005 | Mayne-Seron-Raković(Automatica,~6k 引用) | 经典 rigid tube:名义系统 + 不变管道,把鲁棒拆成"名义优化 + 离线收紧" |
| 数值基石 | 2005 | Raković(IEEE TAC,mRPI 外逼近) | 让 RPI 集可计算 |
| 降保守度 | 2011–2016 | Mayne 非线性 Tube / Raković Homothetic & Elastic Tube | 管道半径可随时间伸缩,减少保守 |
| 搬上机器人 | 2017–2020 | Majumdar-Tedrake funnel(IJRR'17)/ Kousik RTD(IJRR'20)/ FaSTrack | SOS 认证漏斗 / 离线可达集 + 在线 QP |
| 硬件落地 | 2020+ | MIT Cheetah convex MPC / ETH ANYmal OCS2 NMPC | 把鲁棒化搬上四足实时硬件 |
| 学习增强 | 2023–2026 | GP-MPC(Hewing-Zeilinger)/ Neural Lipschitz tube / 可微 MPC(acados+leap-c) | 在线学扰动模型收紧 tube;让 NMPC 成为可训练的一层 |
脉络的内在逻辑:主线是"如何在保留 100% 保证的同时减少保守度"。rigid tube(2005)用固定管道,最保守;homothetic/elastic tube(Raković)让管道半径随状态伸缩;GP-MPC(2020)用高斯过程在线学扰动分布,把"对最坏情况"放松成"对高概率"(此处已滑向 §5 机会约束);learning-based tube(2023+)则用神经网络预测扰动边界。保守度的下降,总是以"假设更多关于扰动的信息"为代价——这正是 §2.3 三角权衡的体现。
4.3 子路线分类¶
| 子路线 | 代表 | 关键词 |
|---|---|---|
| (a) Rigid Tube | Mayne 2005 | 固定管道,最经典 |
| (b) Homothetic/Elastic/Parametric Tube | Raković | 管道可伸缩,降保守 |
| (c) Min-max / Scenario MPC | Scokaert-Mayne, Lucia multi-stage | 显式最坏情况 / 场景树 |
| (d) Stochastic / CC-MPC | Cannon-Kouvaritakis | 概率收紧(→ §5) |
| (e) Reachability-based | RTD, FaSTrack | 离线 forward reachable set |
| (f) Funnel libraries | Majumdar-Tedrake | SOS + LQR 认证漏斗 |
| (g) Learning-based Tube MPC | GP/Neural tube | 在线学扰动 |
注意 (d) 已经是"鲁棒→机会约束"的过渡——把"对集合 \(\mathcal{W}\) 所有点"换成"以概率 \(1-\delta\)",这就是下一节 §5 的入口。这种"流派边界的模糊地带"恰恰是综述最该点出的地方:鲁棒和机会约束不是两个独立王国,而是同一条收紧逻辑在"集合"与"概率"两种不确定性表示下的两个端点。
4.4 工程生态:五条谱里最成熟的一条¶
这是 Part-U 里 C++ 抓手最硬的一条(与 §12 呼应):
| 项目 | Stars | License | 角色 |
|---|---|---|---|
| acados | ~1.2k | 2-Clause BSD | 嵌入式 NMPC 事实标准(C 内核 + HPIPM/BLASFEO),被 MIT Cheetah、openpilot、众多 quadrotor 采用;tube/robust 需用户注入收紧约束 |
| OCS2 | — | BSD-3 | ETH legged NMPC(SLQ/iLQR/SQP) |
| Crocoddyl | — | BSD-3 | 刚体动力学最优控制 |
| TinyMPC | — | BSD | 嵌入式线性 MPC |
| do-mpc | — | LGPL (Python) | multi-stage robust MPC + MHE,适合先导教学 |
4.5 2024–2026 前沿与开放问题¶
- 可微 Tube MPC:acados 的 solution-sensitivity +
leap-c让 NMPC 成为神经网络的一层,可用 RL 梯度端到端训练鲁棒代价权重——这是鲁棒谱与 RL 合流的工程主线(§10)。 - 数据驱动收紧:GP-MPC、Neural Lipschitz、diffusion-augmented tube 用学到的扰动模型在线收紧管道,在"硬保证"与"低保守"间找新平衡点。
- 混合系统的鲁棒性:四足/人形的接触切换是混合系统,rigid tube 的不变集理论难以直接套用,工程上多退而用 convex MPC + 经验收紧——**接触切换下的严格鲁棒保证**仍是开放问题。
本质洞察:Tube MPC 的核心不是"把轨迹包起来",而是**把一个无穷维的鲁棒问题(对每个扰动序列都要满足约束)降维成一个有限维的名义问题 + 一次离线的集合计算**。RPI 集就是那次离线计算的产物——它把"未来所有可能的扰动累积"压缩成一个静态的安全裕度。理解这个"无穷→有限"的降维,才理解为什么 Tube MPC 能实时。
§5 流派 3:机会约束规划脉络(概率型违反的可控放松史)⭐⭐¶
本节定位:处理 §1 的"②概率型"不确定性——扰动服从已知分布,允许约束以小概率 \(\delta\) 违反 \(\Pr[g(x)\le 0]\ge 1-\delta\)。深度推导见 U3,本节梳理脉络 + 点出它"夹在鲁棒与风险中性之间"的精确定位。
5.1 这条谱要解决的核心问题¶
机会约束(Chance Constraint, CC)回答的是一个非常工程的问题:**鲁棒太保守(对从不发生的极端扰动也死守),风险中性太冒险(完全不管违反),有没有一个可调的中间地带?**它的答案是"允许以一个可控的小概率 \(\delta\) 违反约束"——\(\delta\to 0\) 退化成鲁棒(硬保证),\(\delta\) 放大则接近风险中性。\(\delta\) 就是那个"风险预算"旋钮。这正是 §2 态度光谱上"几乎不违反"那一档。
5.2 发展脉络主干¶
| 阶段 | 时间 | 关键工作 | 贡献 |
|---|---|---|---|
| 运筹学源头 | 1959 | Charnes & Cooper | CC programming 概念诞生 |
| 粒子近似 | 2006–2010 | Blackmore-Ono-Williams(IEEE T-AC'10) | particle approximation 把 CC 变成可算 |
| 风险再分配 | 2008 | Ono-Williams IRA(CDC) | 按子约束最优分配 \(\alpha_i\),缓解 Boole bound 保守性 |
| 嵌入采样规划 | 2010–2013 | How 组 CC-RRT / CC-RRT* / PCC-RRT(AIAA) | 把 CC 塞进 RRT 家族 |
| 桥接 CVaR / 分布鲁棒 | 2016+ | Stanford ASL:Vitus / Lew DR-MPC | CC ↔ CVaR ↔ 分布鲁棒的统一 |
| 多机 / 协方差塑形 | 2019+ | Zhu-Alonso-Mora CC-MPC / Wang-Theodorou covariance steering | 多机 CC;把 CC 变成 SDP |
脉络的内在逻辑:早期 CC(Charnes-Cooper)只是个运筹学概念,难落地;particle approximation(2010)让它可算但慢;IRA(2008)解决了"联合机会约束(JCC)拆成单约束(ICC)时 Boole 不等式过保守"的问题——均分风险预算是浪费,按各约束"危险程度"分配才最优;CC-RRT 把它从优化扩到采样规划;近年 DR-CC(分布鲁棒机会约束)则进一步放松"分布已知"的假设,只要均值+协方差就能给保证(这与 2024–2026 的 Wasserstein-CVaR 工作直接呼应)。
5.3 子路线分类¶
| 子路线 | 代表 | 关键词 |
|---|---|---|
| (a) 优化型 CC-MPC | MILP / disjunctive LP | 把概率约束凸化进 MPC |
| (b) 采样型 CC-RRT/CC-RRT* | How 组 | 概率约束嵌入采样规划 |
| (c) 分布鲁棒 DR-CC | Calafiore, Ben-Tal, Lew | 只需矩信息,对分布不确定鲁棒 |
| (d) Covariance Steering | Okamoto, Tsiotras | 显式塑形状态协方差 |
| (e) Scenario Optimization | Campi-Garatti | 用有限样本给概率保证 |
5.4 与相邻谱的同构关系¶
机会约束是综述里"借力关系"最清晰的一条谱——它**两头都借**:
- 向鲁棒借收紧逻辑:高斯下 \(\Pr[a^\top x\le b]\ge 1-\delta\) 等价于 \(a^\top\bar x + \Phi^{-1}(1-\delta)\sqrt{a^\top\Sigma a}\le b\)——这和 Tube MPC 的约束收紧**同构**,只是收紧量从"RPI 集支撑"换成"分位数 \(\Phi^{-1}(1-\delta)\times\) 标准差"。\(\delta\to 0\) 时 \(\Phi^{-1}\to\infty\),收紧量→∞,退化成鲁棒。
- 向风险敏感借升级:单个机会约束只管"违反概率 \(\le\delta\)",不管"违反多严重"。把它换成 CVaR 约束 \(\mathrm{CVaR}_\alpha[g(x)]\le 0\) 就同时管住了概率和深度——这是 §7 的入口,也是 2024–2026 "DR-CVaR over Wasserstein ambiguity set" 工作的理论根。
不是 X 而是 Y:机会约束**不是**"把硬约束改成软约束随便违反",而是**"给违反一个精确的概率预算 \(\delta\) 并严格遵守"**。软约束(penalty)违反多少不可控;机会约束的违反概率被钉死在 \(\delta\)。这个区别在安全认证里是天壤之别——监管能接受"碰撞概率 \(\le 10^{-6}\)",但不能接受"碰撞代价加了个罚项"。
5.5 工程生态与开放问题¶
这条谱的 C++ 生态**基本空白**(与 §12 呼应)——StanfordASL/ccscp(Python)、Ono IRA(MATLAB)为主,C++ 侧只有课程级实现(aalapshah12297/cc_rrt, stars < 50)。教学结论:这恰是绝佳的课程大作业——学生用 Eigen + OSQP/IPOPT 自己实现 CC-MPC 或 CC-RRT*,正好把约束收紧、SOCP、Boole 拆解、风险分配全过一遍。
开放问题:(1) 非高斯分布**下的凸化(高斯才有干净的 \(\Phi^{-1}\) 闭式,重尾/多模态分布需 particle 或 DR);(2) **联合机会约束的紧致性(Boole 上界保守,IRA 缓解但非最优);(3) **分布漂移**下 \(\delta\) 保证失效(训练分布≠部署分布,这是 §11 的核心开放问题)。
§6 流派 4:POMDP / Belief 规划脉络(认知不确定性的决策史)⭐⭐⭐¶
本节定位:处理 §1 的"④认知型"不确定性——连真实状态都看不清,只能通过带噪观测维护 belief。深度推导见 U4,本节梳理这条"Part-U 的 C++ 教学主轴"的完整脉络 + 与 RL 的最深桥梁。
6.1 这条谱要解决的核心问题¶
前三条谱(鲁棒、机会约束、风险敏感)都默认**状态可观**,只是状态的演化不确定。POMDP 处理的是更底层的问题:状态本身看不清(遮挡、传感器噪声、未建图区域)。它的核心对象是 belief \(b(s)\)——状态空间上的一个分布,是整段观测-动作历史的**充分统计量**。POMDP 在 belief 空间上做决策,自然涌现出"主动信息收集"行为(先看一眼再决定),这是它区别于其他四条谱的根本特征(§1.3 的 epistemic 出路)。
本质洞察:POMDP 之所以在 Part-U 里地位特殊(U0 把它放在最底层),是因为它**正交于**态度光谱(§2.2 那张网格里 POMDP 横跨整行)。鲁棒/机会约束/CVaR 是"状态可观、问怎么应对演化不确定";POMDP 是"状态不可观、问怎么在推断中决策"。一旦你的状态完全可观,POMDP 退化成 MDP,其余四条谱才登场。所以 POMDP 不是和它们并列的"第四种态度",而是更底层的"可观性问题"。
6.2 发展脉络主干:从精确到近似到学习¶
POMDP 的历史是一部"与维度灾难和历史灾难搏斗"的历史:
| 阶段 | 时间 | 关键工作 | 贡献 / 突破点 |
|---|---|---|---|
| 精确算法 | 1971–1998 | Sondik(α-vector + VI)/ Kaelbling-Littman-Cassandra(AIJ'98) | α-vector 与 PWLC 值函数;精确解随视界指数爆炸 |
| 点基突破(离线) | 2003–2008 | PBVI(Pineau'03)→ HSVI(Smith-Simmons'05)→ SARSOP(Kurniawati'08) | 只在可达 belief 上备份,避开全单纯形 |
| 在线 MCTS | 2010 | POMCP(Silver-Veness, NeurIPS'10) | 把 UCT/MCTS 引入 POMDP,particle filter 代表 belief,开启 online 范式 |
| 确定化稀疏树 | 2013–2017 | DESPOT(Somani-Ye-Hsu-Lee, NeurIPS'13 → JAIR'17) | \(K\) 个确定化场景固化信念树 + 正则化,有遗憾界 |
| 连续动作/观测 | 2018 | POMCPOW / PFT-DPW(Sunberg-Kochenderfer, ICAPS'18)/ HyP-DESPOT(GPU) | progressive widening 扩到连续空间;GPU 并行 |
| belief-space 运动规划 | 2010–2015 | LQG-MP(Platt, RSS'10)/ RRBT(Bry-Roy'11)/ FIRM | 高斯 belief + 连续空间的特化 |
| 学习派合流 | 2022–2026 | DreamerV3(Nature'25)/ neural-guided POMDP(BetaZero) | RSSM = 摊销 belief;policy/value net 作 DESPOT 的 default policy/bound |
脉络的内在逻辑:精确解(Sondik)数学完美但视界一长就爆炸;点基方法(SARSOP)的洞察是"绝大多数 belief 永远到不了,只在可达 belief 上备份 α-vector",把离线求解变可行;POMCP/DESPOT 的洞察是"别求全局值函数,只为**当前** belief 做在线树搜索",把指数复杂度换成 anytime 的在线计算。DESPOT 比 POMCP 更进一步——用 \(K\) 个确定化场景把随机的信念树"固化"成一棵稀疏的确定树,且证明了 output-sensitive 的遗憾界(性能只依赖最优策略的复杂度,不依赖整个树)。这是从"精确但不可算"到"近似但可实时"的完整下降链。
6.3 子路线分类¶
| 子路线 | 代表 | 关键词 | 抓手 |
|---|---|---|---|
| (a) 离线 value-iteration | PBVI/HSVI/SARSOP/GapMin | α-vector,离线 | SARSOP (C++) |
| (b) 在线 MCTS | POMCP/DESPOT/AEMS/POMCPOW | 信念树搜索,anytime | DESPOT (C++) |
| (c) belief-space motion planning | LQG-MP/BSP/RRBT/FIRM | 高斯 belief + 连续空间 | — |
| (d) learning-based | DRQN/Dreamer/VariBAD | RNN/RSSM 隐状态当 belief | (Python/JAX) |
| (e) constrained/risk POMDP | CC-POMDP, CVaR-POMDP | 带风险约束的 POMDP(→ §7) | — |
| (f) active SLAM / NBV | 信息增益当奖励 | 主动感知 | — |
6.4 工程生态:Part-U 的 C++ 教学主轴¶
这是五条谱里 C++ 抓手最完整的一条(与 §12 呼应),构成一个完整矩阵:
| 项目 | 语言 | License | 角色 |
|---|---|---|---|
| AdaCompNUS/despot | C++11 | BSD-style(注意 memorypool.h 为 GPL 衍生,商用需复核) |
教学主抓手:继承抽象类 DSPOMDP,实现 Step/ObsProb/...,MemoryPool<> 做粒子对象池(教学价值极高) |
| SARSOP (APPL) | C++ | Apache-2.0 | 离线 α-vector,POMDP/POMDPX 输入 |
| OPPT | C++17 | GPL | ABT 默认求解器,插件式,含 ROS+Gazebo |
| TAPIR | C++11 | — | ABT 早期实现 |
| POMDPs.jl / pomdp_py | Julia / Python | — | 生态对照,非 C++ |
DESPOT 的教学 API 极清晰:用户继承 DSPOMDP,实现 CreateStartState、InitialBelief、Step、ObsProb、GetBestAction、GetMaxReward、NumActions;main 只需 new MyPlanner(); planner->RunPlanning(argc, argv);。配套 despot_tutorials(ROS + Gazebo LaserTag)与金牌案例 Bai-Cai-Ye 2015 行人交互式自动驾驶,是 C++ POMDP 教学的标准路径:tiger/rock_sample → ROS laser_tag → 行人驾驶。
6.5 与 RL 的最深桥梁¶
POMDP 与 RL 的关系是五条谱里最深的(§10 会展开),核心桥是 belief = history 的充分统计量:
- Recurrent RL(DRQN/R2D2):用 RNN 隐状态近似 belief——隐状态压缩历史,正是 belief 的神经网络版。
- Model-based RL(Dreamer/MuZero):DreamerV3 的 RSSM(Recurrent State-Space Model)可视作**摊销的 belief**(amortized belief),DreamerV3 是 amortized POMDP planner 在 150+ 任务上的 SOTA;POMCP/DESPOT 的 rollout=simulate 本身就是 model-based RL。
- 2024–2026 合流前沿:neural-guided POMDP(如 BetaZero)把 policy/value network 作为 DESPOT 的 default policy 与剪枝 bound——这是"经典树搜索派"与"神经世界模型派"的合流标志。
6.6 开放问题¶
- 连续高维 belief:particle filter 在高维状态下退化(粒子贫化),连续动作/观测的 POMCPOW 虽有进展但实时性吃紧。
- 模型依赖:POMDP 需要完整的 \(T,O,R\) 模型,真实场景这些模型本身就不确定(model uncertainty on top of state uncertainty)——这把问题推向 Bayes-Adaptive POMDP,计算更难。
- C++ 与 Python 的鸿沟:DreamerV3 官方是 JAX 实现,不适合 C++ 直接复现,只宜作理论收官——这是 §12 工程生态总评里反复出现的"研究在 Python、部署在 C++"的现实张力。
§7 流派 5:风险敏感 / CVaR 脉络(尾部风险的度量与优化史)⭐⭐⭐¶
本节定位:处理 §1 的"⑤尾部型"不确定性——平均没事但小概率灾难要单独管。深度推导见 U5,本节梳理脉络 + 点出它是"机会约束的公理化升级"与"RL 的风险化"双重身份。
7.1 这条谱要解决的核心问题¶
风险敏感规划回答的是机会约束回答不了的问题:机会约束只管"违反概率 \(\le\delta\)",但违反之后有多惨它不管——撞一下和撞穿在它眼里都是"一次违反"。**当尾部事件的**后果差异巨大(轻微剐蹭 vs 高速对撞)时,必须把尾部的"深度"也纳入优化。它的答案是用一致性风险度量(coherent risk measure),尤其是 CVaR\(_\alpha\)——"最坏 \(\alpha\) 比例情况下的平均代价"。这是 §2 态度光谱上"违反也别太惨"那一档。
7.2 发展脉络主干¶
| 阶段 | 时间 | 关键工作 | 贡献 |
|---|---|---|---|
| 公理化奠基 | 1999–2000 | Artzner 等"Coherent Measures of Risk" / Rockafellar-Uryasev(J. Risk'00) | 一致性风险 4 公理;CVaR 的凸优化(LP dual)变分公式 |
| 动态一致性 | 2001–2010 | Borkar risk-sensitive MDP / Ruszczyński(2010 nested risk) | 解决静态 CVaR 的时间不一致问题 |
| RL 化 | 2015 | Chow-Tamar-Mannor-Pavone(NeurIPS'15) | 带 CVaR 约束的 policy gradient |
| 机器人落地 | 2017–2018 | Majumdar-Pavone(ISRR'17) / Singh-Chow(T-AC'18) | 把 Artzner 公理翻译到机器人,批评"期望+碰撞概率"不满足公理 |
| 分布式 RL | 2017–2018 | C51(Bellemare, ICML'17) / QR-DQN / IQN | 学整个回报分布,IQN 内置 CVaR/Wang/CPW 采样器 |
| 前沿融合 | 2023–2026 | CVaR-Filter / DRO-MPC / Wasserstein-DR-CVaR / diffusion risk-aware | CVaR 进 CBF/MPC;分布鲁棒 CVaR;扩散风险规划器 |
脉络的内在逻辑:Rockafellar-Uryasev(2000)是整条线的技术心脏——它把"尾部均值"这个看似难算的量写成 \(\mathrm{CVaR}_\alpha(Z)=\min_t\{t+\frac{1}{1-\alpha}\mathbb{E}[(Z-t)_+]\}\),样本化后就是一个**线性规划**,从此 CVaR 可算。但静态 CVaR 有个致命问题——时间不一致(time-inconsistency):今天觉得最优的 CVaR 计划,明天可能后悔,因此不能直接塞进动态规划。Ruszczyński(2010)的 nested CVaR(逐步施加一步条件 CVaR)修复了这点。Majumdar-Pavone(2017)则做了"公理审计"——指出机器人界两个默认选项(最小化期望代价、约束碰撞概率)都不满足完整的一致性公理,会诱发不合理行为,这是把金融风险理论引入机器人的里程碑批评。
7.3 子路线分类¶
| 子路线 | 代表 | 关键词 |
|---|---|---|
| (a) 静态 CVaR 约束 | RU-dual LP | 一步 CVaR,凸可算 |
| (b) time-consistent dynamic risk | Ruszczyński nested CVaR | 修复时间不一致 |
| (c) distortion risk metrics | Majumdar-Pavone | 一般化畸变风险 |
| (d) distributional RL | C51/QR-DQN/IQN | 学回报分布,采样实现任意风险 |
| (e) DRO / Wasserstein ambiguity | — | 对分布不确定也鲁棒 |
| (f) risk-sensitive exponential utility | LEQG, Whittle | 指数效用,经典控制路线 |
7.4 与相邻谱的关系:机会约束的"公理化升级"¶
风险敏感谱的定位,最好通过它与机会约束(§5)的关系来理解——这是 R6A 的多视角:
- 机会约束 = 管尾部的"厚度":\(\Pr[g>0]\le\delta\) 只看"超出约束的概率有多大",不看超出多少。
- CVaR = 管尾部的"深度":\(\mathrm{CVaR}_\alpha[g]\le 0\) 把最坏 \(\alpha\) 比例的代价平均压住,既管概率又管深度。
- 极限关系:\(\alpha\to 0\) 时 CVaR → 期望(风险中性);\(\alpha\to 1\) 时 CVaR → 最坏情况(鲁棒)。所以 CVaR 是一条**连续地连接风险中性与鲁棒的旋钮**——这是它在五条谱里最优雅的性质,等于把 §2 态度光谱上的两端用一个参数 \(\alpha\) 连续地插值起来了。
本质洞察:CVaR 把"鲁棒"和"风险中性"从两个对立的哲学变成了一条连续谱上的两个端点(\(\alpha=1\) 与 \(\alpha=0\))。这是整个 Part-U 最深的统一——五条谱看似五种哲学,但通过 CVaR 的 \(\alpha\) 旋钮(管态度)和 §1 类型学(管对象),它们可以被组织进一个连续的、有原理的设计空间,而不是五个互不相干的工具箱。
7.5 工程生态与开放问题¶
C++ 侧**基本空白**(与 §12 呼应)——分布式 RL 全在 PyTorch/JAX(Dopamine、rlax、SB3-contrib QR-DQN),cvxpylayers/CVXPY 做 CVaR 凸层,Stanford ASL 的 ccscp/risk_sensitive_control 为 Python/MATLAB。教学建议:把 Rockafellar-Uryasev LP dual 作为作业,Eigen + OSQP 实现,作为 Part-U 的"理论顶帽 + 小作业"。
开放问题:(1) 时间一致性 vs 保守度**的张力(nested CVaR 一致但更保守);(2) **分布鲁棒 CVaR 的计算(Wasserstein-DR-CVaR 是 2024–2026 热点,但 SDP 规模大);(3) 风险度量的选择——CVaR 只是一致性风险的一个,distortion risk(如 Wang transform)在不同应用下更合适,但"该选哪个风险度量"缺乏系统指导。
§8 五谱横向对比矩阵:把脉络折叠成一张大表 ⭐⭐⭐¶
本节定位:§3–§7 是五条纵向脉络,本节把它们**横切**,在统一维度上并排对照。这是综述区别于教程的核心价值——教程让你深入一条谱,综述让你在五条谱之间做有依据的横向比较。
8.1 主对比矩阵:八个维度¶
下面这张表是整篇综述的"中央枢纽"。八个维度都经过精心选择,使得"读一行=理解一条谱的全部要点,读一列=理解所有谱在某个维度上的谱系":
| 维度 | 鲁棒/Tube (U2) | 机会约束 (U3) | 分支/场景 (U1) | POMDP/Belief (U4) | 风险敏感/CVaR (U5) |
|---|---|---|---|---|---|
| 管的不确定性类型 | ①集合型 | ②概率型 | ③多模态型 | ④认知型 | ⑤尾部型(叠加) |
| 违反态度 | 绝不(∀w) | 小概率(≤δ) | 多手兜底 | 自适应 | 管尾部深度 |
| 核心数学对象 | RPI 不变集 | 分位数收紧 | 共享干+分支 | belief(充分统计量) | CVaR 变分公式 |
| 保守度 | 最高 | 中(δ 可调) | 与意图离散度相关 | 最优(自适应) | 中(α 可调) |
| 信息需求 | 最低(仅 \(\mathcal{W}\)) | 中(均值+协方差) | 中(场景集+概率) | 最高(T,O,R 全模型) | 中高(分布/样本) |
| 在线计算量 | 低 | 中 | 中高(K 倍) | 最高(信念树) | 中高(LP/分布RL) |
| 优化层动作 | 收紧约束 | 收紧约束 | 重塑代价+约束 | 重塑代价(+信息增益) | 重塑代价 |
| C++ 成熟度 | ★★★★(acados/OCS2) | ★☆(自己写) | ★★★★(EPSILON) | ★★★★★(DESPOT) | ★☆(Python为主) |
8.2 跨谱的三组"同构/借力"关系(本质对比)¶
§3–§7 各节点出的借力关系,在这里汇总成三组——这是综述最该传递的"森林视角",因为它们揭示五条谱不是五个孤岛,而是一张**互相连通的网**:
第一组:鲁棒—机会约束—CVaR 是一条连续放松链。 三者常处理同一类连续扰动,区别只在违反态度,且数学上高度同构: - 鲁棒收紧量 = RPI 集支撑;机会约束收紧量 = \(\Phi^{-1}(1-\delta)\cdot\sigma\);CVaR 把约束换成尾部均值。 - 极限连接:\(\delta\to 0\) 时机会约束→鲁棒;\(\alpha\to 1\) 时 CVaR→鲁棒,\(\alpha\to 0\) 时 CVaR→风险中性。 - 一句话:鲁棒是 δ=0 的机会约束;CVaR 是连接鲁棒(α=1)与风险中性(α=0)的连续旋钮。
第二组:分支—POMDP 是"近似—精确"的一对。 - 分支的"共享干 + K 个场景"是 POMDP belief 树的**廉价离散近似**;DESPOT 的 \(K\) 个确定化场景是这个近似的**严格版**(有遗憾界)。 - EPSILON 的行为层 = 被语义动作简化的 POMDP;MARC 的动态分支点 = 信念发散的启发式触发。 - 一句话:分支规划是工程上"算得起"的 POMDP,POMDP 是理论上"最优"的分支规划。
第三组:CVaR 横向渗透其余四条谱。 - CVaR-MPC(叠在鲁棒/机会约束上)、CVaR-POMDP(叠在 POMDP 上,Ahmadi-Rosolia-Ames)、MARC 的 CVaR 分支(叠在分支上)——尾部型(⑤)不是独立的第五条谱,而是一个可以**附着到其余四条谱上**的"风险修饰符"。 - 一句话:CVaR 是个形容词,不是名词——它修饰"怎么对待尾部",可以作用在任何一种规划器上。
本质洞察:把这三组关系叠起来看,五条谱其实坍缩成"两条主轴 + 一个修饰符"——主轴 1 是"连续扰动的违反态度"(鲁棒↔机会约束↔风险中性,一条线);主轴 2 是"离散/认知不确定的处理"(分支↔POMDP,近似↔精确);修饰符是 CVaR(管尾部,可附着到任意轴)。整篇综述讲了 1500 行,最后能折叠进这一句话——这就是"看清森林"的含义。
8.3 五大机器人形态上的迁移度对照¶
不同机器人形态对五条谱的需求差异极大。这张表把"谱 × 形态"的迁移度并排(★越多越契合),是 §9 选型矩阵的形态维度基础:
| 谱 形态 | 自动驾驶 | 无人机 | 机械臂 | 四足 | 人形 | loco-manip |
|---|---|---|---|---|---|---|
| 鲁棒/Tube | ★★★ | ★★★★(差分平坦友好) | ★★★(重复任务) | ★★★(接触切换偏混合) | ★★★★ | ★★★★ |
| 机会约束 | ★★★★(横纵向控制) | ★★★★(CC 原生) | ★★★(抓取容差) | ★★(混合动力学难) | ★★ | ★★★ |
| 分支/场景 | ★★★★★(最成熟) | ★★★(动态障碍) | ★★★(人手意图) | ★★(MPPI 更主流) | ★★★(人机协作) | ★★★★(抓取成败分支) |
| POMDP/Belief | ★★★★★(行人交互金牌案例) | ★★★(视觉 active perception) | ★★★★(抓取 OPPT) | ★★(偏 RL+域随机) | ★★ | ★★★ |
| 风险敏感/CVaR | ★★★★(lane change 尾部碰撞) | ★★★(gust/battery 尾部) | ★★★(force/torque 尾部) | ★★★(fall recovery 尾部) | ★★★ | ★★★ |
读表要点:自动驾驶几乎在每条谱上都是 ★★★★+,因为它同时面对所有五类不确定性(他车意图③、传感噪声②、动力学扰动①、遮挡④、尾部碰撞⑤)——这就是为什么自动驾驶是 Part-U 教学案例的富矿。无人机偏鲁棒+机会约束(差分平坦 + 阵风)。四足偏弱于优化型谱,因为接触切换的混合动力学让 RPI 集/机会约束难用,工程上多走 MPPI/DIAL-MPC 或 RL+域随机。
§9 方法选型矩阵:拿到任务怎么选谱 ⭐⭐⭐¶
本节定位:综述的"可操作终点"。前面所有脉络和对比,最终要落到一个能指导决策的工具——给定一个真实任务,怎么选谱。本节给出一个三步选型流程 + 一棵决策树 + 一组典型场景的填好的选型答案。
9.1 三步选型流程¶
选型不是"哪个最先进就用哪个",而是一个有依据的匹配过程。三步走:
第一步:分类(用 §1 的五桶)。 问自己——这个任务的不确定性**主要**落在哪个桶?**次要**落在哪些桶? - 他车/行人意图 → 主③多模态 - 阵风/模型失配/有界外力 → 主①集合 - 传感器噪声(已知统计)→ 主②概率 - 遮挡/状态不可观/未知地图 → 主④认知 - 罕见致命事件(碰撞/摔倒)→ ⑤尾部(作为修饰,叠在主桶上)
第二步:定态度(用 §2 的光谱)。 问自己——这个任务的安全等级要求什么违反态度? - 安全关键、可认证(航天/工业安全)→ 绝不违反 → 鲁棒 - 安全重要、但要性能(自驾/无人机)→ 小概率违反 → 机会约束 / CVaR - 尾部后果差异巨大 → 管尾部深度 → CVaR - 性能优先、违反代价低(仿真/探索)→ 风险中性
第三步:查三角 + 生态(用 §2.3 + §8.1)。 问自己——我能提供多少信息?有多少在线算力?有没有现成 C++ 抓手? - 信息少(只有扰动边界)→ 鲁棒 - 信息多(全模型)+ 算力足 → POMDP - 要现成 C++ 教学栈 → 鲁棒(acados)/ POMDP(DESPOT)/ 分支(EPSILON) - 接受自己写 → 机会约束 / CVaR
9.2 选型决策树¶
把三步流程画成一棵决策树(R3 的选型类视觉,≥3 方案用决策流程图):
START: 你的任务有什么不确定性?
│
├─ 状态看不清(遮挡/不可观/未知地图)?
│ └─ YES → 【POMDP/Belief 规划 (U4)】
│ ├─ 要现成 C++ → DESPOT (在线) / SARSOP (离线)
│ ├─ 高斯belief+连续空间 → LQG-MP/RRBT/FIRM
│ └─ 需主动感知 → active SLAM (信息增益当奖励)
│
├─ 未来是几种离散可能(他车/人手意图)?
│ └─ YES → 【分支/场景规划 (U1)】
│ ├─ 要现成 C++ → EPSILON (EUDM+SSC)
│ ├─ 要工程 FSM → Apollo/Autoware scenario_manager
│ └─ 要尾部加权 → MARC (CVaR 分支)
│
├─ 连续扰动 → 看违反态度:
│ ├─ 绝不违反(可认证、安全关键)
│ │ └─ 【鲁棒/Tube MPC (U2)】acados/OCS2/Crocoddyl
│ │ ├─ 重复任务 → rigid tube
│ │ ├─ 降保守 → homothetic/elastic tube
│ │ └─ 学扰动 → GP-MPC / learning-based tube
│ │
│ ├─ 小概率违反可接受(要性能)
│ │ └─ 【机会约束 (U3)】自己写 Eigen+OSQP/IPOPT
│ │ ├─ 优化型 → CC-MPC (SOCP)
│ │ ├─ 采样型 → CC-RRT*
│ │ └─ 分布不确定 → DR-CC (只需矩信息)
│ │
│ └─ 尾部后果差异巨大(撞一下 vs 撞穿)
│ └─ 【风险敏感/CVaR (U5)】CVaR-LP dual / 分布RL
│ ├─ 静态 → RU-dual LP (Eigen+OSQP)
│ ├─ 动态一致 → nested CVaR (Ruszczyński)
│ └─ RL 端 → IQN (内置 CVaR 采样器)
│
└─ 复合不确定性(同时多种)?
└─ 分层叠加:意图(分支) × 扰动(Tube/CC) × 尾部(CVaR)
典型:EPSILON(分支) + SSC-QP(收紧) + CVaR 加权 = 自驾全栈
9.3 典型场景的填好答案¶
把决策树应用到六个典型任务上,给出"主选谱 + 备选 + 不该用 + 理由"。这是 R6E 的系统性分类落到具体——读者拿到类似任务可以直接类比:
| 任务 | 主不确定性 | 主选谱 | 备选 | 不该用 | 理由 |
|---|---|---|---|---|---|
| 路口让行决策 | 他车意图③ | 分支 (EPSILON) | POMDP | 鲁棒(会卡死) | 意图离散多模态,鲁棒把所有意图包进一个集会落到危险中间地带 |
| 阵风下无人机穿框 | 阵风① | 鲁棒 Tube (acados) | 机会约束 | POMDP(杀鸡用牛刀) | 状态可观、扰动有界,Tube 信息需求最低且实时 |
| 遮挡路口盲探 | 遮挡④ | POMDP (DESPOT) | 分支 | 机会约束(不会主动看) | 认知不确定,只有 POMDP 会"先探一眼"消除 epistemic |
| 机械臂力控装配 | 力矩噪声②+容差 | 机会约束 | 鲁棒 | — | 容差是概率型,机会约束给精确风险预算 |
| 高速 lane change | 尾部碰撞⑤ | CVaR-MPC | 机会约束 | 风险中性(赌尾部) | 尾部碰撞后果远大于平均,必须管深度 |
| loco-manip 抓取 | 抓取成败③+扰动① | 分支 × Tube | POMDP | 单谱(覆盖不全) | 复合不确定,需分层:成败分支 + 执行 tube |
本质洞察:选型矩阵最反直觉的一条是——最先进的方法往往是错的选择。POMDP 理论最优,但对阵风穿框是杀鸡用牛刀(状态可观时退化成 MDP,白付信念树的代价);鲁棒最安全,但对多模态意图会把车卡死。"选型 = 让方法的假设匹配问题的结构",而不是"选最复杂的"。这是工程师与论文作者的根本区别——论文要新,工程要"恰好够用"。
§10 RL 贯穿:五谱在强化学习版图的位置 ⭐⭐⭐¶
本节定位:经典规控与 RL 不是两个世界,而是同一组问题的两种语言。本节把五条谱逐一映射到 RL 版图,并指出 2023–2026 的合流前沿。详细 RL 缝合见 80_综述 §RL 贯穿,本节聚焦"五谱 ↔ RL 同义表达"的映射图。
10.1 五谱 ↔ RL 的同义映射¶
| 经典谱 | RL 对应 | 桥梁(同一件事的两种说法) |
|---|---|---|
| 鲁棒/Tube (U2) | Robust RL | Tube 的 RPI 不变集 ≈ Robust RL 的 uncertainty set;都在求"对最坏环境的最优" |
| 机会约束 (U3) | Safe RL / CMDP | \(\Pr[\text{违反}]\le\delta\) 就是 CMDP 的约束;Achiam CPO、Chow Lyapunov-safe RL 是其 RL 化 |
| 风险敏感/CVaR (U5) | Distributional RL | C51/QR-DQN/IQN 学回报分布;IQN 的 \(\tau\) 重采样直接实现 CVaR——风险敏感本身就是 RL 的"风险化" |
| POMDP/Belief (U4) | Recurrent / Model-based RL | belief=history 充分统计量;R2D2 的 RNN、Dreamer 的 RSSM 隐状态 = 摊销 belief |
| 分支/场景 (U1) | MCTS / Model-based imagination | MPDM 前向仿真森林 = 带启发的 tree search;Dreamer 的想象 rollout = learned contingency |
10.2 三个最关键的桥,展开说¶
桥 1:MPDM = 简化 MCTS,EPSILON = 简化 POMCP。 这是 Part-U 与 RL 衔接最自然的类比(前置自测第 5 题)。MPDM 的"枚举 ego 策略 → 闭环前向仿真 → 打分"本质就是一次带启发的树搜索:策略 = 动作分支,前向仿真 = rollout,打分 = 价值估计。EUDM 的 guided branching 近似 MCTS 的 progressive widening。可以把策略网络 \(\pi(a|s)\) 当 branching prior、价值网络 \(V(s)\) 当叶节点剪枝——这正是 neural-guided POMDP 在做的。EPSILON 的 belief tree 对应 POMCP,区别只在用语义动作+闭环仿真替代了蒙特卡洛 rollout。
桥 2:belief = RNN/RSSM 隐状态。 POMDP 与 model-free RL 的最大桥是"belief 是 history 的充分统计量"。Recurrent DQN(DRQN)、R2D2 用 RNN 隐状态近似 belief;DreamerV3 的 RSSM 是摊销的 belief,可视作 amortized POMDP planner。这解释了为什么"部分可观"的 RL 任务都用循环网络——它们在隐式地做 belief update。
桥 3:CVaR = IQN 的 \(\tau\) 采样。 分布式 RL 直接把回报 \(Z\) 当随机变量学。IQN 学的是回报的分位数函数 \(Z_\tau\),只要在采样 \(\tau\) 时偏向小分位(如 \(\tau\sim U[0,\alpha]\)),就实现了 CVaR\(_\alpha\) 优化——不需要显式解 LP dual。这是风险敏感谱在 RL 侧的"免费午餐":风险度量从"额外约束"变成"采样分布的选择"。
10.3 2023–2026 合流前沿¶
经典与 RL 真正成熟的合流,在四条线上(与 §11 呼应):
| 合流方向 | 代表 | 缝的是哪两条 |
|---|---|---|
| 可微 MPC | acados + leap-c, Theseus | 鲁棒 MPC ↔ RL 梯度(NMPC 成为可训练的一层) |
| Diffusion Planner | Diffuser, Decision Diffuser, Diffusion Policy | 轨迹优化 ↔ 生成模型(条件采样整条轨迹) |
| TD-MPC2 | Hansen et al. ICLR'24 | ST 优化 ↔ model-based RL(latent 空间 MPPI + policy prior) |
| neural-guided POMDP | BetaZero | DESPOT 树搜索 ↔ policy/value 网络(网络作 default policy/bound) |
近年还出现把 diffusion policy 与 CVaR 滤波合流的 risk-averse 工作(如 UDAC 的 uncertainty-aware distributional offline RL、LRT-Diffusion 的 calibrated risk-aware guidance),把"⑤尾部型修饰符"直接焊进生成式规划器——这是分支谱(生成场景)与风险敏感谱(CVaR)在 RL 侧的最新合流点。
本质洞察:经典规控与 RL 的关系不是"谁取代谁",而是"同一个不确定性问题的两种解法——一种靠**显式模型 + 优化**(经典),一种靠**数据 + 摊销**(RL)"。可微 MPC、neural-guided POMDP 这些合流工作的意义,是让两种解法能在同一个计算图里协作:经典提供结构与保证,RL 提供从数据中学到的先验与摊销。理解这一点,你就不会陷入"经典 vs RL"的伪二分,而能在每个子问题上判断"这里该用结构,那里该让数据说话"。
§11 开放问题与 2024–2026 前沿:这个方向还没解决什么 ⭐⭐⭐⭐¶
本节定位:综述的"未来视角"。前十节告诉你"已经有什么、怎么选",本节告诉你"还缺什么、值得做什么"。这是博士选题与工程攻坚最该盯住的部分。本节把分散在 §3.5/§4.5/§5.5/§6.6/§7.5 各章末尾的开放问题**横切汇总**,按"问题的本质"而非"按谱"重新组织成六个**跨谱的根本张力**——因为最有价值的开放问题往往不属于某一条谱,而是横亘在多条谱之上的结构性难题。
11.1 为什么开放问题要"横切"看¶
每条谱的章末都列了自己的开放问题(非高斯凸化、混合系统鲁棒性、连续 belief……)。但如果只是把它们罗列出来,你会错过一个关键事实:这些"各谱的开放问题"背后,往往是同一个更深的根本张力在不同谱上的投影。
举一个例子说明这种"投影"。"分布漂移"这件事——
- 在机会约束谱(§5.5)表现为"训练分布 ≠ 部署分布,\(\delta\) 保证失效";
- 在鲁棒谱(§4.5)表现为"扰动集 \(\mathcal{W}\) 标定过窄,实战中扰动跑出盒子";
- 在风险敏感谱(§7.5)表现为"用历史样本估的 CVaR 在新分布下不再是真尾部";
- 在 POMDP 谱(§6.6)表现为"观测模型 \(O\) 的标定误差让 belief 系统性偏移"。
四条谱上长着四个看似不同的"病症",但**病根是同一个**:所有这些方法都假设了"我对不确定性的刻画是对的",而真实世界会让这个刻画过期。这就是为什么要横切——只有横切,才能看到"分布漂移下的可靠性"是一个**贯穿五谱的元问题**,而不是机会约束一家的麻烦。
本质洞察:综述读到这里,你应当形成一个判断标准——真正深的开放问题,都不在某一条谱的内部,而在"谱的假设"与"真实世界"的接缝处。每条谱都建立在一组假设上(扰动有界、分布已知、意图集可枚举、模型 \(T,O,R\) 给定),而这些假设无一例外会在部署时被现实违背。下面六个根本张力,本质上就是六道这样的"假设—现实"接缝。
11.2 六个跨谱的根本张力¶
把五谱章末的开放问题重新归类,收敛成六个根本张力。这张表是本节的枢纽——每一行是一个**值得一篇博士论文**的方向:
| # | 根本张力 | 一句话症结 | 投影到哪些谱 | 2024–2026 在攻的方向 |
|---|---|---|---|---|
| T1 | 分布漂移下的可靠性 | 标定的不确定性刻画会过期 | 全部五谱 | DR-CVaR over Wasserstein、conformal prediction、online RPI 自适应 |
| T2 | 保守度 ↔ 性能的根本张力 | 要保证就保守,要性能就冒险,没有免费午餐 | 鲁棒/机会约束/CVaR | risk-calibrated MPC、自适应 \(\delta\)/\(\alpha\)、learning-based tube 收缩 |
| T3 | 多模态意图的长尾 | 手工枚举的意图集盖不住真实长尾行为 | 分支/POMDP | diffusion/生成式场景、自适应分支数、open-set 意图识别 |
| T4 | 风险度量的时间一致性 | 静态 CVaR 会"后悔",一致版又更保守 | 风险敏感/CVaR-POMDP | nested risk 的高效求解、distributional RL 的一致风险算子 |
| T5 | 复合不确定性的可扩展性 | 五桶叠起来时维度/分支组合爆炸 | 全部(尤其分支×POMDP×CVaR) | 分层分解、neural amortization、factored belief |
| T6 | 理论保证 ↔ 学习先验的缝合 | 经典有保证无先验,学习有先验无保证 | 全部(合流前沿) | 可微 MPC、neural-guided POMDP、certified learning |
下面逐一展开六个张力——每个张力给"是什么困境、为什么难、2024–2026 怎么攻、还差什么"四段。
11.3 T1:分布漂移下的可靠性(the distribution-shift problem)¶
困境。 五条谱无一例外建立在"不确定性的刻画是对的"这个前提上:鲁棒假设扰动集 \(\mathcal{W}\) 标对了,机会约束假设分布 \(p(w)\) 标对了,POMDP 假设观测模型 \(O\) 标对了。但部署环境与标定环境几乎从不重合——天气、磨损、路况、人群分布都在漂移。一旦刻画过期,所有"保证"都只是**对一个错误模型的保证**。
为什么难。 难点在于这是个"二阶不确定性"——不确定性本身是不确定的(uncertainty about the uncertainty model)。你不仅不知道扰动是多少,还不知道你对扰动的刻画准不准。经典框架里没有为这层留位置。
2024–2026 怎么攻。 三条线在并进: - 分布鲁棒优化(DRO)的成熟:不再假设单一分布 \(p\),而是对一个"分布的球"(ambiguity set,如 Wasserstein 球)里的所有分布都给保证。DR-CC(§5.3c)和 Wasserstein-DR-CVaR(§7.5)是其在机会约束/风险敏感谱上的落点——代价是 SDP 规模变大。 - 共形预测(conformal prediction)的引入:用 calibration set 给预测器一个"有限样本、无分布假设"的覆盖保证,再把这个保证转成规划器的安全裕度(conformal MPC、conformal controllability)。这是 2023–2026 把统计学习的分布无关保证嫁接到规控的最热路线。 - 在线自适应:online RPI 集估计、自适应 \(\mathcal{W}\)、residual GP 在线更新(§4.5 的 GP-MPC 是雏形)——让刻画随数据漂移而漂移。
还差什么。 DRO 给的是"对一个分布球鲁棒",但球的半径怎么定仍是手艺活(半径过大回到保守,过小回到漂移失效);conformal 的覆盖保证是边际(marginal)的,条件覆盖(conditional coverage,对每个状态都成立)仍开放。分布漂移下"既不退化成最坏情况、又不在漂移时失效"的自适应保证,是整个方向最硬的开放问题。
11.4 T2:保守度 ↔ 性能的根本张力(the conservatism–performance tradeoff)¶
困境。 这是 §2.3 三角权衡的"对角线"——也是贯穿全篇的主旋律。鲁棒给 100% 保证但保守到卡死;风险中性不保守但会赌灾难;机会约束/CVaR 用 \(\delta\)/\(\alpha\) 在中间插值,但**插值点选在哪**没有原理性答案。\(\delta=10^{-6}\) 还是 \(10^{-4}\)?\(\alpha=0.95\) 还是 \(0.99\)?这些旋钮的取值直接决定安全与性能的平衡,却往往靠工程直觉拍。
为什么难。 因为"该多保守"本质上取决于**后果的代价结构**,而代价结构难量化(撞一下值多少钱?摔一次损失多大?)。没有可信的代价标定,\(\delta\)/\(\alpha\) 的"最优值"就无从谈起。更深一层,保守度与性能的张力在数学上是**帕累托前沿**——你只能在前沿上移动,不能同时改善两者,除非引入更多信息(回到 T1/T6)。
2024–2026 怎么攻。 - risk-calibrated / 自适应风险水平:让 \(\delta\)/\(\alpha\) 随情境在线调整(车流密集时收紧、空旷时放松),而非全程固定。 - learning-based tube 收缩:GP/neural tube(§4.5)用学到的扰动模型把保守的 rigid tube 收窄到"刚好够",在保证侧逼近性能侧。 - 风险水平的元学习:从专家数据或仿真里反推"人类/最优策略隐含的风险偏好",给 \(\alpha\) 一个数据驱动的锚。
还差什么。 自适应 \(\delta\)/\(\alpha\) 在调整的瞬间可能破坏原有的保证(改旋钮 = 改优化问题,递归可行性需重新论证);"刚好够"的收缩一旦学过头就丧失保证。在保留形式保证的前提下做自适应保守度,是 T2 与 T1 的交叉硬骨头。
不是 X 而是 Y:很多人以为"保守度 ↔ 性能"的张力总有一天会被某个更聪明的算法消除。不会。它是**信息论意义上的守恒律**(§2.3 本质洞察)——在给定信息量下,前沿就在那里。算法能做的不是消除张力,而是 (a) 在前沿上找到更贴合当前情境的点,或 (b) 通过引入新信息(学到的扰动模型、更准的代价标定)把整条前沿往外推。认清这一点,才不会把"调参"误当成"突破"。
11.5 T3:多模态意图的长尾(the intent long-tail)¶
困境。 分支规划(§3)和交互式 POMDP 都依赖一个**意图集**——他车"让/抢/直行"、人手"抓/不抓"。但真实世界的意图是长尾的:违章、犹豫、突然变道、误判、试探。手工枚举的有限意图集对长尾束手无策,而长尾恰恰是事故高发区。
为什么难。 意图是 epistemic 不确定性(§1.3),本可通过观测消除——但长尾意图出现频率太低,数据稀疏,学不出可靠的分布;且意图空间是**开放集**(open-set),永远有没见过的新意图。这是"用有限模型描述开放世界"的根本困难。
2024–2026 怎么攻。 - 生成式场景:用 diffusion/VAE 先验直接采样场景集(§3.5),绕开手工枚举——CoRL'22 Contingencies-from-Observations 是起点,2024–2026 的 diffusion scenario generation 让分支集从"枚举"变"采样"。 - 自适应分支数:MARC(§3.2)的动态分支点是一步;更激进的方向是让分支数随场景熵自适应扩张/收缩。 - open-set 意图识别:把"未见意图"显式建模成一个"其他"类(out-of-distribution 检测 + 兜底策略),而非假装意图集完备。
还差什么。 生成式场景采样出的分布是否覆盖真实长尾、有没有遗漏致命模式,缺乏保证(回到 T1);自适应分支数的"该分几支"仍多靠启发式。对开放集意图给出"覆盖性保证 + 实时性"的分支规划,是自动驾驶安全的核心未解问题。
11.6 T4:风险度量的时间一致性(time-consistency of risk)¶
困境。 §7.2 已点出:静态 CVaR 是**时间不一致**的——今天按 CVaR 算出的最优计划,明天站在新信息上看可能后悔,于是不能直接塞进动态规划/MPC 的滚动框架。但时间一致的版本(Ruszczyński nested CVaR,§7.3b)又更保守、更难算。一致性与可算性、一致性与保守度,两两打架。
为什么难。 时间一致性要求"风险度量在每个决策时刻自洽",这在数学上等价于风险算子要满足一种"动态规划兼容性"(Bellman 形式的风险版本)。一致的风险算子(nested/recursive risk)天然嵌套、逐步收紧,计算复杂度随视界累积;不一致的静态风险好算,但塞进滚动 MPC 会产生前后矛盾的行为。
2024–2026 怎么攻。 - distributional RL 的一致风险算子:IQN(§7.2)等分布式 RL 把风险变成"采样分布的选择",天然支持递归——把一致风险算子写进 distributional Bellman 算子是活跃方向。 - nested risk 的高效近似:用值函数逼近 / 神经网络摊销嵌套的条件 CVaR,降低累积复杂度。 - CVaR-POMDP(Ahmadi-Rosolia-Ames,§8.2 第三组):把一致动态风险塞进 belief 空间的尝试。
还差什么。 一致风险算子在连续状态/动作空间的可扩展求解仍是瓶颈;"工程上能否容忍一点不一致换取实时"缺乏量化的指导(什么时候静态 CVaR 的不一致后果可忽略)。**实时、一致、不过度保守,三者兼得**的动态风险规划仍未成熟。
11.7 T5:复合不确定性的可扩展性(the compositional explosion)¶
困境。 §1.2 的本质洞察是"五桶正交、复合可分层"——自动驾驶要同时处理意图③×噪声②×扰动①×遮挡④×尾部⑤。但"可分层"是理论上的优雅,工程上分层叠加会**组合爆炸**:\(K\) 个意图分支 × 每支一个 belief 树 × 每个节点一个 CVaR 优化,维度乘起来很快超出实时预算。
为什么难。 每条谱单独都已在和维度灾难搏斗(POMDP 的信念树、分支的 \(|\Pi|^n\)、CVaR 的样本数)。叠加时这些灾难**相乘**而非相加。朴素的"全联合"(joint POMDP over 意图×状态×扰动)在理论上正确但完全算不动。
2024–2026 怎么攻。 - 分层分解:EPSILON 式的"行为层(分支)+ 运动层(收紧 MPC)"(§3.2)是工程范式——上层管离散意图、下层管连续扰动,不做全联合。MARC 的"分支 + CVaR"也是这个思路。 - neural amortization:用网络摊销重复的子问题(DreamerV3 的 RSSM 摊销 belief、neural-guided POMDP 摊销树搜索,§10.3)。 - factored belief / 结构化分解:利用不确定性之间的条件独立结构(意图与自车动力学独立)做因子分解,避免全联合。
还差什么。 分层分解牺牲了全局最优性(上下层各自优化 ≠ 联合最优),分解带来的次优有多大缺乏刻画;amortization 的网络在分布漂移下失效(回到 T1)。有保证的、可扩展的复合不确定性规划框架——既不退回全联合的不可算,又能界定分解的次优——是工程落地的核心瓶颈。
11.8 T6:理论保证 ↔ 学习先验的缝合(certified learning)¶
困境。 这是 §10 合流前沿的"另一面"。经典谱有保证(递归可行、鲁棒不变、遗憾界)但缺先验(从零开始优化,没用上历史数据的规律);学习方法有先验(从海量数据学到的世界规律)但缺保证(神经网络的输出没有形式安全证明)。合流要"既要保证又要先验",但二者的数学语言不通——保证是构造性的(不变集、Lyapunov),先验是统计性的(期望泛化)。
为什么难。 形式保证要求对**所有**情况成立(worst-case),统计学习只保证**平均/高概率**成立(average-case)。把一个 average-case 的网络嵌进一个 worst-case 的保证框架,接缝处天然漏风——网络在分布外的一次失误就能击穿整个保证。
2024–2026 怎么攻。 这是最热的合流带(与 §10.3 完全呼应): - 可微 MPC(acados+leap-c、Theseus):让 NMPC 成为可训练的一层,外层用 RL 学先验(代价权重、参考),内层 MPC 保留递归可行的保证——保证由结构提供,先验由数据注入。 - neural-guided POMDP(BetaZero):policy/value 网络作 DESPOT 的 default policy 与剪枝 bound——网络只负责"加速搜索",最终决策仍由有遗憾界的树搜索拍板,网络的错误不破坏保证。 - certified learning / 安全滤波器:CBF 安全滤波、CVaR-filter(§7.2)把学到的策略当"建议",再用一个有保证的滤波层投影到安全集——学习提先验,滤波保安全。
还差什么。 可微 MPC 的内层保证依赖内层模型正确(回到 T1);安全滤波器的"安全集"本身要标对(标错则滤波保的是错的安全);neural-guided 的网络若 bound 不可信会破坏遗憾界。让"保证"和"先验"在同一计算图里互不污染地协作——这是经典与 RL 真正融合的圣杯,也是 2024–2026 整个领域的主攻方向。
11.9 六张力不是孤立的:它们彼此咬合¶
六个张力看似各管一摊,实则**互相咬合**——解一个常常牵动甚至恶化另一个。这是开放问题最棘手的地方:没有哪个张力能被孤立地"攻克"。把两两咬合关系列出来("→"读作"试图解决前者会牵动后者"):
| 咬合 | 关系 | 为什么咬合 |
|---|---|---|
| T1 → T2 | 解漂移常加保守 | DRO/conformal 给鲁棒性的代价是更保守(分布球越大越保守),把 T2 的天平往保守端推 |
| T2 → T6 | 降保守靠学习先验 | 想在保证下降保守(learning tube),就得引入学习先验,于是落进 T6 的"保证↔先验"接缝 |
| T3 → T5 | 意图长尾推高复合度 | 意图集自适应扩张(解 T3)会增加分支数,直接恶化 T5 的复合爆炸 |
| T4 → T2 | 时间一致更保守 | nested CVaR(解 T4 的不一致)比静态 CVaR 更保守,又回到 T2 |
| T5 → T6 | 分解靠 amortization | 用神经摊销解复合爆炸(T5),摊销网络又缺保证(T6) |
| T6 → T1 | 学习先验怕漂移 | 学到的先验(解 T6)在分布漂移下失效(回到 T1),形成闭环 |
咬合图的形状是一个环:T1→T2→T6→T1 构成一个闭合回路(解漂移→更保守→靠学习降保守→学习怕漂移→回到漂移),T3/T4/T5 各从外侧接入这个环。这意味着**不存在"解掉一个就轻松了"的张力**——它们是一个耦合系统。
本质洞察:六张力的咬合揭示了这个方向最深的困难——它不是六道独立的难题,而是一个耦合的张力系统,按下一个会鼓起另一个。这解释了为什么 2024–2026 的前沿不是"逐个攻克张力",而是寻找能"同时松动多个张力"的统一框架(如可微 MPC 同时碰 T2/T6、DR-CVaR 同时碰 T1/T4)。给博士选题的启示是:最有价值的工作不是孤立地优化某一个张力的指标,而是找到一个能改变多个张力之间咬合关系的新结构——后者才可能让整个系统的帕累托前沿外移,而非只在前沿上挪一个点(回扣 §11.4 的 T2 守恒律)。
本质洞察:把六个张力叠起来看,它们其实围着同一个核心打转——"假设"与"现实"的鸿沟。T1 是"不确定性刻画的假设"过期,T3 是"意图集完备的假设"破裂,T5 是"可分层的假设"在算力上落空,T6 是"模型正确的假设"被学习先验考验。五条谱给了我们在**假设成立时**的优雅工具,而这个方向未来十年的全部工作,几乎都是在补"假设不成立时怎么办"。这也回扣了 §11.1 的判断标准:真正深的问题都在假设与现实的接缝处。一个成熟的从业者,看一篇新论文时第一个该问的不是"它用了什么炫技",而是"它松动了哪条假设、为此付出了什么代价"。
§12 C++ 工程生态总评:哪条谱有代码、哪条得自己写 ⭐⭐¶
本节定位:综述的"落地视角"。前面所有脉络都是"概念地图",本节回答一个极其实际的问题——如果我现在就要在 C++ 里上手一条谱,有没有现成的开源抓手?成熟度如何?哪条谱注定要自己造轮子? 这把 §4.4/§5.5/§6.4/§7.5 各章分散的工程生态信息横切汇总,给出一张"成熟度地形图",并解释地形背后的成因——为什么有的谱代码遍地、有的谱一片空白。
12.1 一张成熟度地形图¶
把五条谱的 C++ 工程成熟度并排,这是本节的中央表(★越多越成熟,"自己写"指无生产级 C++ 库、需基于 Eigen+求解器手工实现):
| 谱 | C++ 成熟度 | 旗舰开源抓手 | 求解器底座 | 现成度判断 |
|---|---|---|---|---|
| POMDP/Belief (U4) | ★★★★★ | DESPOT、SARSOP(APPL)、OPPT | 自带(树搜索/α-vector) | 继承抽象类即可跑,教学最顺 |
| 鲁棒/Tube (U2) | ★★★★ | acados、OCS2、Crocoddyl、TinyMPC | HPIPM/BLASFEO、自带 | 求解器现成,收紧约束需自注入 |
| 分支/场景 (U1) | ★★★★ | EPSILON(EUDM+SSC)、Apollo/Autoware scenario | OSQP(SSC-QP) | 行为层现成,但耦合自驾场景 |
| 机会约束 (U3) | ★☆ | 仅课程级(cc_rrt 等,stars<50) | 自己接 OSQP/IPOPT | 基本自己写 |
| 风险敏感/CVaR (U5) | ★☆ | 几乎无 C++(分布RL全在 Py/JAX) | 自己接 OSQP(LP dual) | 基本自己写 |
读图的第一眼结论:五条谱在 C++ 生态上**严重两极分化**——POMDP、鲁棒、分支三条有成熟旗舰库(★★★★+),机会约束和风险敏感两条几乎一片空白(★☆)。这个分化不是偶然,下面 §12.2 解释成因。
12.2 为什么生态如此两极分化:三条成因¶
成熟度地形不是随机的,背后有三条清晰的成因——理解成因,你就能预判"一个新方向值不值得等开源、还是该自己动手"。
成因一:有没有一个"杀手级落地场景"反哺工程化。 - POMDP 的 DESPOT 有"行人交互式自动驾驶"(Bai-Cai-Ye 2015)这个金牌案例,分支的 EPSILON 直接长在自动驾驶决策里——强落地场景会持续反哺库的工程化(性能优化、ROS 集成、文档)。 - 机会约束和风险敏感缺一个独占的、必须用它不可的工业杀手场景:机会约束的活儿常被鲁棒(更保守但有库)或软约束(更糙但好写)替代,CVaR 的活儿常被"期望 + 大安全裕度"近似掉。没有非用不可的场景,就没有工程化的持续动力。
成因二:算法形态适不适合"封装成可复用库"。
- POMDP 的求解器有清晰的抽象边界——用户只需实现 Step/ObsProb/... 这组接口,求解器内核(树搜索/α-vector)完全通用,天然适合封装。鲁棒 MPC 的求解器(acados)也是通用 NLP 内核 + 用户问题描述。
- 机会约束和 CVaR 的"算法"很大程度上是**一次问题变换**(把概率约束凸化成 SOCP、把 CVaR 写成 LP dual),变换完之后丢给通用求解器(OSQP/IPOPT)即可——变换本身代码量小、与具体问题强耦合,不值得(也难)封装成独立库。这就是为什么它们"基本自己写":不是难,而是"写出来也不通用"。
成因三:研究主战场在 Python 还是 C++。 - 风险敏感谱近十年的主战场是**分布式 RL**(C51/QR-DQN/IQN,§7.2),而 RL 的研究生态完全在 PyTorch/JAX——研究者没有动力做 C++ 实现。这是 §6.6 反复出现的"研究在 Python、部署在 C++"张力在 CVaR 谱上的极端体现。 - POMDP/鲁棒/分支的研究主战场仍有大量在 C++/机器人实时系统里(实时性是硬指标),生态自然沉淀在 C++。
本质洞察:开源生态的成熟度,本质是**"落地拉力 × 可封装性 × 研究语言"三者的乘积**。POMDP 三项全高(强落地 × 可封装 × C++研究),所以 ★★★★★;CVaR 三项全低(弱独占落地 × 难封装 × Python研究),所以 ★☆。这个乘积模型能帮你预判任何新方向的生态走向——比如 diffusion planner 落地拉力在涨、但可封装性低、研究语言是 Python,所以可预期它"短期内 C++ 生态不会成熟"。判断要不要等开源,就看这三项的乘积。
12.3 把"空白"变成"教学红利":自己写的两条谱怎么学¶
机会约束和 CVaR 的 C++ 空白,从工程看是缺憾,从**教学**看却是红利——它们恰好是"算法形态简洁、自己写一遍能把核心机理全过一遍"的理想大作业。这与 §5.5、§7.5 的教学建议呼应,这里给出统一的"自己写"路线:
| 谱 | 自己写的核心 | 推荐栈 | 写一遍能掌握什么 |
|---|---|---|---|
| 机会约束 CC-MPC | 高斯下 \(\Pr[a^\top x\le b]\ge1-\delta \Rightarrow a^\top\bar x+\Phi^{-1}(1-\delta)\|\Sigma^{1/2}a\|\le b\),组成 SOCP | Eigen + OSQP | 约束收紧、SOCP 建模、\(\delta\) 旋钮、Boole 拆解、风险分配(IRA) |
| 机会约束 CC-RRT* | 把上面的概率可行性检查塞进 RRT* 的 steer/collision-check |
Eigen + 自写 RRT* | 概率碰撞检查、采样规划与概率约束的缝合 |
| CVaR 静态优化 | Rockafellar-Uryasev:\(\min_{x,t} t+\frac{1}{1-\alpha}\frac{1}{N}\sum_i (Z_i(x)-t)_+\),引辅助变量线性化 \((\cdot)_+\) 成 LP | Eigen + OSQP | LP dual 变分公式、\((\cdot)_+\) 的 epigraph 技巧、\(\alpha\) 极限退化 |
为什么"自己写"在这两条谱上特别值得:因为它们的核心恰恰是**一个数学变换**(§12.2 成因二),而变换是"看懂容易、写对才真懂"的典型——比如 CVaR 的 LP dual,公式抄一遍五分钟,但要把 \((Z_i(x)-t)_+\) 正确地用辅助变量 \(s_i\ge Z_i(x)-t,\ s_i\ge 0\) 线性化、再喂给 OSQP,才会真正理解"为什么 CVaR 是凸的、为什么样本化后是 LP"。这种"被迫把每个符号落成代码"的过程,是纯读公式给不了的——这正是把生态空白转成教学红利的逻辑。
12.4 工程选型的"抓手优先级"建议¶
把成熟度地形落到选型上,给一条务实的工程建议(与 §9 选型矩阵互补——§9 按"问题结构"选谱,本节按"有没有抓手"调整):
- 若问题允许多条谱,优先选有成熟 C++ 抓手的那条(POMDP→DESPOT、鲁棒→acados、分支→EPSILON)——工程上"有库可用"往往比"理论略优"更重要,尤其在交付压力下。
- 若问题结构强制要机会约束/CVaR(如监管要求精确的违反概率预算、尾部代价差异巨大),接受"自己写",并用 §12.3 的栈(Eigen+OSQP)——这两条谱自己写的代码量其实不大(核心变换百行级)。
- 复合任务用分层架构复用成熟抓手:EPSILON(分支,有库) + 自写 SSC-QP 收紧 + 自写 CVaR 加权,让"自己写"只落在没库的环节,成熟库覆盖大头。这正是 §9.2 决策树末尾"分层叠加"的工程对应。
本质洞察:工程选型与理论选型(§9)的关键差别,是工程要把"有没有现成抓手"作为一等公民的约束。一个理论上次优但有成熟库的方案,常常胜过理论最优但要从零造轮子的方案——因为造轮子的工程成本、调试成本、维护成本,往往远超那点理论差距带来的性能收益。"恰好够用 + 有库可用"是工程的胜利条件,"理论最优"只是论文的胜利条件——这与 §9.2 末尾"最先进的方法往往是错的选择"是同一条工程智慧的两面。
§13 综述小结:把整片森林折叠成三句话 ⭐⭐⭐¶
本节定位:综述的收官。前十二节是"展开"——把不确定性规划这片森林的每一棵树、每一条小径都走了一遍。本节是"折叠"——把走过的一切重新压缩成最小的、能装进脑子的核心结构。一篇好综述的标志,是读者合上它之后,能用三句话向同事复述整个领域的骨架。本节就是要给你这三句话,并给出一张"一页纸全景图"作为日后的查阅锚点。
13.1 第一次折叠:五条谱 → 两个旋钮¶
整篇综述开头(前置知识桥接的本质洞察)就埋了第一次折叠的伏笔——五条谱看似五种哲学,底层只有两个旋钮在变:
- 旋钮 A:你假设不确定性长什么样(§1 类型学的横轴)——集合?分布?多模态?不可观?尾部?
- 旋钮 B:你对约束违反持什么态度(§2 态度光谱的纵轴)——绝不?小概率?管尾部?多手兜底?不管?
把这两个旋钮张成一个二维平面(§2.2 的网格),五条谱就是这个平面上的五个区域:鲁棒在"集合 × 绝不"角,机会约束在"概率 × 小概率"带,分支在"多模态 × 多手"列,POMDP 横跨"不可观"整行,CVaR 是"尾部 × 管深度"且可附着到任意区域。整篇 1500 行综述的全部脉络细节,都只是这张二维平面图上一个个被标注的坐标点。
这是综述最该带走的第一张图。如果只能记住一件事,记住这个:不确定性规划 = 在"不确定性类型 × 违反态度"的平面上选一个点。所有方法、所有论文、所有前沿,都是这个平面上的居民。
13.2 第二次折叠:五条谱 → 两条主轴 + 一个修饰符¶
第一次折叠还留了五个区域。§8.2 的本质洞察做了第二次、更狠的折叠——五条谱坍缩成**两条主轴 + 一个修饰符**:
- 主轴 1(连续扰动的违反态度):鲁棒 ↔ 机会约束 ↔ 风险中性,是一条线。三者处理同一类连续扰动,数学高度同构(收紧量从"集合支撑"到"分位数×σ"连续变化),\(\delta\to0\) 把机会约束推回鲁棒。
- 主轴 2(离散/认知不确定的处理):分支 ↔ POMDP,是"近似 ↔ 精确"的一对。分支是算得起的 POMDP,POMDP 是最优的分支。
- 修饰符(管尾部深度):CVaR,附着到任意主轴上(CVaR-MPC / CVaR-POMDP / CVaR 分支),且 \(\alpha\) 旋钮把主轴 1 的两端(鲁棒 \(\alpha\to1\)、风险中性 \(\alpha\to0\))连续地插值起来。
第二次折叠的威力:它把"五个并列的工具箱"变成了"两条有内在结构的轴 + 一个能连续插值的旋钮"。这就是为什么 §8.2 说五条谱"不是五个孤岛,而是一张互相连通的网"——主轴 1 内部是同构链,主轴 2 内部是近似-精确对,CVaR 横向缝合所有轴。
用一个反向展开验证这次折叠:检验折叠对不对,最好的办法是从折叠结果**反向展开**回原始五谱,看能否无损还原。从"两轴 + 修饰符"出发——主轴 1 取三个点(\(\delta=0\) 端 = 鲁棒、中段 = 机会约束、\(\alpha=0\) 极限 = 风险中性),主轴 2 取两个点(近似端 = 分支、精确端 = POMDP),修饰符附着即得 CVaR——五谱全部还原,且每条谱在结构里的"位置"和"邻居"都对(鲁棒紧邻机会约束、分支紧邻 POMDP)。能无损还原,说明折叠没丢信息,只是换了更紧凑的表示。这正是好的"折叠"区别于"过度简化"的判据:过度简化会丢掉还原能力(比如把五谱简化成"保守/激进两类"就无法还原出 POMDP 的正交性),而真正的折叠保留全部还原路径。
13.3 第三次折叠:整个领域 → 三句话¶
把前两次折叠再压一层,整个不确定性规划领域可以折叠进三句话——这就是 §13 标题承诺的"三句话",也是你向同事白板复述时该说的:
第一句(怎么分):先按"不确定性的类型"分桶(集合/概率/多模态/认知/尾部),类型决定工具——拿错桶就用错谱(§1)。
第二句(怎么选):再按"对违反的态度"在保守↔激进的光谱上定位,态度决定保守度,而"信息需求—保守度—计算量"三角守恒、没有免费午餐(§2、§9)。
第三句(往哪走):五条谱通过 CVaR 的 \(\alpha\) 旋钮和类型学被组织进一个连续的设计空间;它们各自又是 RL 的同义表达(鲁棒↔Robust RL、CC↔Safe RL、CVaR↔分布RL、POMDP↔循环/世界模型、分支↔MCTS),未来在"保证 × 先验"的接缝处合流(§10、§11)。
这三句话——类型决定工具、态度决定保守度、五谱通向 RL 且在接缝处合流——就是把整片森林装进脑子的最小结构。综述的全部价值,在于让你能从这三句话出发,反向展开出任意一条谱的细节,而不必死记五张表。
13.4 一页纸全景图:日后查阅的锚¶
把整篇综述压成一张可以贴在工位上的全景图(R3 的总览类视觉),作为日后查阅的单一锚点:
不确定性规划 · 一页纸全景
┌─────────────────────────────────────────────────────────────┐
│ 旋钮A:不确定性类型 旋钮B:违反态度 │
│ ①集合 ②概率 ③多模态 绝不→小概率→管尾部→多手→不管 │
│ ④认知 ⑤尾部 (鲁棒)(CC)(CVaR)(分支)(风险中性) │
├─────────────────────────────────────────────────────────────┤
│ 谱 类型 态度 数学对象 信息 保守 算力 C++ │
│ 鲁棒/Tube ①集合 绝不∀w RPI不变集 最低 最高 低 ★★★★ │
│ 机会约束 ②概率 ≤δ 分位数收紧 中 中 中 ★☆ │
│ 分支/场景 ③多模 多手兜底 共享干+分支 中 可变 中高 ★★★★ │
│ POMDP ④认知 自适应 belief充分统计 最高 最优 最高 ★★★★★│
│ CVaR ⑤尾部 管深度 RU变分公式 中高 中 中高 ★☆ │
├─────────────────────────────────────────────────────────────┤
│ 三组连通:①鲁棒-CC-CVaR同构链(δ→0退鲁棒,α插值两端) │
│ ②分支-POMDP近似精确对(分支=算得起的POMDP) │
│ ③CVaR是修饰符横向附着(CVaR-MPC/POMDP/分支) │
├─────────────────────────────────────────────────────────────┤
│ RL同义:鲁棒↔RobustRL CC↔SafeRL/CMDP CVaR↔分布RL(IQN) │
│ POMDP↔R2D2/Dreamer 分支↔MCTS/想象rollout │
├─────────────────────────────────────────────────────────────┤
│ 选型三步:①分桶(类型) ②定态度(安全等级) ③查三角+生态(信息/算力/库)│
│ 六大开放:T1漂移 T2保守↔性能 T3意图长尾 T4时间一致 T5复合爆炸 T6保证↔先验│
└─────────────────────────────────────────────────────────────┘
本质洞察(全篇收束):这篇综述从头到尾在反复做同一件事——把"看起来很多、很乱、很难"的东西,折叠成"其实很少、很有结构、可推导"的核心。五条谱折叠成两个旋钮,两个旋钮折叠成三句话,三句话再展开就是一页纸全景图。这种"展开↔折叠"的能力,才是综述要教给你的真正技能——不是记住五张表,而是掌握"任何一个看似庞杂的领域,都能被折叠进几个正交旋钮"的思维方式。下次面对一个陌生的子领域(比如多机器人协同、或长时规划),你该做的第一件事,就是问:"它的旋钮 A 和旋钮 B 是什么?" 这,就是从"认识每棵树"到"看清整片森林"的那一步跨越。
三次折叠的层级对应"看森林"的三个高度:第一次折叠(五谱→两旋钮)是"站在林缘看清边界"——知道这片森林由哪两个维度张成;第二次折叠(→两轴+修饰符)是"登高看清主脉"——知道树木沿哪两条主轴分布、CVaR 这条藤蔓如何横向缠绕;第三次折叠(→三句话)是"画成地图带走"——把森林压缩成可复述、可迁移的最小结构。教程(U1–U5)让你在林中辨认每一棵树,本篇让你依次登上这三个高度。一个真正"看清了森林"的人,能在这三个高度间自由升降:被问细节时降到树(展开回某条谱的推导),被问全局时升到地图(折叠成三句话)。升降自如,而非困在某一个高度,才是 Part-U 横切与纵深合一的终点。
§14 跨章综合思考题:检验你是否真的"看清了森林" ⭐⭐⭐¶
综述的练习不是"套公式"(那是 U1–U5 教程的事),而是**横向综合**——每道题都要求你在多条谱之间横跳、做有依据的比较与选型。这呼应 R4「每章至少 1 道跨章综合题」与 R14「跨章知识桥接」。建议白板作答,答不出的题指回对应节。
题 1(类型学 × 选型,→ §1、§9)。 一个仓储 AMR(自主移动机器人)在窄通道里运行,面对三类不确定性同时存在:地面打滑(轮速标定漂移)、迎面来的人会左让还是右让、转角处视野被货架遮挡。请:(a) 把这三类各归到五桶的哪一桶;(b) 分别说出该用哪条谱;(c) 设计一个分层架构把三条谱叠起来,并说明哪一层"共享干"、哪一层"收紧"、哪一层"主动观测"。
题 2(同构关系,→ §4.3、§5.4、§7.4)。 证明性地论述:为什么说"鲁棒是 \(\delta=0\) 的机会约束"?请从高斯下机会约束的收紧式 \(a^\top\bar x+\Phi^{-1}(1-\delta)\|\Sigma^{1/2}a\|\le b\) 出发,分析 \(\delta\to0\) 时收紧量的极限行为,并解释这个极限为什么对应"对所有扰动"的鲁棒约束。再进一步:CVaR\(_\alpha\) 在 \(\alpha\to1\) 时也退化成鲁棒——这两条"通向鲁棒"的路径有何不同?
题 3(近似-精确对,→ §3.4、§6.1、§8.2)。 "分支规划是算得起的 POMDP,POMDP 是最优的分支规划"——请用 DESPOT 的"\(K\) 个确定化场景"具体说明:分支规划的"共享干 + \(K\) 个场景"在什么意义上是 POMDP belief 树的近似?这个近似在什么情况下会失真(提示:考虑 belief 演化的连续性 vs 离散场景的粗糙度)?
题 4(修饰符的横向性,→ §7、§8.2、§10.2)。 "CVaR 是个形容词不是名词"——请举出三个把 CVaR 分别附着到"鲁棒/POMDP/分支"上的具体方法(可参考正文),并说明在每种附着里,CVaR 改变的是优化问题的哪一部分(约束还是目标?)。再说明:在 RL 侧,IQN 是怎么"不解 LP 就实现 CVaR"的?
题 5(开放问题的横切,→ §11)。 选定"分布漂移"(T1)这一个根本张力,说明它分别在鲁棒、机会约束、风险敏感、POMDP 四条谱上"投影"成什么具体病症。然后论述:为什么 §11 主张"真正深的开放问题都在谱的假设与现实的接缝处"?用你自己的一个例子(不必来自正文)佐证。
题 6(选型的反直觉,→ §9.3、§12.4)。 §9 说"最先进的方法往往是错的选择",§12 说"恰好够用 + 有库可用是工程的胜利条件"。请构造一个具体场景:在这个场景里,理论最优的谱是 POMDP,但工程上正确的选择却是另一条谱。说清你的取舍依据(信息需求?算力?有没有 C++ 抓手?),并论证你的选择"不是偷懒,而是工程理性"。
题 7(RL 缝合,→ §10)。 "经典规控与 RL 是同一问题的两种语言"——请把"机会约束"这一条谱完整地翻译到 RL 侧:它对应 RL 的哪个子领域?\(\Pr[\text{违反}]\le\delta\) 在 RL 里写成什么?有哪个代表性 RL 算法实现了它?最后说明:可微 MPC 是怎么让"经典的保证"与"RL 的先验"在同一计算图协作的?
题 8(失败模式当过滤器,→ §18.1、§19)。 §18.1 提出"选谱时与其问哪条最好,不如问哪条的失败模式我最能承受"。请为下面两个对立场景各选一条谱并用失败模式论证:(a) 一台在仓库里搬货的 AMR,撞货架代价低但卡死停摆代价高;(b) 一台核电站巡检机器人,越界进入禁区是灾难但慢一点完全可接受。说明为什么这两个场景即使不确定性类型相近,选型也应相反——并指出各自"宁可承受哪种失败"。
题 9(旋钮的统一视角,→ §17.2、§11.4)。 §17.2 指出三条谱各有一个"旋钮"符号(\(\delta\)、\(K\)、\(\alpha\))。请说明:这三个旋钮分别调的是什么权衡?它们为什么都落在 §11.4 的 T2(保守↔性能)张力上?再论述——为什么"调旋钮"只是在帕累托前沿上移动一个点,而"引入学到的扰动模型"才可能把整条前沿外推?
解题提示:这 9 题没有唯一标准答案——综述题考的是"能否在多条谱之间建立有依据的联系",而非"背出某个结论"。一个好的答案应当:(a) 显式点出涉及哪几条谱;(b) 用正文的同构/借力/近似关系做桥梁;(c) 在选型类题上明确写出取舍依据。若某题完全无从下手,回对应节重读"本质洞察"引用块——那里通常藏着解题的关键直觉。
§15 综述级认知陷阱:跨谱比较时最容易栽的坑 ⭐⭐⭐¶
本节定位:R9 在综述里的形态不是"某个公式推导的坑"(那在 U1–U5),而是**横向比较与选型时的认知误区**——这些误区往往不是算错了某一步,而是在更高层"把两条谱的关系想反了""把方法的适用边界判错了"。每个陷阱给四要素:错误描述、现象/后果、根本原因、正确做法。这些坑全部来自前文反复强调却最易被忽视的关系。
陷阱 1:把"更保守"当成"更安全"¶
- 错误描述:默认鲁棒(最保守)总是"最安全"的选择,遇到安全关键任务就无脑选鲁棒。
- 现象/后果:在多模态意图场景(路口让行)用鲁棒,ego 把"左转"和"直行"两种他车意图包进一个大扰动集,结果在两条可能轨迹的中间地带行驶——这恰恰是**最危险**的位置(既不让也不抢),或者直接保守到卡死(gridlock),反而制造了新的安全隐患。
- 根本原因:混淆了"保守度"与"安全性"两个正交概念。保守度是"对违反的态度有多硬"(纵轴),安全性是"实际有没有酿成事故"。保守只对集合型有界扰动(①)等价于安全;对多模态(③),过度保守会落到危险中间地带(§1.4 第一个反事实)。
- 正确做法:先用 §1 类型学判断不确定性的桶,再选态度。多模态用分支(为每个意图各备一手),而非用鲁棒把所有意图包进一个集。"安全 = 类型匹配 + 适度态度",不是"态度越硬越安全"。
陷阱 2:把机会约束当成"软约束的花哨写法"¶
- 错误描述:以为 \(\Pr[g\le0]\ge1-\delta\) 不过是"把硬约束放松成软约束、允许随便违反一点",于是用一个 penalty 罚项近似它。
- 现象/后果:违反量完全不可控——penalty 权重调小则频繁越界、调大则退回保守,且无论怎么调都给不出"违反概率 \(\le\delta\)"这种可认证的保证。在监管场景(碰撞概率需 \(\le10^{-6}\))直接出局。
- 根本原因:没理解机会约束的本质是"给违反一个**精确的概率预算**并严格遵守"(§5.4 的"不是X而是Y")。软约束控制的是"违反的代价",机会约束控制的是"违反的概率"——两者是不同的量,前者不可认证、后者可认证。
- 正确做法:要概率预算就老老实实凸化成 SOCP(高斯下 \(a^\top\bar x+\Phi^{-1}(1-\delta)\sigma\le b\))或用 particle/DR 方法,而不是退化成 penalty。监管要的是"概率 \(\le\delta\)",不是"加了个罚项"。
陷阱 3:把"机会约束"和"CVaR"当成一回事¶
- 错误描述:觉得机会约束和 CVaR 都是"管尾部风险的",可以互换使用。
- 现象/后果:在尾部后果差异巨大的任务(高速 lane change,剐蹭 vs 对撞)用机会约束,结果规划器认为"撞一下"和"撞穿"都只是"一次违反",对二者一视同仁地控制概率,却对**后果深度**视而不见——在 \(\delta\) 预算内它会毫不犹豫地选择"小概率但致命"的方案。
- 根本原因:没区分"尾部的厚度"与"尾部的深度"(§5.4、§7.4)。机会约束管厚度(违反概率有多大),CVaR 管深度(违反之后有多惨)。两者控制的是分布尾巴的不同侧面。
- 正确做法:后果差异不大时机会约束够用(且更好算);后果差异巨大时必须上 CVaR(\(\mathrm{CVaR}_\alpha[g]\le0\) 同时管住概率和深度)。记住 §7.4 的极限关系——CVaR 才是连接风险中性与鲁棒的连续旋钮,机会约束不是。
陷阱 4:状态可观时还硬上 POMDP¶
- 错误描述:听说 POMDP "理论最优",就把它当万能钥匙,连状态完全可观的任务(阵风下无人机穿框)也套 POMDP。
- 现象/后果:付出了信念树搜索的最高计算量,却毫无收益——状态可观时 POMDP 退化成 MDP,belief 是退化的 delta 分布,整棵信念树是浪费(§9.3 "杀鸡用牛刀")。实时性直接崩。
- 根本原因:没认清 POMDP 正交于其余四条谱(§2.2、§6.1)——它处理的是"可观性"这个更底层的问题。只有当状态**本身看不清**(遮挡、未建图)时,POMDP 的"主动观测"才有价值;状态可观时它的全部机制都是空转。
- 正确做法:先问"状态可观吗"。可观 → 在鲁棒/CC/CVaR/分支里按类型选;不可观(epistemic 占主导)→ 才上 POMDP。POMDP 的价值在"先看一眼再决定",可观时没有"一眼"可看。
陷阱 5:把静态 CVaR 直接塞进滚动 MPC¶
- 错误描述:在 MPC 的每个时刻独立地用静态 CVaR\(_\alpha\) 优化,以为这样就得到了"动态风险敏感控制"。
- 现象/后果:行为前后矛盾——今天按 CVaR 算出的最优计划,明天站在新信息上重新优化时会"后悔"并推翻,规划器表现出抖动、反复、甚至违反单调性。
- 根本原因:静态 CVaR 时间不一致(§7.2、§11.6)。它在单次优化里是凸且最优的,但在"逐时刻重优化"的滚动框架里,各时刻的 CVaR 目标互不自洽,不满足动态规划的 Bellman 兼容性。
- 正确做法:要在动态/滚动框架里用风险敏感,须用时间一致的版本——Ruszczyński 的 nested CVaR(逐步施加一步条件 CVaR),或 distributional RL 的递归风险算子。代价是更保守、更难算,这是 §11.6 的 T4 张力。若工程上能容忍轻微不一致换实时,需显式论证后果可忽略,而非默认没问题。
陷阱 6:把"开源有库"和"理论成熟"画等号¶
- 错误描述:看到 POMDP(DESPOT)、鲁棒(acados)有成熟 C++ 库,就以为它们"理论也最成熟、最该优先研究";看到机会约束/CVaR 没库,就以为它们"不重要、不成熟"。
- 现象/后果:选题或选型时被生态误导——错过机会约束/CVaR 这些"理论很硬、只是恰好没封装成库"的方向,或盲目跟随有库的谱而忽略了任务其实更适合没库的谱。
- 根本原因:把"工程成熟度"误当"理论成熟度"。§12.2 已点明:生态成熟度 = 落地拉力 × 可封装性 × 研究语言,与理论深度是两回事。CVaR 的理论(Rockafellar-Uryasev、一致性公理)极其成熟,只是因为"算法是一次变换、难封装、研究在 Python"才没有 C++ 库。
- 正确做法:理论选型(§9,按问题结构)与工程选型(§12.4,按有没有抓手)分两步走。先按结构定该用哪条谱,再看有没有库——没库就接受"自己写"(核心常是百行级变换,§12.3),而不是因为没库就改用不匹配的谱。
本质洞察:这六个陷阱有一个共同的"母错误"——把正交的维度坍缩成了一维。陷阱 1 把"保守度"和"安全性"坍成一维,陷阱 3 把"尾部厚度"和"尾部深度"坍成一维,陷阱 4 把"可观性"和"演化不确定"坍成一维,陷阱 6 把"工程成熟"和"理论成熟"坍成一维。综述全篇反复强调"正交"二字(五桶正交、类型与态度正交、POMDP 正交于纵轴),正是为了防这类坍缩。保持维度的正交,是做对一切横向比较与选型的前提——一旦你在脑子里把两个本应正交的维度混成一个,就必然在某处栽跟头。
§16 选型误诊故障排查表:症状 → 误诊 → 纠正 ⭐⭐⭐¶
本节定位:R15 在综述里的形态——不是"代码报错怎么排查",而是"选型/部署出现异常行为时,怎么倒推是哪一步选错了谱"。下面六个故障场景,每个给"症状 → 可能的误诊根源 → 排查步骤 → 纠正方向 → 相关节"。这是把 §9 选型矩阵反过来用:从"行为异常"反查"选型错误"。
| # | 症状(部署时观察到的异常) | 最可能的误诊根源 | 排查步骤 | 纠正方向 | 相关节 |
|---|---|---|---|---|---|
| F1 | 机器人在两种可能未来的"中间地带"行驶(既不让也不抢、卡在两车道间) | 把多模态③误当集合①,用鲁棒把多个意图包进一个大扰动集 | ①确认不确定性是"离散几种意图"还是"连续有界扰动"②查当前是否用单一扰动集覆盖了多意图 | 改用分支/场景(§3):每个意图各备一手 + 共享干 | §1.4、§3、§15陷阱1 |
| F2 | 规划器永远保守减速、从不"去看一眼"被遮挡区域 | 把认知④误当概率②,用机会约束假设"障碍以某概率存在"而不主动观测 | ①确认是"状态不可观"还是"状态可观但演化随机"②检查是否有降低 belief 熵的观测动作纳入决策 | 改用 POMDP(§6):把"看一眼"作为降熵动作纳入 | §1.4、§6.1、§15陷阱4 |
| F3 | 平均表现很好,但偶发灾难性后果(罕见高速对撞、摔倒) | 把尾部⑤误当期望,用风险中性 MPC 只优化平均代价 | ①查目标函数是否只含 \(\mathbb{E}[J]\)②确认尾部后果与平均后果的量级差距 | 改用 CVaR(§7):\(\mathrm{CVaR}_\alpha[g]\le0\) 单独管尾部深度 | §1.4、§7、§15陷阱3 |
| F4 | 违反约束的频率不可控,调罚项权重按下葫芦浮起瓢 | 用 penalty 软约束冒充机会约束,违反概率无法钉死 | ①确认需求是"概率预算"还是"代价权衡"②检查约束是硬凸化还是软罚项 | 凸化成 SOCP 或 particle/DR(§5),给 \(\delta\) 精确预算 | §5.4、§15陷阱2 |
| F5 | 风险敏感控制器行为抖动、反复推翻自己的计划 | 把静态 CVaR 直接塞进滚动 MPC,时间不一致 | ①确认每个时刻是否独立做静态 CVaR②观察是否出现"后悔-推翻"模式 | 改用 nested CVaR 或递归风险算子(§7、§11.6) | §7.2、§11.6、§15陷阱5 |
| F6 | 仿真/标定环境表现完美,部署后保证失效、频繁越界 | 分布漂移(T1)——标定的扰动集/分布/观测模型在部署环境过期 | ①对比标定分布与部署分布②检查扰动是否跑出 \(\mathcal{W}\)、\(\delta\) 是否仍成立 | 引入 DRO/conformal/在线自适应(§11.3) | §5.5、§11.3 |
排查表的使用心法:所有六个故障的排查第一步**都是同一句话**——"回到 §1 类型学,重新确认这个任务的不确定性到底落在哪个桶"。F1–F3 是"桶判错了"(类型误诊),F4–F5 是"桶对了但态度的实现错了"(态度误诊),F6 是"桶和态度都对,但假设过期了"(接缝失效,对应 §11 的 T1)。这三层正好对应 §11.1 的判断框架:类型误诊 → 态度误诊 → 假设-现实接缝。
本质洞察:选型故障与代码故障有一个根本区别——代码故障会报错(编译失败、崩溃、断言),选型故障不会报错,它"安静地"以次优甚至危险的行为表现出来。F1 的中间地带行驶、F3 的偶发灾难、F6 的部署失效,程序都在"正常运行",没有任何异常抛出。这就是为什么选型错误比代码错误更危险、更难发现——你需要主动地、定期地拿这张表去"体检"系统行为,而不能等它报错。会写代码的人很多,会诊断"系统行为异常 → 选型决策错误"的人很少,后者正是综述要培养的、区别于教程的高阶能力。
§17 术语·符号·代表论文速查 ⭐⭐¶
本节定位:综述的"工具箱抽屉"——把全篇横跨五谱用到的术语、符号、奠基论文整理成可快速回查的索引。综述比教程横跨更广,术语更易混淆,这张速查是为了让你在任意一节卡壳时,不必翻回定义处就能续读(呼应 R7 术语精确性、R14 跨章桥接)。
17.1 核心术语中英对照与一句话定义¶
跨五谱反复出现、且最易混淆的术语,按"出现的谱"归类:
| 术语(中/英) | 缩写 | 一句话定义 | 主出处 |
|---|---|---|---|
| 鲁棒正不变集 / Robust Positively Invariant set | RPI | 反馈后扰动累积的稳态包络,决定 tube 半径 | §4.1、U2 |
| 管道 MPC / Tube MPC | — | 真实轨迹被锁在以名义轨迹为中心、半径=RPI 的管道里 | §4 |
| 机会约束 / Chance Constraint | CC | 约束以概率 \(\ge1-\delta\) 满足,\(\delta\) 是违反预算 | §5 |
| 风险再分配 / Iterative Risk Allocation | IRA | 把联合机会约束的风险预算按危险度最优分到各子约束 | §5.2 |
| 分布鲁棒机会约束 / Distributionally Robust CC | DR-CC | 对一个分布球内所有分布都满足机会约束 | §5.3 |
| 条件风险价值 / Conditional Value-at-Risk | CVaR | 最坏 \(\alpha\) 比例情况下的平均代价(管尾部深度) | §7 |
| 一致性风险度量 / Coherent Risk Measure | — | 满足 Artzner 四公理(单调/平移/凸/正齐次)的风险度量 | §7.2 |
| 时间一致性 / Time-Consistency | — | 风险计划在每个决策时刻自洽、不会"后悔" | §7.2、§11.6 |
| 嵌套 CVaR / Nested CVaR | — | 逐步施加一步条件 CVaR,修复静态 CVaR 的时间不一致 | §7.3、§11.6 |
| 信念 / Belief | \(b(s)\) | 状态上的分布,是观测-动作历史的充分统计量 | §6.1、U4 |
| 部分可观 MDP / Partially Observable MDP | POMDP | 状态不可观、在 belief 空间决策的 MDP | §6 |
| 确定化稀疏树 / Determinized Sparse Tree | — | DESPOT 用 \(K\) 个确定化场景把随机信念树固化 | §6.2 |
| 非预期约束 / Non-anticipativity | — | 分支必须共享一段不可分叉的初始轨迹 | §3.1、U1 |
| 共享干 / Shared Trunk | — | 分支规划里所有场景共用的初始段(=非预期约束的工程说法) | §3.1 |
| 条件聚焦分支 / Conditional Focused Branching | CFB | EUDM 只在危险交互处分支,压组合爆炸 | §3.2 |
| 时空语义走廊 / Spatio-temporal Semantic Corridor | SSC | EPSILON 的运动规划层,把语义约束变成 QP 走廊 | §3.2 |
| 偶然不确定性 / Aleatoric Uncertainty | — | 世界本身的随机性,再多数据也消不掉 | §1.3 |
| 认知不确定性 / Epistemic Uncertainty | — | 来自"知道得不够",观测/数据能消掉 | §1.3 |
| 分布鲁棒优化 / Distributionally Robust Optimization | DRO | 对一个分布的 ambiguity set 里所有分布都给保证 | §11.3 |
| 共形预测 / Conformal Prediction | — | 用 calibration set 给出有限样本、无分布假设的覆盖保证 | §11.3 |
| 递归可行性 / Recursive Feasibility | — | MPC 每一步的优化问题都保证有解(改旋钮需重新论证) | §11.4 |
术语精确性提醒(R7):全篇最易被当成同义词混用、其实指不同东西的三对术语——(1) 保守度 vs 安全性(§15 陷阱 1,正交);(2) 尾部厚度(机会约束)vs 尾部深度(CVaR)(§7.4,不同侧面);(3) 可观性(POMDP)vs 演化不确定(其余四谱)(§6.1,正交)。读到这三对中任一个时,务必在脑中确认"我说的是哪一个",这是避免 §15 全部六个陷阱的语言基础。
17.2 统一符号表¶
全篇沿用 U0 符号体系,跨五谱共享一套记号(呼应正文"写作约定"):
| 符号 | 含义 | 出现谱 |
|---|---|---|
| \(x,\ u,\ w\) | 状态、控制、扰动 | 全部 |
| \(\bar x\) | 名义状态(去掉扰动的标称轨迹) | 鲁棒/CC |
| \(\mathcal{W}\) | 扰动集(紧致) | 鲁棒(①集合型) |
| \(p(w),\ \Sigma\) | 扰动分布、协方差 | 机会约束(②概率型) |
| \(\delta\) | 约束违反概率预算(机会约束的旋钮) | 机会约束 |
| \(\Phi^{-1}(\cdot)\) | 标准正态逆 CDF(高斯收紧的分位数) | 机会约束 |
| \(\{\omega_k,P_k\}\) | 离散场景集与其概率 | 分支(③多模态型) |
| \(b(s)\) | 信念(状态上的分布) | POMDP(④认知型) |
| \(T,O,R\) | 转移、观测、奖励模型 | POMDP |
| \(K\) | 分支数 / 确定化场景数(成本旋钮) | 分支、DESPOT |
| \(\alpha\) | CVaR 风险水平(尾部比例,管尾部的旋钮) | 风险敏感(⑤尾部型) |
| \(Z\) | 随机代价/回报(被风险度量作用的对象) | 风险敏感 |
| \(\rho(Z)\) | 风险度量(CVaR 是其一种) | 风险敏感 |
| \((\cdot)_+\) | \(\max(\cdot,0)\),CVaR 变分公式的铰链 | 风险敏感 |
| \(J,\ \pi\) | 代价、策略 | 全部 |
符号的"旋钮"视角:注意上表里被标为"旋钮"的三个符号——\(\delta\)(机会约束的违反预算)、\(K\)(分支/场景数)、\(\alpha\)(CVaR 的尾部水平)。它们是各谱里**唯一需要工程师拍板的自由参数**,也是 §11 的 T2 张力(保守度↔性能)的具体落点。记住"每条谱的旋钮是哪个符号",就抓住了该谱选型的核心抓手。
17.3 五谱奠基与里程碑论文索引¶
把 §3–§7 各脉络表里的关键论文按谱汇总成一张索引,便于回到 U1–U5 的代表性论文表深读("作者-年-载体"格式):
| 谱 | 奠基/里程碑论文 | 角色 |
|---|---|---|
| 分支/场景 (U1) | Hardy & Campbell 2013 (T-RO);MPDM Cunningham 2015 (ICRA);EUDM 2020 (ICRA);EPSILON 2022 (T-RO);MARC 2023 (RA-L) | 形式化奠基→闭环仿真→实时化→风险感知 |
| 鲁棒/Tube (U2) | Scokaert-Mayne 1998;Mayne-Seron-Raković 2005 (Automatica);Raković 2005 (TAC, mRPI);Majumdar-Tedrake 2017 (IJRR, funnel);GP-MPC Hewing-Zeilinger 2020 | min-max→名义+管道分离→可计算 RPI→机器人化→学习增强 |
| 机会约束 (U3) | Charnes & Cooper 1959;Blackmore-Ono-Williams 2010 (TAC, particle);Ono-Williams 2008 (CDC, IRA);How 组 CC-RRT* | 概念诞生→粒子近似→风险再分配→采样规划 |
| POMDP (U4) | Sondik 1971;Kaelbling-Littman-Cassandra 1998 (AIJ);SARSOP Kurniawati 2008;POMCP Silver-Veness 2010 (NeurIPS);DESPOT Somani et al. 2013 (NeurIPS)→2017 (JAIR) | 精确解→点基→在线 MCTS→确定化稀疏树 |
| 风险敏感/CVaR (U5) | Artzner et al. 1999;Rockafellar-Uryasev 2000 (J. Risk);Ruszczyński 2010 (nested);Chow et al. 2015 (NeurIPS);Majumdar-Pavone 2017 (ISRR);C51 Bellemare 2017 (ICML) | 公理化→LP dual→动态一致→RL 化→机器人公理审计→分布式 RL |
索引的读法:每条谱的论文链都遵循同一叙事弧——奠基(提出概念)→ 可算化(变成能算的)→ 工程化/机器人化(搬上真实系统)→ 前沿融合(与 RL/学习合流)。这个四段弧是五条谱共享的"成熟轨迹",也是判断一个新方向"走到哪一步"的标尺:还在奠基期(概念新但不可算)、可算化期(有算法但慢)、还是工程化期(有 C++ 库、上了硬件)。把任一新论文往这条弧上一放,就知道它在领域里的位置。
17.4 与 Part-U 深度教程的回指地图¶
本篇是横切,每条脉络的纵深在 U1–U5。给一张"想深入某条谱时回指哪一章"的地图(呼应 R14 跨章桥接):
| 本篇节 | 主题 | 深度教程 | 回指时重点看 |
|---|---|---|---|
| §1–§2 | 类型学 + 态度光谱 | U0 总论 §2、§3 | 五范式主线的完整推导、确定性等价的危险 |
| §3 | 分支/场景 | U1 | 共享干+分支的样条优化、EPSILON 源码走读 |
| §4 | 鲁棒/Tube | U2 | RPI 集计算、约束收紧的完整推导、acados 实操 |
| §5 | 机会约束 | U3 | SOCP 凸化、Boole 拆解、IRA 算法、CC-RRT* 实现 |
| §6 | POMDP | U4 | belief update、α-vector、DESPOT 的 DSPOMDP 接口 |
| §7 | 风险敏感/CVaR | U5 | Rockafellar-Uryasev 推导、LP 化、IQN 的 CVaR 采样 |
| §10 | RL 贯穿 | 80_综述 §RL 贯穿 | 五谱↔RL 同义映射的完整缝合 |
本质洞察(速查的元价值):一份好的术语-符号-论文速查,不只是"查得到",更是一张**"领域的压缩快照"——§17.1 的术语表按谱归类,本身就重述了五桶分类;§17.2 的符号表标出三个旋钮,本身就点出了选型核心;§17.3 的论文索引揭示了"奠基→可算→工程→融合"的共享弧。换句话说,**把这一节通读一遍,等于把整篇综述的骨架又过了一遍。这是综述附录区别于教程附录的地方:教程附录是"补充细节",综述附录是"再压缩一次全局"。
§18 两个补充对比维度:失败模式与计算画像 ⭐⭐⭐¶
本节定位:§8 的主对比矩阵从"管什么类型、什么态度、什么数学对象、多少信息/算力/库"八个维度横切了五谱。但选型实战还需要两个 §8 没展开的维度——每条谱"会怎么失败"(失败模式对比)和**每条谱"吃掉计算预算的哪一块"**(计算画像对比)。这两个维度是 §16 故障排查表的"理论底座":知道一条谱会怎么坏,才能反查它坏了;知道它的算力花在哪,才能判断它实时不实时。本节是 §8 对比综合的延伸,不是附录。
18.1 失败模式对比:每条谱"被推到极限时怎么坏"¶
任何方法都有它的"破绽方向"——把它推到假设的边界外,它会以特定方式失败。理解失败模式,比理解成功条件更重要(成功条件论文都写,失败模式往往要踩坑才知道)。下面横切五谱的"典型失败模式 + 触发条件 + 失败时的可观症状":
| 谱 | 典型失败模式 | 触发条件(假设被推到哪) | 失败时的可观症状 | 对应排查 |
|---|---|---|---|---|
| 鲁棒/Tube | 过度保守 → 任务不可行/卡死 | 扰动集 \(\mathcal{W}\) 标得过大,或被迫覆盖多模态 | 找不到可行解、寸步难行、gridlock | §16 F1 |
| 机会约束 | 高斯假设破裂 → \(\delta\) 保证失真 | 真实扰动重尾/多模态,但用了高斯闭式 \(\Phi^{-1}\) | 标称满足 \(\delta\) 但实际越界频率远超 \(\delta\) | §16 F4/F6 |
| 分支/场景 | 意图集不完备 → 长尾击穿 | 真实意图跑出枚举集(违章、犹豫) | 对"没预备的那手"完全无应对、急刹/碰撞 | §16 F1、§11.5 |
| POMDP | 维度/历史灾难 → 算不动或粒子贫化 | 高维连续状态/观测、长视界 | 实时性崩、belief 粒子退化成几个点 | §6.6 |
| 风险敏感/CVaR | 时间不一致 → 滚动时行为抖动 | 静态 CVaR 塞进滚动 MPC | 计划反复推翻、抖动、违反单调性 | §16 F5 |
失败模式的"对偶"规律:注意一个反直觉的对称——每条谱的失败模式,恰恰是它最强优点的"过量"。鲁棒最强是"保证",推到极限就"保守到不可行";分支最强是"为多种未来各备一手",推到极限就"备不全长尾那一手";POMDP 最强是"最优地权衡探索利用",推到极限就"算不动"。这不是巧合——一个方法的优势维度和它的脆弱维度是同一根轴的两端。鲁棒的轴是"保守度"(优点是保证、缺点是卡死),分支的轴是"枚举完备性"(优点是多手、缺点是长尾),CVaR 的轴是"尾部刻画精度"(优点是管深度、缺点是时间一致性代价)。
本质洞察:选型时,与其问"哪条谱最好",不如问"哪条谱的失败模式我最能承受"。仓储 AMR 撞货架代价低、卡死代价高 → 不能选鲁棒(怕卡死),宁可选分支(长尾失败可加兜底)。安全认证场景越界代价是灾难 → 宁可选鲁棒(怕越界,能接受保守)。好的工程师不是选"优点最多的谱",而是选"缺点最能扛的谱"——因为优点是平时的收益,缺点是出事时的代价,而工程的底线由代价决定。这是 §9 选型矩阵之外、必须叠加的"失败模式过滤器"。
18.2 计算画像对比:算力到底花在哪¶
§8 给了"在线计算量"的高/中/低定性判断,但选型实战需要知道**算力具体花在哪个环节**——因为同样是"中高算力",花在离线还是在线、花在哪一步,对实时部署的影响天差地别。下面拆解五谱的计算画像:
| 谱 | 离线计算(部署前一次性) | 在线计算(每个控制周期) | 主算力瓶颈 | 实时性关键 |
|---|---|---|---|---|
| 鲁棒/Tube | RPI 集计算(一次,可能慢) | 名义 MPC 一个 QP/NLP | 在线只是标准 MPC | 离线吃重 → 在线轻,最易实时 |
| 机会约束 | (几乎无) | SOCP 或 particle 评估 | 凸化后的锥规划 / 粒子数 | 与 MPC 同量级,可实时 |
| 分支/场景 | (几乎无) | \(K\) 路并行优化 + 闭环仿真 | \(K\) 倍 + 仿真 rollout | \(K\) 是旋钮,CFB 压 \(K\) 保实时 |
| POMDP | 离线 α-vector(SARSOP)或无 | 信念树搜索(anytime) | 树展开 × belief 更新 | anytime 截断换实时(牺牲最优性) |
| 风险敏感/CVaR | (几乎无) | LP/SOCP(样本数 \(N\) 个铰链) | 样本数 \(N\) / 分布 RL 推理 | \(N\) 决定精度-速度,可实时 |
计算画像揭示的选型含义: - 鲁棒是"离线换在线"的典范——把无穷维鲁棒问题压成一次离线 RPI 计算(§4.5 本质洞察),在线只剩标准 MPC,所以它在线最轻、最易上嵌入式(acados 上 quadrotor)。 - POMDP 是唯一"在线吃重且可 anytime"的谱——树搜索可以随时截断给出当前最优,用"算多久"换"多优"。这是它在线最贵、但又能靠 anytime 勉强实时的独特画像(DESPOT 的设计精髓)。 - 分支的 \(K\)、CVaR 的 \(N\) 是"精度-速度"旋钮——和 §17.2 的旋钮视角呼应,它们直接在计算画像里现身:调小省算力但损精度,调大反之。
本质洞察:§8 看"算力总量",§18.2 看"算力分布"——后者才决定能不能上实时硬件。一个深刻的规律是:能把计算"挪到离线"的谱,几乎总是更容易部署的谱。鲁棒把鲁棒性挪到离线 RPI,SARSOP 把求解挪到离线 α-vector——凡是能"离线算好、在线查表/轻算"的,都赢在部署。反之 POMDP 在线树搜索、分支在线 \(K\) 倍仿真,部署压力就大。这给选型一条隐藏准则:在满足任务的前提下,优先选"重离线、轻在线"的谱——这是嵌入式实时系统里"恰好够用"的另一层含义。
18.3 演进趋势综合:五谱在 2024–2026 正在"收敛"吗¶
把 §3.5/§4.5/§5.5/§6.6/§7.5 各章的前沿,和 §10.3、§11 的合流方向叠起来横看,会发现一个宏观趋势——五条曾经泾渭分明的谱,正在沿三条线收敛:
收敛线一:向"数据驱动收紧/重塑"收敛。 鲁棒的 GP-MPC/learning tube、机会约束的 DR-CC、分支的 diffusion scenario、POMDP 的 RSSM、CVaR 的分布 RL——五条谱**不约而同**地在用"学到的模型"替换"手工标定的不确定性刻画"。这是对 §11 的 T1(分布漂移)的共同回应:与其手工标 \(\mathcal{W}\)/\(p(w)\)/意图集,不如从数据里学。
收敛线二:向"可微/可端到端训练"收敛。 可微 MPC(acados+leap-c)让鲁棒谱可训练,neural-guided POMDP 让 POMDP 可被网络引导,diffusion planner 让分支谱变成可训练的生成模型。五谱都在把自己"嵌进计算图",以便与 RL 的梯度协作(§10.3、§11.8 的 T6)。
收敛线三:向"风险感知"收敛。 CVaR 作为修饰符(§8.2 第三组)正横向渗透其余四谱——CVaR-MPC、CVaR-POMDP、MARC 的 CVaR 分支、risk-aware diffusion。尾部意识从"风险敏感谱专属"变成"所有谱的标配选项"。
| 收敛线 | 驱动力(回应哪个张力) | 五谱各自的落点 | 收敛后的形态 |
|---|---|---|---|
| 数据驱动刻画 | T1 分布漂移 | GP-tube / DR-CC / diffusion场景 / RSSM / 分布RL | 不确定性刻画从"标定"变"学习" |
| 可微/端到端 | T6 保证↔先验 | 可微MPC / neural-POMDP / diffusion planner | 谱"嵌进计算图"与 RL 协作 |
| 风险感知 | T2 保守↔性能(尾部侧) | CVaR-MPC/POMDP/分支/diffusion | 尾部意识成为所有谱的标配 |
本质洞察(演进的方向):这三条收敛线合起来指向一个判断——五条谱在"算法形态"上正在融合,但在"问题结构"上仍然正交。融合的是手段(都用数据、都可微、都加风险感知),不变的是 §1 的五桶分类(集合/概率/多模态/认知/尾部仍是正交的问题结构)。这意味着:未来你大概率不会再"纯用"某一条谱的经典形态,而是用一个"数据驱动 + 可微 + 风险感知"的统一框架,但**在这个框架里,你依然要先判断问题落在哪个桶、该用什么态度**——因为那是问题本身的结构,不会因为手段进步而改变。这就是为什么这篇综述的地基(§1 类型学、§2 态度光谱)即使在 2026 年之后仍然成立:手段会收敛、会过时,但"先分类再选态度"的思维框架不会。
§19 全栈选型案例:把五谱选型走到底的四个机器人形态 ⭐⭐⭐¶
本节定位:§8.3 给了"谱 × 形态"的迁移度对照表(定性打星),§9.3 给了六个单任务的选型答案。本节再深一层——挑四个机器人形态,每个走一遍**完整的全栈选型推演**:从"这个形态主要面对哪些桶"出发,经"每个子问题选哪条谱、为什么、怎么叠",到"整机架构长什么样、会怎么失败"。这是把 §1(类型学)→ §9(选型)→ §18(失败模式)三件工具在一个真实形态上**连续地用一遍**,是综述"对比综合"的最高形态——不是比较孤立的方法,而是综合出一整套架构决策。
19.1 案例一:城市自动驾驶(五桶全占的"富矿")¶
为什么先讲它:§8.3 已点出自动驾驶在每条谱上都是 ★★★★+,因为它**同时**面对全部五类不确定性。它是检验"五谱能否协同"的终极案例。
第一步——分桶(§1)。 把城市驾驶的不确定性逐项归桶: - 他车/行人意图(让/抢/横穿)→ ③多模态 - 传感器噪声、他车轨迹预测误差 → ②概率 - 自车动力学扰动(路面、风、负载)→ ①集合 - 遮挡路口、视野盲区 → ④认知 - 罕见高速对撞 → ⑤尾部
五桶全占——这正是它"富矿"的来源。
第二步——逐桶选态度并叠层(§9 + §2)。 因为五桶并存,单谱必然覆盖不全(§9.3 末行"复合不确定需分层"),架构必然是分层叠加:
| 层 | 处理的桶 | 选的谱 | 这一层的动作 | 抓手 |
|---|---|---|---|---|
| 行为决策层 | ③多模态 + ④认知 | 分支(EPSILON)/ 必要时 POMDP | 为每个意图各备一手,遮挡处主动减速观测 | EPSILON (C++) / DESPOT |
| 运动规划层 | ②概率 | 机会约束(SSC-QP 收紧) | 给碰撞概率一个 \(\delta\) 预算,凸化进 QP | 自写 Eigen+OSQP |
| 执行/跟踪层 | ①集合 | 鲁棒(收紧 MPC) | 把动力学扰动包进 tube,收紧约束 | acados |
| 风险修饰 | ⑤尾部 | CVaR(加权在行为层) | 对"小概率致命场景"加权更重 | MARC 式 CVaR 分支 |
这正是正文反复出现的"EPSILON(分支) + SSC-QP(收紧) + CVaR 加权 = 自驾全栈"(§8.1、§9.2 决策树末尾)的完整展开。
第三步——失败模式审计(§18.1)。 这套栈会怎么坏? - 行为层(分支)的破绽是**意图长尾**(§11.5 的 T3)——枚举的让/抢/直行盖不住违章、突然横穿。兜底:open-set 意图检测 + 急停策略。 - 运动层(机会约束)的破绽是**高斯假设破裂**(§16 F4)——行人轨迹分布重尾。兜底:particle 或 DR-CC。 - 整栈的破绽是**分布漂移**(§16 F6 / T1)——新城市、新天气。兜底:conformal 校准 + 在线自适应。
本质洞察:自动驾驶的全栈选型把整篇综述"用了个遍"——五桶分类(§1)、态度光谱(§2)、五条脉络的抓手(§3–§7)、分层叠加(§9.2)、失败模式过滤(§18.1)、开放张力(§11)全部出场。这解释了为什么它是 Part-U 的教学富矿:它不是某一条谱的案例,而是"五谱如何协同成一个系统"的案例。掌握了它的分层逻辑,其余形态都是它的"降维子集"。
19.2 案例二:阵风下的四旋翼无人机(鲁棒主导的"清爽"案例)¶
为什么讲它:它是自动驾驶的"反面"——不确定性高度集中在一个桶,是检验"不要过度设计"的案例(§9.3 "杀鸡用牛刀")。
第一步——分桶。 阵风穿框任务的不确定性几乎全在 ①集合型(阵风是有界外力)+ 少量 ②概率(IMU 噪声)。**没有**多模态(没有"别的智能体的意图")、**没有**认知不确定(状态由 VIO/动捕完全可观)、尾部风险低(撞框代价有限)。
第二步——选态度。 单桶主导 → 单谱够用,不需要分层叠加: - 主选 鲁棒 Tube MPC(acados):状态可观、扰动有界,信息需求最低(只需阵风边界),且差分平坦让四旋翼 tube 友好(§8.3 无人机行 ★★★★)。 - 不选 POMDP:状态可观,POMDP 退化成 MDP,信念树纯浪费(§15 陷阱 4 / §9.3)。 - 不选分支:没有离散意图可分(§19.1 对照——这里恰恰缺了自动驾驶的 ③桶)。
第三步——失败模式审计。 鲁棒的破绽是**过度保守**(§18.1)——若把阵风集 \(\mathcal{W}\) 标得过大,穿框窗口会缩到无法通过。纠正:用 GP-MPC(§4.5)在线学阵风分布,把保守的 rigid tube 收窄到"刚好够"——这恰好落在 §18.3 收敛线一(数据驱动收紧)。
不是 X 而是 Y(与案例一对照):四旋翼穿框**不是**"简化版自动驾驶",而是"只占一个桶**的清爽问题"。新手最容易在这里犯的错,是把自动驾驶那套五层栈搬过来——结果给一个状态完全可观、只有阵风的问题套上 POMDP 信念树和意图分支,付出巨大算力却毫无收益。**形态简单时,选型的智慧是"敢于不分层"——这与案例一"必须分层"形成的对照,正是 §9 选型矩阵最该传递的判断力:分层与否,取决于占了几个桶,而非取决于"看起来高不高级"。
19.3 案例三:遮挡环境的移动操作(loco-manipulation,认知 + 多模态复合)¶
为什么讲它:它介于案例一(五桶全占)和案例二(单桶)之间,且突出 ④认知桶——是检验"主动观测"价值的案例。
第一步——分桶。 移动机器人去抓取被部分遮挡的物体: - 物体位姿被遮挡、不确定 → ④认知(主导) - 抓取成功/失败 → ③多模态(抓得稳/滑脱两种未来) - 底盘移动 + 机械臂动力学扰动 → ①集合
第二步——选态度并叠层。 - 感知-决策核心选 POMDP(④认知主导)——只有 POMDP 会"先移动到能看清的视角再抓"(主动消除 epistemic,§1.3 / §6.1),这是本案例区别于案例二的关键:这里**有"一眼"可看,且看了有用**。抓手 OPPT(含 ROS+Gazebo)或 DESPOT。 - 抓取成败用 分支(③多模态)——为"抓稳"和"滑脱"各备一手(滑脱则重抓),共享干是"接近物体"的初始段。 - 执行层用 鲁棒(①集合)——loco-manip 的底盘+臂扰动包进 tube(§8.3 loco-manip 行鲁棒 ★★★★)。
第三步——失败模式审计。 POMDP 的破绽是**维度/粒子贫化**(§18.1 / §6.6)——物体位姿是连续高维 belief,particle filter 易退化。纠正:用高斯 belief 的特化(LQG-MP/RRBT,§6.3c)或 RSSM 摊销(§18.3 收敛线一)。
本质洞察(三案例的递进):案例二(单桶,敢不分层)→ 案例三(两三桶,部分分层,且认知桶让 POMDP 真正有用)→ 案例一(五桶,全栈分层)——这三个案例构成一条**"复合度递增"的谱**。把它们并排,你会看到选型的核心判断力不是"会用哪条谱",而是"判断这个形态占了几个桶、其中认知桶(④)是否真的需要主动观测"。认知桶是分水岭:占了它且"看一眼有用",POMDP 才值得;否则(案例二)POMDP 是负担。这个判断,比记住任何一条谱的细节都重要。
19.4 案例四:工业机械臂的安全力控装配(机会约束 + 可认证)¶
为什么讲它:它突出 ②概率桶 + 可认证需求,是检验"机会约束 vs 鲁棒"精确边界的案例(§5.1 "可调的中间地带")。
第一步——分桶。 力控装配(插轴入孔): - 力矩/位置传感噪声、装配容差 → ②概率(主导,统计已知) - 工件位姿小扰动 → ①集合 - 几乎无多模态、无认知不确定(工位结构化、可观)
第二步——选态度。 ②概率主导且容差是概率型 → 主选 机会约束(§9.3 机械臂行):给"插入失败概率"一个精确预算 \(\delta\),凸化进 QP。 - 为什么不选鲁棒?鲁棒对"从不发生的极端力矩"也死守,会把装配速度压到不必要的慢(§18.1 过度保守);容差是概率型,机会约束给的"精确风险预算"正好匹配可认证需求(监管要"失败率 \(\le\delta\)",§5.4)。 - 抓手:C++ 侧无成熟库(§12.1 机会约束 ★☆)→ 自己写 Eigen+OSQP 的 SOCP(§12.3)。这恰是 §12.3 说的"百行级变换、教学红利"的真实落点。
第三步——失败模式审计。 机会约束的破绽是**高斯假设破裂**(§18.1 / §16 F4)——力矩噪声若重尾,高斯闭式 \(\Phi^{-1}\) 的 \(\delta\) 保证失真。纠正:particle 近似或 DR-CC(只需矩信息,§5.3c)。
19.5 反例校准:一个"直觉会选错"的形态¶
为什么补一个反例:前四例都是"按框架选对了"。但框架的价值,要在"直觉会选错、框架把你拉回正轨"时才显出来。考虑**室内服务机器人在静态已知地图里导航避开稀疏行人**——直觉上"有行人 = 要预测意图 = 上分支/POMDP"。
框架怎么把直觉拉回来。 走 §19 的指令:数桶——地图静态已知(无④认知,状态可观)、行人稀疏且低速(意图③弱,且行人慢到 ego 可被动让行而无需预测分叉)、底盘扰动小(①弱)。真正占的桶其实只有弱②(行人位置噪声)。于是: - 不该上 POMDP(地图已知、状态可观,§15 陷阱 4); - 不该上重型分支(行人慢、稀疏,被动避让足矣,预测意图是过度设计); - 主选退化成**带安全裕度的确定性 MPC + 轻量机会约束**(给行人位置一个 \(\delta\) 膨胀)即可。
反例的教训:直觉被"出现了行人"这个表象带跑,框架则追问"行人的不确定性强到需要主动预测意图吗"——稀疏低速行人的答案是"不",于是退回轻量方案。这正是 §9.3"最先进的方法往往是错的选择"与 §19.2"敢于不分层"的合体:表象(有行人)会诱导你升级方法,框架(数桶+定强度)让你敢于降级。
| 案例 | 主桶 | 主选谱 | 是否分层 | 关键判断 | 主要失败模式 |
|---|---|---|---|---|---|
| ①城市自驾 | ③④①②⑤全占 | 分支+CC+鲁棒+CVaR | 全栈分层 | 五桶协同 | 意图长尾(T3) |
| ②阵风穿框 | ①集合 | 鲁棒 Tube | 不分层 | 敢于不分层 | 过度保守 |
| ③遮挡抓取 | ④认知+③ | POMDP+分支+鲁棒 | 部分分层 | 认知桶是否需主动观测 | 粒子贫化 |
| ④力控装配 | ②概率 | 机会约束 | 基本单谱 | CC vs 鲁棒边界 | 高斯破裂 |
| ⑤室内导航(反例) | 弱②概率 | 确定MPC+轻CC | 不分层 | 敢于降级 | (直觉误升级) |
本质洞察(五案例合观):把五个案例的"主桶 → 主选谱 → 是否分层"并排(上表),整篇综述的选型逻辑被压成一句操作指令——数你占了几个桶,再看认知桶(④)和尾部桶(⑤)在不在场:桶少则单谱(案例②④),认知桶在场则 POMDP 入列(案例③),桶多则全栈分层(案例①),尾部桶在场则叠 CVaR 修饰符。这条指令不依赖记住任何论文,只依赖 §1 的五桶分类和 §2 的态度光谱——这再次印证 §13.3 的三句话和 §18.3 的判断:手段会变,但"数桶 + 定态度 + 按需分层"的框架是稳的。前四个案例演示"按框架选对",第五个反例演示"框架把被表象带偏的直觉拉回正轨"——五次实弹演习合起来证明:框架既能指导升级(案例①的全栈分层),也能授权降级(案例⑤的敢于不分层),而升降的依据始终是"桶的数量与强度",绝非方法的"先进度"。
§20 结语:从"认识每棵树"到"看清整片森林" ⭐⭐¶
本节定位:全篇收束。不再引入新内容,而是回到开篇承诺——本篇要让你"看清整片森林"。这里把"读完这篇综述你应当具备什么能力"落成一张可自查的清单,并交代它与 Part-U 深度教程、与更广规控版图的关系。
20.1 这篇综述到底想让你获得什么¶
回看开篇"本篇目标"列的六条能力,现在可以更诚实地说——它们其实只是**一种元能力**的六个切面:把一个看似庞杂的领域折叠进几个正交旋钮,再从旋钮反向展开出任意细节的能力。
- 你不再把"不确定性"当一个笼统的词,而会**条件反射地分桶**(§1);
- 你不再问"哪条谱最先进",而会问"这个问题占几个桶、要什么态度"(§2、§9);
- 你不再把五条谱当五个孤立工具箱,而看到它们是**两条主轴 + 一个修饰符**(§8、§13);
- 你不再被"经典 vs RL"的伪二分困住,而看到它们是**同一问题的两种语言**(§10);
- 你不再只看方法的优点,而会**用失败模式当过滤器**(§18);
- 你不再被"有没有开源库"误导理论判断,而会**把工程选型与理论选型分两步走**(§12)。
这六条合起来,就是从"认识每棵树"(U1–U5 教你深入每条谱)到"看清整片森林"(本篇教你横切缝合)的跨越。
20.2 读者自查清单:你"看清森林"了吗¶
合上这篇综述前,用下面这张清单自查。能脱稿答出 \(\ge 8\) 条,说明你真的看清了森林;答不出的条目,回对应节重读"本质洞察":
| # | 自查问题 | 回指节 |
|---|---|---|
| 1 | 不确定性的五个正交桶是哪五个?各用什么数学对象? | §1.2 |
| 2 | aleatoric 和 epistemic 的本质区别?哪个有"主动消除"的出路? | §1.3 |
| 3 | 态度光谱从最保守到最激进的五档顺序? | §2.1 |
| 4 | "信息需求—保守度—计算量"三角的守恒律是什么? | §2.3 |
| 5 | 为什么说"鲁棒是 \(\delta=0\) 的机会约束、CVaR 连接鲁棒与风险中性"? | §8.2、§7.4 |
| 6 | 为什么说"分支是算得起的 POMDP、POMDP 是最优的分支"? | §8.2、§3.4 |
| 7 | CVaR 为什么是"形容词不是名词"? | §8.2 |
| 8 | 五谱各自的 RL 同义表达是什么? | §10.1 |
| 9 | 六大开放张力(T1–T6)分别是什么?为什么都在"假设与现实的接缝处"? | §11 |
| 10 | 选型三步流程是什么?决策树的第一个分叉问什么? | §9.1、§9.2 |
| 11 | 为什么"最先进的方法往往是错的选择"? | §9.3、§12.4 |
| 12 | 每条谱"被推到极限时怎么坏"?为什么优点和缺点是同一根轴? | §18.1 |
本质洞察(元能力的迁移):这张自查清单的 12 条,没有一条是"背某个公式"或"记某篇论文"——它们全是**关系性**的(A 和 B 什么关系、为什么、什么时候用哪个)。这恰恰是综述要训练的能力与教程的根本区别:教程让你掌握"是什么、怎么推",综述让你掌握"彼此什么关系、何时用哪个"。前者是知识,后者是判断力。而判断力是可迁移的——你在这篇综述里练就的"分桶 → 定态度 → 看关系 → 审失败模式"的思维,换到任何一个陌生的技术领域(多机协同、长时规划、人机交互)都能套用:先问它的正交旋钮是什么,再问各方法是什么关系,最后问它们各自会怎么坏。
20.3 进一步阅读:从这片森林走向更大的版图¶
本篇是 Part-U 不确定性规划的"横切顶帽"。读完它,三个方向值得继续:
向内(深化每条谱):回 U1–U5 深度教程(§17.4 回指地图),把本篇横切时一笔带过的推导补全——尤其 §17.3 索引里加粗的奠基论文(Mayne-Seron-Raković 2005、Rockafellar-Uryasev 2000、DESPOT 2013),它们是各谱的技术心脏。
向外(接入更大版图):
- 向 RL 版图:本篇 §10 只给了五谱↔RL 的映射骨架,完整缝合见 80_综述 §RL 贯穿——那里展开可微 MPC、neural-guided POMDP、diffusion planner 的工程细节。
- 向规划-控制全局:不确定性规划是"规控"的一个切面。它与确定性轨迹优化、与状态估计(SLAM/滤波,提供 belief 的输入)、与控制理论(提供 tube 的反馈律)都接壤——本篇默认你已有这些基础(前置自测第 3、6 题)。
向前(追前沿):§11 的六大张力(T1–T6)和 §18.3 的三条收敛线,是 2024–2026 的活跃前沿坐标。盯住"分布漂移下的可靠性(T1)"和"保证↔先验的缝合(T6)"——这两条是整个方向未来十年最可能出突破的地方。
20.4 最后一句¶
如果这篇 1500 行的综述最终只在你脑中留下一句话,希望是这句——
面对任何不确定性问题,先别急着选方法;先问两件事:它的不确定性长什么样(哪个桶),我对违反持什么态度(哪一档)。把这两件事想清楚,方法会自己浮现出来;想不清楚,再先进的方法也会用错。
这就是从"认识每棵树"到"看清整片森林"的全部秘密——森林的地图,只有两根坐标轴。
故障诊断手册(章末速查)¶
综合 §15 认知陷阱与 §16 选型误诊,给一张"读这篇综述/做选型时卡住"的快速排查表(R15 章末故障诊断),症状 → 可能原因 → 排查步骤 → 相关节。
| 症状 | 可能原因 | 排查步骤 | 相关节 |
|---|---|---|---|
| 读到"为什么鲁棒是 \(\delta=0\) 的机会约束"完全跟不上 | 没掌握约束收紧的同构关系 | 回 §5.4 看高斯收紧式,再看 \(\delta\to0\) 的极限;必要时回 U2 约束收紧 | §5.4、§4.3、§8.2 |
| 分不清机会约束和 CVaR 该用哪个 | 混淆"尾部厚度"与"尾部深度" | 问"我在乎违反的概率还是违反的后果深度";后果差异大→CVaR | §7.4、§15陷阱3 |
| 不理解为什么 POMDP 横跨态度光谱整行 | 没区分"可观性"与"演化不确定" | 回 §2.2 网格 + §6.1:POMDP 处理的是更底层的可观性问题 | §2.2、§6.1、§15陷阱4 |
| 选型时纠结"该不该分层" | 没数清占了几个桶 | 用 §19 的指令:数桶→看④⑤在不在场→定分层 | §9.2、§19.4 |
| 觉得"没开源库的谱不值得用" | 把工程成熟度误当理论成熟度 | 回 §12.2 三成因;理论选型与工程选型分两步(§12.4) | §12.2、§15陷阱6 |
| 读 §11 开放问题觉得彼此无关、记不住 | 没抓住"假设与现实接缝"这条主线 | 回 §11.1:六张力都是某条假设被现实推翻;按"松动哪条假设"归类 | §11.1、§11.8 |
使用心法:这张表与 §16 选型误诊表互补——§16 排查的是"部署时系统行为异常",本表排查的是"读综述/做选型时认知卡壳"。两表共享同一个第一步:回到 §1 类型学和 §2 态度光谱,重新确认问题的桶与态度。这是整篇综述所有排查、所有选型、所有比较的共同原点。
附录 A:五大机器人形态迁移度深析——§8.3 星表背后的理由 ⭐⭐⭐¶
本附录定位:§8.3 给了"谱 × 形态"的迁移度星表,§19 走了四个形态的全栈案例。但星表只给了"几颗星"的结论,没给"为什么是这么多星"的理由。本附录把星表的每一行(每个形态)展开成"该形态的不确定性特征 → 各谱为何契合/不契合"的推理,覆盖五大形态(自动驾驶、无人机、机械臂、四足、人形/loco-manip)。这是 §8.3 对比综合的"理由层"——读完它,你不仅知道"四足偏弱于优化型谱",更知道"为什么"。
A.1 自动驾驶:五谱全面 ★★★★+ 的唯一形态¶
不确定性特征:唯一**五桶全占**的形态(§19.1 已详述)——他车意图③、传感噪声②、动力学扰动①、遮挡④、尾部碰撞⑤俱全,且每一桶都强。
各谱契合理由: - 分支/POMDP 双 ★★★★★——因为③④两桶都强且都有金牌案例(EPSILON 行为决策、DESPOT 行人交互),是这两条谱工程化最成熟的落地场。 - 机会约束 ★★★★——横纵向控制的概率容差是 CC 的天然战场。 - 鲁棒 ★★★——执行层 tube 有用,但自驾的主要矛盾在③④而非①,故略低。 - CVaR ★★★★——lane change 的尾部碰撞后果差异巨大,必须管深度。
一句话:自动驾驶是"五谱协同"的标准教学场,因为它在每条谱上都有真实且强的需求——这就是它在星表里几乎全行高星的根本原因。
A.2 无人机/四旋翼:鲁棒 + 机会约束双 ★★★★ 的"清爽"形态¶
不确定性特征:高度集中在①集合(阵风、外力)+ ②概率(IMU 噪声),且**差分平坦**让轨迹优化友好(§19.2 已详述)。多模态③、认知④通常弱(状态由 VIO/动捕可观)。
各谱契合理由: - 鲁棒 Tube ★★★★——差分平坦 + 扰动有界 + 状态可观,是 tube 的理想场;acados 上 quadrotor 是事实标准。 - 机会约束 ★★★★——CC 在航空航天本就是原生工具(Blackmore-Ono 的源头就是航天器),阵风的概率刻画天然契合。 - 分支 ★★★——只在"动态障碍/多机避让"时才有离散分叉,否则用不上。 - POMDP ★★★——仅"视觉 active perception/NBV"任务(主动找目标)才值得,否则杀鸡用牛刀。 - CVaR ★★★——gust 极端阵风、battery 耗尽的尾部值得管,但非主要矛盾。
一句话:无人机是"敢于不分层"的代表形态(§19.2 的"不是X而是Y")——单桶主导时,鲁棒/CC 单谱够用,套五层栈是过度设计。
A.3 机械臂:POMDP + 机会约束领先的"结构化"形态¶
不确定性特征:工位结构化、状态多可观,主要不确定在②概率(力矩/位置噪声、装配容差)+ 抓取场景的③多模态(抓稳/滑脱)+ 部分遮挡时的④认知(物体位姿)。
各谱契合理由: - POMDP ★★★★——抓取/装配的"先探一下力再决定"是 epistemic 主动消除的经典场,OPPT(含 ROS+Gazebo)是机械臂 POMDP 的专用抓手。 - 机会约束 ★★★——力控装配的容差是概率型,CC 给精确风险预算(§19.4 已详述),可认证需求契合。 - 鲁棒 ★★★——重复性任务(固定工位)的扰动有界,tube 适用。 - 分支 ★★★——人手意图协作、抓取成败分支时有用。 - CVaR ★★★——force/torque 超限的尾部值得管。
一句话:机械臂是"认知桶是否需主动观测"的分水岭形态(§19.3)——遮挡抓取要 POMDP,固定工位力控则机会约束/鲁棒足矣。
A.4 四足:优化型谱普遍偏弱(★★)的"混合动力学"形态¶
不确定性特征:核心难点是**接触切换的混合动力学**(腿离地/触地是离散事件,动力学在切换处不连续)。地形扰动是①集合,但混合性让经典优化型谱难用。
各谱契合理由(注意这里多是 ★★,是星表里的"洼地"): - 鲁棒 Tube ★★★——convex MPC(MIT Cheetah)能用,但接触切换让 RPI 不变集理论难直接套(§4.5 开放问题),多退而用经验收紧。 - 机会约束 ★★——混合动力学让 CC 的凸化困难,工程上少见。 - 分支 ★★——MPPI/DIAL-MPC 采样型方法在四足更主流,scenario-tree 优化用得少。 - POMDP ★★——四足的不确定多是 aleatoric 地形扰动(非 epistemic),且偏 RL+域随机路线,POMDP 信念树用得少。 - CVaR ★★★——fall recovery 的尾部值得管,分布 RL 在四足有应用。
一句话:四足是星表的"洼地行"——**接触切换的混合动力学**让所有依赖光滑动力学/不变集的优化型谱(鲁棒、机会约束、分支优化)都打折扣,工程主流转向采样型(MPPI/DIAL-MPC)和 RL+域随机。这解释了 §8.3 读表要点里"四足偏弱于优化型谱"的根本成因。
A.5 人形/loco-manip:鲁棒领先、复合度最高的"前沿"形态¶
不确定性特征:兼具四足的接触切换(①集合 + 混合)+ 操作的抓取多模态③ + 人机协作意图③ + 高维状态。复合度仅次于自动驾驶,但工程成熟度更低(前沿形态)。
各谱契合理由: - 鲁棒 ★★★★(人形)/★★★★(loco-manip)——whole-body NMPC(OCS2/Crocoddyl)是主抓手,tube 化在执行层有用。 - 分支 ★★★(人形)/★★★★(loco-manip)——loco-manip 的"抓取成败分支"需求强(§19.3 案例三)。 - 机会约束 ★★(人形)/★★★(loco-manip)——混合动力学限制,但操作层容差可用 CC。 - POMDP ★★(人形)/★★★(loco-manip)——loco-manip 抓遮挡物时认知桶变强。 - CVaR ★★★——摔倒/抓取失败的尾部值得管。
一句话:人形/loco-manip 是"复合度仅次于自驾、但工程更不成熟"的前沿形态——它继承了四足的混合动力学难点,又叠加了操作的多模态,是 §11 各开放张力(尤其 T5 复合爆炸)最集中的试验场。
本质洞察(形态维度的统一):把五大形态的星表理由合观,会发现"几颗星"背后只由**两个形态属性**决定——(1) 占了几个桶、各桶多强(决定哪些谱有用),(2) 动力学是否光滑可观(决定优化型谱能否用)。自动驾驶五桶全强且动力学光滑 → 全行高星;四足桶不算多但混合动力学不光滑 → 优化型谱集体打折成洼地;无人机单桶强且差分平坦最光滑 → 鲁棒/CC 双高。这两个属性,就是把"谱 × 形态"星表从"背结论"变成"能推导"的钥匙——给你一个没在表里的新形态(比如软体机器人、外骨骼),你也能用这两把尺子推出它的星表。这正是 §8.3 表格背后、本附录要传递的"对比综合"的终点:不是记住星表,而是掌握生成星表的两个维度。
附录 B:全篇章节关系图与阅读路径 ⭐⭐¶
本附录定位:这篇综述有 20 节 + 2 附录,横切五谱、纵贯类型学到前沿。本附录给一张"章节如何互相支撑"的关系图和三条针对不同读者的阅读路径,让你不必线性啃完,而能按需取用(呼应开篇"知识导航"的节奏提示)。
B.1 章节依赖关系图¶
把全篇章节按"谁是谁的地基"画成依赖图(箭头 = "建立在……之上"):
§1 类型学(五桶) ──┐
├──→ §8 对比矩阵 ──→ §13 小结(三次折叠)
§2 态度光谱 ──────┘ ↑ │
│ │ ↓
↓ │ §20 结语+自查
┌────────┬───────┼───────┬──────────┐ │
§3分支 §4鲁棒 §5机会 §6 POMDP §7 CVaR ─┘ (五条脉络喂给对比矩阵)
│ │ │ │ │
└────────┴───────┴────────┴──────────┘
│
┌──────────────┼──────────────┬─────────────┐
↓ ↓ ↓ ↓
§9 选型矩阵 §10 RL贯穿 §11 开放问题 §12 C++生态
│ │ │ │
↓ │ ↓ ↓
§19 全栈案例 ←───────┘ §18 失败模式 附录A 形态深析
│ │
└──────────→ §15陷阱 §16误诊 §故障手册 ←┘ (诊断三件套)
│
↓
§14 综合题 / §17 速查 / 附录B (检验与查阅)
读图:§1、§2 是全篇唯二的"根"(所有节都依赖它们);§3–§7 五条脉络是"主干",向上汇入 §8 对比矩阵;§8 再分叉出选型(§9/§19)、RL(§10)、前沿(§11)、工程(§12)四个应用方向;§13 是把 §8 再压缩的"顶";诊断三件套(§15/§16/故障手册)横切所有节做"反向检验"。整张图的形状是一个"沙漏"——五桶/态度收窄到对比矩阵(沙漏腰),再展开成应用与诊断(沙漏下半)。
B.2 三条阅读路径¶
不同读者按不同路径取用,无需线性全读:
| 读者类型 | 目标 | 推荐路径 | 跳过 |
|---|---|---|---|
| 赶时间的工程师 | 拿到任务会选谱 | §1 → §2 → §8 → §9 → §19 → 故障手册 | §3–§7 脉络细节、§10–§11 |
| 要选研究方向的博士生 | 找开放问题 | §1 → §2 → §8.2 → §10 → §11 → §18.3 → 附录A | §12 工程生态、§17 速查 |
| 系统学习者 | 看清整片森林 | 线性读 §1–§20 + 两附录 | 无(全读,§14 综合题作答) |
本质洞察(综述的"非线性"读法):教程通常要线性读(前置是后续的地基),但好的综述应当**支持非线性取用**——因为它的价值在"关系网"而非"知识链"。§B.1 的依赖图揭示:只要先吃透两个根(§1、§2)和沙漏腰(§8),其余各节都可按需跳读。这也是为什么本篇在每节开头都放"本节定位"、在关键处反复回指节号——它在主动支持你"哪里需要看哪里"的非线性阅读。一篇综述读得好不好,不在于你是否从头读到尾,而在于半年后遇到一个真实问题时,你能不能精准翻回那一节、那张表、那条本质洞察。这篇综述的全部结构设计(沙漏式依赖、三条路径、密集回指、速查附录),都是为了让那次"翻回来"尽可能快。
版本与维护¶
- 本篇定位:Part-U 不确定性规划专题的方向级综述(横切顶帽),与 U0–U5 深度教程(纵深)配套。
- 符号体系:全篇沿用 U0 总论符号(见 §17.2 统一符号表)。
- 回指约定:正文 §N.M 指本篇章节,UX 指
30_不确定性规划/下的深度教程章(回指地图见 §17.4)。 - 前沿时效:§11 开放问题与 §18.3 收敛线截至 2024–2026;新论文出现时,按 §17.3 的"奠基→可算→工程→融合"四段弧判断其在领域中的位置后增补。
- 活文档:依 R12,后续教学讨论中产生的新陷阱(并入 §15)、新选型案例(并入 §19)、新故障场景(并入 §16/故障手册)应回写本篇。
本篇与深度教程的分工,一句话收束:U0–U5 让你认识每一棵树,本篇让你看清整片森林——而森林的地图,只有"不确定性类型"和"违反态度"两根坐标轴。