跳转至

Stanford CS329A:自我改进 AI Agent\ 1:课程总览

LaTeX 源码 · 观看视频

字段 内容
作者/整理 AI Course Notes & Codex
来源 Stanford Online
日期 2026 年 8 月 10 日

这门课试图回答什么

CS329A 关注的不是如何让一个语言模型在单次调用里回答得更像人,而是如何构造一个能利用额外计算、外部工具和环境反馈持续提升表现的系统。课程把过去几年的能力扩展路径串成一条连续主线:

  1. 预训练扩展(pre-training scaling):增加参数、数据与训练计算;
  2. 后训练(post-training):通过指令数据、偏好数据和强化学习改变模型行为;
  3. 测试时扩展(test-time scaling):在参数固定后,通过采样、搜索、验证和更长推理换取更高成功率;
  4. Agent 系统:把模型放入行动--反馈闭环,让它调用工具、读写环境、规划并纠错;
  5. 自我改进:把生成、验证、反馈和训练重新连接成可迭代的闭环。

本讲的总问题

当单纯扩大预训练规模的边际收益开始下降时,能力提升还能从哪里来?本讲给出的答案是:把计算从训练阶段扩展到推理阶段,并把单次模型调用升级为带验证与环境反馈的 Agent 工作流。

学习目标

完成本讲后,读者应能:

  • 解释参数、数据和训练计算为何形成预训练 scaling laws;
  • 区分 zero-shot、few-shot、chain-of-thought 与 instruction tuning;
  • 说明 RLHF 如何把人类偏好压缩为可优化的奖励信号;
  • 推导 repeated sampling 的成功概率,并理解 generation--verification gap;
  • 区分 LLM、agentic workflow 与自主 Agent;
  • 用统一的“生成--验证--反馈--更新”视角理解整门课程。

本章小结

CS329A 的对象是完整系统:基础模型提供候选能力,推理计算扩大候选覆盖,验证器负责选择,工具与环境提供真实反馈,训练或记忆机制再把反馈沉淀为下一轮能力。

第一条扩展路径:预训练 Scaling Laws

三个共同扩展的轴

预训练阶段的经验规律是:在合理的数据与优化配置下,增加训练计算量、训练数据规模和模型参数量通常都会降低测试损失。常用的抽象形式是幂律:

\[ L(x)=L_{\infty}+A x^{-\alpha},\qquad \alpha>0. \]
  • \(L(x)\):给定资源规模 \(x\) 时的测试损失;
  • \(L_{\infty}\):该数据分布和建模假设下难以消除的损失下界;
  • \(A\):与任务、数据和模型族相关的比例常数;
  • \(x\):可以表示计算量、数据量或参数量;
  • \(\alpha\):幂律指数,决定资源增加后损失下降的速度。

幂律的重要性不在于“永远有效”,而在于它曾经让团队能够在训练前预测更大模型的收益,并据此投入更大规模的算力与数据工程。

预训练 scaling laws:计算、数据和参数三个扩展轴。
预训练 scaling laws:计算、数据和参数三个扩展轴。 查看原图

来源:视频讲解区间:00:02:50–00:03:53。

“更大”不是只指参数更多

一个参数极大的模型如果数据不足,会重复记忆有限样本;如果训练计算不足,参数得不到充分优化;如果数据质量差,额外计算只会更充分地拟合噪声。因此现代 scaling 的核心是参数、token 和有效计算的协同配置

从 BERT、GPT-2 到 GPT-4:规模成为能力来源

2018--2024 年间,主流语言模型的规模快速增长。课程用这段历史强调两点:第一,扩大规模带来了连续的平均性能提升;第二,某些能力并非在小模型上平滑可见,而是在达到一定规模后突然成为可观测行为。

大语言模型参数规模的快速增长。
大语言模型参数规模的快速增长。 查看原图

来源:视频讲解区间:00:03:55–00:04:46。

这里应避免一个常见误解:图中参数规模增长并不意味着参数是唯一因果变量。数据配比、架构、优化器、训练稳定性和后训练方法都在同期变化,因此历史曲线表达的是系统工程整体扩展的结果

Zero-shot、Few-shot 与上下文学习

GPT-3 之后,一个关键变化是模型可以直接从 prompt 中理解任务:

  • Zero-shot:只给任务说明和输入,不给示例;
  • One-shot:额外给一个输入--输出示例;
  • Few-shot:给少量示例,让模型从上下文推断任务映射。

这类能力被称为 in-context learning:模型权重没有更新,但上下文中的模式改变了本次前向计算的行为。

