知道何时停止:使循环收敛的艺术
一个人工智能模型如何知道它的工作何时完成?嗯,人类又是如何知道我们的工作什么时候完成的呢?程序员等待测试变绿或者等待团队的PR审核。设计师调整一个构图,离开一段时间,然后回来,决定剩下的瑕疵不再重要。作家提交草稿,因为截止日期到了或者因为编辑接受了它,而不是因为文稿达到了某种客观的最终状态。“完成”很少是作品本身的属性。它是由围绕作品的系统产生的判断。人类没有一个“完成”的普遍检测器。我们依赖于一系列信号,比如测试、规范、先例、审批、截止日期、风险以及找到一种收益递减的临界点。在每种情况下,完成的概念来自工作本身之外。 可以永远继续的模型——人工智能模型几乎总是可以产生另一个答案。它可以再次修订段落。它可以尝试另一种实现。它可以生成一幅具有更多细节、不同光照和更强构图的图像。它对工作不会感到疲倦。它不会注意到这一点,除非我们给它某种方式来发现,最后的三次修订使结果不同,但不一定更好。这正是近期循环工程理念如此引人注目的部分内容。与其让人类提示模型,检查结果,描述哪里出了错,然后再次提示,不如我们让系统自己执行整个循环。这个人不再需要在每个环节中待着。代理发现工作,将其提交给模型,检查结果,并决定接下来应该发生什么。 彼得·施泰因伯格🦞 @steipete 这是每月一次的提醒,你不应该再提示编码代理了。你应该设计循环来提示你的代理。6:58 PM · 2026年6月7日 8.5M 1,796 1,414 19,839 然而,编写循环时的细微之处在于,循环的好坏仅取决于每个步骤的验证者。在我们开始讨论循环工程之前,一切已经作为循环运行,只是工具调用非常昂贵——人手提示并担任验证者。当从循环中去除人类时,设计每个步骤中应验证的内容成为推动循环状态的关键,而现实是让它们有效非常困难。 以标准编码代理循环为例:继续工作直到测试通过。听起来几乎可以完美验证。但测试只是任务的代理。在SpecBench中,前沿代理常常通过可见测试,但在检验同一特征时对持有测试却未能通过。而一个代理生成了一个2,900行的“编译器”,它只是记住了测试输入。循环收敛了,但仅仅在验证者身上,而不是用户的意图。验证者不仅仅是停止条件。它还定义了循环视为进展的内容。如果信号不完整,该循环可能会变得更擅长通过检查,但未必在任务上有所提高。循环工程并不是让代理重试的常规做法。它是让每个周期缩短当前状态与期望状态之间距离的做法。一个循环尚未形成方向。 收敛的循环——第一批运行良好的循环是编码循环。这并非偶然。代码既可编辑又可执行。一个代理可以更改一个函数,运行程序,查看测试失败情况,然后再试一次。环境返回关于出错的相对明确的信号。循环有一种精确的行动方式和可以测量进展的验证者。我在视觉代码生成中写过类似的模式。SVG不只是一个图像;它包含路径、形状、文本、渐变和布局。Blender场景不仅仅是一个渲染;它包含几何体、材料、相机、关节和约束。这些表示给代理提供了可以检查和局部编辑的内容。如果一条曲线是错的,就更改路径。如果一个对象放错了,移动那个对象。工件可以随着迭代而改进,而不是从头开始再生成。但是可编辑性仅仅是问题的一半。在开放式图像生成中,另一个迭代通常意味着生成另一个样本并选择最佳样本。反馈是全局的,而要将“这看起来更糟”映射到一个准确的编辑上是非常困难的。 当目标可以表示为参考、几何体、约束或来自清晰对象的功能行为时,SVG和Blender循环可以收敛。当目标仅仅是“让它更好,具有更好的品味,但不能问人类”时,它们就会遇到困难。视觉循环并不不可能。它们往往极难验证。 完成的条件——如果验证者为循环指明方向,那么循环需要什么才能收敛?根据我与各个领域的工程师和研究人员的许多对话,我认为有四个要素。1. 目标状态——系统需要一个关于“完成”是什么的表示。对于代码来说,这可能是一个测试的样本...
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