检索知识库

按标题、类型或正文检索

Jikipedia
总目
JikipediaAICS329ALearning from Feedback with Tools/Code
Lecture 04YouTube · 71 分钟 · yt:Lxh9RF5S-K0

Learning from Feedback with Tools/Code

让模型碰到真实环境:工具、代码执行、以及用章程做自我批判。三篇论文的差别不在「要不要反馈」,而在反馈从哪来。

type · source-summarystatus · compiledAIcs329atoolsreactrlef

这是什么

CS329A Self-Improving AI Agents 第四讲(约 71 分钟,duration_s: 4273)。前两讲是 test-time compute 与 robust verification;本讲把「验证信号」从模型内部换成环境交互。三篇:

  1. ReAct:用 prompting 把 verbal reasoning 和 tool action 交错起来。
  2. RLEF(grounding code LLMs in execution feedback):用跑测试的执行反馈做代码 RL。
  3. Constitutional AI(Anthropic):人只写原则(Constitution),模型自评、修订,再 SFT + RL。

主线:三种都是自改进,但监督分别来自环境观察、编译器/测试、原则文本。没有环境信号时只能 LLM-as-judge,又滑回 verifier 问题。见 raw/collections/cs329a/04-learning-from-feedback-with-toolscode.md

核心要点

  • 纯聊天不够。真实任务要 act:调 API、跑代码、点浏览器,并从交互里学。0:17
  • ReAct 的 Thought 是中间抽象(不改环境),Action 碰环境,Observation 回来再想。只行动不如有推理;但它并不总赢过纯 CoT——FEVER 上赢,HotpotQA 上不总赢;和 CoT self-consistency 互相 fallback 才稳定超过。11:33 18:46
  • 多步决策会 error cascade。WebShop 上 ReAct 66.6 vs 人类专家 82.1;中间步对了也不等于任务成功。21:51
  • 合法动作要当成 分类:给出 valid action subset,而不是让模型自由发明字符串。Google 机器人合作里也是这套。8:01
  • RLEF:写代码 → 跑公开测试 → 把失败栈喂回去再试,直到过或耗尽回合;私有测试才给 PPO 奖励。这就是 coding agent 的内环。29:43
  • 只把「错误解 + 执行反馈」塞给 base model 不够;要在 CodeContests 上按回合训练看反馈,才会修错、并泛化到其他代码基准。Llama 3.1 上,solve rate 随采样预算(log 横轴)上升。36:20
  • SFT 吃域内轨迹;RL 对稍新的题更有泛化。课上明确说这点仍有争论。41:32
  • Constitutional AI:16 条人写原则 → critique → revision → SFT,再拿 AI 反馈训 preference model 做 RL。单独加修订轮次:无害性升、有用性降;Constitutional RL + CoT 才走到 helpfulness–harmlessness 的最佳 Pareto。51:10 59:02
  • 自我纠正不只是安全对齐。Self-Refine、RLAIF vs RLHF、用 RL 教 self-correct 都在同一条线上;模型自评常过自信,多模型共识有时更稳。59:52
  • 把 ReAct 推广成 agent,等于手写 workflow。会计 / 金融 / 法律这类任务的步骤空间仍高度 domain-specific,跨域泛化很难。搜索空间定义得清(游戏)才能全自动搜;开放环境必须先收集观察。1:07:12 1:08:15

机制 / 论证

为什么纯推理不够

CoT 给中间步骤,但步骤来自模型内部状态,没有外部反馈。4:11

另一路是 WebGPT 一类:在浏览器轨迹上微调,学的是怎么点工具,奖励是人类偏好;有行动、缺推理。4:22

ReAct 要拼的就是这两路:既要 think step by step,又要把 action 接到真实观察上。否则问「今天气温多少」,Gemini / ChatGPT / Claude 都只能靠过期内部知识胡编,除非真的发出 search call。3:20

ReAct:语言空间里的 agent 环

