深度⏱ ~3 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 自动』三段式的第三段起点。

机器人Dexterous manipulation (Isaac Gym)
📍 演进位置
建立在
  • LLMs as coders
  • Isaac Gym RL
催生

论文:Ma, Liang, Wang, ..., NVIDIA / Caltech / UPenn / UTS. Eureka: Human-Level Reward Design via Coding Large Language Models. ICLR 2024(2023.10 arXiv 首发). arXiv:2310.12931. 🌐

一句话直觉

让大模型自动写强化学习奖励函数

写得比人好。

Eureka 之于奖励设计,像 AI 自动写菜谱。

不必大厨手写反复试,进化搜索几轮就超师傅。

是什么·为什么

要解决的问题:强化学习里最痛苦的是写 reward 函数。

reward 是给机器人动作打分的规则。

太稀疏学不出来;太密集会被策略钻空子。📎

以前每个任务都要人工反复试错几周。

老办法:人工 reward design。

研究员手写 reward 代码,反复调权重。

经验不可复现,换个机器人要重来。📎

Eureka 的转身:让 GPT-4 自动生成 reward 代码。

进化搜索几轮,质量超过人类专家。📎

Eureka 之于 reward 设计,就像 AI 自动写菜谱。

不必大厨手写反复试。

让 AI 出 16 个食谱,做出来尝尝,反馈改进,几轮就超师傅。

方法核心(大白话):让 GPT-4 写 reward 函数代码。

Step 1,告诉它任务是什么,再把仿真环境的源代码喂给它。

环境代码里把 reward 那段抠掉。📎

Step 2,每轮让 LLM 一次出 16 个候选 reward。

每个 reward 都是一段可执行的 Python 代码。

用每个 reward 各训一个 RL 策略,跑出真实任务分数。📎

Step 3,挑出分数最高的那个 reward。

把它每个"成分"的打分细节反馈给 LLM。

让 LLM 知道"哪部分起作用、哪部分拖后腿"。📎

Step 4,重复 5 轮。

最后挑全局最优的 reward。📎

关键区分:F 和 R

F 是真实任务分数(如成功没有)。

它很稀疏,不能直接训 RL。

R 是 LLM 写的稠密 reward。

训 RL 用的才是 R。

Eureka 拿 F 挑最好的 R。📎

为什么 LLM 能写出来:reward 本质是状态和动作的函数。

环境代码已经把这些变量暴露出来。

LLM 不需要环境 API、不需要任务特定的提示模板。📎

你会看到:29 个任务上,83% 达到或超过人类专家手写。

平均提升 52%。📎

第一次让五指人形手学会快速转笔。📎

最深局限:sim-only

Eureka 只在仿真里跑通。

真机还有 sim-real gap 没解决。

更要命的是 F 这个「真任务分数」。

benchmark 里 F 是自带的。

真任务里得自己先手写一个 F。

这是最深的实践门槛。📎

怎么做

核心机制·三组件闭环📎

环境作上下文 + 进化搜索 + reward 反思。

组件 1:环境作上下文

LLM 输入 = 任务描述 l + 环境源代码 M(抠掉已有 reward 代码,只保留暴露 state/action 变量的片段)。

LLM 输出 = 可执行 Python reward 代码。

关键约束:要求把 reward 拆成多个命名 component,用 dictionary 返回。

这一步是为了组件 3 的反馈能精细到每个成分。📎

组件 2:进化搜索

每轮采 K=16 个独立 reward 候选,跑 RL 评估 fitness,选最好的进入下一轮。📎

  • 首轮:用初始 prompt zero-shot 采 16 个 reward。
  • 后续轮:把上一轮最好的 reward + reward 反思 + mutation prompt 喂回 LLM,再采 16 个改进版。
  • mutation 三种类型:改 component 超参;改 component 函数形式;加新 component。
  • N=5 轮迭代 + 5 个独立 random restart 防局部最优。

组件 3:reward 反思

只给 fitness 标量反馈不够——LLM 不知道"为什么好/差"。

因为 reward 代码被拆成命名 component,反思能 track 训练中每个 component 的标量值。

反馈 = 每个成分的标量值 + task fitness F 的值,文本汇总喂回 LLM。📎

关键区分:F vs R

F 是 ground-truth task metric(如稀疏 success 指示),用于评估 reward 好坏。

R 是 LLM 生成的 dense shaped reward,喂给 PPO 训练📎

Eureka 用 F 选最好的 R,但不能用 F 直接训 RL(太稀疏)。

Policy 学习

每个 final reward 用同一套 PPO + 各任务原 author 调好的超参(不改 RL)。

每个 reward 跑 5 个 PPO seed,从 10 个 checkpoint 中取最大 task metric 平均。📎

