# 第二章 行为与反事实：先确认模型做了什么

《随机鹦鹉解剖学》章节：第二章 行为与反事实：先确认模型做了什么。

## Metadata

- HTML: https://glenzli.com/dr-stochastic-parrot/stochastic-parrot-anatomy/vol-04/ch02-behavior-counterfactuals/
- Markdown: https://glenzli.com/dr-stochastic-parrot/stochastic-parrot-anatomy/vol-04/ch02-behavior-counterfactuals.md
- Collection: Dr. Stochastic Parrot
- Language: zh-CN
- Published: 2026-07-17
- Status: published
- Tags: ai-generated, stochastic-parrot, stochastic-parrot-anatomy, ai

## Content

内部分析之前，应先把目标行为写成可测量对象。否则研究者容易从醒目的 activation 出发，再倒推一个模糊故事。行为实验不唯一识别内部机制，却规定机制解释必须复现哪些事实。

## 2.1 冻结系统与行为标量

令 $G$ 表示包括序列化、模型前向和解码器在内的系统。对输入 $x$，目标标量为

$$
S(x,\omega)=s(G(x;\omega)),
$$

其中 $\omega$ 包括采样随机数、工具返回或其他外部状态。若研究模型 logits，可固定在采样前并令 $\omega$ 消失；若研究最终 Agent 行为，就必须把外部状态纳入设计。

随机系统还要声明条件环境律

$$
\omega\mid X=x\sim P_\Omega(\cdot\mid x),
\qquad
\bar S(x)
:=\mathbb E_{\omega\sim P_\Omega(\cdot\mid x)}
[S(x,\omega)].
$$

若系统在目标层完全确定，$P_\Omega(\cdot\mid x)$ 退化为点质量，$\bar S(x)$ 就是普通的 $S(x)$。比较解码器或工具策略时，$P_\Omega$ 是 estimand 的组成部分，不能只固定输入分布。

常用低噪声指标包括：

$$
S_{a,b}(x)=z_a(x)-z_b(x),
$$

$$
S_y(x)=\sum_{t=1}^{|y|}
\log p(y_t\mid x,y_{<t}),
$$

以及格式约束的连续 score。只报告一次采样的 0/1 成败会丢弃 margin 信息。

## 2.2 目标总体量

行为主张应对应分布 $\mathcal D_{\mathrm{eval}}$ 上的总体量，例如

$$
\mu=\mathbb E_{x\sim\mathcal D_{\mathrm{eval}}}[\bar S(x)]
$$

或条件差

$$
\Delta=\mathbb E[\bar S(X)\mid C=1]
-\mathbb E[\bar S(X)\mid C=0].
$$

有限样本平均是估计器，不是总体量本身。模板、实体和语言若形成层级，应按层级抽样或报告分层效应，不能把同一模板下的一千个实体当作一千个独立机制样本。

## 2.3 Minimal pair 与配对效应

minimal pair 尝试只改变目标因素：

$$
(x_i^+,x_i^-),\qquad
\delta_i=S(x_i^+)-S(x_i^-).
$$

平均配对效应与标准误为

$$
\widehat\Delta=\frac1n\sum_{i=1}^n\delta_i,
\qquad
\widehat{\operatorname{SE}}(\widehat\Delta)
=\frac{\operatorname{sd}(\delta_1,\ldots,\delta_n)}{\sqrt n},
$$

前提是 pair 近似独立；存在共享模板时应对模板 cluster bootstrap 或使用混合效应模型。

改一个词也可能改变 token 数、词频、语气和位置。真正的设计对象不是字符串编辑距离，而是“除目标因素外，其他因果相关因素尽可能匹配”。

## 2.4 反事实有效性

设目标属性为 $C$，观察变量为 $Z$。希望比较

$$
S\bigl(x(C\leftarrow1,Z)\bigr)
-S\bigl(x(C\leftarrow0,Z)\bigr).
$$

自然语言中 $C$ 与 $Z$ 往往不能独立修改：把“医生”换成“护士”同时改变 token identity、频率与社会语义。缓解方法包括：

- 多实体、多模板和双向替换；
- token 长度、词频和位置匹配；
- 人工核验语义与语法；
- 明示不能被控制的伴随变化；
- 用不同构造机制复现实验。

反事实句子可读并不保证来自模型训练分布。应比较 perplexity、基础模型判断或人工自然度，但这些检查也只是代理。

## 2.5 正例、负例与挑战集

单例适合发现假说，不适合验证。一个最低限度的数据结构包含：

- 行为成功的正例；
- 结构相似但行为不应触发的负例；
- 保持语义、改变表面的 paraphrase；
- 改变语义、保持表面统计的反例；
- 新模板、新实体和新语言的 held-out 集；
- 原模型失败但表面结构相同的样本。

最后一类尤其重要：只分析成功样本会把成功的伴随现象误当成功原因。