实现极简,frozen PaLM + few-shot(thought / action / observation 范例),不训策略网络。9:11

  • 左环:在语言里生成 Thought,不改变环境。
  • 右环:基于 Thought 选 Action,拿 Observation。
  • 交错顺序是 thought₁ → act₁ → thought₂ → act₂,不是先想完再连着 act。像口渴走进厨房发现没水,再决定去超市;并行采样可以做,但必须显式设计。14:07

知识密集任务的动作空间很窄,在模拟「人查 Wikipedia」:search 页面、lookup 字符串、finish。评测用 HotpotQA(Wikipedia 多跳问答)和 FEVER(事实核查)。决策任务用 WebShop(按用户指令买东西,例如带抽屉的床头柜)。5:32 17:19 20:27

可解释性是附带收益:逐步 thought+action 让人能追责、敢信。5:58

例子:Apple Remote(HotpotQA)

题:除了 Apple Remote,还有什么设备能控制它原先设计去控制的那个程序?9:33

方法发生了什么
标准 prompting直接错
CoT有中间步,答案仍不完全对
只行动搜 Apple Remote → 观察里出现 Front Row → 再搜,落到「已停产」,给不出好答案
ReAct先想「要搜 Apple Remote、找它原先控制的程序」→ 得到 2005 年发布、控制 Front Row media center → 搜 Front Row 失败 → 改搜 Front Row software → 确认是已停产的媒体中心软件 → 再推理出答案

课上的结论:推理是一层抽象,让下一次检索比「盲搜」准;交错 thought / action / observation 比两者孤立更好。11:33

今天 Qwen 一类打开 thinking mode,这套已经内化:模型在这些轨迹上蒸馏过,tool call 不再是外挂 prompting。11:48

模型知不知道自己不知道

学生问:1+1 不该搜,Front Row 的 Wikipedia 可能已经在预训练里,模型怎么决定搜不搜?12:19

讲者:这事有两派。一派说模型很清楚自己会什么;另一派(讲者偏向)说让模型给输出打自信分,它们通常 overconfident、校准差。做应用时不要赌元认知,而要迫使它调用能落地的工具。13:13

搜索结果互相打架时,用第二讲的 majority vote / 先校验再交给用户;有检索的幻觉,比纯靠内部状态好控。15:15

Thought 不算进 action space。语言模型吃的是语言,推理 token 是为了把 action 选对的抽象;若有中间向量表示,这层也许不必要。16:47

KV-cache 里 thought(模型自己生成)和 observation(环境写入)是否有交错模式:课上丢给学生当课题。15:47

知识密集任务:ReAct 不总赢 CoT

基线:标准 prompting、CoT、CoT-SC(self-consistency = majority vote,课上说这两个词是同一件事)、Act(不思考只行动)。还有两种杂交:18:11

  • ReAct 走若干步仍失败 → fallback 到 CoT-SC
  • CoT-SC 的多数答案不到一半票 → backoff 到 ReAct

结果(课上没念表里的精确分,只给方向):

  • ReAct 普遍好于 action-only
  • 并不总好于 CoT:FEVER 上赢,HotpotQA 上不总赢
  • 和 CoT-SC 按上面两种方式结合,才超过标准技术

论证:要把模型内部知识与外部检索拼好,推理用来决定「该检索哪条准确信息」。18:46

失败模式对照:CoT 的主因是幻觉;ReAct 有外部知识库,检索成功时更可信。能微调时 ReAct 优势更明确;再加 outer loop 更好——指向后续规划/RL 讲。19:50

决策任务:分高了,成功率仍被级联拖死

WebShop 对照 imitation learning(纯微调)和 IL+RL(SFT+RL)。有推理抽象的 ReAct,中间步分数和最终成功率都更高。20:56

但离人类还远:ReAct 66.6 vs 人类专家 82.1。成功率更痛:多步里任一步错,后面全塌(error cascade)。21:51

代价:动作空间很大时,演示塞不进上下文;多步推理推高 inference cost。换来的是问答 / 事实验证 / 决策更好、幻觉更少、轨迹更好读。22:10

课堂讨论:噪声环境和别的认知机制