Zero-shot 与 few-shot 提示的结构差异。
Zero-shot 与 few-shot 提示的结构差异。 查看原图

来源:视频讲解区间:00:05:40–00:06:38。

上下文学习不等于参数学习

Few-shot 示例不会在推理时永久写入权重。它更像为当前请求建立一个临时任务解释。上下文结束后,这个“学习结果”通常不会跨请求保留,除非系统另有外部记忆或继续训练机制。

Chain-of-Thought:把中间过程也放进上下文

Chain-of-thought(CoT)提示的关键不是多写几句话,而是提供从问题到答案的中间推理轨迹。相比只展示最终答案,模型可以模仿问题分解、状态更新和局部计算方式。

标准提示与 chain-of-thought 提示的对比。
标准提示与 chain-of-thought 提示的对比。 查看原图

来源:视频讲解区间:00:07:18–00:09:01。

课程强调,CoT 效果随模型规模增长而明显增强。在小模型上,给出推理示例可能只增加模仿负担;在足够大的模型上,它能触发更可靠的多步计算。

Chain-of-thought 能力在更大模型上出现明显跃迁。
Chain-of-thought 能力在更大模型上出现明显跃迁。 查看原图

来源:视频讲解区间:00:09:01–00:10:18。

从“预测下一个 token”到“执行一个计算过程”

CoT 表明,同一个 next-token predictor 可以在上下文中表现得像一个迭代计算器。模型并未改变目标函数,但通过生成中间 token,把一次困难映射拆成多个更容易的局部映射。后续的 reasoning model 与 Agent 都沿用了这个思想:允许系统在给出最终答案前消耗更多中间步骤。

本章小结

预训练 scaling 同时扩大了模型的平均能力和可被 prompt 激活的潜在行为。Zero-shot、few-shot 与 CoT 展示了上下文如何在不更新权重的情况下重新组织模型计算,但模型“知道什么”与“按人类意图行动”仍是两件事。

第二条扩展路径:Post-Training 与人类偏好

为什么预训练模型还不能直接成为助手

预训练目标要求模型拟合互联网文本分布。它会学习知识、语法和推理模式,却没有天然理由遵循用户指令、拒绝有害请求或偏好简洁有用的答案。Post-training 的作用是改变行为分布:让模型在已有知识能力之上,形成更稳定的任务接口。

后训练把通用预训练模型引导到人类期望的行为区域。
后训练把通用预训练模型引导到人类期望的行为区域。 查看原图

来源:视频讲解区间:00:12:41–00:14:07。

Instruction Tuning:先学会“按题目作答”

Instruction tuning 使用人工或合成的指令--回答数据做监督微调。其价值在于建立统一接口:无论是翻译、问答、摘要还是代码生成,都可表示为“指令 + 上下文 \(\rightarrow\) 响应”。

若监督数据为 \(\mathcal{D}_{\mathrm{SFT}}=\{(x_i,y_i)\}\),常见目标是:

\[ \mathcal{L}_{\mathrm{SFT}}(\theta) =-\sum_i \log \pi_{\theta}(y_i\mid x_i). \]
  • \(x_i\):指令与输入上下文;
  • \(y_i\):示范回答;
  • \(\pi_{\theta}\):参数为 \(\theta\) 的语言模型策略;
  • \(\mathcal{L}_{\mathrm{SFT}}\):监督微调的负对数似然损失。

SFT 能教会格式和任务遵循,却很难用单一“标准答案”表示开放式回答的质量差异,因此还需要偏好学习。

RLHF:把排序偏好变成奖励函数

RLHF 的典型流水线包含三步:

  1. 对同一 prompt 采样多个回答;
  2. 请人类比较回答,训练奖励模型 \(r_{\phi}(x,y)\)
  3. 用强化学习提高高奖励回答的概率,同时限制策略偏离 SFT 模型。
用人类排序训练奖励模型,再以奖励信号优化语言模型。
用人类排序训练奖励模型,再以奖励信号优化语言模型。 查看原图

来源:视频讲解区间:00:16:54–00:19:05。

可将优化目标抽象为:

\[ \max_{\theta}\;\mathbb{E}_{y\sim\pi_{\theta}(\cdot\mid x)}[r_{\phi}(x,y)] -\beta\,D_{\mathrm{KL}}\!\left(\pi_{\theta}\,\|\,\pi_{\mathrm{ref}}\right). \]
  • \(r_{\phi}(x,y)\):奖励模型对回答的偏好分数;
  • \(\pi_{\theta}\):正在优化的策略模型;
  • \(\pi_{\mathrm{ref}}\):参考模型,通常来自 SFT;
  • \(D_{\mathrm{KL}}\):策略偏离参考模型的程度;
  • \(\beta\):奖励提升与行为漂移之间的权衡系数。

