# 076 最小激活替换实验 ## 已执行的 NumPy CPU 路线 运行环境:Python 3.12.14、NumPy 2.3.5,float64,CPU。无需模型、数据下载或 GPU。 在本目录运行: ```bash python3 -m pip install -r requirements.txt python3 patching_numpy.py > smoke_test.txt python3 audit_results.py > audit_test.txt python3 -m py_compile patching_numpy.py audit_results.py local_gpt2_patch.py ``` 如系统 py_compile 缓存目录不可写,设置 `PYTHONPYCACHEPREFIX=/private/tmp/ai076-pycache`。本次使用 Codex bundled Python;requirements 安装命令是读者环境准备说明,本次没有执行安装。 任务:输入 `[a,b,q,n1,n2]`,前三维均为 ±1;q=-1 选 a,q=+1 选 b,正数答案为类别1。两个噪声特征独立采自 N(0,0.3²),标签不使用它们。枚举8个核心模式,各配64/16/8个噪声样本,得到512/128/64条训练/验证/诊断数据;数据 RNG760,模型 RNG76/77/78。各集合浮点样本不重复,但八种核心模式在各集合重复,不能称组合泛化。 MLP维度5→16→16→2,隐藏层tanh,402参数,全批次Adam,学习率0.01,1000步,最终checkpoint;dev曲线只记录,不用于早停。每层top4按dev的平均单神经元Δlogit选取。诊断集不参与选择。扰动一是翻转被选值,二是翻转未选值;后者不改变正确答案,因此不计算标准化恢复率。 每个种子保存8320条干预结果:两个条件;第一层原坐标23种干预,第二层原坐标23种、旋转坐标19种,均64个样本。原坐标包括none/self/full/16 singles/top4/reverse_top4/zero_top4/shuffled_top4。shuffle是沿批次循环移位1位,不是独立随机抽样;数据按核心模式分组,同一标签供体仍很多,仅是供体错配诊断,不是强随机负对照。 `reverse_top4` 在clean基底放入corrupt值;其退化应读 `degradation=clean_ld-patched_ld`,不能把其恢复率当denoising比较。`zero_top4` 在corrupt基底把四维设零,并非clean删除试验。旋转是第二隐藏层tanh之后插入Q与Qᵀ;模型函数不变,替换坐标方向改变,不声称tanh网络任意层旋转都等价。 文件:data.npz全部数据;model_*.npz全部权重与旋转矩阵;records_*.json逐例logits及指标;summary.json训练曲线/汇总;audit.json独立标量重算结果。审计不导入训练脚本,重算24960条记录、dev选点及聚合指标;不证明原论文结果。 ## 真实 GPT-2 接口:未运行,待人工核验 `local_gpt2_patch.py` 已通过语法检查,但当前环境无torch/transformers及本地模型,未做运行验证。所需包为PyTorch、Transformers及本地GPT-2权重和tokenizer;未验证版本组合,不提供虚构lock。工具仅调用local_files_only,不联网下载。 调用模板(需替换路径、提示词和已核验位置): ```bash python3 local_gpt2_patch.py --model-dir /absolute/path/to/gpt2 \ --clean 'The capital of France is' --corrupt 'The capital of Italy is' \ --answer ' Paris' --alternative ' Rome' \ --module transformer.h.5 --position 3 --output local_patch_results.json ``` 上述文本和位置是待核验示例,尚未确认token划分、baseline或答案概率。先阅读打印的token表,核对词语对应关系;等长只满足形状条件,不代表语义位置对齐。目标答案必须是不同的单token,含前导空格。真实实验应增加多组匹配提示、错误供体、位置扫描及数据划分。 脚本复制整个GPT-2 block输出在指定位置的向量,非MLP单独输出、非TransformerLens resid_pre。hook使用clone,finally移除;全序列block替换应恢复clean logits,patch之后重跑corrupt应仍等于基线。保留clean/corrupt/patched原始logit差;denominator≤1e-6返回null。没有答案正确性和扰动有效性证据时,不解释恢复率。