环境反馈又吵又错时:加 reflection 审观察、backtrack(否则进重复环)、多次检索、多样本置信。23:27

ReAct 不是唯一认知机制:任务分解、并行多思路、memory / 过往经验、按任务学 reasoning:action 比例(今日模型常 overthink,简单题也拉很长 thinking trace)、compound system(按子任务 benchmark 不同模型再委派)。24:54

RLEF:执行反馈做成 RL 内环

对象是 coding agent。课上问有多少人用 Claude Code(字幕作 Cloud Code),几乎过半。28:02

框架:动作 = 生成的代码;观察 = 测试执行结果;奖励 = 测试过/不过的 binary reward;算法 PPO。两处设计:28:37

  1. two-tier test:公开测试给推理时迭代,私有测试给训练奖励
  2. hybrid token-turn policy:策略按 token 吐代码,value 按 turn 估整段回复

循环(训练时 + 推理时都跑执行):自然语言题面 → 生成代码 → 公开测试。失败就把 execution feedback 追加回去再试,直到通过或到达回合上限。通过的候选再送私有测试打奖励,进入 PPO。左相是当前策略的推理时 exploitation,右相按执行结果更新策略。29:43 30:22

回文子串例子:第一回合基本实现,公开测试 execution timeout(课上说这很常见)→ 反馈后写出优化版,公开测试过 → 再交私有测试。30:48

公开测试是小子集,快迭代、给过程指导;私有测试在生成中完全隐藏,避免背测试输出。以 CodeContests 为例,外环自己切:一部分给推理时反馈,一部分当训练信号。失败不是模型自评,是真跑 Python 测试,把 stdout/失败信息拼回 prompt。作业会在数学上练「找出生成解的错误」,不是跑代码。31:43 33:25 34:50

Hybrid 的细节:策略逐 token 吐代码;value 在 turn 级、用 prompt 最后一个 token,整段共享一个 advantage。课上拿它去对 GSPO(序列级奖励,不是每 token 一份)。32:24

为什么执行反馈有用(以及 base 为什么不够)

图:纵轴 solve rate,横轴采样预算(log scale),验证集和测试集都画。结果偏旧,底座 Llama 3.1,CodeContests 上 RLEF 后 solve rate 明显升。「solve rate 10 at k」课上解释为生成 10 个解再看过多少——表述不完整,数字表未口述。35:22

关键因果不是「看见错误解」本身。base 模型通常 不会 只靠错误解 + 执行反馈变强;真正有用的是在 CodeContests 上每个 turn 都训练「看见这类反馈之后怎么改」,修错能力才泛化到其他代码基准。按 turn 1/2/3 的错误数、改动数、错误类型拆:有 RLEF 时后续回合 wrong output 变少、开始 targeted repair;没有迭代环,编辑就不准。同时吃到多样本 diversity 和对着错误位置改。36:20 37:06

执行反馈只标「哪一段报错」,不含修复建议。这些竞赛题仍简单,课上估不超过约 100 行。学生认为难题上 binary reward 不够,需要 error trace / 元数据才能高效 debug——讲者同意,可当课题。37:44

另一个担心:最终奖励是对/错,会不会怂恿「修修补补凑过」而不是一次写对?简单题也许一轮就过;复杂题确实可能多回合。推理时已先让公开测试过再进 PPO,等于给过几次自纠机会,回合数可以加。更底层是 PRM vs ORM(逐步反馈 vs 只要最终对)——第三讲开过,按域/基准还没有统一答案。38:45 40:28

SFT 吃推理轨迹也能涨;RL 更能解 稍新 的题。课上说仍在争论,SFT 仍是同一套似然。41:10 Two-tier 的 ablation 课上没展开。学生问:测试都不是训练题,为何不全部公开?讲者的理由是外环若在「自己当反馈用的测试」上训会泄漏;具体数字留给论文。41:48 另一条 ablation:RLEF wrong output 更少,timeout 更多——错误被修掉了,但没修对的解会把测试跑到超时。竞赛编程是已验证的坑,且对其他代码基准有泛化。43:12 43:30

