⏱ ~21 min
里程碑
⭐ 为何重要

NVIDIA Ma 等的 Eureka:用 GPT-4 进化式生成 reward function 代码,结合 in-context feedback 在 Isaac Gym 29 个开源任务上自动超越人类设计的 reward。它是『LLM 自动 reward design』范式的奠基,直接催生了 DrEureka(LLM sim-to-real)、Text2Reward、VLN-RL 等一整条 LLM-as-robotics-engine 谱系,是 T03(Reward 设计演化)链『从手工 → motion prior → LLM 自动』三段式的第三段起点。

建立在
  • LLMs as coders
  • Isaac Gym RL
催生
机器人Dexterous manipulation (Isaac Gym)

Eureka: Human-Level Reward Design via Coding Large Language Models

作者 / 机构:Yecheng Jason Ma, William Liang, Guanzhi Wang, De-An Huang, Osbert Bastani, Dinesh Jayaraman, Yuke Zhu, Linxi "Jim" Fan, Anima Anandkumar(NVIDIA / UPenn / Caltech / UT Austin)
发表:ICLR 2024(arXiv 2023.10)
arxiv:2310.12931 · 代码:github.com/eureka-research/eureka · 项目页:eureka-research.github.io
在线索中的位置:属于 T03「Reward 设计的演化」,是第三次转折「LLM 自动写 reward」的开山作
一句话定位:第一次让 LLM(GPT-4)自动生成 reward 函数代码,在 29 个任务中的 83% 任务上达到或超过人类专家手写——reward 设计的「黑魔法」开始被自动化。

动机

强化学习最痛苦的环节是设计 reward 函数:

  • 太稀疏学不出来,太密集会被 hack
  • 每个任务要研究者反复试错几周
  • 经验不可复现,换个机器人要重来

NVIDIA 的 question:GPT-4 既然会写代码、会推理,能不能让它直接写 reward 函数

方法核心

Eureka 是一个 LLM 进化搜索 + RL 训练闭环(论文 Alg. 1,三组件:environment as context + evolutionary search + reward reflection)。

形式化:Reward Generation Problem(论文 Def. 2.1)

论文先把 reward design 形式化成 RDP(Reward Design Problem):$\mathcal{P}=\langle M, R, \mathcal{A}_M, F\rangle$

  • $M=(S,A,T)$:环境(状态/动作/转移)
  • $R$:reward 函数空间
  • $\mathcal{A}_M(\cdot): R\to\Pi$:RL 算法,给定 reward 输出 policy $\pi$
  • $F:\Pi\to\mathbb{R}$:fitness function——只能通过 policy query 评估(即用 ground-truth reward 跑 policy 算分数)

Eureka 的目标:输出 reward 代码 $R$,让 $\mathcal{A}_M(R)$ 训出的 policy 在 $F$ 上得分最高,即 $\max_R F(\mathcal{A}_M(R))$。

⚠️ 关键:$F$ 和 $R$ 是不同的——$F$ 是 ground-truth task metric(如稀疏 success 指示),用于评估;$R$ 是 LLM 生成的 dense shaped reward,喂给 PPO。Eureka 用 $F$ 选最好的 $R$,但不能用 $F$ 直接训 RL(太稀疏)。

组件 1 · Environment as Context(论文 Sec. 3.1)

LLM 输入 = 任务描述 $l$ + 环境源代码 $M$抠掉已有 reward 代码,只保留 expose state/action 变量的代码片段,自动抽取脚本处理——见 App. D)。这是「reward 是 state/action 变量的函数」的直接利用:环境代码已经把 state 变量 expose 出来,LLM 不需要环境 API、不需要任务特定 prompt template。

LLM 输出 = 可执行 Python reward 代码,要求把 reward 拆成多个命名 component用 dictionary 返回(关键设计——见组件 3)。零样本即可生成 plausible reward。

