无窗之箱中的正确
存在性等价:给 AI 的一个正确性定义
自从有软件验证这门手艺起,「规约」(specification)一直是个可以核对的东西。给你一个输出,你能判定它对不对。给列表排序:结果有序吗?是输入的一个排列吗?两个问题,都可判定。我做过的工作,大半站在这块基石上:我的系统 Cobra 验证一个数据库是否以可串行化的方式执行了事务;我们的 Orochi 项目验证一台不受信任的服务器返回的,是否就是真实计算本会返回的东西。系统各异,基石只有一块:正确性,是一个可以核对的性质。
现代 AI 把这块基石抽走了。让模型总结四百页的文档,起草一份法律文书,或者跑一个替你订行程的 agent。你盯着输出,试图判定——对,还是不对?无物应答。不是规约变得更难核对了,而是它干脆不再是一个可核对的对象。
所谓「标准解法」,是找一个参照(reference):选定一个可信的实现,输出与之相符便算正确——把计算重跑一遍,与「金版」逐位比对。GPU kernel 的开发者就是这么做的,深度学习编译器也是这么测的。但「相等」多半是个错误的关系。一百万个浮点数换个顺序求和,末尾几位就会变动;答案依然正确,参照比对却会把它拒之门外。而若参照本身有错,你等于把它的 bug 认证成了真理。我们要的不是与某个参照相等,而是等价——并且必须说清楚,哪些差异是被允许的。
物理学早想明白了这件事
坐进一只没有窗的密闭箱子,松手放下一只球,球落了地。你是在地球上,还是在一枚以一个重力加速度飞驰的火箭里?箱内的任何测量都分辨不出。爱因斯坦拒绝追问哪一个才「真实」:若没有任何观测能区分二者,二者便是同一回事。「相同」不是绝对的,它永远相对于你能观测什么。
这种「观测等价」,我们在别的领域其实早已见过,物理学只是把它讲得格外生动:定死你观测什么,你就定死了什么算正确。
给「AI 正确性」下个定义
那就换个问法。不问「机器给出的答案对不对」,而问:我眼前这个结果,能否由机器的某一次合法运行产生?
正确 ⇔ 存在一次合法运行 e,使得 observe(e) = 所见的结果。
一个输出是正确的,当有某次合法执行能解释它。说它错,反而是更重的断言:任何一次合法运行都产生不了它。这个定义系于三个抉择。什么样的运行算合法——这就是规约的真身。什么样的两个结果算相等。以及,我们观测什么。合法运行的集合,恰好圈出了那些无关紧要的差异:浮点求和换个顺序,行;所有合法运行都得 3、你却给我 7,不行。
如果你觉得眼熟,那就对了。它与计算机科学里好几个既有概念遥相呼应。就拿可串行化来说:一段数据库历史是正确的,恰恰当存在一个与所观测到的读写相容的事务串行顺序;而 Cobra 这样的数据库校验器,全部力气都花在寻找那一个合法顺序上。可串行化从头到尾就是存在性等价,只是从没有人给这个模式起过名字。
这个定义好在哪
让我兴奋的是这个模式本身:系统再野,它也不散架。从一块芯片爬到一个 agent,你只需拧两个旋钮——放宽什么算合法,调粗观测什么——这句话依然成立。在 GPU kernel 上,合法运行是各种有效的求和顺序,你观测数值,容差为 ε。在 LLM 推理里,合法运行是解码策略允许的各种采样,你观测文本(例子见我们的 Jailbreak Oracle 问题)。到了 agent,合法运行是工具调用与外部世界的各种允许交错,你观测副作用——机票订没订上,日历改没改对。
同一个定义,三个海拔。给它起名字,好处有二。其一,规约收拢成一个对象——合法性谓词;此后每一场「这个 AI 到底对不对」的争执,都变成一个具体得多的争执:哪些运行,我们愿意承认合法。其二,难处在哪,数一数便知:要接受,举出一次合法运行即可;要拒绝,得排除全部。
这个定义只说机器运行得合法,不说它的输出高明。结果是否有益、是否无害,是另一个问题,留待日后的文章。
结语
存在性等价是一个走到哪里都用得上的定义:一个输出是正确的,当某次合法运行能解释我们之所见——无论那次运行是一个求和顺序、一条采样路径,还是一个 agent 的轨迹。它没有让「给 AI 写规约」变容易,它只是指明了难处的住址:在合法性谓词里,在我们选择观测什么里。比起「这个 AI 对不对」,这是一个更小、也更锋利的问题——一个更好的起点。
每一个正确性问题,都是一只无窗的箱子。唯一要紧的决定,是你允许自己观测什么。诚实地做这个决定,「正确」就不再是你宣判的一纸裁决,而成为世界能够——或不能——递给你的一份解释。
参考文献
- Cheng Tan, Changgeng Zhao, Shuai Mu, and Michael Walfish. Cobra: Making Transactional Key-Value Stores Verifiably Serializable. OSDI 2020.
- Cheng Tan, Lingfan Yu, Joshua B. Leners, and Michael Walfish. The Efficient Server Audit Problem, Deduplicated Re-execution, and the Web. SOSP 2017.
- Christos H. Papadimitriou. The Serializability of Concurrent Database Updates. Journal of the ACM 26(4), 1979.
- Jiawei Liu, Jinkun Lin, Fabian Ruffy, Cheng Tan, Jinyang Li, Aurojit Panda, and Lingming Zhang. NNSmith: Generating Diverse and Valid Test Cases for Deep Learning Compilers. ASPLOS 2023.
- Shuyi Lin, Anshuman Suri, Alina Oprea, and Cheng Tan. Toward Principled LLM Safety Testing: Solving the Jailbreak Oracle Problem. MLSys 2026.