跳转到主要内容

无法收敛的验证器循环

阅读需 2 分钟Tian PanTian Pan

代理系统里最贵的 bug 是那种没有任何报错的 bug。Worker 提出一个草稿。Verifier 用一段反馈把它驳回。Worker 修改。Verifier 再次驳回。循环一直转下去,trace 越来越长,账单越爬越高,而从外面看,这个系统似乎在 工作——而且很尽职,因为两个模型都在干各自该干的活儿。没有人定价进去的是:验证器的接受标准在不同调用之间并不固定。worker 在追的那个目标本身在动,而循环没有任何收敛保证。

你以为自己交付的是"迭代到满意为止",其实你交付的是一次对极值可能根本不存在的空间的搜索。

一张干净的架构图背后藏着的设计错误

这种模式已经常见到不再被当作一个"设计选择"了。你把一个 worker 模型和一个 verifier 配对——一个独立的模型、一个带评分量表的 judge、一个对抗式 critic,有时是同一个基础模型用不同 system prompt 的更严格版本——然后让它们互相传球,直到 verifier 签字放行。架构图就是两个方框加一根回头的箭头。它看起来优雅。它看起来正确。它编码了一个图本身从未点明的假设:验证器是一个函数。也就是说,给定同一个候选,它会返回同一个判决。它的接受集合是输出空间的一个稳定子集,而 worker 的任务就是到达那里。

验证器不是一个函数。它是一个随机策略。把同一个候选用非零温度跑五次,你会得到五个判断,而它们在边界附近常常互相不一致。把它跨天来跑,提供商在你不知情的时候调整模型,你会得到一种漂移——任何版本钉死都接不住,因为你的管线里压根没把它钉死。把它用在第一轮的某个候选上,再用在第三轮的同一个候选上(此时它已经嵌在一段更长的、带修改历史的 trace 里),你会得到不同的答案,因为上下文变了。

一个把"这个随机的、非严格单调的函数返回了 accept"当作收敛测试的精修循环,并没有在向质量收敛。它在从一个边界逐轮波动的输出空间区域里采样。worker 的修改并没有朝着一个不动点移动。它们在绕着一个不动点公转。

为什么"agent 越来越好了"是对轨迹的误读

团队会给循环加上仪表,看着 verifier 的置信度分数在迭代里一路爬升。第一轮:0.62。第二轮:0.74。第三轮:0.81。曲线单调,图表一路右上,自然的解读就是 worker 在变好、verifier 在识别这种变好。可以上线了。

这种解读漏掉了两件大概率正在发生的事。

第一,验证器正在被训练——非正式地、通过 trace 训练——去识别 worker 心目中"认真的尝试"长什么样。trace 越长,看起来就越像在用力。在一个没有真值 oracle 的 judge 看来,"用力"读起来就是"质量",于是即便底层产物没有发生实质变化,置信度分数也会上升。你测的是验证器的置信度,而不是产物的质量,而这两者已经脱钩了。

第二,worker 正在循环内部学习这个验证器的表层特征。它不是在靠近一个高质量产物;它是在靠近这个验证器会接受的那种修辞形状。如果你的验证器喜欢含糊措辞,worker 就更多地含糊;如果你的验证器给项目列表的分比给散文的分高,项目列表就会繁殖。你看到的"收敛"是 worker 在对 judge 过拟合,这是一种和"worker 在产出更好的输出"完全不同的现象。两者在仪表盘上长得一模一样。

把这两种情况分开的诊断手段很便宜,却很少有人跑:把第五轮被"接受"的输出,扔回一个没有任何 trace 历史的全新 verifier 实例里。如果这个全新的 verifier 拒绝了它,你的循环就不是向质量收敛的。它收敛到了两次具体 roll-out 之间的局部一致,而这种一致在对话之外没有任何意义。

max-iterations 上限是一种供认

你见过的每一个生产级 verifier 循环都有一个 max_iterations 参数,通常默认三或者五。这不是"以防万一"的兜底。这是一个架构层面的供认:循环没有收敛证明。如果循环能收敛,你根本不需要上限;循环自己就会停。上限存在的原因是:搭这个系统的团队,在某个地方知道循环可能不会停,他们决定"成本封顶"比"质量保证"更重要。

这么读,含义就更尖锐了。最终落到用户那里的产物是三种东西之一。一种是 verifier 明确批准过的输出(最理想的情况,不算上前面提到的 verifier 过拟合问题)。一种是 verifier 在最后一轮允许的迭代上还在拒绝、而系统因为上限触发就那么上线了的输出(无声失败,通常是难任务上的主导情况)。一种是介于两者之间、被系统用某种 tiebreaker 选出来的输出——最先被接受的、得分最高的、最后产出的——这些里没有一个是架构当初假装提供的"收敛保证"。

第三种情况就是团队在不自知的状况下默默降低产品质量的地方。验证器循环成了一台"信心洗白机":它让团队感觉系统有质量门,而实际上系统拥有的是一个伪装成质量门的预算门。

能恢复终止性的几种模式

补救方案有一个共同形态:它们让验证器的行为独立于循环动态,这样循环搜索的就是一个固定靶,而不是一个跟着自己一起动的靶。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 10 分钟

聊天机器人、Copilot 还是 Agent:改变你架构决策的分类学

选错 AI 交互范式——聊天机器人、Copilot 还是 Agent——会造成无法靠调整提示词来修复的架构债务。本文深入分析应在写下第一行代码之前就驱动这一决策的信任模型、上下文窗口策略和错误恢复需求。

insider
ai-agents
阅读需 9 分钟

Agent 的端口与适配器架构:为什么你的工具 Schema 应该比供应商更长寿

供应商迁移往往在工具层而非提示词层崩溃。将工具 Schema 视为你拥有的端口 —— 为每个供应商和后端提供轻量级适配器 —— 你将免费获得确定性的 Agent 测试。

insider
ai-agents
阅读需 8 分钟

你在廉价模型上测试,却在昂贵模型上部署

在廉价模型上运行 CI 和评估,而生产环境却使用尖端模型,这在最关键的地方破坏了开发与生产环境的一致性。本文将探讨为什么层级差距会使你的评估门控失效,以及缩小这一差距的预算计算方法。

insider
llm
阅读需 10 分钟

黑板模式回归:1980 年代的 AI 如何处理多智能体协作

通过共享计划文件进行协作的智能体团队正在重新发现 20 世纪 70 年代的黑板架构 —— 但他们只重建了白板,却遗忘了让其发挥作用的调度器、置信度评分和层级结构。

insider
ai-agents
阅读需 9 分钟

Tokenizer 税:除了英语,你的 AI 功能在所有其他语言中成本更高且表现更差

同一个 AI 功能,在日语或阿拉伯语中的服务成本比英语高出 2-3 倍,且质量明显较差——然而大多数团队在进行全球发布时仅使用单一的英语评估套件。本文探讨 Token 肥沃度如何驱动各地区的成本、上下文和准确性,以及在全球发布前需要衡量哪些指标。

insider
llm