代码库塞不进上下文窗口

讨论题:整库放不进 context 怎么办?学生方案:像 ReAct 一样先搜再决定信息够不够;对模块做摘要;图正则化代码库 + 相似度检索,不够再迭代。44:15

讲者:这就是 Claude Code 在跑的事——先搜相关再打补丁。对口基准是 SWE-bench。搜 / 摘要 / 表示是第一步,然后才是「补丁过不过测试」。Azalia 组的 Code Monks 论文也打类似问题(字幕名,见「不确定」)。45:42

Constitutional AI:人写原则,模型自己骂自己

目标从「代码对错」换成 chatbot 的 helpful 且 harmless46:37

经典路:人看两个输出,按正确 / 有用 / 够不够具体排序 → 训 reward model → hillclimb。模型变大时,RLHF 比纯 SFT 更明显。瓶颈是规模:成千上万条人类标注又慢又贵。46:50

Anthropic 的替换:人只写 Constitution(本讲说 16 条原则),描述想要的行为。之后人不必再进环。前提是模型已经会听指令:能按格式写、能较诚实地回答「这段有没有某种行为」。47:53

两阶段:49:10 51:38

  1. SFT:红队 prompt → 模型输出 → critique request → revision request → 用修订轨迹微调
  2. RL:用第一阶段回复 + Constitution 训 preference model,再让 LLM 最大化它(课上形容目标:thoughtful / respectful / cordial)

Critique / revision 例子:有害或不伦理 → 删掉;性别偏见 → 去掉痕迹;不适合儿童 → 重写成合适的。要的能力有两块:先识别行为,再服从「按这种方式重写」。49:50

有用 vs 无害:此消彼长,Pareto 才是成果

SFT 只加修订轮次:harmlessness 升,helpfulness 降;两者加总仍单调升。把模型按死一套原则就会变得不那么有用——论文的 claim 是合在一起仍更好。RL 阶段用这份 AI 反馈的 preference model 替换人类 RLHF。51:10 51:38

图:横轴训练序列数;Helpfulness Elo / Harmlessness Elo 都是「人更喜欢」。对照 helpful-only RLHF、helpful+harmless 人类 RLHF、CAI、CAI+CoT。方向:按原则自评后有用性大致持平或略降,无害性高很多——Claude 一类当时极强的点,后来扩散到各家。53:39

学生指出 CAI + CoT 的 helpfulness Elo 更低。讲者把它连回上一张图:无害性上去时,有用性往往被伤,要找平衡,而不是「CoT 本身有害」。55:06

Pareto 图(harmlessness Elo vs helpfulness Elo):58:26

方法位置
pretrained base两轴都不高
helpful-only RLHF把前沿推向有用
再压无害(图中橙色)有用继续、无害下来
Constitutional SL仍差于 RLHF
Constitutional RL + CoThelpfulness–harmlessness 最佳 Pareto 前沿

SFT 阶段没有逐步标量反馈:模型自评自改,人把修订轨迹的似然调高。只要这轮微调远小于预训练,原能力不会掉光,输出分布会偏向这套回复。56:03

Preference model 仍要少量人类一致性检查(验证集),不是 10,000 条那种规模,而是看组合原则打的分是否跟人一致。57:28

章程要改怎么办?Post-training 通常是最后一阶段、大约 5% 算力、更新较勤,所以可以周期性重跑。真正的 continual learning / 让模型忘掉旧规则,仍是开放问题;可解释性「消去某知识」没有被证明。52:26

推广:任何「要跟一组可能互相冲突的指令」的场景都可以用原则表。后续工作包括 RLAIF vs RLHF、Self-Refine(自反馈迭代修订)、用 RL 教 self-correct。自评往往难,因为模型过自信;让别的模型来 critique、再取共识,有时更稳。这条线已经超出 harmlessness,进入一般能力。59:38

收束:语言空间的工作流,还不是自动搜索

三篇合在一起:ReAct 是 reasoning+acting 的积木(今日许多模型的 tool calling 已 innate);代码域最好的执行反馈是单元测试;CAI 用规则是否被遵守来转自改进环。反馈环有足够信号,模型就能超出原训练数据。1:00:23 1:02:24

