Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

7.3 法则二 · 可解释与可信

上一节把「让系统做对的事」拆成了三层;这一节处理的是证据问题:我们凭什么说它是可信的?

「可信」这个词在工程上不是一个维度,而是一组互相正交的性质:正确率(平均意义上做对多少)、校准(它说 80% 时真的是 80% 吗)、鲁棒性(输入稍变、分布稍移会不会翻车)、可解释性(决策依据能不能被说清)、公平性(对子群的影响是否一致,见 7.4)。一个模型可以在这五项里全拿高分,也可以只拿第一项就宣称「可信」。本节的任务是把每一项变成可测量、可上报、可设门槛的对象,并且明确每类方法能证明什么、不能证明什么——后者往往比前者更决定成败,因为可解释性最危险的用法就是把一张漂亮的图当成事故复盘里的证据。

7.3.1 两类可解释性:事后归因 vs 机制可解释

定义 7.3.1 · 可解释性的两个层次
  • 事后解释(post-hoc):不改变模型,用一个更简单、可读的对象去近似它的行为或决策依据。典型做法:特征重要性、逐样本的局部代理(LIME / SHAP)、梯度或输入显著性图(Grad-CAM 及其变体)、生成自然语言解释。
  • 机制可解释性(mechanistic / intrinsic):打开模型内部,直接刻画它的表示与计算。典型做法:用线性探针检测某语义是否存在于某层(若存在,说明该语义在表示空间里线性可分)、定位与某能力相关的子结构(「电路」)、用稀疏字典学习(SAE)把叠加的特征方向分离出来、按概念方向做激活引导。

两类方法回答的是不同的问题:事后解释回答「对它这个预测,哪个输入更重要」;机制可解释回答「它的内部究竟在算什么」。它们不可互相替代:知道「图像右下角更重要」不能告诉你内部如何计算;知道某个头部在做「前一个 token 指什么就复制什么」也不能直接回答「这一单为什么拒赔」。

判断一个方法属于哪一类,只需问:它动了模型内部吗? 动了 → 机制;只在输入—输出之间做拟合 → 事后。

为什么事后解释必然面对「忠实性」问题

事后解释的定义就写明了它是近似:它在用一个更简单的对象(一张热力图、一个线性代理)去逼近一个复杂函数在某个点附近的局部行为。既然是近似,就有误差;有误差就需要度量;而度量它需要参照——参照只能是「模型真实的计算过程」。于是回到起点:要验证解释是否忠实,你得知道真实的计算是什么。

这就是事后解释的结构性困境:它在用一个黑箱去解释另一个黑箱。 由此推出三条工程纪律:

  1. 不要把「看起来合理」当作「忠实」。开一个四足动物的分类任务:模型可能因为背景里的雪而不是狗来判断品种(捷径特征),而热力图会高亮「狗」,因为它高亮的依据是另一个代理模型对「人类会关注哪里」的拟合。
  2. 不同方法在同一模型上可能给出互相矛盾的图,这本身就是重要信息——说明该样本的决策依据对方法选择敏感,不可作为单一证据。
  3. 忠实性必须独立验证:常见做法是扰动检验(把解释器认为重要的输入区域删掉,看输出是否真的大幅变化)与单调性检验(逐步增加解释器认为重要的像素,看目标分数是否单调上升)。通过检验的解释才有资格进入事故复盘。

机制可解释性正是为了绕开这个循环,但它目前仍是一个开放的研究方向:能定位的电路有限、能解释的特征只覆盖一部分、以及(重要)它目前不能给出「这个模型在你的业务上安全」这类结论。

方法 7.3.1 · 归因方法对照
方法 原理 输出 计算代价 适用 已知失效模式
Grad-CAM 对目标类别分数求最后一层卷积激活的梯度,做全局平均得到通道权重 αc\alpha_c,再对激活加权求和并 ReLU:CAM=ReLU(∑cαcAc)\mathrm{CAM}=\mathrm{ReLU}\bigl(\sum_c\alpha_c A_c\bigr) 一张粗粒度热力图(空间位置) 一次前向 + 一次反向 图像分类与检测的特征定位 分辨率受最后一层感受野限制;对捷径特征(背景、水印)敏感且不一定诚实;同类样本间不稳定
SHAP Shapley 值:把「特征子集的边际贡献」在所有子集上加权平均,满足局部准确性、缺失性与一致性 每个输入的加性贡献值 精确计算随特征数指数增长,实际靠采样近似 表格数据、特征数中等的模型 特征相关性会导致贡献被分摊到相关特征上;近似误差需报告;计算量大
LIME 在样本邻域内扰动输入,用简单模型(线性 / 决策树)局部拟合 局部可读的规则或系数 每个样本若干次前向 文本与图像的逐样本解释 邻域定义(用哪种距离)会显著改变结论;不稳定——同一输入重采样可能得到不同解释
梯度 / 输入显著性 直接看 ∂y^/∂x\partial \hat y/\partial \boldsymbol x 每维输入的敏感度 便宜 快速定位、调试 存在梯度饱和与噪声;原始梯度图常视觉噪声大,需平滑(SmoothGrad 一类)

