Eureka:让 GPT-4 替你写 reward 函数,83% 任务超过人类专家
🎯 为什么重要:reward 设计是 RL 的「最大人工瓶颈」
RL 算法越来越强(PPO、SAC),但reward 函数仍然几乎只能靠人。两个老大难:
① 太稀疏学不出来(如「最终成功 +1,其余 0」);
② 太密集会被 hack(如「向前给 reward」→ agent 原地躺倒蹬腿刷分)。
每个任务都要研究者反复试错几周,经验不可复现,换个机器人要重来。
Booth et al. 2023 的调查给出了量化证据:92% 的 RL 研究者承认要手动试错,89% 承认 reward 不最优。NVIDIA 的问题:GPT-4 既然会写代码、会推理,能不能让它直接写 reward 函数?
💡 核心思想:进化搜索 + reward reflection
Eureka 是一个 LLM 进化搜索 + RL 训练闭环(论文 Alg.1)。关键是要分清两个不同的「reward」:
• $F$:ground-truth task metric,如稀疏 success 指示——只用于评估,不能直接训(太稀疏学不出来)。
• $R$:LLM 生成的 dense shaped reward——喂给 PPO 训练。
Eureka 用 $F$ 选最好的 $R$,但不能用 $F$ 直接训 RL。
🛠️ 三个组件让 GPT-4 真写出好 reward
| 组件 | 心智 | 为什么必要 |
|---|---|---|
| ① Environment as Context | 把环境源代码 M(抠掉已有 reward,只保留 expose state/action 变量的代码片段)作为 LLM 的 context | reward 是 state/action 变量的函数,环境代码已经把变量 expose 出来——LLM 不需要环境 API、不需要任务特定 prompt template,零样本即可生成 plausible reward |
| ② Evolutionary Search | 每轮采 K=16 个候选 → 跑 RL 评估 fitness → 选 best 进入下一轮;5 independent runs × 5 iteration | 单次采样全 buggy 的概率高,但 i.i.d. 采 16 个让全 buggy 概率指数下降;迭代 mutation(改 component 超参 / 改函数形式 / 加新 component)让 reward 越来越准 |
| ③ Reward Reflection | 要求 LLM 把 reward 拆成命名 component;训练中 track 每个 component 的标量值 + fitness $F$,用文本汇总反馈 | 只给 fitness 标量不够——LLM 不知道「为什么这个 reward 好/差」。Reflection 提供 fine-grained credit assignment,论文实测去掉 reflection 平均掉 28.6% |
「我的 reward 总分 0.6」——LLM 看不出问题在哪。但「forward_vel=0.8(好)/ alive_bonus=0.3(差)/ energy_penalty=-0.05(合理)」就立刻知道「alive_bonus 太弱,agent 死得太多」——LLM 能针对性调这个 component 的系数。这就是 reward reflection 给的 fine-grained credit assignment。
评估环境(Sec.4)
| Benchmark | 机器人 | 任务 |
|---|---|---|
| Isaac | 覆盖 quadruped、bipedal、quadrotor、cobot arm、dexterous hands | 9 个原 IsaacGym 环境 |
| Dexterity | 两只 Shadow Hand | 20 个 bi-manual 任务(handover、转杯 180° 等) |
| 合计 | 10 种机器人 | 29 个任务 |
关键抗作弊设计:这两个 benchmark 在 GPT-4 知识截止(2021.09)前后发布,GPT-4 不太可能记忆 → 测的是真正的生成能力而非背诵。
📊 关键结果:83% 任务超过人类专家 + 解锁 pen spinning
| 维度 | 数字 |
|---|---|
| 覆盖任务 | 29 个任务(Isaac 9 + Dexterity 20),10 种机器人 |
| match/exceed 人类专家 | 83% 任务(Isaac 全部 + Dexterity 15/20) |
| 平均 normalized improvement | +52% |
| vs L2R baseline | L2R 即使有 human reward 组件作 API 仍显著落后,特别在高维 Dexterity 任务 |
| 去掉 reward reflection | Isaac 平均掉 28.6% |
| 去掉 evolutionary search | 用 32 samples 一次性生成 < 完整 5-iter evolutionary |
| GPT-3.5 替 GPT-4 | 性能下降,但 Isaac 大部分仍 match/exceed human |
Pen spinning 突破(Sec.4.3,论文最 impressive 的 demo)
第一次让五指 Shadow Hand 实现 rapid pen spinning(在预定义旋转配置中转笔,越多圈越好)。这个任务此前需要大量专家工程,Eureka + curriculum learning 直接解锁:
- Stage 1:用 Eureka 生成「re-orient pen to random target」的 reward,训出 pre-trained policy
- Stage 2:用同一 Eureka reward 做 fine-tune,目标是连续达到 pen-spinning 配置序列
- 结果:fine-tuned policy 成功连续转很多圈;pre-trained 或 scratch 都连一圈都转不完
🌐 在领域中的位置
Eureka 是 T03 Reward 设计演化的第三次转折「LLM 自动写 reward」的开山作。它揭示了 reward 设计的「黑魔法」其实是可以被语言描述、被代码生成的——LLM 不需要真懂物理,只需要在代码空间搜索。后续 DrEureka(把 reward + domain randomization 一起让 LLM 写,支撑 sim-to-real)、VLM 反馈 reward(用视觉判断动作自然度)、RLHF for VLA 都源自这个思想。关联线索:T03 Reward 设计的演化。
❓ 常见误区
Eureka 是 RL 算法吗?
不是。Eureka 不动 RL 算法本身——PPO 用各任务原 author 调好的超参,论文 §4.2 明示「只换 reward 不动 RL」。Eureka 是生成 reward 函数的元算法,跑在 RL 之外,做的是 reward 设计的自动化。
它用什么 LLM?换 GPT-3.5 行不行?
论文用 GPT-4 gpt-4-0314 variant(§4 明示)。换 GPT-3.5 性能会下降,但 Isaac 大部分任务仍 match/exceed human——说明算法不依赖最强 LLM。开源 LLM 效果会更差,但方法可迁移。
「83% 超过人类」是不是因为 GPT-4 见过这些任务?
不是。论文 §4 故意选 IsaacGym + Dexterity benchmark——它们在 GPT-4 知识截止(2021.09)前后发布,GPT-4 不太可能 memorize 它们的 reward。测的是真正的代码生成能力。
那它能直接给真机用吗?
不能。Eureka 只在仿真里验证。真机部署要解决 sim-real gap——这正是后续 DrEureka(2024) 的工作,它把 reward 和 domain randomization 参数一起让 LLM 写,支撑了四足 / Allegro 真机 sim-to-real。