Fitness F:Isaac 任务用 human-normalized score;Dexterity 任务用 binary success rate。

常见误区(先抛一个,完整版见末尾):"Eureka 直接用 ground-truth reward 训 RL 吧?"

错。F 只用来评估 reward 好坏。

训 RL 用的是 LLM 生成的 dense shaped reward R

F 太稀疏(如 success 指示),直接喂 PPO 学不出来。

深度

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

  • 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 不太可能记忆 → 测的是真正的生成能力,不是背诵。

关键结果(论文 Sec.4.3)📎

  • 在 29 个任务上,Eureka 83% 达到或超过 human-expert 手写 reward(Isaac 全部达标 + Dexterity 15/20)。
  • 平均 normalized improvement = 52%
  • L2R baseline(Yu et al. 2023,给 L2R 额外提供 human reward 组件作为 API 优势)仍显著落后,特别在高维 dexterity 任务上。

Pen spinning 突破📎

第一次让五指人形手实现 rapid pen spinning(在预定义旋转配置中转笔,越多圈越好)。

Eureka + curriculum learning 解锁此前需大量专家工程的任务。

关键消融📎

  • 去掉 evolution(用 32 samples 一次性生成,不分迭代)显著差于完整 5-iter evolutionary search——证明迭代 mutation 的必要性。
  • GPT-3.5 替换 GPT-4:Eureka 仍能 match/exceed human on most Isaac 任务——算法不依赖最强 LLM。
  • 去掉 reward reflection:性能下降,证明精细 component-level 反馈的价值。

算法精确流程(Alg. 1):📎


for n in 1..N=5:
  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, s_best)   # reward reflection 反馈
  R_Eureka = R_best if s_best > s_Eureka # 更新全局最优
return R_Eureka

LLM 超参(论文 Sec.4 明示)📎

GPT-4(gpt-4-0314 variant);K=16 候选/iteration;N=5 iteration/run;5 independent runs/environment。

局限

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

研究者视角

图谱定位:Eureka 是 T03 reward 设计演化的第三次转折·开山作——"LLM 自动写 reward"。📎

reward 设计的"黑魔法"第一次被程序化。

LLM 不需要真懂物理,只需要在代码空间里搜索。

reward 设计演化的脉络:

  • 手工 reward(legged_gym, DeepMimic 谱系):研究员手写 + 反复调权重。
  • 从数据学 rewardAMP, RLHF):判别器 / 偏好模型从演示或人类反馈学。🌐
  • Eureka(2023):LLM 直接生成 reward 代码,无判别器、无演示。
  • DrEureka(2024):Eureka 的 sim-to-real 升级版,reward + DR 一起让 LLM 写。

建立在

  • LLM 代码生成能力(GPT-4)
  • Isaac Gym 大规模 RL 并行
  • reward shaping 理论

催生

  • DrEureka(arXiv:2406.01967):reward + DR 联合 LLM 设计,第一次 LLM reward 支撑真机部署。🌐
  • VLM 反馈 reward:用视觉判断动作自然度。
  • RLHF for VLA:reward 微调 vision-language-action 模型。

Open problems

  1. sim-to-real gap:Eureka 只在仿真,真机部署要解决 gap——DrEureka 部分解决但仍有限。
  2. 物理直觉:接触/摩擦/形变 LLM 写不准。能否引入物理仿真反馈让 LLM 校正,仍开放。
  3. 任务描述模糊性:对"自然地走路"这种主观任务效果差。能否用人类反馈迭代细化任务描述,是开放方向。[未确认]

常见误区

"Eureka 用 ground-truth reward 训 RL" —— 错。

F 是评估 reward 好坏的 ground-truth task metric(如稀疏 success),不直接喂 PPO。

训 RL 用的是 LLM 生成的 dense shaped reward R

Eureka 用 F 选最好的 RFR 是不同的东西。📎

"Eureka 是单次生成" —— 错。

是 5 轮进化搜索 × 每轮 16 个候选,外加 5 个 random restart。

论文消融明确:去掉 evolution 显著变差。

迭代 mutation 是 Eureka 超越人类的关键之一。📎

"Eureka 解决了 sim-to-real" —— 错。

Eureka 只在仿真里验证。

真机部署要解决 sim-real gap,这是 DrEureka(2024)的工作。

Eureka 是 reward 自动化的开山,DrEureka 才把 reward + DR 一起自动化到能 sim-to-real。📎

"必须用 GPT-4" —— 部分错。

论文用 GPT-4(gpt-4-0314),但替换 GPT-3.5 仍能 match/exceed human on most Isaac 任务。

算法不依赖最强 LLM;用更弱 LLM 性能会下降但仍可用。