选择规则(本教程建议):把归因方法当作调试工具而不是证据工具——它适合回答「我该往哪看」,不适合回答「它就是因此决定的」。要把归因结论写进报告,至少要附上扰动检验的结果与方法一致性(两个以上方法是否指向同一区域)。

例 7.3.1 · 案例分析:手算一次 Grad-CAM,并解释它为什么会骗人

题面:某图像分类模型对类别 cc 的输出,其最后一层卷积得到 K=2K=2 个通道、每个通道 3×33\times3 的激活图:

A1=(001012123),A2=(321210100).A_1=\begin{pmatrix}0&0&1\\0&1&2\\1&2&3\end{pmatrix},\qquad A_2=\begin{pmatrix}3&2&1\\2&1&0\\1&0&0\end{pmatrix}.

对类别分数量测得通道权重 α1=0.8, α2=−0.5\alpha_1=0.8,\ \alpha_2=-0.5。求 Grad-CAM 图。

解

第一步:加权求和。 S=α1A1+α2A2=0.8 A1−0.5 A2=(0−1.50−1.00.8−0.50−1.00.8−0.51.6−00.8−0.51.6−02.4−0)=(−1.5−1.00.3−1.00.31.60.31.62.4).S=\alpha_1 A_1+\alpha_2 A_2=0.8\,A_1-0.5\,A_2 =\begin{pmatrix}0-1.5&0-1.0&0.8-0.5\\0-1.0&0.8-0.5&1.6-0\\0.8-0.5&1.6-0&2.4-0\end{pmatrix} =\begin{pmatrix}-1.5&-1.0&0.3\\-1.0&0.3&1.6\\0.3&1.6&2.4\end{pmatrix}.

第二步:ReLU(Grad-CAM 的关键一步)。

S+=(000.300.31.60.31.62.4).S^{+}=\begin{pmatrix}0&0&0.3\\0&0.3&1.6\\0.3&1.6&2.4\end{pmatrix}.

第三步:归一化到 [0,1][0,1]:除以最大值 2.42.4,得

S+/2.4=(000.12500.1250.6670.1250.6671.0).S^{+}/2.4=\begin{pmatrix}0&0&0.125\\0&0.125&0.667\\0.125&0.667&1.0\end{pmatrix}.

读图:注意力集中在右下角,左上角为零。

这里就是「为什么会骗人」的入口。 上面的计算完全正确,但它成立的前提是 α1,α2\alpha_1,\alpha_2 这两个权重反映了「模型内部真正重要的通道」。而热力图的说服力来自视觉:一张右下角高亮的图,看起来就像「模型在看右下角的东西」。若数据集里所有目标类图像恰好都把目标放在右下角,那么模型也可能只是学到了构图规律(一个捷径特征),而热力图同样会高亮右下角——此时热力图是忠实的(它确实反映了模型的决策依据),但决策依据本身是错的。

由此得到本节最重要的一条区分:

问题 归因方法能回答吗
「模型的决策依赖输入的哪一部分?」 能给出候选答案(需扰动检验)
「这个依赖关系在该任务上是否合理?」 不能——这是任务与数据的问题,需要外部知识
「在别的样本 / 别的分布上它依赖什么?」 单样本解释无法回答,需要成组统计
「内部是怎么算出这个依赖的?」 不能——这是 7.3.2 机制可解释的问题
∎

7.3.2 机制可解释性:电路、归纳头与稀疏自编码器

这一节的三条入口各自在回答什么

把三个对象并排看:归纳头回答「某个具体的、可验证的机制长什么样」,它给出了「机制的例子」;电路回答「一个能力由哪些部件共同完成」,它给出「机制的分工」;SAE 回答「一个神经元为什么对很多不相关的东西都有反应」,它给出「表示的结构」。三者回答的问题不同,能支撑的结论强度也不同:归纳头与电路级结论是因果的(靠消融验证),SAE 特征在命名之前只是假设(可命名是经验事实,不是保证)。这条强度差异会在 7.3.7 的证据登记表里被正式分级。

事后归因在输入空间工作;机制可解释在权重与激活的空间工作。它的目标可以一句话概括:把「模型在算什么」分解成可命名、可验证、可单独干预的部件。 目前这条路线有三个被广泛讨论的对象:电路(可命名的子结构)、归纳头(一种具体、可验证的注意力头行为)、以及稀疏自编码器(把纠缠的激活分解成更可解释的特征)。

定义 7.3.2 · 叠加(superposition)与稀疏自编码器(SAE)

叠加:模型的表示维度 dd 远小于它需要区分的概念数 MM(M≫dM\gg d),因此多个概念共享同一批方向——每个概念占据一个方向,但这些方向不正交、并允许轻微干扰。它的一个可观测后果是:某个语义在激活空间里往往单独不可分(一个神经元不专属于一个概念),但对稀疏激活(少数概念同时活跃)而言又可以被线性读出(这解释了为什么线性探针能奏效)。

