想象一下,一个机器人正在杂乱的厨房里寻找一个苹果。它扫描了整个房间,但没有看到水果。人类会本能地检查桌子或柜台,因为我们知道苹果不会悬浮在半空中,也不会藏在烤面包机里。然而,机器人面临着一个巨大的挑战: 不确定性下的决策 。 它不知道苹果在哪里 (部分可观测性) ,并且它需要一个关于世界如何运作的模型来进行高效搜索。

在机器人技术和人工智能领域,我们在数学上将这个问题形式化为 部分可观测马尔可夫决策过程 (Partially Observable Markov Decision Processes,简称 POMDPs) 。 虽然 POMDPs 在理论上非常强大,但在现实世界中应用它们却极其困难。你通常需要手工设计世界模型 (物理规律、传感器噪声、概率) ,或者尝试从海量数据中学习它,而这往往是不可行的。

但是,如果我们能利用大型语言模型 (LLMs) 的“常识”推理能力来弥合这一差距呢?

在这篇文章中,我们将深入探讨 POMDP Coder , 这是一个来自麻省理工学院 (MIT) 和康奈尔大学的研究框架。该论文提出了一种新颖的方法: 我们不要求 LLM 直接控制机器人,而是要求 LLM 编写模拟世界的 概率代码 。 然后,将这个学习到的模型插入到一个严格的数学求解器中,以做出最佳决策。

让我们来看看这种混合方法是如何结合 LLM 的创造力与经典规划的可靠性的。


问题: 为什么不确定性如此难以处理?

要理解这篇论文的重要性,我们首先需要了解 POMDPs 令人头疼的地方。

POMDP 是一个用于建模代理 (Agent) 在环境中行动但无法直接观测状态的场景的框架。它包括:

  • 状态 (\(S\)) : 世界的真实状态 (例如,“苹果在抽屉里”) 。
  • 观测 (\(O\)) : 机器人传感器看到的内容 (例如,“我看到一个木制把手”) 。
  • 动作 (\(A\)) : 机器人可以做什么 (例如,“打开抽屉”) 。
  • 转移函数 (\(T\)) : 采取动作后状态如何变化。
  • 观测函数 (\(Z\)) : 给定状态下看到某种观测的概率。
  • 奖励函数 (\(R\)) : 代理想要实现的目标。

目标是找到一个策略 \(\pi\),使随时间推移的预期折扣奖励最大化。在数学上,这看起来像这样:

最大化 POMDP 中预期折扣奖励的公式。

代理维护一个 信念状态 (belief state) (\(b_t\)),即对所有可能状态的概率分布。随着它采取行动并看到新事物,它会更新这个信念。

瓶颈

如果拥有模型组件 (\(T\), \(Z\), \(R\) 等) ,上面的数学公式就能完美运行。

  1. 对于复杂的环境, 手工编码这些函数既繁琐又容易出错。
  2. 从零开始 学习 这些函数 (表格型学习) 需要极其庞大的数据量,因为代理必须探索每一种可能性来填补概率表。

这就是 POMDP Coder 介入的地方。


解决方案: POMDP Coder

研究人员提出,POMDP 的各个组件 (转移、观测等) 可以被建模为 简短的概率程序 。 这些是用代码 (使用 Python/Pyro 编写) 描述逻辑和不确定性的片段。

因为 LLMs 已经见过了数百万行代码和关于世界运作方式的大量文本,它们非常擅长生成这些程序。

架构

核心思想是一个迭代循环。LLM 充当假设 (代码) 的生成器,而现实世界充当验证器。

简短的替代文本和说明。 图 1: POMDP Coder 架构。注意这个循环: 经验输入到覆盖率分析 (Coverage Analysis) 中,该模块提示 LLM (GPT-4) 生成代码组件。这些组件构成了求解器 (Solver) 用来采取行动的 POMDP 模型。

该过程分为两个主要阶段: 模型学习在线规划

1. 学习模型 (“Coder”)

系统不尝试学习一张巨大的数字表,而是尝试学习模拟的 源代码。这被称为 概率程序归纳 (Probabilistic Program Induction)

代理从一组演示 (经验) 开始。然后它遵循以下循环:

  1. 提议 (Proposal) : 给 LLM 一个任务描述 (例如,“你在一个有熔岩的网格世界中”) 和 API 结构。它为初始状态、转移、观测和奖励函数生成 Python 代码。
  2. 评估 (覆盖率) : 系统根据真实数据检查生成的代码。它不仅检查语法错误,还检查逻辑矛盾。

论文引入了一个 覆盖率指标 (Coverage Metric) 。 它提出的问题是: 生成的代码是否对实际发生的事件分配了非零概率?

覆盖率指标的公式。

如果机器人向北移动并撞到了墙,但 LLM 的代码说向北移动 总是 成功的,那么该数据点的覆盖率为零。这是一个严重的错误。

  1. 细化 (Refinement) : 如果代码未能通过覆盖率测试,系统会提取模型失败的具体示例 (例如,“模型说向北移动有效,但数据显示位置没有改变”) 并将它们反馈给 LLM。然后 LLM “修复”代码。

这个循环不断持续,实际上是利用 LLM 来“调试”它对世界的理解,直到代码与现实相符。

2. 使用模型进行规划 (“Solver”)

一旦 LLM 编写了一个有效的 POMDP 模型,我们就不再需要 LLM 来做决策了。我们可以使用一个 信念空间规划器 (Belief-Space Planner)

