跳到主要内容

非确定性 — 在模型周围造确定性

这一章讲三件事: 为什么同一个输入问两遍,答案可以不一样; 为什么把「随机旋钮」拧到底也关不掉这个特性; 以及安全工程视角的结论——控制的安装位置在模型外,不在模型里。 这一章是原书后半场的地基:后面六章全部建立在「模型输出不可全信」上。

1. 这一章讲什么

原书从这节起换挡:前半场讲的传统安全理论,从这节起开始正面处理 AI 系统本身。 开篇给了一个总判断,值得整段记住:AI 系统本质上是概率系统——按模式产出结果, 而不是按固定逻辑;看起来连贯、看起来有意图,底下跑的是统计推断; 放进真实环境后,「测试时听话的,上线未必听话;孤立正确的,组合起来可能涌现 (整体表现出各部件都没有的新行为)」。所以安全工程师的姿势是: 假设系统总会有时偏离预期行为,约束它的活动,使它不构成灾难性风险1

这一章拆的「非确定性」就是这份假设的第一条根据。

2. 顶层全景

传统函数: LLM 调用:
───────── ─────────
f(输入) → 唯一输出 query(输入) → 输出分布中的一个样本
同输入必同输出 同输入,常见「略有不同」的不同输出
不可预测 = 有 bug 不可预测 = 设计如此

工程对策的位置:
[你的程序:输入校验 → 调模型 → 输出校验/约束 → 执行动作]
└─ 模型在这一格,黑箱对待 ─┘

图说:模型是个「出多种可能结果」的零件;确定性要由围着它的程序层提供。

3. 核心原理

3.1 非确定性是设计进去的,而且不止一处

同一输入,LLM(大语言模型)常给出两个略有差异的输出——书里开宗明义: 这是这项技术被想要的特性2

成因也不神秘,书里点名了三处(清单那条拆成两步讲),每一处都是设计里的自觉选择:

  • 采样(sampling):模型每一步产出的是一张清单,列出「下一个 token (token,模型处理文本的最小单位,可能是一个词或半个词)」的各档可能, 取哪一个由带随机性的采样决定——这正是文本有变化、不机械的原因;

  • 那张清单的学名叫概率分布(每种可能各占多少可能性的一览表);

  • 浮点运算:在显卡上做海量算术时,加法完成的先后顺序可以不同, 而浮点加法不满足严格结合律,顺序不同,末位就有微差;

  • 并行(许多个小计算同时铺开做)求和:上一步说的加法正是这样做的—— 这正是顺序不固定的原因;

  • 并发(多个请求同时处理):你的请求在服务端跟别人的挤在一起跑, 相互影响执行路径2

注意这三处的共同点:没有一处是「出了故障」。随机从入口(采样)到算术(浮点) 到调度(并发)层层都在。想靠「找 bug」消灭它,方向就错了。

3.2 温度调到 0 也关不掉

读者这时多半会想:不是有个叫温度(temperature)的设置吗—— 调低它,输出就收敛;调到 0,不就完全确定了?

书里专门堵了这条路:有研究表明,即使温度设为 0,模型仍表现出非确定性行为 (书里引的论文标题就叫《Non-Determinism of "Deterministic" LLM Settings》)3。 温度能压住的是采样那一段随机,压不住浮点与并发那两段。 「把随机旋钮拧到底」在物理上就不等于「确定」。

书里顺势把 LLM 的本质点破:它核心上是 token 预测引擎——统计上预测 「接下来什么最可能讨好最多人」,而不是逻辑上理解并回答问题3

模型出厂前还有一道后训练(post-training:出厂前的最后一次打磨)。

这次打磨属于微调(在已训好的模型上小规模再训一轮),把它进一步调向 「给出最可能令人满意的输出格式与内容」3。 记住这一点,后面所有「它为什么一本正经地答错」都顺理成章。

3.3 黑箱与神谕:工程师真正面对的东西

书里有一段对工程师处境的刻画,值得完整转述:你并不是在调用一个输出确定的 函数,你是在查询一个可能给出很宽范围答案的「场」;而这个场对我们大体是黑箱, 只能通过 LLM 这个神谕(oracle——你问、它答,但答案的理由你无法直接查证) 来间接解读4

传统调试的前提是「同一输入可复现,所以能定位」;非确定性把这个前提抽走了。 你没法单步跟进模型「为什么这样说」,只能改输入、再问一次、看结果变没变—— 这已经不是调试,是做实验。

3.4 结论:确定性造在模型周围

于是全书后半场的工程纲领在此立起:我们要在模型和 AI 系统周围建造确定性—— 加控制,保证系统不能跑到预期行为之外、产出预期格式之外的东西5

两个要点:

  1. 位置:书里特意区分了两种「护栏」——模型语境内的护栏(prompt 里写 「你不许……」)和模型外的护栏。本书的关注点与全书工程努力的方向是后者: 加在精炼模型输出、执行模型输出的程序与系统上的控制5;
  2. 理由:prompt 是文本,模型对文本的遵守是概率性的(下一章会把这一点 推到极致——「提示词不是安全边界」)。程序层的校验是布尔逻辑:过,或不过, 没有第三种。

3.5 主走查:两次调用,和一个兜得住的外壳

拿一个真实感十足的调用走一遍(输出内容为演示所编,差异模式符合书里描述):

你的程序调用模型,输入完全相同:
「把这句话分类:『我的订单三天了还没发货』 → 返回 JSON:{"category": "..."}」

第 1 次调用返回:
{"category": "logistics"}
第 2 次调用返回:
{"category": "物流配送", "confidence": "高"}