稀疏自编码器(SAE) 的目标就是把这种叠加的激活 x∈Rdx\in\mathbb R^d 分解为更单义(monosemantic)的特征。结构是一个过完备的编码器 + 解码器:

f(x)=ReLU(Wenc(x−bdec)+benc),x^=Wdecf(x)+bdec,f(x)=\mathrm{ReLU}\bigl(W_{\text{enc}}(x-b_{\text{dec}})+b_{\text{enc}}\bigr),\qquad \hat x=W_{\text{dec}}f(x)+b_{\text{dec}},

训练目标是重建 + 稀疏:

L=∥x−x^∥22+λ∥f(x)∥1.\mathcal L=\bigl\lVert x-\hat x\bigr\rVert_2^2+\lambda\bigl\lVert f(x)\bigr\rVert_1 .

λ\lambda 越大,编码越稀疏(每个样本只有少数特征被激活),可读性越好但重建越差——这是一个显式可调的权衡,也让 SAE 有一个可比较的指标(重建损失 vs 平均激活特征数 L0L_0)。

为什么「一个神经元一个概念」是错的,而 SAE 想要修的就是这个

如果你曾经试过「打开某个中间层,查看激活值最大的那个神经元在响应什么」,你多半会失望:它常常对一堆不相关的东西都有反应(大写字母、代码缩进、某个特定人名、数学符号)。这不是模型训坏了,而是表示效率的要求:给定 dd 维表示,要区分 M≫dM\gg d 个概念,就必须让概念共享方向。

SAE 的做法不是「换个更干净的表示」,而是在原有表示之上再学一个解码器:把它当作「字典」,用稀疏的线性组合复原原激活。当这个字典学好后,它的每一列就是一个特征方向,而一个样本的编码 f(x)f(x) 告诉你「这句话里激活了哪些特征、强度多少」。这样做的价值在于:特征可被单独干预——把某个特征方向的激活压下去,观察行为如何变化。这就是 7.3.3 的激活引导。

需要同时记住 SAE 的三个已知局限(否则会把它的结论用过头):① 重建不完美,未解释的方差会残留在重建误差里;② 稀疏惩罚与「可解释」只是相关,不保证每个特征都能被人类命名(存在「死特征」与难以命名的抽象特征);③ 训练成本高,且换一个模型层就要重训一套 SAE。因此 SAE 目前的定位是审计与定位工具,不是安全证书。

方法 7.3.2 · 机制可解释性的三类具体成果与其可迁移结论
成果 内容 可迁移的结论(写代码时有什么用)
归纳头(induction head) 一类由两个注意力头组成的回路:前一个头把「前一次出现的同一 token」的位置信息带到当前 token,后一个头据此复制该 token 之后的那个 token;其行为可由「序列中重复的二元组」直接构造出测试用例 上下文学习(in-context learning)的一部分可以用可验证的机械回路解释。工程含义:当模型看起来在「举一反三」时,它可能只是在做模式补全——这解释了为什么少样本示例的表面格式会强烈影响输出(见 errata)
电路 通过路径追踪与消融实验定位「哪些注意力头 + MLP 写通道」共同完成一个具体任务(例如间接宾语识别、句子前指代) 提供了「按部件做消融」的方法论:想知道某部分是否必要,就把它归零、看行为是否改变。这个方法论可以直接移植到你的模型上做特征重要性分析,比看权重数值可靠
SAE 特征 用稀疏字典把中层激活分解为可命名的特征方向;跨模型与跨层出现相似的特征(例如「代码里的安全性」「某类实体的引用」) 提供概念级别的干预接口:不必重训模型,只需在推理时加减一个方向(见 7.3.3)。也提供审计接口:为某个概念找一个方向,然后测量它在被拒答 / 被顺从的样本上的激活差异

7.3.3 激活引导:不改权重,改这一层的表示

定义 7.3.3 · 激活引导(activation steering)

在推理时,对某个中间层的激活 hh 加上一个概念方向 v\boldsymbol v(通常由「正例提示的激活均值 − 反例提示的激活均值」得到):

h′=h+α v,α∈R.h'=h+\alpha\,\boldsymbol v,\qquad \alpha\in\mathbb R .

v\boldsymbol v 来自对比提示(contrast pairs,激活添加 / Activation Addition 一类做法)或从 SAE 的特征方向取得。α\alpha 与作用的层是它的两个旋钮:层选错则无效或破坏能力,α\alpha 过大则产生退化输出。

引导为什么有效,以及它为什么危险

为什么有效:如果某个概念(例如「拒答倾向」「某种语气」「是否承认不确定」)在某一层的表示空间里是线性可分的,那么沿这个方向移动就应该单调地改变行为强度——这与「线性探针能读出语义」是同一个假设的两种用法(读 vs 写)。

为什么危险:线性方向不是正交基。沿着「拒答」方向移动,可能同时移动了与它共线的好特征(例如「谨慎表达」或「对高风险话题更详细说明」)。也就是说,引导没有副作用保证:它最坏的情形不是「没效果」,而是在其他行为上产生你测量不到的偏移。实践纪律是:任何引导实验都要做成组的能力回归(在标准任务上跑一遍,看有没有退化),并记录 α\alpha 与层号;它是实验手段,不是发布手段。