闭课问答把边界划清:1:03:30

  • 现在借用人类解题的说法(分解、回退、并行),是因为任务的搜索空间常常 没有形式化。游戏这类动作有限的域可以自动探索;开放环境必须先收集观察。闭源推理模型已经不完全把 reasoning space 说成可读文字。
  • LLM 技巧能不能搬到 agent:后续讲会展开。本讲的循环还没有 session、没有 memory;agent 的一块地基仍是「LLM 如何按某种方式响应」。
  • RL post-training 会不会让手写 ReAct 过时?又会又不会。搜索空间定义得清,就可以不再手写;会计 / 金融 / 法律 agent 的步骤仍是领域知识。ReAct 的贡献是规定「想→做→想→做」这条 workflow;推广成 agent 就是给用户任务写 workflow,跨域难。1:07:12
  • 形式化:上下文 (C_t) 就是 RL 的 state(prompt 里有什么)。策略每步二选一:输出一段 reasoning trace,或输出一个环境 action。1:08:34
  • 无害性不能只靠解码限制 / 数据过滤。会过滤,但模型在互联网上训,过滤不完。1:10:01

可操作

  • 先固定动作空间:合法动作做成分类,不要开放文本发明 action。8:01
  • 需要当前世界知识时接 search / 执行环,不要只加 CoT,也不要赌模型知道自己不知道。13:13
  • 有测试的代码:公开测试做推理时迭代,私有测试做奖励;失败栈追加回 prompt。29:43
  • 简单题 binary pass/fail 转得动;难题留下 error trace。回合上限和「一次写对 vs 多轮修」要显式选,不要默认 ORM。38:45
  • 整库超上下文:先搜/摘要到信息够了,再打补丁跑测试(SWE-bench),不要一上来生成全文件。45:42
  • 噪声环境用 reflection / backtrack / 多次检索 / 多样本,单次观察不当真理。23:27
  • 对齐或跟一组原则:人写短 Constitution,critique→revision→SFT→RL;preference model 留一小块人类一致性集,盯 Pareto 而不是只看无害性。49:10 57:52
  • 领域 agent 仍要手写 workflow;通用 ReAct 提示词跨不了会计和代码。1:08:15

术语

意思
ReActReason + Act:Thought / Action / Observation 交错
WebGPT在浏览器轨迹上训、偏行动、缺推理的对照路线
self-consistency (SC)课上等同 majority vote
error cascade多步里一步错,后面全塌
RLEF用执行反馈做 RL 的代码模型
two-tier test公开测试给迭代,私有测试给奖励
hybrid token-turntoken 级策略 + turn 级 value / 单一 advantage
Constitutional AI人写原则,模型自评自改,再 SFT+RL
Constitution本讲中 16 条人写原则
RLAIF用 AI 反馈替代(部分)人类偏好
Self-Refine自反馈迭代修订
SWE-bench真实仓库补丁能否过测试的基准

不确定 / 待验证

  • HotpotQA / FEVER / WebShop 除 66.6 vs 82.1 外的表内分数,课上只给方向,未口述精确数字。
  • RLEF 的 solve rate 曲线是 Llama 3.1 + CodeContests 的论文图,具体百分比未读出;「solve rate 10 at k」口头定义不完整。
  • two-tier 的 ablation、公开/私有如何切分的最优比例,课上没讲。
  • 字幕「Cloud Code」按语境和 SWE-bench 讨论当作 Claude Code;「Code Monks」(Azalia 组)论文名未经本 raw 以外核对 [需要验证]。
  • Post-training「大约 5% 算力」是讲者量级,不是某次训练的计量。
  • Constitutional AI 的 16 条原文、Elo 轴刻度未在课上逐条念。
  • 作业里「数学找错」的具体设定不在本讲展开。

相关

来源 raw/collections/cs329a/04-learning-from-feedback-with-toolscode.md · 更新 2026-09-04 · confidence: high