里程碑
机器人Dexterous manipulation (Isaac Gym)

Eureka:让 GPT-4 替你写 reward 函数,83% 任务超过人类专家

Yecheng Jason Ma, William Liang, Guanzhi Wang 等(NVIDIA + UPenn + Caltech + UT Austin)。ICLR 2024 / arXiv:2310.12931。 项目页 · 开源 · LLM4Roboticsreward design 线索 T03

🧠 一句话心智模型:设计 reward 函数是 RL 最熬人的「黑魔法」——一个调查里 92% 的 RL 研究者承认要反复试错、89% 承认写出来的 reward 不够好。Eureka 的洞察是:reward 是 state/action 变量的函数,环境源代码本来就 expose 了这些变量——那就把环境代码直接喂给 GPT-4,让它写 reward 代码,再跑 RL 评估、把结果反馈给它,循环 5 轮。29 个任务里 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 研究者凭经验 + 物理直觉 → 草拟 reward → 跑 RL → 不对 → 改几行 → 再跑(每次几小时) ❌ 几周才能收敛,且经验不可复现 Eureka:GPT-4 写 reward ✅ 环境代码 + 任务描述 → GPT-4 → 一次生成 16 个候选 → 每个跑 PPO + 评估 → 把分数反馈给 GPT-4,迭代 5 轮 ✅ 83% 任务超过人类专家
图 1:reward 设计的两种范式。人类凭直觉反复试错;Eureka 把它变成「LLM 进化搜索 + RL 训练」的自动化闭环。

💡 核心思想:进化搜索 + reward reflection

Eureka 是一个 LLM 进化搜索 + RL 训练闭环(论文 Alg.1)。关键是要分清两个不同的「reward」:

关键区分:$F$(fitness)和 $R$(reward)是不同的。
• $F$:ground-truth task metric,如稀疏 success 指示——只用于评估,不能直接训(太稀疏学不出来)。
• $R$:LLM 生成的 dense shaped reward——喂给 PPO 训练
Eureka 用 $F$ 选最好的 $R$,但不能用 $F$ 直接训 RL。
GPT-4 (gpt-4-0314) 输入: • 任务描述 l • 环境源代码 M(抠掉 reward) • 上一轮反馈(reflection) 一次采 K=16 个候选 每个都是可执行 Python: def reward(env): return {r1: ..., r2: ...} (命名 component) Isaac Gym + PPO 每个 reward 跑 5 个 PPO seed 每 seed 取 10 checkpoint 最大值 → fitness F(score / 成功率) PPO 超参不动(原 author 的) 选 best(argmax F)→ R_Eureka 反馈:每个 component 数值 + F + textual summary → reward reflection 下一轮 mutation prompt 共 N=5 iteration × 5 independent runs / environment
图 2:Eureka 闭环。GPT-4 一次采 K=16 个候选 → 每个跑 PPO 评估 → 选 best → reward reflection 反馈 → 进入下一轮 mutation。共 5 轮迭代 × 5 random restarts。

🛠️ 三个组件让 GPT-4 真写出好 reward

组件心智为什么必要
① Environment as Context环境源代码 M(抠掉已有 reward,只保留 expose state/action 变量的代码片段)作为 LLM 的 contextreward 是 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 reflection 是点睛之笔?
「我的 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 hands9 个原 IsaacGym 环境
Dexterity两只 Shadow Hand20 个 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 baselineL2R 即使有 human reward 组件作 API 仍显著落后,特别在高维 Dexterity 任务
去掉 reward reflectionIsaac 平均掉 28.6%
去掉 evolutionary search用 32 samples 一次性生成 < 完整 5-iter evolutionary
GPT-3.5 替 GPT-4性能下降,但 Isaac 大部分仍 match/exceed human
关键洞察:Eureka 不是「在某一个任务上赢了」,而是在 29 个差异很大的任务上一致地赢。这说明赢的不是某个 trick,而是「让 LLM 在代码空间进化搜索 reward」这个范式选择本身。论文还发现:任务越难,Eureka reward 与人类 reward 越不相关——意味着人类在难任务上写的 reward 离最优更远,LLM 能发现反直觉的 reward 设计原则。

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 都连一圈都转不完

🌐 在领域中的位置

手动 reward engineering(92% 研究者试错) L2R(Yu 2023,受限于模板) Eureka(GPT-4 进化搜索 + reflection)⭐ DrEureka(LLM 写 reward + DR,sim-to-real)

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。