7.3.4 幻觉:机制、度量与缓解

定义 7.3.4 · 幻觉(hallucination)

生成式系统输出流畅且看似合理、但与事实或与给定证据不符的内容。它有两个可分别处置的子类:

  • 事实性幻觉:与外部世界的事实不符(编造引用、错误的数字)。
  • 忠实性幻觉:与给定上下文不符(检索到的文档里没有这件事,但回答里有)——在 RAG 系统里更常见,也更容易自动检测。

为什么会发生(三个来源,均可溯源):

  1. 训练目标:语言建模优化的是「下一个 token 的似然」,而流畅与合语法对高似然的贡献通常大于可验证的准确性;模型没有被显式训练去区分「我记得」与「我在补全一个合理形状」。
  2. 解码过程:采样带来随机性;在低信息位置(没有检索证据支撑时)模型只能依靠先验,先验不足时仍会输出高置信度的连贯文本。
  3. 对齐带来的副作用:偏好数据里「自信、直接地回答」通常比「我不确定」更受欢迎(这与 7.2.2 节 的迎合现象同源),因此 RLHF 可能提高拒答不足与过度自信。
幻觉为什么是「可测量」而不是「难以对付」的

这两件事容易被混为一谈。难对付是真的(三个来源分别在训练目标、解码过程、偏好数据里,没有单一开关);但可测量也是真的,而且这一点更重要——只有可测量,才能设门槛、做灰度、判断一次改动是变好还是变坏。可测的抓手有三类:① 可验证字段(数字、日期、引用)可以自动比对;② 文本—证据一致性(回答里每句话是否有检索证据支撑)可以用匹配与蕴含判定;③ 拒答与过拒本身就是可统计的量(7.3.5)。工程经验是:不要指望一次性消灭幻觉,而是先把可测的部分测出来并设阈值,把「无法验证」的部分明确标注为不可信区域(例如要求逐句给出出处,给不出来就不回答)。

方法 7.3.3 · 幻觉缓解的分层手段(附代价)
层 手段 机制 代价 / 局限
数据 / 训练 混入「我不知道」与「证据不足」的示范与偏好;训练可验证任务(有唯一答案) 让「承认不知道」成为一个被奖励的行为 过度训练会抬高拒答率,损失可用性
推理 / 检索 检索增强生成(RAG):先检索再回答,把文档内容作为上下文 把「记忆」问题换成「阅读理解」问题 引入新失效:检索漏召、文档冲突、忠实性幻觉、注入风险(7.2.4.2)
解码 / 约束 引用约束(要求逐句给出出处并在输出后校验);受限解码(只允许输出结构化字段);对可验证字段用工具调用替代生成 把「说」变成「查」 只对可验证部分有效;格式约束降低表达自由度
输出 / 流程 拒答阈值:当置信度或证据得分低于阈值时拒答或转人工;高风险场景强制人工复核 把不确定性转成动作 阈值需要标定;过拒与漏答之间存在不可消除的取舍(见 7.3.5)

本教程的排序建议:先用工具与检索把可验证的部分从生成中移除(最有效、副作用最小),再用引用约束约束剩下的部分,最后才用拒答阈值兜住残余——因为拒答是对可用性最贵的动作。

7.3.5 校准与选择性预测:让它知道自己不知道

定义 7.3.5 · 校准与期望校准误差

一个分类器是校准的,如果它输出的置信度与它的实际正确率相符:在所有「自信为 pp」的预测中,约有 pp 的比例是对的。把预测按置信度分到 MM 个桶 BmB_m(桶内平均置信度 conf(Bm)\mathrm{conf}(B_m)、实际正确率 acc(Bm)\mathrm{acc}(B_m)),期望校准误差(expected calibration error, ECE)为

ECE=∑m=1M∣Bm∣n ∣acc(Bm)−conf(Bm)∣.\mathrm{ECE}=\sum_{m=1}^{M}\frac{\lvert B_m\rvert}{n}\,\bigl\lvert \mathrm{acc}(B_m)-\mathrm{conf}(B_m)\bigr\rvert .

两条工程事实:深度网络普遍过度自信(ECE 大意味着「高置信度的错误」频繁出现,这比「不确定时出错」危险得多);且ECE 依赖分桶方式与样本量——桶数 MM 与数据分布都会改变数值,因此报告 ECE 必须同时报告桶数与评测集,跨论文比较 ECE 要非常小心。

校准解决的是「它说的话」,不是「它做的判断」

这个区分决定了很多误用。校准是一句关于置信度的陈述:它保证「当它说 80% 时,正确率约为 80%」。它不改善判断本身——若模型把两类样本彻底混淆,完美校准仍会给出「一半对一半」的诚实数字,排序能力(AUC)一点没变。因此校准的正确用途是为「置信度 → 动作」的阈值提供依据(多自信才允许自动处理),而不是作为准确率的替代品。另一个必须记住的边界:校准只在评测分布上成立,分布漂移后它会先失效,而且失效得很安静(数字仍然好看,含义已经变了)——所以校准与 OOD 监测必须成对上线。