差异从哪来:温度 0.7 时,「logistics」「物流」「配送」都在概率分布前排,
采样两次抽中了不同的;即温度 0,浮点求和顺序的微差也可能让排名翻转。

外壳怎么兜(模型周围的确定性,三层):
① 格式校验:约定只接受 {"category": <枚举值>}。
第 2 次返回多了 confidence 字段、category 是中文——校验不过。
② 归一化:外壳做一次映射「物流配送 → logistics」,放行。
③ 有限重试:归一化也救不了的,重试 1 次;再失败 → 走人工队列,绝不放行。
(重试有上限——05 章 3.2 节的失败安全在这里兑现。)

结果:模型的「每次都有点不一样」被限制在壳内;
能不能执行、执行什么,由壳(你的程序)决定,不由模型决定。

4. 作者的判断与证据

  • 书里引用的研究:温度 0 仍非确定,书里给了论文标题3;采样/浮点/并发 三个来源,书里引了《Defeating Nondeterminism in LLM Inference》等文献;
  • 作者的立场:「非确定性是想要的特性」——这是行业共识,但「对安全工程而言 它是麻烦」也是书里的立场,两句话合读才完整2;
  • 作者的工程纲领:「造确定性于模型周围」——这是全书的方法论主张, 后面各章的每一层控制都是它的实例5

5. 边界与局限

  • 书里没有给「输出校验」的具体工具与格式——拿机器可查的格式规范来卡输出、 把调用约束成结构化请求,这类现成机制书里一个字没提;走查里的三层外壳是我们的工程展开;
  • 温度 0 的非确定性有量级之分(多数重试内可复现 vs 完全漂移),书里没给数据;
  • 「黑箱」的补救手段——让模型解释自己、用第二个模型审计——书里留到后文 (人类在环,第 09 章拆解),本节不展开;
  • 书里说「LLM 讨好最多人」是概括性的说法,严格说是「预测训练分布中最可能的 延续」,不要把「讨好」当成价值判断。

6. 可带走的

  1. 同一输入两次输出不同,是设计不是故障;随机藏在采样、浮点、并发三层;
  2. 温度 0 ≠ 确定,别把「关随机」当成可靠性方案;
  3. LLM 本质是 token 预测引擎:统计上最可能的延续,不是逻辑上最对的答案;
  4. 面对它,传统「同输入可复现」的调试法失效,只能做实验;
  5. 工程姿势:假设系统有时会偏离预期,约束它,使偏离不构成灾难;
  6. 控制装在模型周围的程序层:输入校验、输出格式校验、归一化(把不合规范的输出修成规范形式)、有限重试;
  7. prompt 层的约束(「你不许……」)不是安全控制,是引导——别把引导当护栏;
  8. 测试 AI 功能时,一次通过不算通过,要看输出分布是否全落在可接受集合内。

7. 原文地图

主题原书章原文位置
AI 是概率系统、涌现、约束偏离Planning is a Security Controltext/12-fm-planning-is-a-security-control.txt:13(搜「probabilistic」)
非确定性是想要的特性、三个来源Non-Determinism & Probabilistic Behaviortext/13-fm-non-determinism-probabilistic-behavior.txt:3(搜「floating point」)
温度 0 仍不确定、token 预测引擎、后训练Non-Determinism & Probabilistic Behaviortext/13-fm-non-determinism-probabilistic-behavior.txt:5(搜「token prediction engines」)
查询场、黑箱、神谕Non-Determinism & Probabilistic Behaviortext/13-fm-non-determinism-probabilistic-behavior.txt:7(搜「oracle of the LLM」)
造确定性于模型周围、控制加在系统层Non-Determinism & Probabilistic Behaviortext/13-fm-non-determinism-probabilistic-behavior.txt:9(搜「determinism around」)

Footnotes

  1. 出处:「Planning is a Security Control」第 13 段(text/12-fm-planning-is-a-security-control.txt:13,搜「probabilistic」)。原文:AI 系统是概率系统,按模式而非固定逻辑产出;看似有能者未必长期可靠,测试听话者上线未必,孤立正确者组合后可能涌现新行为;安全工程师应假设系统有时偏离预期行为,并约束其活动使之不构成灾难性风险。

  2. 出处:「Non-Determinism & Probabilistic Behavior」第 3 段(text/13-fm-non-determinism-probabilistic-behavior.txt:3,搜「floating point」)。同一输入常有两种略异的输出且这是「想要的特性」;书引《Defeating Nondeterminism in LLM Inference》;随机来源:token 采样、浮点数学、并发关联。 2 3

  3. 出处:「Non-Determinism & Probabilistic Behavior」第 5 段(text/13-fm-non-determinism-probabilistic-behavior.txt:5,搜「token prediction engines」)。温度可调低非确定性,但研究表明温度为 0 仍有非确定行为(引《Non-Determinism of "Deterministic" LLM Settings》);模型核心是 token 预测引擎;后训练使其优化「满足最可能答案与输出格式」。 2 3 4

  4. 出处:「Non-Determinism & Probabilistic Behavior」第 7 段(text/13-fm-non-determinism-probabilistic-behavior.txt:7,搜「oracle of the LLM」)。原文:调用模型不是调用确定输出的函数,而是查询一个响应范围很宽的场;场大体是黑箱,只能通过 LLM 这个神谕解读。

  5. 出处:「Non-Determinism & Probabilistic Behavior」第 9 段(text/13-fm-non-determinism-probabilistic-behavior.txt:9,搜「determinism around」)。原文:程序员与安全工程师需要在模型与 AI 系统周围建造确定性;虽会讨论模型语境内的护栏,但本书与工程努力的重点是精炼与执行模型输出的系统/程序上的控制。 2 3