Q1:必须用 GPT-4 吗?
论文用 GPT-4(gpt-4-0314 variant)。
替换 GPT-3.5 仍能 match/exceed human on most Isaac 任务,性能下降但不崩。
算法骨架(进化 + 反思)比 LLM 本身更重要。📎
论文: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,选最好的进入下一轮。📎
组件 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)。📎
关键结果(论文 Sec.4.3)。📎
Pen spinning 突破。📎
第一次让五指人形手实现 rapid pen spinning(在预定义旋转配置中转笔,越多圈越好)。
Eureka + curriculum learning 解锁此前需大量专家工程的任务。
关键消融。📎
算法精确流程(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。
局限:
图谱定位:Eureka 是 T03 reward 设计演化的第三次转折·开山作——"LLM 自动写 reward"。📎
reward 设计的"黑魔法"第一次被程序化。
LLM 不需要真懂物理,只需要在代码空间里搜索。
reward 设计演化的脉络:
建立在:
催生:
Open problems:
"Eureka 用 ground-truth reward 训 RL" —— 错。
F 是评估 reward 好坏的 ground-truth task metric(如稀疏 success),不直接喂 PPO。
训 RL 用的是 LLM 生成的 dense shaped reward R。
Eureka 用 F 选最好的 R,F 与 R 是不同的东西。📎
"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 本身更强。📎
强化学习里写 reward 为什么这么痛苦?请说出两个典型的坑(提示:想想 reward 的"密度")。
💡 参考答案
用"AI 自动写菜谱"或你自己举的类比,用自己的话解释:Eureka 是怎么让 LLM 写出比人类专家更好的 reward 的?
💡 参考答案
Eureka 每轮让 LLM 一次出 16 个候选 reward。为什么不让它就出 1 个"它认为最好"的?
💡 参考答案
Eureka 用一个 fitness F 来选最好的 reward R,为什么不直接用 F 训 RL?
💡 参考答案
Eureka 在仿真里 83% 任务超过人类专家。它为什么还不能直接搬到真机上跑?
💡 参考答案
论文用 GPT-4(gpt-4-0314 variant)。
替换 GPT-3.5 仍能 match/exceed human on most Isaac 任务,性能下降但不崩。
算法骨架(进化 + 反思)比 LLM 本身更重要。📎
每个 reward 用同一套 PPO + 原任务超参训一个 policy。
跑 5 个 PPO seed,从 10 个 checkpoint 取最大 task metric 平均。
Isaac 任务用 human-normalized score;Dexterity 任务用 binary success rate。📎
不能。Eureka 只在仿真验证。
真机部署要解决 sim-real gap(domain randomization、system identification 等)。
这正是 DrEureka(2024)的工作:让 LLM 同时生成 reward + DR 参数。📎
Eureka 效果会差。
LLM 需要明确的任务描述才能生成对的 reward。
模糊任务可以考虑用人类反馈迭代细化任务描述,或换用 VLM 反馈判断动作自然度。[未确认]