例 7.3.2 · 手算 ECE,并读出「该不该上线」

题面:某二分类模型在验证集(n=1000n=1000)上的分桶统计如下:

桶 样本数 ∣Bm∣\lvert B_m\rvert 桶内平均置信度 conf\mathrm{conf} 桶内实际正确率 acc\mathrm{acc}
1 200 0.10 0.10
2 300 0.40 0.30
3 250 0.70 0.60
4 250 0.95 0.75

① 求 ECE。② 若业务要求「任何置信度下,错误率不超过标示的 1.2 倍」,这个模型能否上线?③ 若改用「只在高置信桶(桶 4)自动处理、其余转人工」,需要什么额外信息才能判断是否可行?

解

① 逐桶加权绝对差

桶 权重 ∣Bm∣/n\lvert B_m\rvert/n 差值 ∣acc−conf∣\lvert\mathrm{acc}-\mathrm{conf}\rvert 贡献
1 0.200 0.00 0.000
2 0.300 0.10 0.030
3 0.250 0.10 0.025
4 0.250 0.20 0.050

ECE=0.000+0.030+0.025+0.050=0.105.\mathrm{ECE}=0.000+0.030+0.025+0.050=0.105 .

② 判断口径。业务要求是逐桶的相对约束:错误率 1−acc1-\mathrm{acc} 不得超过「标示置信度」的一个倍数。逐桶检验:

  • 桶 4:1−0.75=0.251-0.75=0.25,而标示 0.950.95 的 1.21.2 倍是 1.141.14(作为「允许错误率」的口径应当写成 1−conf1-\mathrm{conf} 的倍数更直观:允许错误率 ≤1.2×(1−0.95)=0.06\le 1.2\times(1-0.95)=0.06)。实际 0.250.25 超了 4 倍以上 → 不满足。
  • 桶 3:允许 ≤1.2×0.30=0.36\le 1.2\times0.30=0.36,实际 0.400.40 → 不满足(轻微)。
  • 桶 2:允许 ≤1.2×0.60=0.72\le 1.2\times0.60=0.72,实际 0.700.70 → 满足。

结论:整体 ECE 0.105 看起来「还行」,但逐桶看会在最关键的桶(高置信区)直接失守。 这正是「平均值掩盖子群」在置信度维度上的翻版:ECE 是加权平均,它把「低置信区完全正确」与「高置信区严重过自信」混成了一个不错的数字。上线门槛必须写成分桶形式,而不仅是单一 ECE。修法:温度缩放一类后处理可以压低过自信,但它不改变排序——用于「是否自动处理」的判断往往够用,用于「预测本身是否对」无能为力。

③ 需要的信息:把桶 4 单独当作一个系统评估——它的精确率(用于估计自动处理的错误比例)、覆盖率(自动处理占比,否则省不了人力)、以及转人工的延迟与成本(部分自动化也会产生排队)。若要设门槛,典型写法是「桶 4 精确率 ≥p⋆\ge p^\star 且覆盖率 ≥c⋆\ge c^\star」。这是选择性预测的标准形式:牺牲覆盖率换取低错误率,两者构成一条曲线。

∎
选择性预测为什么是「可信」最实用的一件工具

回看点名率 ≠\neq 正确率的现实:很多高风险场景(医学影像初筛、文档审核、异常交易标记)不需要全自动,它们只需要「把最可靠的那部分自动化,其余交给人工」。这正好对应选择性预测的形式化:模型输出「预测 + 置信度」,我们按置信度阈值 τ\tau 决定「自己答 / 转人工」:

  • 覆盖率(coverage):Pr⁡(置信度≥τ)\Pr(\text{置信度}\ge\tau)——有多少比例被自动化。
  • 风险(risk):在自动处理的那部分上的错误率。

把 τ\tau 从高到低移动,就得到一条风险—覆盖曲线。它比单一的准确率数字有用得多,因为它直接对应一个工程决策,并且天然包含代价:每提高一点覆盖率,就要接受一点风险。部署时应该报告的是这条曲线(或曲线上的一个工作点),而不是一个孤立的准确率。 这也顺带解决了 7.2 里的过拒问题:拒答与转人工是同一个旋钮的两侧,两侧都要测。

7.3.6 水印与内容溯源:统计信号,不是证明

定义 7.3.6 · 语言模型水印的统计原理

一种常见的做法是绿名单(green list)偏置:在第 tt 步,用此前生成的 token 与一个只有模型方知道的密钥 kk 做伪随机划分,把词表分为「绿名单」GtG_t(约占 γ\gamma,例如 25%)与其余部分;采样时给绿名单 token 的 logit 加一个偏置 δ>0\delta\gt0,于是绿名单 token 更可能被选中。检测时,用同一密钥重算每一步的绿名单,统计命中率