进化搜索 + 反思的算法骨架比 LLM 本身更强。📎

检查点

Q1

强化学习里写 reward 为什么这么痛苦?请说出两个典型的坑(提示:想想 reward 的"密度")。

💡 参考答案

  • 坑一·密度:reward 太稀疏(如只有成功才有分)→ 策略学不出来;太密集(每一步都打细分的分)→ 容易被策略钻空子(reward hacking)。
  • 坑二·工程量:每个任务都要人工反复试错几周;经验不可复现,换个机器人要重来。
  • 补充(可选):手工调权重缺乏系统性方法,主观性强。
Q2

用"AI 自动写菜谱"或你自己举的类比,用自己的话解释:Eureka 是怎么让 LLM 写出比人类专家更好的 reward 的?

💡 参考答案

  • AI 写菜谱:让 AI 一次出 16 个候选食谱(reward),每个都做出来(训 RL)让真人尝(跑 fitness),反馈给 AI 哪部分好吃哪部分差(reward reflection),下一轮改进;几轮后超过老师傅。
  • 映射:『出 16 个候选』= 一次采样多个独立 reward;『做出来尝』= 每个 reward 训一个 RL 策略,跑真实任务分数;『反馈改进』= 把最好的 reward 的成分打分细节喂回 LLM mutation。
  • 关键补充:之所以能超师傅,是因为 LLM 不依赖单一先验——能在代码空间里大规模搜索 + 迭代改进;不是一次写好,是『多次尝试 + 反馈』的进化过程。
Q3

Eureka 每轮让 LLM 一次出 16 个候选 reward。为什么不让它就出 1 个"它认为最好"的?

💡 参考答案

  • LLM 单次生成不稳定:一次出 1 个可能就抽到差的、甚至 buggy 的;一次出 16 个让『至少有一个能跑、且不差』的概率指数级上升。
  • 进化搜索的精髓:用真实任务分数(fitness)做筛选,比 LLM 自己主观判断哪个『最好』更可靠——LLM 没法在脑子里准确预测 reward 训出来的策略会怎样。
  • 迭代 mutation:每轮基于上一轮最好的 reward 改进,多轮下来才能超越人类专家;单次生成没有迭代空间。
Q4

Eureka 用一个 fitness F 来选最好的 reward R,为什么不直接用 F 训 RL?

💡 参考答案

  • F 太稀疏(如『是否成功』的 0/1 指示):直接喂 PPO 策略几乎收不到信号,学不出来。
  • R 是 LLM 生成的 dense shaped reward(每一步都有细分),能给 PPO 提供稠密学习信号。
  • Eureka 的设计:用 F 做裁判(评估哪个 R 好),用 R 做教练(实际训 RL);两者分工不同,不能混用。
Q5

Eureka 在仿真里 83% 任务超过人类专家。它为什么还不能直接搬到真机上跑?

💡 参考答案

  • Eureka 只在仿真里评估 reward——没碰 sim-to-real 这道坎。
  • 仿真和真机有 gap(物理参数、接触模型、电机响应不同);仿真里高分 reward 在真机上可能完全不 work。
  • 正确做法:要 sim-to-real 还需要精心设计的 domain randomization(DR);让 LLM 同时生成 reward + DR 参数是 DrEureka 的工作。

FAQ

Q1:必须用 GPT-4 吗?

论文用 GPT-4(gpt-4-0314 variant)。

替换 GPT-3.5 仍能 match/exceed human on most Isaac 任务,性能下降但不崩。

算法骨架(进化 + 反思)比 LLM 本身更重要。📎

Q2:一个 reward 候选怎么评估好坏?

每个 reward 用同一套 PPO + 原任务超参训一个 policy。

跑 5 个 PPO seed,从 10 个 checkpoint 取最大 task metric 平均。

Isaac 任务用 human-normalized score;Dexterity 任务用 binary success rate。📎

Q3:5 轮迭代后效果还在涨吗?

论文默认 N=5 轮。

消融显示去掉 evolution(一次性 32 samples)显著差于 5 轮迭代。

继续加轮数边际收益递减,但 5 轮是性能/算力的折中点。📎

Q4:Eureka 能直接做 sim-to-real 吗?

不能。Eureka 只在仿真验证。

真机部署要解决 sim-real gap(domain randomization、system identification 等)。

这正是 DrEureka(2024)的工作:让 LLM 同时生成 reward + DR 参数。📎

Q5:如果任务描述很模糊(如"自然地走路")怎么办?

Eureka 效果会差。

LLM 需要明确的任务描述才能生成对的 reward。

模糊任务可以考虑用人类反馈迭代细化任务描述,或换用 VLM 反馈判断动作自然度。[未确认]