Agentic Proof and Property-Based Testing via Property-Templates in Data-Intensive Computing
本文提出了一种双轨验证框架,该框架利用参数化属性模板,在增强 Lean 4 中的形式化证明工程的同时,实现 PySpark 对 Apache Spark 的基于属性的测试自动化,从而有效地减少 AI 幻觉和意图失配,并弥合形式化模型与现实世界实现之间的鸿沟。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在建造一个规模宏大、速度极快的图书馆,书籍由一组机器人管理员(那就是你的数据系统,比如 Apache Spark)进行分类、堆叠和检索。多年来,编写这些机器人指令的最难部分在于编写代码本身。但现在,随着 AI 在编写代码方面变得越来越便宜且越来越聪明,瓶颈已经发生了转移。真正的难题不再是编写代码,而是确保 AI 没有不小心发明了一个听起来很有道理但实际上是错误的规则,或者编写了一个检查错误目标的测试。
本文的作者 Seongmin Lee、Yaoxuan Wu 和 Miryung Kim 提出了一个巧妙的解决方案来应对这种“意图危机”(intent crisis)。他们将其称为 DUALVERI,这就像是给 AI 提供了一套“填空题”模板,而不是要求它从头开始写一部长篇小说。
双轨侦探游戏
为了证明一个机器人管理员是否尽职尽责,你通常需要两样东西:
- 数学证明: 一个完美的逻辑论证,证明该机器人在所有可能的宇宙中都必须正确运行(使用一种名为 Lean 4 的工具)。
- 现实世界测试: 用数百万个随机的书堆来运行机器人,看看它在混乱的现实世界中是否真的有效(基于属性的测试,即 PBT)。
通常情况下,同时做这两件事是非常耗时的。如果你让 AI 单独完成这项任务,它经常会产生“幻觉”——它写的证明看起来很完美,但其实什么也没证明;或者它写的测试虽然能运行,但检查的目标却是错误的。
“属性模板”的魔力
作者注意到,在数据系统中,许多规则看起来完全一样,只是其中的成分不同。例如,“所有书籍的总和等于每个堆中书籍的总和”是一个适用于“计数”、“求和”或“寻找最大值”的规则,但其结构是完全一致的。
与其要求 AI 为每一个规则都重新发明轮子,他们创建了 属性模板(Property Templates)。把这些想象成数学和代码领域的“Mad Libs”(填词游戏)。
- 模板: 一个预建的骨架,带有“空格”,可以在其中填入特定的成分(如“计数”或“求和”)。
- 智能体(Agent): AI 只需要填补这些空格,而不需要从头构建整个房屋。
这在两条轨道上同时发挥作用:
- 轨道 1(证明): 模板提供了一个预验证的“提升(lift)”机制。AI 只需要证明针对特定成分的局部规则,模板就会自动将该证明“提升”到覆盖整个系统。
- 轨道 2(测试): 模板提供了一个预建的测试引擎。AI 只需将特定的函数插入其中,模板就会自动生成数千个多样化且真实的测试场景。
他们的发现(数据)
当他们在 Apache Spark 系统上测试了 400 个不同的规则时,结果非常明确:
- 证明变得更好且更便宜: 使用模板后,对于某些规则族,AI 成功生成机器检查证明的频率提高了 2.6 倍(平均提高 1.6 倍)。它还减少了“幻觉”现象(即编译通过但毫无意义的证明),降幅达 59%。
- 测试变得更准确: 在没有模板的情况下,AI 经常编写与预期目标不符的测试(在某些情况下,每 100 次中有 22 次出错)。有了模板,这类错误降至仅为 1 次。
- 成本降低: 由于 AI 需要思考的内容变少了,生成这些测试的成本降低了高达 5.7 倍(平均降低 3.8 倍)。
“双重检查”的红利
这里最酷的部分在于,因为他们同时运行了数学证明和现实世界测试,所以他们可以捕捉到两者单独运行时都无法发现的问题。
- 如果数学证明说“它是完美的”,但现实世界测试发现了 Bug,这意味着系统的数学模型遗漏了关于真实软件行为的某个细节。
- 如果现实世界测试通过了,但数学证明失败了,这表明模型需要扩展以涵盖更复杂的场景。
在他们的研究中,对于 400 个属性中的 130 个,两条轨道达成了一致,这为系统的正确性提供了最强有力的证据。对于其他情况,这种分歧帮助他们找到了认知上的差距。
他们反对的观点
论文明确反对那种认为你可以让 AI 在没有结构的情况下从头开始生成测试或证明的想法。在他们的一项初步研究中,他们让 AI 在没有模板的情况下生成测试,结果显示这些测试“具有个体意义,但在集体上缺乏系统性”。AI 无法改变周围的工作负载,也无法覆盖特定类型的用户定义函数,导致测试过于狭窄或完全偏离了重点。论文指出,结构是必不可少的;如果你想要规模化和准确性,你就不能仅仅依赖 AI 自己去“摸索”。
他们有多确定?
作者对他们的数字非常有信心,因为他们进行了实际实验。他们不仅仅是在模拟,而是生成了 400 个具体的属性,通过真实的 Lean 4 证明器运行它们,并在真实的 PySpark 系统上执行。他们直接测量了成功率、成本和错误类型。
然而,他们也指出,虽然模板显著减少了幻觉,但并未能完全消除所有类型规则(特别是对于复杂的聚合规则)中的幻觉(即某些“作弊”式的证明仍会溜过去)。他们还指出,机器检查的证明只能保证定理相对于模型是正确的——如果模型本身是错误的,那么这个证明在技术上是“正确”的,但在实践中却是无用的。因此,尽管这种方法是一个巨大的进步,但仍需要人工检查,以确保 AI 没有“钻定义漏洞”。
简而言之,论文表明,通过为重复出现的规则提供“填空式”模板,我们可以让 AI 在证明和测试复杂数据系统时表现得更好,从而节省时间、金钱并防止沉默的错误。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。