代理使用学习到的代码来模拟可能的未来。由于状态是隐藏的,规划器维护一团“粒子” (对当前状态的猜测) 。它运行模拟以找到最小化特定成本函数的动作:

涉及奖励、风险和熵的规划器成本函数公式。

在这里,代理平衡三件事:

  • \(-\hat{r}\) : 最大化预期奖励。
  • \(-\lambda \log \hat{p}\) : 最小化“意外” (风险敏感度) 。
  • \(\alpha \hat{h}\) : 最大化熵 (信息增益/好奇心) 。

这使得机器人能够深思熟虑地行动: “我有 80% 的把握苹果在抽屉里,所以我将打开它。”


为什么要用代码?抽象的力量

你可能会问,为什么要生成 Python 代码,而不是直接用神经网络预测下一个状态?

答案是 泛化 (generalization)

考虑一个“熔岩”网格世界。表格型方法需要访问每一个方块才能知道熔岩会杀死你。神经网络需要许多例子来近似危险区域。 然而,LLM 可以写一条规则:

1
2
if next_cell == LAVA:
 return DEAD

这一条逻辑语句覆盖了 整个 地图。即使代理遇到了它从未见过的熔岩方块,逻辑依然成立。代码捕捉到了环境的 因果机制,而不仅仅是统计相关性。


实验结果

研究人员将 POMDP Coder 与几个基线进行了对比测试:

  • Tabular (表格型) : 传统的基于计数的学习。
  • Behavior Cloning (BC,行为克隆): 直接复制专家演示。
  • Direct LLM (直接 LLM) : 问 LLM “我下一步该采取什么行动?” (标准的“LLM Agent”方法) 。
  • Oracle (预言机) : 使用真实的、完美的模型 (性能上限) 。

模拟领域: MiniGrid

他们使用了 MiniGrid,这是一套需要记忆和探索的网格世界任务。

MiniGrid 环境的可视化,包括 Empty, Corners, Lava, Unlock 和 Rooms。 图 2: MiniGrid 环境。绿色方块是目标,红色三角形是代理。蓝色/灰色区域代表代理的信念——最初,它不知道地图的布局。

结果非常惊人。在像“Unlock” (你需要找到钥匙打开门) 或“Lava”这样复杂的环境中,传统方法惨遭失败。

比较不同方法在各个回合奖励上的条形图。 图 3: 性能比较。蓝色条 (Ours/我们的方法) 始终达到接近 Oracle (灰色) 的性能。注意“Direct LLM” (粉色) 在像 RockSample 或 Unlock 这样逻辑繁重的任务中表现挣扎,经常陷入循环。

关键结论: 直接 LLM 规划是不可靠的。它经常产生幻觉或忘记约束条件 (比如穿墙而过) 。相比之下,POMDP Coder 利用 LLM 编写 规则,但使用数学求解器来 执行 它们,从而产生了高得多的可靠性。

真实世界机器人技术: Spot 机器人

团队将该方法从模拟器带到了 Boston Dynamics 的 Spot 机器人上。任务是: 在房间里找一个苹果。

环境具有挑战性: 一个有橱柜的小房间和一个有桌子的大大厅。机器人必须依靠其视觉系统并移动摄像头来寻找物体。

真实机器人实验中均匀信念与学习信念的对比。 图 4: 真实世界实验。顶行显示一个小房间;底行显示一个大大厅。看最右边一栏 (“Learned Initial Belief”/学习到的初始信念) 。模型学习到苹果很可能在桌子/橱柜上,与认为苹果可能在任何地方的“Uniform” (均匀) 基线相比,大大缩小了搜索区域 (蓝点) 。

结果表明,POMDP Coder 比基线方法效率高得多。

显示真实世界实验成功率和奖励的表格。 表 1: 真实世界结果。与 Direct LLM 或行为克隆相比,POMDP Coder (Ours) 实现了高得多的成功率 (10/10) 。

表格型方法和行为克隆失败了,因为状态空间太大——它们无法从仅有的几个训练演示中进行泛化。Direct LLM 失败了,因为它在长视距的空间推理上很吃力。POMDP Coder 成功了,因为它学习了一条结构化规则: “物体通常由家具支撑”,并利用这条规则规划了高效的搜索。


结论与启示

这篇论文在基于模型的强化学习方面迈出了令人信服的一步。通过将 代码视为世界模型的通用表示 , 作者利用了 LLM 的结构化推理能力,同时避免了它们在执行过程中的幻觉问题。

优势总结:

  1. 数据效率: 它能从极少的例子中学习可泛化的规则 (不像表格型方法) 。
  2. 可解释性: 输出是 Python 代码。如果机器人犯了错,人类可以阅读代码并确切地看到 原因 (例如,转移函数中的一个 bug) 。
  3. 可靠性: 通过将规划工作卸载给专用的求解器 (而不是 LLM) ,系统避免了在关键决策过程中的“随机鹦鹉”问题。

局限性: 该方法目前假设 事后可观测性 (post-hoc observability) ——这意味着代理需要在回合结束后看到实际发生了什么来训练模型。它目前也只能在离散状态空间中运行。

然而,方向是明确的: 机器人推理的未来可能不是端到端的神经网络,而是 神经符号系统 (neuro-symbolic systems) , 其中 AI 编写控制机器人的程序。POMDP Coder 证明了 LLM 不仅仅是聊天机器人;它们是有能力的架构师,能够构建机器人理解我们世界所需的数学模型。