z=∣s∣G−γTTγ(1−γ),z=\frac{\lvert s\rvert_G-\gamma T}{\sqrt{T\gamma(1-\gamma)}},

其中 TT 为 token 数、∣s∣G\lvert s\rvert_G 为落在绿名单中的 token 数。若文本未加水印,zz 近似标准正态(均值 0);若加了水印,zz 随 TT 增长而显著为正,因此可用一个可调假阳率(例如 z>4z\gt4)判定「这段文本很可能是本模型的输出」。

这条统计量在防什么、不防什么

zz 的设计目标很明确:让「不是我生成的文本误判为我的」的概率可控(假阳率由阈值直接给出),同时让真水印文本的 zz 随长度增长而显著为正。这条性质在第三方手里才有价值——检测只需要密钥,不需要模型权重、不需要调用 API,也不需要相信某个「AI 检测器」的判断。但要立刻记住它的反面:假阳率可控不等于「检测结论可靠」,因为假阴率(真水印文本被判定为无水印)取决于改写程度与文本长度,而攻击者恰恰可以操纵这两者。下面列出它不能做的四件事,都是部署时必须写进文档的边界。

水印能做什么、不能做什么

它能做:在没有密钥的第三方手里,对一段文本给出统计上是 / 不是本模型生成的判断,并且假阳率可控(这是它相对「检测器模型」的关键优势——检测器模型是又一个可能被对抗绕过的黑箱,而水印是一个可计算的检验统计量)。它也可以用于合规场景:证明某段内容由本模型产出,用于内容标注与溯源。

它不能做(每一条都是部署时必须写进文档的边界):

  1. 不能防篡改:文本被改写、翻译、截断、或用另一个模型重新润色一遍,统计信号会衰减甚至消失;攻击者也可以直接给出「改写指令」把它洗掉。因此水印是取证线索,不是防伪标。
  2. 不能抵抗内行:检测需要密钥,但生成规则如果被推断出来,攻击者可以优化「去掉水印同时保持内容」的改写。
  3. 假阳与假阴都要报告:zz 阈值给出的是假阳率;而假阴率取决于文本长度与改写程度——短文本(TT 很小)几乎无法判定。
  4. 它不是「AI 内容检测」的通用解:它只对加了水印的那一个模型有效,对未加水印的模型、对开源权重模型都没有作用;把它宣传成通用检测会带来实际的误判风险。

7.3.7 可解释性能证明什么、不能证明什么

方法 7.3.4 · 证据登记表(把解释性结论分级)

把「我们做过可解释性」变成可验收的证据,需要区分证据强度。下表按「能不能进入事故复盘 / 合规文档」分级:

证据 能证明 不能证明
单样本热力图(Grad-CAM / 显著性) 该样本上模型决策与输入某些区域相关(经过扰动检验后) 机制、跨样本稳定性、依赖关系是否合理
通过扰动与单调性检验的归因 该解释在该样本邻域内与实际行为一致(忠实性) 在分布外样本上同样忠实;依赖关系在任务上是对的
成组统计的归因(同类样本上的重合度、稳定性) 该模态 / 该类别下模型系统性地依赖某类特征(对发现捷径特征很有用) 因果性;也不能证明「没有别的依赖」
线性探针 该语义在该层的表示空间中线性可分 模型在推理时使用了该语义(可分 ≠ 被使用;需消融验证)
SAE 特征 + 干预实验 「压掉这个方向 → 行为按预期改变」的因果证据(在受测分布上) 该方向在其他行为上无副作用;对未见分布同样成立
电路级分析 某个子结构必要(消融后行为改变)且充分(部分再现)于一个受控任务 该结论推广到开放任务;也不能证明系统安全
校准曲线 + ECE(分桶) 该评测集上置信度与正确率的关系 分布外仍校准(这一点几乎总是不成立,必须配 OOD 监测)
水印检测(zz 统计量) 该文本以高置信度来自该模型(在给定假阳率下) 文本内容是否真实、合规、原创;也不能抵抗改写

使用纪律(三条,本教程建议直接写进团队文档):

  1. 声明证据的等级与适用范围:写清「在什么数据上、什么方法、是否通过扰动检验」,不用「我们验证了模型是安全的」这类无法证伪的句子。
  2. 不使用未经检验的解释做决策:用人做决策时提供解释,要冒自动化偏置的风险——人倾向于相信流畅的解释。若解释不忠实,人会更容易被误导,比自己判断更糟。
  3. 解释性证据不替代监测:它回答「为什么」,不回答「现在是否正在出错」;后者只能靠线上指标与告警(7.6)。
机器遗忘与模型编辑(拓展:删不掉的记忆)

