机器人学习的奖励模型,以及奖励为何会失败

手工设计的奖励在真实世界的操作中会失效。本文讲清原因,以及由偏好、示范与视频学习出来的奖励模型如何取代它们。

阅读约 6 分钟

有个任务听起来很简单:机器人把一个盘子放进碗架就给奖励。在仿真里你写一行代码,盘子归位奖励为一,否则为零,剩下的交给强化学习。可在真实机器人上,这行代码根本写不出来,因为系统里没有任何东西能可靠地告诉你「盘子归位了」。

这道鸿沟就是全部问题所在。强化学习需要每一步都有奖励,而对操作来说,奖励恰恰是你无法测量的那个东西。你能测关节角度。可你无法在不等于「已经解决了感知」的前提下,测出衬衫是否叠得整齐,或插头是否完全插入。

于是这个领域正在悄悄地把难点搬家。团队不再手写奖励,而是去学习奖励,从人类偏好里学,从示范里学,从视频里学。这改变了一支机器人团队真正需要的数据。而在看清什么取代了它之前,先弄明白手工设计的奖励为什么会失败,会很有帮助。

手工设计的奖励为什么会崩

奖励工程在游戏里表现得极好。分数涨了,奖励就涨。物理操作有三个性质,会打破这个干净的闭环。

奖励是不可观测的。成功是一句关于世界的陈述,比如杯子立着、是满的、放在杯垫上,而从原始传感器里读出它本身就是个困难的感知问题。要是你已经有了一个完美的成功检测器,那你差不多已经做出一半的策略了。

密集塑形会反噬。为了避免稀疏奖励,工程师会加入塑形项:靠近杯子给点奖励,对齐夹爪给点奖励。机器人于是会钻奖励字面意思的空子。一个策略会心安理得地在杯子旁边悬停,永远地收集「接近」奖励,这种行为被称为奖励作弊(reward hacking),在 Google DeepMind blog 等团队的强化学习研究中有充分记录。

接触让它变脆。力或时机的微小变化,就能把成功翻转为失败,所以为某个物体、某个位姿、某一天调好的奖励,很少能迁移。每个新任务都变成一个新的奖励调参项目。这撑不起一台人形机器人所需要的成千上万种技能。

奖励函数,正是机器人强化学习里大部分人力偷偷藏身的地方,而手写它撑不过一个示范。

学习出来的奖励模型做了什么

学习出来的奖励模型,用一个训练得到的函数取代手写规则,去给一个状态或一条轨迹打分。喂给它一个观测,它返回一个数字。策略去优化这个学习出来的分数,而不是人写的公式。分数从哪里来?主要有三个来源。

人类偏好

给一个人看机器人尝试某任务的两段短片,问哪一段更好。收集成千上万条这样的比较,再拟合出一个与人类排序一致的奖励模型。这正是调校大语言模型时用过的偏好学习配方,只是被用到了物理行为上。它绕开了不可观测的问题,因为是人直接判断成败。

代价是真实存在的。每一次比较都是一个人的判断,而对于凌乱的、进行到一半的片段,评分者会有分歧,所以标签是有噪声的。但噪声会在成千上万次判断中被平均掉,模型最终会像人真正打分那样去评价行为,而不是像工程师猜测的那样。

把示范当作隐式奖励

如果你有专家示范,就可以反推出让这些示范显得最优的那个奖励,这就是逆强化学习的思路。这里数据本身,也就是人在示范任务,携带了奖励信号。像 Berkeley BAIR blog 这样的学术团队,多年来一直推动这条路线。

把视频和基础模型当作裁判

大型视觉-语言模型可以被提示去判断某一帧是否显示任务成功,从而把一个通用模型变成一个粗略的奖励函数。它有噪声,但能扩展,而且不需要针对每个任务做工程。研究通用物理智能体的团队,包括 NVIDIA GEAR Lab researchPhysical Intelligence blog,更多依赖学习出来的、基于模型的信号,而不是手工调的奖励。

表 1:机器人操作的奖励信号来源
奖励来源所需数据可扩展?主要弱点
手工设计奖励每个任务的工程师时间奖励作弊、成功不可观测
人类偏好成对短片比较中等标注成本、评分者一致性
从示范做逆强化学习专家示范中等对示范质量敏感
VLM 当裁判一个有能力的视觉-语言模型有噪声、可被钻空子

这对你采集的数据意味着什么

从「写奖励」到「学奖励」的转变,把负担压到了数据上,也改变了哪种数据有价值。如果你的奖励来自偏好,你就需要成对的比较,尤其需要用来和成功作对照的失败。如果它来自示范,示范质量就成了奖励的质量。无论哪种,只有干净成功的数据集,都不如一个还捕捉了近失误、纠偏和明确失败的数据集,因为奖励模型是从好与坏两侧来学习它们之间边界的。

还有一个更微妙的平衡问题。一个只在完美运行上训练的奖励模型,永远学不到一个小失误的代价,因此无法把策略从边缘拉回来。你需要一个分布:有把握的成功、勉强的成功和诚实的失败,每一种都打上标签。而策划出这样的分布,是一个早在任何训练运行开始之前就已做出的数据采集决定。

这是当前机器人研究中反复出现的主题,在 arXiv Robotics (cs.RO) 上有大量索引。奖励、策略和数据,不是可以分开处理的问题。决定了你将如何为行为打分,你就已经决定了一半要采集什么。

奖励如今是一个数据问题

奖励在真实世界里失败,原因说起来容易、修起来难:你想奖励的那个东西,正是你看不见的那个东西。学习出来的奖励模型并没有消除这个困难。它只是把它挪了位置,从工程师的公式挪进一个由人类判断和示范构成的数据集里。这是进步,因为数据可扩展,而手工调参不行。它也意味着奖励函数不再是一次训练运行里的脚注。它是一个数据问题,谁采集到了对的比较和失败,谁就握住了其中的一块。

reward-modelreinforcement-learningmanipulationreward-hacking

来源