组件 2 · Evolutionary Search(论文 Sec. 3.2,精确流程

每轮采样 K 个 i.i.d. reward 候选,跑 RL 评估 fitness,选最好的进入下一轮。论文精确超参:

超参值(论文 Sec. 3.2)
每轮 batch size K16
搜索 iteration N5
每个环境的 random restart 数5 independent runs

精确算法(Alg. 1):


for n in 1..N:
  R_1,...,R_K ~ LLM(l, M, prompt)  # K=16 i.i.d. reward candidates
  s_i = F(R_i) for i in 1..K       # 每个 reward 训 RL,跑 fitness
  best = argmax(s_1,...,s_K)
  prompt += Reflection(R_best^n, s_best^n)  # reward reflection 反馈
  R_Eureka = R_best^n if s_best^n > s_Eureka  # 更新全局最优
return R_Eureka
  • 首轮($n=1$):用 initial prompt 采 K=16 个 zero-shot 奖励。论文实测:「sampling just a modest number of samples (16) contains at least one executable reward code in the first iteration」——i.i.d. 采样让全 buggy 的概率指数下降。
  • 后续轮($n\geq 2$):in-context reward mutation——把上一轮 best reward + reward reflection + mutation prompt 喂回 LLM,再采 K=16 个改进版。论文 Fig. 3 列出三种 mutation 类型:① 改 component 超参;② 改 component 函数形式;③ 加新 component。
  • 5 independent runs per environment:standard random restart 防止局部最优。

组件 3 · Reward Reflection(论文 Sec. 3.3)

只给 fitness 标量反馈不够——LLM 不知道「为什么这个 reward 好/差」。Reward reflection 解决此问题:

  • 因为 reward 代码被要求拆成命名 component,reflection 能 track 训练中每个 component 的标量值。
  • 反馈 = 在中间 policy checkpoint 记录每个 reward component 的 scalar 值 + task fitness $F$ 的值,用文本汇总喂回 LLM。
  • 论文指出 fitness $F$ 缺 credit assignment(不知道哪个 component 起作用),reflection 提供 fine-grained 信号。

Policy Learning(论文 Sec. 4.2)

每个 final reward 用同一套 PPO + 同一 task-specific 超参(IsaacGym/Dexterity 公开实现,原任务作者调过参)。每个 reward 跑 5 个 independent PPO run,从 10 个固定间隔 checkpoint 中取最大 task metric 平均。Fitness $F$:

  • Isaac 任务:human-normalized score $\frac{\text{Method}-\text{Sparse}}{\text{Human}-\text{Sparse}}$
  • Dexterity 任务:binary success rate

评估环境(论文 Sec. 4 Environments)

  • 10 种机器人 + 29 个任务,全部 IsaacGym 实现
  • Isaac:9 个原 IsaacGym 环境(quadruped, bipedal, quadrotor, cobot arm, dexterous hands)
  • Dexterity:20 个 bi-manual 任务(Chen et al. 2022,两只 Shadow Hand 做 handover、转杯 180° 等)
  • 关键抗作弊设计:这些 benchmark 在 GPT-4 知识截止(2021.09)前后发布,GPT-4 不太可能记忆 → 测的是真正的生成能力而非背诵。

为什么重要

1. 83% 任务达到或超过人类专家(最关键的实验结论,论文 Sec. 4.3)

29 个任务(10 种机器人,IsaacGym + Dexterity benchmark) 上:

  • Eureka 在 83% 的任务上达到或超过 human-expert 手写 reward(论文 abstract + Sec. 4.3:Isaac 全部达标 + Dexterity 15/20)。
  • 平均 normalized improvement = 52%(abstract)。
  • L2R baseline(Yu et al. 2023,给 L2R 额外提供 human reward 组件作为 API 优势)仍显著落后,特别在高维 dexterity 任务上。
  • GPT-3.5 替换 GPT-4:Eureka 仍能 match/exceed human on most Isaac 任务,说明算法不依赖最强 LLM。

Pen spinning 突破(论文 abstract + Sec. 4.4):第一次让五指人形手实现 rapid pen spinning(在预定义旋转配置中转笔,越多圈越好)。Eureka + curriculum learning 解锁此前需大量专家工程的任务。

Evolution 消融(论文 Fig. 5):去掉 evolution(用 32 samples 一次性生成,不分迭代)显著差于完整 5-iter evolutionary search——证明迭代 mutation 的必要性。

2. 揭示了 reward 设计的「可程序化」本质

Eureka 成功说明:reward 设计的「黑魔法」其实是可以被语言描述、可以被代码生成的。LLM 不需要真懂物理,只需要在代码空间里搜索。

3. 开创了「LLM 作为 RL 工程助手」方向

后续 DrEureka(把 reward + DR 参数一起让 LLM 写,支撑 sim-to-real)、VLM 反馈 reward(用视觉判断动作自然度)、RLHF for VLA(reward 微调 VLA)都源自这个思想。

局限

  1. 生成的 reward 不一定能 sim-to-real:Eureka 只在仿真里验证。真机部署要解决 sim-real gap——这是 DrEureka(2024)的工作。
  2. 需要明确任务描述:LLM 要知道「在做什么任务」。对模糊任务(如「自然地走路」)效果差。
  3. 物理直觉仍弱:对接触摩擦、形变这类需要物理理解的 reward,LLM 容易写出看起来对但实际不 work 的代码。
  4. 算力成本:每轮要跑 K 个 RL 训练 × N 轮,算力消耗不小。

复现要点

  • 复现门槛:⭐⭐⭐
  • 官方代码 github.com/eureka-research/eureka,基于 IsaacGym(Makoviychuk et al. 2021)+ PPO。
  • LLM 用 GPT-4 gpt-4-0314 variant(论文 Sec. 4 明示)。可替换 GPT-3.5(性能下降但 match human on most Isaac)/ 开源 LLM(效果会差一些)。
  • 关键超参(论文 Sec. 3.2 + 4.2):K=16 候选/iterationN=5 iteration/run5 independent runs/environment。每个 final reward 跑 5 个 PPO seed,取 10 个 checkpoint 平均。
  • PPO 超参用各任务原 author 调好的,不改(论文 Sec. 4.2 明示,体现「只换 reward 不动 RL」的干净对比)。
  • 推荐起点:先在简单任务(如 ant/cheetah locomotion)跑通,再挑战 dexterity。

相关

  • 建立在:LLM 代码生成能力、Isaac Gym 大规模 RL、reward shaping 理论
  • 引出:DrEureka(LLM 写 reward + DR,支撑 sim-to-real)、VLM reward feedback、RLHF for VLA
  • 本仓库线索:T03 Reward 设计的演化 第三次转折
  • 本仓库概念:C-sim2real-methods.md(DrEureka 把 reward 和 DR 绑定)