「让模型忘记某些东西」在合规(被遗忘权)、版权与危险知识管控里都会遇到。它至少包含两个不同的任务:

  • 模型编辑(model editing):把某个事实改成另一个(纠正错误、更新知识)。代表性方法是 ROME(Locating and Editing Factual Associations in GPT,2022,arXiv:2202.05262)——用因果追踪定位到中层 MLP 的键值投影,再做秩一更新改写该层权重;MEMIT(Mass-Editing Memory in a Transformer,2022,arXiv:2210.07229)把单点编辑推广到批量编辑。它们的共同假设是「事实回忆集中在特定层的 MLP 里」,因此编辑便宜且局部;局限是副作用难测(改 A 会不会顺手改了相关的 B)与泛化性有限(换个提问方式可能就编不掉了)。
  • 机器遗忘(unlearning):从模型中移除某些数据的影响(隐私合规的核心动作)。它比编辑难,因为需要「既忘掉、又不显著损害其他能力」,而且无法真的从权重里定位一条数据。评测上,TOFU(TOFU: A Task of Fictitious Unlearning for LLMs,2024,arXiv:2401.06121)用虚构作者构造「应当忘掉的」数据,从而让「遗忘」与「泛化」可以分开度量;WMDP(The WMDP Benchmark: Measuring and Reducing Malicious Use With Unlearning,2024,arXiv:2403.03218)则构造危险知识的选择题基准,用来度量「移除危险知识」是否真的有效且不伤通用能力。

这一块的诚实结论:当前方法在有白盒访问时成本可控,但对鲁棒性(重新微调几步、换个提问方式、用少量相关数据微调)的保护明显不足——文献中的常见做法是同时报告「遗忘强度」与「重学习攻击下的残留」。因此在部署里,遗忘不应被当作唯一手段,数据侧的最小化与访问控制(7.6)才是第一道门。工具层面可参考 EasyEdit(编辑)与 open-unlearning(遗忘)两个开源实现。本节所述方法的效果数字以原论文为准,本教程不复述未经核对的数值。

本节的六个常见误解
  1. 「热力图高亮哪里,模型就‘在看’哪里」:高亮是归一化后的可视化,其形状受方法、层、归一化与后处理影响;不同方法可能给出不同区域。它是线索,不是结论。
  2. 「解释读起来顺 = 解释是对的」:流畅的解释与忠实的解释没有必然关系(且人对流畅解释有系统性过度信任)。忠实性必须用扰动 / 单调性 / 消融之类的独立检验来验证。
  3. 「线性探针能读到某语义,说明模型在用它」:可分性说明信息存在,不说明被使用。要证明「被使用」需要消融实验:把该方向投影掉,看行为是否改变。
  4. 「SAE 找到了可命名的特征,就说明模型是完全可解释的」:SAE 有重建误差与不可命名的特征,且有成本;它提供的是审计接口,不是全模型的解释。把「某个特征可命名」推广成「模型已被理解」,是现有文献反复避免的过度解读。
  5. 「校准好了就能放心用」:校准是在评测分布上的性质,分布外几乎必然失效(这是校准与 OOD 监测必须成对使用的原因)。另外 ECE 本身依赖分桶与样本量,跨论文比较需谨慎。
  6. 「加了水印就能检测 AI 生成内容」:水印只对加了水印的那个模型有效、对改写脆弱、对开源权重模型无效。把它当作通用 AI 内容检测会直接导致误判。
即时自测 · 7.3

Q1 一个团队要在事故复盘里写「我们的模型决策主要依据 X 特征」。按 方法 7.3.4,他们至少要提供哪两类证据才能这样写?为什么单张热力图不够?

Q2 某 RAG 客服系统的检索命中率 92%,但用户投诉「它引用了不存在的规定」。这是 定义 7.3.4 中的哪一类幻觉?给出两条具体的缓解动作,并说明各自的代价。

Q3 运维发现模型在生产分布上「全都答得很自信」。请给出一个能在不重训模型的前提下改善这一状况的方案,并说明它不能解决什么。

参考要点

Q1 至少需要:① 方法一致性 / 成组统计——同一类别的多个样本上,多种归因方法是否指向同一区域(单样本的解释不能支撑「主要依据」这种全称结论);② 消融或扰动检验——把该特征移除 / 遮盖后,输出是否按预期显著改变(这才能把「相关」升级为「被使用」的因果证据)。单张热力图不够的原因有两层:它是单样本的(无统计意义),且未经检验的归因可能不忠实(它的高亮依据来自近似器,而不是模型内部计算)。

Q2 属于忠实性幻觉(与给定上下文不符)——检索命中了文档,但模型生成了文档里没有的条款。缓解动作与代价:① 引用约束 + 自动校验:要求输出逐句给出出处,并在输出后用字符串 / 嵌入匹配核验「该句能否在对应文档中找到支撑」,不通过则重写或拒答。代价:需要额外的校验步骤(延迟上升),且对改写式引用(意译而非摘抄)匹配困难,可能造成过拒。② 受限输出:规定高风险字段(条款编号、金额、期限)必须由工具调用或结构化检索填入,不允许生成。代价:需要领域建模(把可验证字段从自由文本中剥离),且降低表达灵活性。补充:还要查检索侧——92% 的命中率意味着 8% 未命中,未命中时模型倾向于用先验补全,那正是最容易编造的情形;应当在未命中时默认「证据不足」而不是照常回答。