## 2.6 不变性与等变性

若变换 $g$ 不应改变任务答案，测试不变性

$$
F(gx)\approx F(x).
$$

若输出应按 $\rho(g)$ 改变，测试等变性

$$
F(gx)\approx\rho(g)F(x).
$$

例如交换多选标签后，内容选择应保持而标签随之交换。估计时不要只比较 exact match；还应比较候选 logits 经 $\rho(g)$ 对齐后的误差。

不变性失败可揭示 shortcut，但不能直接定位 shortcut 在内部何处。相反，不变性通过也可能因为多个错误相互抵消。

## 2.7 因子设计与交互

若怀疑行为同时依赖语义 $A$ 与格式 $B$，使用 $2\times2$ 因子设计。交互项为

$$
\Delta_{AB}
=S_{11}-S_{10}-S_{01}+S_{00}.
$$

$\Delta_{AB}\ne0$ 表示两个因素的效应不可由加法主效应解释。更高阶设计要注意样本量快速增长，并在看结果前定义主要对比。

内部 circuit 也可能只在某因素组合上启用；平均掉交互会制造一个不存在于任何单例上的“平均机制”。

## 2.8 Behavioral signature

机制假说应先推出一组行为签名，而不是看到内部图后再挑例子。例如“induction 机制支持重复模式续写”预测：

1. 出现 `A B ... A` 后提高 `B` 的 logit；
2. 破坏首个 `A B` 配对降低该效应；
3. 改变第二个 `A` 的位置系统改变效应；
4. 上下文不足时效应消失；
5. effect 对不同 token 频率与间距具有可估计曲线。

这些预测构成后续内部搜索的验收集。若 circuit 只解释发现它时的样本而不能预测签名变化，它仍是局部拟合。

## 2.9 Prompt、解码与随机性

system prompt、few-shot 示例、reasoning budget、temperature、top-$p$ 和停止规则都是实验因素。研究应选择两层指标：

- **模型层**：固定前缀处的 logits、hidden state 或 teacher-forced likelihood；
- **系统层**：在固定采样协议下重复运行的最终行为分布。

对随机输出，估计

$$
\pi(x)=\Pr_{\omega}[Y(x,\omega)=1]
$$

需要多次独立采样并报告区间。把不同 prompt 的单次采样差异归因内部机制，通常方差过大。

## 2.10 自动生成测试的控制

另一个模型可以生成 minimal pairs 和挑战例，但可能引入模板重复、答案词泄漏和同源偏差。最低控制是：

- 发布生成提示、采样参数和过滤规则；
- 在字符串、embedding 与模板层面去重；
- 人工分层抽样核验；
- 加入规则或人工独立构造的数据；
- 让解释发现模型看不到最终验证集；
- 检查仅凭表面统计的 baseline。

LLM judge 也属于测量模型。其版本、blindness、位置偏差和与被测模型的相关错误都要进入不确定性分析。

## 2.11 黑箱不可识别性

若两个内部机制 $H_1,H_2$ 在测试支持集上满足

$$
F_{H_1}(x)=F_{H_2}(x),
\qquad x\in\operatorname{supp}(\mathcal D_{\mathrm{eval}}),
$$

纯行为数据无法区分它们。有限样本下，更多机制可以插值所有观察值。

行为实验的目标不是单独证明内部算法，而是：

1. 排除与行为事实冲突的假说；
2. 生成能够区分剩余假说的新输入；
3. 为内部干预定义清楚的结果变量；
4. 检查内部假说能否预测未用于发现的行为。

## 2.12 方法审计表

| 方法 | 研究问题与对象 | 操作与估计量 | 必要控制 | 能支持 | 不能支持与失效 |
|---|---|---|---|---|---|
| minimal pair | 因素变化是否改变行为 | 配对替换；$\mathbb E[\delta]$ | token、频率、模板、双向替换 | 匹配设计下的行为效应 | 唯一内部原因；伴随变化会混杂 |
| invariance test | 模型是否遵守任务对称性 | 施加 $g$；对齐输出差 | 变换有效性、原任务性能 | 行为 shortcut 或稳健性 | shortcut 的内部位置 |
| factorial test | 因素是否交互 | 全因子组合；$\Delta_{AB}$ | 平衡、层级抽样、多重比较 | 行为交互 | 交互由哪个组件实现 |
| behavioral signature | 机制假说预测哪些曲线 | 参数化生成；效应曲线 | held-out 参数区间、替代假说 | 假说的外部预测力 | 内部唯一实现 |
| sampled system test | 最终行为概率如何变化 | 重复解码；$\hat\pi$ | seed、工具状态、置信区间 | 指定系统协议的风险率 | 冻结模型 logits 的直接机制 |

合理顺序是先建立稳定行为与反事实，再用内部方法定位，最后回到 held-out 行为集验证。行为层不是“浅层科普”，而是所有机制主张的结果定义与外部约束。
