跳到内容
Coding with AI · Lecture 08
Esc
↑↓导航↵打开⌘J预览
本页内容

经历写下去,写成什么?

写成事件、教训还是技能,决定以后能复用什么;读结果要检查基线和反馈是否可靠。

这一页为什么在这里

第三站的第二个决策点:经历写下去,写成什么?同一个春天出现了三种写法:事件(小镇)、教训(Reflexion)、技能代码(Voyager)。学生先为“写代码的 agent”和“Minecraft 里探索的 agent”各押一种,再看真数字,然后读出两条边界:91 对 80 不是消融;教训要有可靠反馈才写得对。右下角出口接第 10 讲。

上屏

  • 第 1 步:三栏同一画法,每栏:名字|一条示例(等宽字体)|谁、哪年。写成事件|2/13 晚上 答应玛丽亚 2/14 17:00 去 Hobbs 咖啡馆|Generative Agents 的记忆流,2023-04。写成教训|上次没处理空列表就返回,测试失败;这次先处理边界情况|Reflexion,2023-03:失败后让模型写一段反思,存起来,重试时读回。写成技能|def craftStoneShovel(bot): …|Voyager,2023-05:学会的做法写成可执行代码,按描述检索,可以组合。底部:做一个写代码的 agent、一个在 Minecraft 里探索的 agent,各押哪一种?
  • 第 2 步:两行结果。Reflexion:写函数、跑单元测试(HumanEval),一次通过率 91%;此前报告的 GPT-4 为 80%。Voyager:和改造到 Minecraft 里的 ReAct、Reflexion、AutoGPT 比,拿到的物品种类 3.3 倍,关键科技树最快 15.3 倍。
  • 第 3 步:两条读法:① 91 对 80 不是同一次实验里去掉反思的对照:基线是谁跑的?条件一样吗?② 教训要靠可靠的反馈(单元测试、报错)才写得对;写错的教训也会一直被读回来。一行迁移:你的 agent 里,哪些经历该写成事件、教训,还是代码?右下角出口:→ 第 10 讲|编程智能体把经验写成什么。

讲

第 1 步 · 教师可说的话

选择经历的写法

Smallville 写下的是事件。2023 年春天,还有两种写法几乎同时出现。Reflexion:失败之后,让模型写一段“下次该怎么做”,存起来,重试时读回。Voyager:在 Minecraft 里,把学会的做法直接写成代码,攒成技能库,用的时候按描述取。做写代码的 agent,你押哪种?做 Minecraft 的呢?

指图与比较

比较事件、教训与可执行技能三栏。

第 2 步 · 教师可说的话

看两项报告结果

Reflexion 在写函数的测试集上,一次通过率 91%,此前报告的 GPT-4 是 80%。Voyager 拿到的物品种类是对手的 3.3 倍,关键科技树最快快了 15.3 倍。

指图与比较

读 Reflexion 的 91% 与此前 GPT-4 的 80%,再读 Voyager 的 3.3 倍与 15.3 倍。

第 3 步 · 教师可说的话

核对基线与反馈

读这两个数要小心。91 对 80,不是同一次实验里去掉反思的对照:基线是谁跑的、条件一不一样,都要问。还有,教训要有可靠的反馈才写得对:写代码有单元测试,生活里往往没有;写错的教训会一直被读回来。写成什么,决定了以后能复用什么,也决定了会错在哪里。

指图与比较

回看两条读法,把结论迁移到自己的 agent。

本页衔接

除了写成什么,还要决定窗口满了由谁选择留下什么。

连续教师稿原文

Smallville 写下的是事件。2023 年春天,还有两种写法几乎同时出现。Reflexion:失败之后,让模型写一段“下次该怎么做”,存起来,重试时读回。Voyager:在 Minecraft 里,把学会的做法直接写成代码,攒成技能库,用的时候按描述取。做写代码的 agent,你押哪种?做 Minecraft 的呢?

Reflexion 在写函数的测试集上,一次通过率 91%,此前报告的 GPT-4 是 80%。Voyager 拿到的物品种类是对手的 3.3 倍,关键科技树最快快了 15.3 倍。