Q3 方案:不动权重做后处理校准——最常用的是温度缩放(在留出的校准集上拟合一个标量温度 TT,对 logits 做 z/Tz/T 后再 softmax),或按分桶做等距回归(isotonic);顺带把「置信度 → 动作」的阈值加上(选择性预测,见 7.3.5)。优点:便宜、可复现、只改一个标量。不能解决的:① 它不改变排序,因此不改善区分能力(AUC 不变)——若模型本身分不开,校准只是把数字改得更诚实;② 它依赖校准集与部署分布同分布,一旦线上分布漂移,校准立刻失效,因此必须配 OOD 监测与漂移告警;③ 它不解决错误本身;④ 若过度自信的根因在训练(例如偏好数据奖励自信语气),校准只是贴了一层补丁,下一次模型更新后要重新拟合。

延伸阅读与可溯源清单

事后归因

  • Selvaraju 等, Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization(2016,arXiv:1610.02391)——方法 7.3.1 与 例 7.3.1;开源实现 pytorch-grad-cam、Captum(PyTorch 官方模型可解释性库,含 Integrated Gradients 等归因方法)。
  • Lundberg & Lee, A Unified Approach to Interpreting Model Predictions(2017,arXiv:1705.07874)——SHAP,库 shap。
  • Ribeiro 等, "Why Should I Trust You?": Explaining the Predictions of Any Classifier(2016,arXiv:1602.04938)——LIME。
  • Adebayo 等, Sanity Checks for Saliency Maps(2018,arXiv:1810.03292)——对显著性方法可靠性的关键反证:许多方法在参数被随机化后给出相似的解释,说明「看起来合理」不等于忠实。

机制可解释

  • Olsson 等, In-context Learning and Induction Heads(2022,arXiv:2209.11895)——归纳头的原始工作(Transformer Circuits Thread)。
  • Elhage 等, Toy Models of Superposition(2022,Transformer Circuits Thread,无 arXiv,见 https://transformer-circuits.pub/2022/toy_model/index.html )——定义 7.3.2 中叠加的可视化研究。
  • Bricken 等, Towards Monosemanticity: Decomposing Language Models With Dictionary Learning(2023,Transformer Circuits Thread,无 arXiv,https://transformer-circuits.pub/2023/monosemantic-features );Cunningham 等, Sparse Autoencoders Find Highly Interpretable Features in Language Models(2023,arXiv:2309.08600);Lieberum 等, Gemma Scope: Open Sparse Autoencoders Everywhere All At Once on Gemma 2(2024,arXiv:2408.05147)——SAE 路线的代表作与开放权重 SAE(可用于你自己的审计实验)。
  • Anthropic, On the Biology of a Large Language Model(2025,官方研究文章,无 arXiv,https://transformer-circuits.pub/2025/attribution-graphs/biology.html )——把电路级分析推广到多步推理与幻觉机制的研究文章。工具:TransformerLens、SAELens。

激活引导 / 表示工程

  • Turner 等, Steering Language Models With Activation Engineering(2023,arXiv:2308.10248);Rimsky 等, Steering Llama 2 via Contrastive Activation Addition(2023,arXiv:2312.06681);Zou 等, Representation Engineering: A Top-Down Approach to AI Transparency(2023,arXiv:2310.01405)——定义 7.3.3 的三条入口。开源实现:repeng。

幻觉、校准与水印

  • Lin 等, TruthfulQA: Measuring How Models Mimic Human Falsehoods(2021,arXiv:2109.07958)——真实性评测的早期基准(注意:它的题目构造方式决定了它度量的是「模仿人类常见错误」的倾向,不是通用事实性)。
  • Ji 等, Survey of Hallucination in Natural Language Generation(2022,arXiv:2202.03629);Huang 等, A Survey on Hallucination in Large Language Models(2023,arXiv:2311.05232)——定义 7.3.4 的综述来源(按 arXiv 编号核对,编号未在官方页面逐字确认,引用时建议核对标题)。
  • Guo 等, On Calibration of Modern Neural Networks(2017,arXiv:1706.04599)——ECE 与温度缩放的标准来源。
  • Kirchenbauer 等, A Watermark for Large Language Models(2023,arXiv:2301.10226)——定义 7.3.6;工具 MarkLLM(水印方法评测工具箱)。
  • Lewis 等, Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks(2020,arXiv:2005.11401)——RAG 的原始工作。

本节小结:可解释性分两层——事后归因回答「哪个输入重要」(有忠实性问题,必须独立检验),机制可解释回答「内部在算什么」(有电路、归纳头、SAE、激活引导四条入口,但仍是开放研究方向,不是安全证书)。可信是一组正交性质:用分桶校准 + 风险—覆盖曲线处理「它知不知道自己会错」,用检索 / 工具 / 引用约束 / 拒答阈值分层处理幻觉,用水印给出可计算但脆弱的溯源统计信号。所有这些证据都有一个共同的纪律:写清等级与适用范围,并且不替代线上监测。下一节处理另一条腿:同一套系统对不同人群的影响是否一致,以及出错时谁来负责。