奖励模型只是偏好的近似代理

如果策略发现了奖励模型的漏洞,它可能得到高分却产生低质量行为,这就是 reward hacking。RLHF 的有效性取决于偏好数据覆盖、标注一致性、奖励模型泛化和策略约束,而不是“有一个 reward 就自然对齐”。

本章小结

Post-training 把通用生成模型改造成可交互助手。SFT 建立指令接口,偏好模型压缩人类比较,RL 在奖励与行为漂移之间优化。它也第一次明确引入了课程后续反复出现的结构:生成候选、评估候选、根据评估更新生成器

第三条扩展路径:Inference-Time Scaling

参数固定后,仍可用更多计算换成功率

Large Language Monkeys 的出发点非常直接:对同一道题独立采样很多次,只要模型对该题存在非零成功概率,就可能在某次采样中命中正确解。系统分成两步:

  1. Generation:生成大量候选解,追求 coverage;
  2. Verification:从候选中识别正确解,追求 precision。
Large Language Monkeys:多样化生成与验证选择。
Large Language Monkeys:多样化生成与验证选择。 查看原图

来源:视频讲解区间:00:20:03–00:22:43。

假设一次采样独立成功的概率为 \(p\),采样 \(k\) 次至少成功一次的概率是:

\[ P_{\mathrm{solve}}(k)=1-(1-p)^k. \]
  • \(p\):单次采样得到正确候选的概率;
  • \(k\):推理时采样预算;
  • \((1-p)^k\)\(k\) 次都失败的概率;
  • \(P_{\mathrm{solve}}(k)\):候选集合中至少存在一个正确解的概率。

\(p\) 很小时,需要很大的 \(k\) 才能看到明显收益;当 \(p=0\) 时,再多采样也无济于事。这解释了 test-time scaling 的边界:它能挖掘模型低概率但已经存在的能力,却不能凭空创造模型完全不会的算法。

Coverage 与最终准确率不是一回事

Oracle pass@\(k\) 假设我们能知道候选中哪个答案正确,衡量生成覆盖;真实系统还要面对选择问题。若 verifier 无法识别正确答案,候选集合再好也无法转化为最终 pass@1。这一差值就是 generation--verification gap。

为什么小模型也能被大量采样“放大”

实验显示,不同模型对不同题目往往存在长尾成功概率:某个 8B 模型可能大多数时候做错一道题,但在极少数轨迹中会走对。增加采样数会逐步收集这些稀有成功轨迹,使小模型在 oracle 评价下接近甚至超过强模型的单次表现。

重复采样在数学、代码和形式化证明任务上扩大候选覆盖。
重复采样在数学、代码和形式化证明任务上扩大候选覆盖。 查看原图

来源:视频讲解区间:00:23:49–00:27:12。

但计算收益存在递减:当容易题已被覆盖,新增采样主要消耗在极难题上。系统设计不能只问“再采样是否提升”,还要问“每单位 token、延迟和能耗带来多少边际成功率”。

训练计算与测试时计算是两种不同预算

Reasoning model 把更长的思维链、搜索与自我修正纳入推理过程。课程用 o1 的训练曲线和测试时曲线说明:能力既可随训练计算增长,也可在模型固定后随 test-time compute 增长。

训练阶段与测试阶段都存在可扩展的计算轴。
训练阶段与测试阶段都存在可扩展的计算轴。 查看原图

来源:视频讲解区间:00:29:40–00:32:07。

Reasoning model 通过分解、评估、修正和替代方案消耗更多中间计算。
Reasoning model 通过分解、评估、修正和替代方案消耗更多中间计算。 查看原图

来源:视频讲解区间:00:32:08–00:33:55。

并行扩展与串行扩展

并行扩展独立生成多个候选,易于并行但候选之间不共享经验;串行扩展让后续步骤读取前面的结果并进行修订、搜索或回溯,可能更高效,但一旦早期状态错误也会把偏差传播到后续。实际系统通常混合两者。

推理预算应按问题难度自适应

固定给每道题相同 token 预算会浪费计算:简单题一次即可解决,困难题需要更多探索。更合理的控制器应根据不确定性、验证分数、候选一致性或中间失败信号决定是否继续计算。

可把预算分配写成约束优化:

\[ \max_{k_1,\ldots,k_n}\sum_{i=1}^{n} U_i(k_i) \quad\text{s.t.}\quad \sum_{i=1}^{n} c_i k_i\le B. \]
  • \(k_i\):问题 \(i\) 获得的推理步骤或采样数;
  • \(U_i(k_i)\):额外计算带来的期望效用;
  • \(c_i\):每一步的成本;
  • \(B\):总 token、延迟或金钱预算。

本章小结

Inference-time scaling 把“更多计算”从训练集群迁移到每次请求。Repeated sampling 提升 coverage,reasoning/search 提升单条轨迹质量,而 verifier 决定这些额外候选能否转化为最终准确率。整门课后续大量方法都可以看作对这三部分的改进。

从 LLM 调用到 Agent 系统

Agent 的最小闭环

单次 LLM 调用的输入输出边界是固定的;Agent 则在一个循环中维护目标和状态:观察环境、决定行动、执行工具、读取反馈,再决定下一步。其最小抽象为:

\[ s_{t+1}=T(s_t,a_t),\qquad a_t\sim\pi_{\theta}(\cdot\mid s_t,g). \]
  • \(g\):用户目标;
  • \(s_t\):第 \(t\) 步可见状态,包括历史、工具结果和外部环境;
  • \(a_t\):模型选择的动作;
  • \(T\):环境执行动作后的状态转移;
  • \(\pi_{\theta}\):决定下一步动作的模型策略。
Agent 通过行动和环境反馈形成闭环。
Agent 通过行动和环境反馈形成闭环。 查看原图

来源:视频讲解区间:00:42:20–00:43:53。

Agent 的核心不是“多调用几次模型”

只有当后续决策读取了真实执行结果,并能据此改变计划时,系统才形成反馈闭环。没有环境状态、工具执行或反馈消费的多轮文本生成,更接近 prompt pipeline,而非完整 Agent。

Agentic Workflow:把可靠结构写进代码

Agentic workflow 使用预定义控制流组织模型和工具。它牺牲部分自主性,换取可预测性、可观测性和易调试性。例如先生成、再评审、失败则重试的流程,其控制逻辑由程序规定,而不是每次都由模型自由决定。

串行生成–评估与并行生成–聚合两类工作流。
串行生成–评估与并行生成–聚合两类工作流。 查看原图

来源:视频讲解区间:00:43:53–00:44:31。

课程列出五类常见模式:

模式 机制 适用场景
Prompt chaining 前一步输出成为后一步输入 文档生成、信息抽取、逐阶段转换
Routing 先判断请求类型,再分配给专用模型或工具 客服分流、模型级联、风险分级
Parallelization 同时生成多个候选或处理多个子任务 多样化采样、独立检索、批量分析
Orchestrator–worker 中央规划器拆任务,多个 worker 执行,最后整合 代码库修改、深度研究、复杂报告
Evaluator–optimizer 生成器与评审器迭代,直到满足标准或预算耗尽 写作修订、代码测试、方案优化
常见 agentic workflow 模式
工作流由 LLM 调用、工具、搜索、verifier、critic 和 judge 组合而成。
工作流由 LLM 调用、工具、搜索、verifier、critic 和 judge 组合而成。 查看原图

来源:视频讲解区间:00:44:32–00:49:00。

Workflow 与自主 Agent 的工程取舍

  • 固定 workflow:高可控、易测试、成本上界明确,但遇到新情况缺乏适应性;
  • 自主 Agent:能动态规划和选择工具,但行为分支爆炸,错误会在长轨迹中累积;
  • 混合系统:把高风险边界、权限和验收写死,把开放式搜索交给模型。

自主性越高,评估越不能只看最终答案

长轨迹系统可能偶然得到正确结果,却经历危险动作、无效循环或不可接受的成本。评估应同时记录最终质量、工具调用正确性、步骤数、延迟、费用、权限边界和失败恢复行为。

本章小结

Agent 把推理扩展成状态化行动过程;agentic workflow 把常见分解、路由、并行和评审模式写进控制流。它们都需要课程后续主题:规划决定做什么,工具提供环境反馈,verifier 判断是否正确,训练与记忆让系统下次做得更好。

三个典型应用域

Coding Agent:代码库是可执行环境

编码任务具有天然反馈:编译器、测试、静态分析和运行日志都能充当 verifier。Coding agent 的价值不仅是补全代码,而是维护一个持续变化的工作状态:搜索仓库、编辑多个文件、运行测试、读取失败、定位根因并迭代。

Coding agent 同时操作 shell、浏览器、编辑器和计划状态。
Coding agent 同时操作 shell、浏览器、编辑器和计划状态。 查看原图