读这两个数要小心。91 对 80,不是同一次实验里去掉反思的对照:基线是谁跑的、条件一不一样,都要问。还有,教训要有可靠的反馈才写得对:写代码有单元测试,生活里往往没有;写错的教训会一直被读回来。写成什么,决定了以后能复用什么,也决定了会错在哪里。

讲授出口

→ 第 10 讲|编程智能体把经验写成什么。可以展开:修一个 bug 学到的东西,写成一条笔记(教训)、一个回归测试(可执行的检查),还是一个脚本(技能)?三种写法复用的方式和出错的方式都不同。第 10 讲讲单个编程智能体。

完整推理

三种写法。

  • 事件:记下发生了什么(小镇的记忆流)。最忠实,复用时还要再推理一遍。
  • 教训:失败后让模型写一段“下次该怎么做”,存进情景记忆,重试时读回(Reflexion,2023-03 首发)。复用的是经验,不改模型参数,作者称之为“语言强化”。
  • 技能:把学会的做法写成可执行代码,存进技能库,按描述检索,还能组合成更复杂的技能(Voyager,2023-05,在 Minecraft 里)。复用的是能直接运行的东西。

结果。 Reflexion 在 HumanEval(写 Python 函数、用单元测试判对错)上报告一次通过率 91%,而此前报告的 GPT-4 为 80%。这里的 pass@1 是经过自己写测试、反思、修改之后交出一个候选,不是第一次生成就通过。Voyager 与改造到 Minecraft 里的 ReAct、Reflexion、AutoGPT 比较,报告拿到的不同物品种类多 3.3 倍、移动距离长 2.3 倍、解锁关键科技树最快快 15.3 倍;15.3 倍是木工具那一层,比较的是所需的提示迭代次数,不是实际时间。去掉技能库后,Voyager 在后期会停滞。

两条边界。

  1. 91 对 80 不是同一次实验里去掉反思的对照:80% 是此前报告的 GPT-4 成绩,模型版本、提示、评测细节未必相同。要证明“反思带来提升”,需要同一模型、同一设置下有无反思的对照。
  2. 教训要靠可靠的反馈才写得对。写代码有单元测试和报错,反馈清楚;日常任务、开放式问题往往没有,写下的“教训”可能是错的,而错的教训会被反复读回来。

带走的判断。 写成什么,决定以后能复用什么,也决定会错在哪里。还有一个读论文的习惯:看到一个倍数或百分比,先问基线是谁跑的、条件一样吗。

迁移到 PokeAgent。 局内程序的 state 是这一局的记忆;局外开发时,把对局的教训写成规则还是写成代码,就是这一页的选择。

学生可能的回答与误区

  • 第 1 步|写代码的 agent 多数押“教训”,Minecraft 多数押“技能”。追问:教训写错了怎么办?技能代码在新环境里不适用怎么办?
  • 第 2 步|“91% 比 80% 高,说明反思让 GPT-4 提高了 11 个点。”不是同一次实验,不能这样归因。
  • 第 2 步|“15.3 倍是快了 15 倍时间。”比较的是提示迭代次数,而且只指木工具这一层。
  • 第 3 步|“教训越多越好。”没有可靠反馈的教训可能是错的,而且会一直被读回来。

教学构造与出处

  • 教学构造:三栏里“教训”和“技能”两条示例(空列表的教训、craftStoneShovel)是课件编的,不出自原文;“事件”一条用的是 Q18 的聚会情节。
  • Reflexion · Language Agents with Verbal Reinforcement Learning:Shinn 等(美国东北大学、MIT、普林斯顿),arXiv 2303.11366;第一版(2023-03-20)没有 HumanEval 结果,91% 出自 2023-05-21 的第二版;读摘要与 HumanEval 结果。作者报告;80% 为此前报告的 GPT-4 成绩,不是同实验对照。
  • Voyager · An Open-Ended Embodied Agent with Large Language Models:Wang 等(NVIDIA、加州理工等),arXiv 2305.16291v2,第一版 2023-05-25;读摘要与主要结果:3.3 倍物品种类、2.3 倍移动距离、关键科技树最快 15.3 倍(木工具层的提示迭代次数)。作者报告,基线是作者改造到 Minecraft 的版本。

在课堂中打开

这个页面有帮助吗?