语言模型正在“为世界建模” [Nicholas Carlini]
摘要
Carlini 的基准情景不是打造完全稳健的模型,而是围绕未来可预见时期内仍“极其脆弱”的模型设计安全系统。 传统安全体系本就容忍不完美,但 ML 还没有发展到“街上随便一个人”都无法运行现成代码、迫使系统任意失效的程度。实际含义是,系统设计不能只依赖模型本身。
GPT-3.5 Turbo Instruct 下棋让 Carlini 相信,仅靠下一个 token 预测,也能在没有明确棋规或围棋专用自博弈强化学习的情况下,重建出异常丰富的内部状态。 仅根据着法记谱,它几乎总能走出合法棋步,而且往往质量很高,说明“内部必然存在某种准确建模世界的东西”。但离奇的棋局历史会诱发离奇的下法:基础目标是模仿数据,而不是争取胜利。
围绕模型是否“推理”的争论,掩盖了一个更有助于决策的问题:哪些行为能在什么条件下保持。 怀疑论者通常把语言模型排除在外,AGI 倡导者则预测到2027年模型将取代人类工作,双方的定义都高度可预期。Carlini 转而测量输入—输出行为,并指出,棋力会在陌生记谱法下崩溃,正如分布偏移一直以来都会击穿 ML 系统一样。
后训练让潜在能力更容易被诱导出来,但也可能损害投资者误以为等同于能力的属性。 Carlini 回忆,GPT-4 的一份报告显示,基础模型校准度很好——一个答案若有30%的概率为真,实际约有30%的概率正确——但后训练把这种校准“搞乱了”。指令遵循能力大幅提升,但模型可能只是看起来更聪明,并没有学到多少新东西。
Carlini 报告称自己的编程生产率提高了约50%,并明确将其视为一个 N=1 的结果。 对专家程序员而言,当前模型可以成为代码、API 和陌生语法之上的更高层接口。他会在任务大约有50%成功概率时先问一次,确认方向,再自行补完剩余错误:“95%的解决方案仍然只是95%的解决方案”,但修好最后5%可能带来“20倍的性能提升”。o1 甚至在2分钟内解决了一道动态规划题,代码速度是他自己版本的10倍。
这种生产率提升可能会叠加安全债务,因为模型会复现常见漏洞,同时扩大能够交付软件的人群。 Carlini 见过模型生成本应直接调用 API 的加密代码,也见过容易受到 SQL 注入攻击的数据库代码。他担心未来“代码量增加10倍”,但安全专家不会同步增加10倍——只要常见路径能跑通,不安全的部署就会继续推进。
披露实践仍是一个悬而未决的运营风险,因为部分 ML 缺陷是可以打补丁的软件漏洞,另一些则更像长期存在的科学性漏洞。 一项模型窃取 API 弱点适合90天的协调披露流程;对抗样本则不适合,因为研究人员已经攻击这个问题10年,再多90天也无法解决它。Carlini 预计“1到2年内”会形成更清晰的规范,但目前还没有定型框架。
模型 API 无法完全保护专有架构,基准测试领先也不能可靠证明通用能力。 Carlini 的团队利用 API 输出和线性代数恢复出一个真实生产模型的最后一层及其未披露宽度,虽然没能恢复完整模型;与此同时,训练者受到激励,会直接针对 HumanEval、MMLU 及类似榜单优化。“多得多的基准测试”会让这种定向优化更难,也会让能力声明更可信。
精读
1. 安全系统必须假设模型会失败
Carlini 不把完美安全视为目标:即便是传统系统,也可能输给足够有动机的政府。实际门槛在于普通攻击者是否能成功。如今,他说,面对 ML 系统,“普通人几乎总能成功”,往往只需使用 GitHub 上的现成代码,就能诱导系统产生任意行为。
视觉领域提供了一个令人警醒的先验。研究人员已经追求稳健性约10年,也积累了大量认识,但过去4到5年,客观指标几乎没有提升。这使得可预见未来实现完美稳健性不太可能,不过持续研究最终或许能提高攻击成本。
他的预测刻意保留了不确定性——“这件事发生的概率非常小”,但从某种意义上说,这又是他的中位数预测——即简单攻击会持续存在。系统必须在模型随机误分类输入时控制损害,避免一次不可靠的判断触发“一项极其误导性的行动”。
Carlini 强调,“5年就是机器学习中的一整个永恒”。语言模型已经经历约7年的显著进步,而严肃的攻击研究只有2到3年;再过5年,一切都可能改变。他的预测主要适用于“只要我们还处在当前范式之中”。
2. 棋局揭示了无需明确世界规则的状态追踪
GPT-3.5 Turbo Instruct 改变了 Carlini 的看法,因为它是通过对着法序列进行下一个 token 预测学会下棋的。它不像专门的国际象棋引擎那样,被明确告知棋盘是8×8、棋子如何移动、胜负条件是什么,也没有接受基于自博弈的棋类专用强化学习,却能生成合法且往往质量很高的着法。
仅仅是合法性就很有意义:判断一着棋是否合法,本身就是复杂程序,随机字符不可能稳定地碰巧做到。Carlini 不对意识或意向性作判断,但得出结论:模型“内部必然以某种意义准确地建模了世界”。
更有力的对比来自他自己。给出40步记谱、要求写出第41步时,Carlini 说,尽管自己只是水平普通的棋手,也无法在脑中重建棋盘。模型却能以某种方式追踪局面并采取行动,“从未被告知任何棋规”,甚至不知道这种规则存在。
这一结果让他不再满足于纯粹的表层模型行为解释。他仍然更愿意检查输入和输出,而不是猜测隐藏认知,但棋局表明,下一个 token 预测所捕捉的统计规律,能够编码出远比他预想更深层的表示。
3. 基础目标是模仿对弈,而不是追求胜利
Carlini 通过一段荒谬的合成历史抵达同一棋盘:让每个棋子绕着圈走到位,然后要求模型给出下一步。模型仍然通常会走出合法着法,说明它保留了棋盘状态,但选择十分离奇,因为此前的棋局像是“2个等级约为1500分的人”在下棋。
因果链条很关键:模型从未被告知“下棋的目标是获胜”。它学会的是延续类似人类棋局的数据,其中包括常见的失误和陷阱。面对低质量对弈,它推断自己的任务是“走出合法着法,看看会发生什么”。
监督微调、RLHF、指令微调及相关后训练,能够减少这种错位,尤其是在聊天产品中。Carlini 认为,Instruct 系列把某些能力从“后台某处”带了出来,让它们更容易复现;相比之下,GPT-3 极难使用。后训练使模型即便面对措辞糟糕的问题,也能给出合理回答。
4. 后训练提升诱导能力,却扭曲校准度
正如主持人所说,人类偏好数据奖励的可能是自信、冗长和复杂,而不是真实性。Carlini 没有完整答案,因为研究人员很少能拿到同一个模型等价的后训练前后版本,因此很难分离能力究竟发生了怎样的变化,还是只是变得更容易调用。
他回忆,GPT-4 的一份报告显示,基础模型校准度很高:如果一个数学答案的 token 概率约为30%,它正确的概率也约为30%。后训练之后,“校准度被彻底搞乱了”,但指令遵循能力提升到足以让系统看起来聪明得不可思议。
Carlini 坦率承认,这些影响仍是“一件非常令人困惑的事”。后训练可能没有教会模型多少新知识,却能大幅改善可用性,同时改变影响用户信赖的行为属性。因此,能力、自信、校准度和服从度不应被视为同一个变量。
5. “推理”不如经过测试的行为有用
Carlini 认为,推理之争由定义驱动。怀疑论者把推理定义为排除语言模型;那些预计模型将解决一切问题、到2027年取代人类工作的人,则把模型执行的任何过程都定义为推理。双方都能从自己的前提中得到偏好的答案。
主持人主张,推理应包括知识加推断、自主性、涌现和意向性。Carlini 声明自己不具备哲学专业背景,随后回到操作性测试:模型是否解决了具有挑战性的任务?如果它总能返回正确答案,他并不特别在意它究竟是在推理,还是使用了“一张查找表”。
棋局也提供了反例。把棋局用更古老的记谱法呈现时,模型会生成看起来像着法的文本,却不再追踪棋盘;人类可能也很难读懂这种记谱法,但仍能把它还原出来。是否因此剥夺模型的“推理”资格,取决于所采用的定义,而不是观察到的失败。
Carlini 将这种批评类比为:用 ImageNet 训练、用 CIFAR-10 测试。7年前,研究人员会说,分布偏移显然足以解释失败。如今,由于语言模型被包装成通用系统,预期已经膨胀,但它们仍然是机器学习系统:当部署数据与训练数据相似时,表现会更好。
6. Carlini 优先寻找有用的攻击,而不是道德英雄主义
他的动机很坦率:“我真的很喜欢攻破东西。”他并不是通过计算哪种职业能拯救最多生命来选择安全领域;他选择的是自己能够长期投入、又能异常出色完成的工作,同时要求这项工作总体上推动世界向更好的方向发展。
他的决策规则是“你有多擅长这件事,乘以这件事有多重要”。在一个方向上具有非凡贡献,可能超过在理论影响力最高、但自己几乎无法激励自己投入的领域中贡献甚微。对 Carlini 而言,攻击系统比其他选项更能最大化这个乘积。
攻击者还享有结构性杠杆:他们只需要找到一个被忽略的边界情况,而防御者必须修复每一条路径。某个随机执行几乎永远不会命中的条件——例如哈希值等于 (2^{32}),导致整数溢出——可以被攻击者每次强制触发,从而把一个原本稳健的产品的有效安全性降为零。
ML 进一步放大了这种不对称,因为研究人员仍在不断发现全新的攻击类别。Carlini 想不起自己曾因伦理原因隐瞒已完成的漏洞,主要是因为他从一开始就把想法生成导向有益的问题;不过,他也拒绝排除未来遇到某种危害大到无法发表的情况。
7. ML 需要超越软件安全的披露规范
传统安全领域已经从“全面披露”与沉默之间,收敛到协调披露:通知受影响方,留出明确修复窗口,然后公开。Google Project Zero 的常规例子是90天;若漏洞已被利用,则缩短至7天;Spectre 和 Meltdown 则因缓解异常困难,获得了约1年时间。
一些 ML 发现适合这套模板。Carlini 的团队披露了一种基于 API 的模型窃取攻击,因为服务提供商可以修改接口并阻止攻击。期限既能给用户留下保护时间,也能防止一家业务在于交付产品、而不是修复不可见漏洞的公司无限期推迟整改。
另一些发现无法在90天内打补丁。对抗样本暴露的是研究人员已经研究10年的问题;生物系统研究人员则把它类比为一种新型病原体,在这种情况下,短暂的保密期无法消除伤害。礼貌性通知和过滤器或许能拦住一个样本,却无法解决整个类别,这让 Carlini 不确定软件安全是否真是合适的参照模型。
他预计这个领域会在“1到2年内”建立流程,但今天仍在借用其他领域的类比。他对政策边界的表述同样克制:立法者可以决定攻击 ML 系统是否违法,但前提是根据攻击实际上能做什么来推理,而不是根据“我们认为世界应该是什么样”。
8. 安全研究以速度换取穷尽细节
Carlini 对比了系统论文和机器学习投稿:前者通常是13或14页双栏,后者可能只有7或8页单栏。系统工作要求大量解释和严格评估;ML 则经常接受“这里有个很酷的新想法,也许有效”,因此实验推进快得多。
产出差异是实质性的:在投入相近的情况下,他估计自己每年能写1篇、1.5篇或2篇系统安全论文,而 ML 论文可能有5到6篇。这种宽松对一个年轻领域有益:一篇原创论文加上2次快速改进,都可能在同一场会议上出现,而此前已经在 arXiv 上流传。
成熟领域需要更强的防线,避免想法被反复提出、证据却很薄弱,因此 Carlini 看重两种文化的结合。他的系统训练为 ML 安全提供了差异化优势:最近有一项防御因为符号放错位置而失败,这类细节仅靠查看代码、从第一性原理推理,是他无法发现的。
9. LLM 通过改变抽象层级提升专家编程生产率
主持人提到,Carlini 曾报告语言模型让自己的编程生产率提高约50%;Carlini 则将其限定为 N=1 的轶事。他不认同普遍性的炒作,但表示,对于理解任务、能够编程并检查生成结果的人而言,当前模型确实有用。
他的类比是从汇编或 C 转向 Python。几乎任何结果都仍然可以在更底层实现,但指针、内存分配、语法和样板代码会分散对实际研究问题的注意力。模型接受模糊表达的意图,写出底层细节,让他回到真正关心的推理上。
模型也像是 API 和陌生语言的压缩知识库。Carlini 可以检查一门自己不会写的语言中的代码,再修正边缘错误。在他看来,相比复制一段不确定的 Stack Overflow 代码,要求模型针对任务定制代码,严格更好。
他的工作流从答案可能有50%概率可行时开始:先问一次,检查方向是否有希望,再有选择地迭代,并记住哪些问题类型容易失败。所需技能类似于学习如何写搜索引擎查询——自然语言允许你提出任何请求,但某些表达方式和任务的生产率会高得多。
10. 专家验证无法阻止安全风险随规模扩张
模型有时会重新定义 Carlini 自己对可行性的边界。一道动态规划题原本花了他2到3小时;o1 发布后不久,它在约2分钟内给出正确实现,测试速度还是他版本的10倍。他根据观察到的行为更新判断,而不是固守关于规模扩展的固定预测。
验证仍然是普通代码审查,而不是什么特殊仪式:“Stack Overflow 上一半答案反正就是错的。”生成的方案达到95%,就应被视为恰好95%;有经验的程序员补完最后5%,就可能把部分结果转化成“20倍的性能提升”。
真正的失败模式是无法检查结果的用户。被要求写加密代码时,模型可能直接照办,而不是建议调用经过验证的 API;Carlini 还收到过使用字符串拼接、容易遭受 SQL 注入的数据库代码。他可以替换成参数化模板,但新手可能直接把缺陷部署出去。
最让他担心的是数量效应。模型可能让“代码量增加10倍”,这本身很有价值,但也可能让不安全软件增加10倍,而安全专家并不会同步增加10倍来审计。就像 Rust 的借用检查器一样,有效使用工具要求调整自己的习惯,适应它特有的约束,而不是把它当成一个人类程序员。
11. 基准测试和 API 都会泄露超出所有者预期的信息
旧基准测试测量的是单一窄任务,尽管这个任务——Carlini 举的例子是 ImageNet 中识别“200种不同品种的狗”——很少就是实际应用。通用模型提出了更难的主张:当开发者知道并针对这套测试集进行优化时,一组规模很小的高分无法证明广泛能力。
不需要直接泄露测试集。训练者可以专门针对 HumanEval、MMLU 及约20个熟悉的评分卡调参,得到一个看起来表现出色、但在其他地方失败的模型。Carlini 希望有“多得多的基准测试”,让围绕完整评估集进行定向优化变得更难;至于量化及相关改动,他的回答只是:“祝你好运。”
他的模型窃取工作追踪的也是评估与现实之间的差距。一篇2020年投稿 CRYPTO 的论文,只有在 ReLU 激活、float64 输入和输出、全连接深度不超过3层、每层最多32个单元等人为假设下,才能恢复精确模型。生产环境研究则转而追问真实 API 当下暴露了什么,即使最终只得到一个小层。
这项攻击利用的是最后一层的映射:从示例性的约2,048维内部宽度,映射到约50,000维的 token 输出空间。输出位于一个低维子空间中;奇异值分解可以恢复这一嵌入,而“非零奇异值的数量会告诉你模型的规模”。这是本科线性代数,加上模型架构、API 行为和攻击者视角。
团队恢复了生产模型的最后一层及宽度,包括 Carlini 所说的、首次公开确认的 GPT-3 Ada 和 Babbage 宽度。他们也恢复了 GPT-3.5 的对应数据;OpenAI 对其进行了确认,但协议禁止公开被窃取的数值。因此 Carlini 知道模型规模,却谨慎拒绝披露。
OpenAI 授权了这项测试,Google 在完成法律协调后也予以许可;研究运行在隔离虚拟机上,恢复的数据随后被销毁。该问题通过向 OpenAI 进行90天披露处理;Google 和另外几家未具名服务商修复了漏洞。这个漏洞已经存在约3年:“这类漏洞不是你偶然撞上的”——必须有人具备跨领域的广泛知识,并主动去寻找它们。