来源:视频讲解区间:00:52:44–00:54:34。

为什么代码是自我改进方法的理想试验场

代码任务同时具备开放式生成与相对便宜的自动验证:候选程序空间巨大,但单元测试、类型检查和执行结果可快速过滤候选。这使代码成为 repeated sampling、search、execution feedback 和 RL 的高价值交汇点。

Customer Support Agent:反馈来自业务状态

客服 Agent 需要访问订单、工单、退款和知识库,并执行真实业务动作。成功标准通常不是“回答听起来合理”,而是问题是否解决、状态是否正确更新、用户是否需要再次联系。

客服 Agent 把信息检索、判断和业务动作连接起来。
客服 Agent 把信息检索、判断和业务动作连接起来。 查看原图

来源:视频讲解区间:00:54:34–00:55:43。

这类系统的难点是权限与不可逆动作:模型可以建议退款,但真正执行前往往需要规则检查、额度限制或人工确认。

Research Agent:把研究过程分成可验证阶段

科研代理覆盖想法生成、文献检索、实验设计、代码执行、结果分析和论文写作。不同阶段的 verifier 差异很大:检索可检查引用是否存在,代码可运行测试,实验结论却需要统计严谨性和领域判断。

研究 Agent 的想法、实验迭代和论文写作流程。
研究 Agent 的想法、实验迭代和论文写作流程。 查看原图

来源:视频讲解区间:00:56:00–00:59:03。

“自动完成报告”不等于完成研究

Research agent 最容易在引用真实性、实验可复现性和因果解释上产生表面完整但证据薄弱的结果。高质量系统必须把来源核验、实验日志、统计检验和反例搜索纳入工作流,而不能只优化最终文本的流畅度。

本章小结

三类应用的共同点是:模型必须离开纯文本空间,与可变化的外部状态交互。它们的差异主要来自 verifier 的成本与可靠性:代码执行反馈最便宜,业务成功信号更延迟,科研正确性最难自动化判断。

统一视角:自我改进闭环

本讲可以压缩成一个四阶段循环:

  1. Generate:模型或多个 Agent 产生候选动作、解答或计划;
  2. Verify:测试、奖励模型、规则或环境信号评估候选;
  3. Select / Act:选择候选并在环境中执行;
  4. Update:把反馈用于当前轨迹修正、记忆更新或参数训练。

整门课程的概念地图

Test-time scaling 主要改进 Generate 与 Select;robust verification 改进 Verify;tool use 和 planning 改进 Act;RL 与 synthetic data 把反馈写回参数;memory 与 continual learning 把经验跨任务保留。所谓 self-improving agent,就是让这条链路能稳定、可度量地循环。

设计一个自我改进系统时的检查清单

  • 候选多样性来自哪里,是否只是重复生成相同错误?
  • verifier 是否比 generator 更可靠,还是共享同一盲点?
  • 反馈是立即、延迟,还是只能用代理指标近似?
  • 哪些动作可逆,哪些动作需要权限或人工确认?
  • 额外计算带来的边际收益是否覆盖成本和延迟?
  • 更新会不会导致 reward hacking、遗忘或能力漂移?

本章小结

把模型、验证器、工具和更新机制拆开后,可以更清楚地定位系统瓶颈。很多“模型不够聪明”的失败实际上来自验证器、状态管理、工具接口或预算分配,而不一定需要重新训练更大的基础模型。

拓展阅读

总结与延伸

本讲从预训练 scaling laws 出发,解释了大模型能力为何曾长期依赖参数、数据和训练计算的共同扩展;随后通过 zero/few-shot 与 chain-of-thought 展示上下文如何激活模型内部潜在计算;通过 instruction tuning 与 RLHF 说明后训练如何塑造行为;再用 Large Language Monkeys 和 reasoning model 引出推理时计算;最后把这些能力放入带工具和反馈的 Agent 系统。

最值得保留的三个判断是:

  1. 能力不只存在于权重,也存在于可调用的计算过程。 同一模型在不同采样、搜索和推理预算下可呈现显著不同的成功率。
  2. 生成能力和验证能力必须分开测量。 候选中“有正确答案”不等于系统“能交付正确答案”。
  3. Agent 的价值来自闭环。 只有真实执行、反馈消费和状态更新,才能把语言模型升级为可持续完成任务的系统。

下一讲将专门讨论 test-time compute scaling:重复采样为何呈幂律收益、并行采样与串行修订如何比较、reward model 如何指导搜索,以及何时额外预训练仍优于额外推理计算。