Stanford CS329A 自我改进型 AI Agent 第 7 部分:自我改进与深度研究 Agent
TL;DR
通过搜索来改进 AI Agent 有两种方式:(1) 生成大量代码样本,通过过滤和聚类来挑选多样化的候选方案,这可以随着样本预算的增加而提高解决率,但受限于选择瓶颈;(2) 让大型推理模型在表达不确定性时触发搜索查询,然后对检索到的文档进行推理(Search‑O1),这在 GPQA 和多跳问题回答上优于于标准和 Agentic RAG。 AlphaCode2 证明了更强大的基础模型(Gemini Pro)加上学习到的评分模型可以使所需的样本预算从 100 万个减少到约 100 个,同时将解决率从 25% 提高到 43%,并在竞争性编程中达到第 85 百分位排名。
AlphaCode: 采样、过滤与聚类
AlphaCode 通过在 GitHub 和 CodeContests 数据上预训练掩码语言模型来解决竞争性编程问题,然后为每个问题生成 100 万个多样化的候选程序(一半 Python,一半 C++)。它过滤掉不通过给定示例测试的候选方案,通过聚类来保留语法不同但语义等价的解决方案,并将精选的子集提交给 Codeforces 平台。在 10 场各约 5000 名参赛者的比赛中,AlphaCode 实现了平均 54.3% 的排名(假设每个问题提交 10 次),并与过去六个月中 28% 的竞争对手持平。解决率随样本数量大致呈对数线性增长,但当仅允许 10 次提交时,选择和聚类阶段会成为瓶颈,将准确率限制在约 30%,而无限次尝试的准确率则超过 40%。
AlphaCode2: 微调 Gemini Pro 并使用学习到的评分模型
AlphaCode2 将预训练模型替换为微调后的 Gemini Pro,使用一系列微调变体来增加多样性,并引入了一个预测代码样本正确性的学习型评分模型(奖励模型)。数据混合包含开源的 CodeContests V2 数据集和用于训练评分模型的高质量精选数据集。在相同的 100 万个样本预算下,AlphaCode2 的解决率达到 43%,几乎是 AlphaCode 25% 解决率的两倍。更重要的是,AlphaCode2 仅需每个问题约 100 个样本就能达到 AlphaCode 的解决率,这表明更强大的基础模型和更好的评分机制可以减少所需的采样预算。在百分位排名中,AlphaCode2 在 Codeforces 的专家级和大师候选人级人类选手之间达到了约第 85 百分位,而 AlphaCode 约为第 46 百分位(如果考虑前两个解决方案,则为 99.5%)。
Search‑O1: 当模型表达不确定性时触发搜索
Search‑O1 在大型推理模型之上构建深度研究 Agent。模型不再进行单一的检索步骤,而是每当其推理链中包含不确定性指标(例如,“perhaps”, “alternatively”, “wait”)时,就会生成一个搜索查询。随后,对检索到的文档进行分析以仅提取相关的片段,并将这些片段重新插入到提示词中,从而允许模型继续进行连贯的推理。这种“迭代-检索-推理”循环减少了不确定性传播,并避免了无关文本对模型的干扰。在 GPQA(物理、化学、生物)和多跳 QA 基准测试(如 HotpotQA, 22Wiki, MusiQue, 和 Bamboogle)上,Search‑O1 的表现优于标准检索增强生成和 Agentic RAG,其准确率在物理和化学领域可与人类专家媲美,在生物领域接近专家水平。
Search‑R1 vs. Search‑O1: Prompting vs. Reinforcement Learning
本讲座对比了 Search‑O1 基于 Prompting 的方法(模型通过显式的置信度标记来学习何时搜索)与 Search‑R1 基于强化学习的方法,后者通过 RL 循环教导模型决定何时发布搜索查询。Search‑R1 未在本文中详细讨论,但被指出是一个自动学习搜索行为的互补方向。
Key Takeaways
- 扩展采样生成可以提高解决率,但当提交预算有限时,选择和聚类阶段会成为瓶颈。
- 更强大的基础模型(Gemini Pro)结合学习到的评分模型可以带来巨大收益:AlphaCode2 仅需 AlphaCode 约 1% 的样本预算即可达到其性能,并几乎使绝对解决率翻倍。
- 在推理密集型任务中,当模型发出不确定性信号时触发搜索查询并对检索到的文档进行推理(Search‑O1)比朴素的检索增强生成更有效,尤其是在处理多跳问题时。
- AlphaCode/AlphaCode2 和 Search‑O1 展示了两种互补的自我改进型 Agent 路径:(1) 通过采样和学习型评分在输出空间进行更好的搜索,(2) 通过不确定性驱动的搜索与外部知识进行更好的交互。