G65:Toy Transformer 与 Activation Cache:建立可干预的最小实验台
最小可解释性实验台是一个任务机制已知、前向计算可缓存、内部状态可替换且运行可重放的 Toy Transformer,而不是一套只会画 attention 的仪表盘。
内容类型:预习教材(不代表已完成)
日期:2027-04-27
阶段:P3 · AGI Foundations 90
总路线:Day 245
周次节奏:W10 · 周二最小机制
状态:教材已备;学习未完成
一句话定义
最小可解释性实验台是一个任务机制已知、前向计算可缓存、内部状态可替换且运行可重放的 Toy Transformer,而不是一套只会画 attention 的仪表盘。
学习目标
- 从 embedding、attention、MLP、residual stream 到 logits 追踪一条完整前向路径。
- 设计 activation cache 与 hook 接口,使观察和干预使用同一坐标、版本和输入。
- 通过已知规则任务建立 ground-truth mechanism,识别模型可能学到的 shortcut。
核心知识
可解释性实验不一定需要大模型。两层、少量 head、短序列和小词表足以学习重复、括号深度、有限状态机或排序规则。关键是任务生成器能给出结构变量,例如“当前状态”“匹配位置”“目标前驱”,从而比较神经 activation 与真正算法变量。
Transformer 的 residual stream 可看成多个组件共同读写的通信通道。对第 (l) 层,简化写为 r_l' = r_l + Attn_l(LN(r_l)),r_{l+1}=r_l' + MLP_l(LN(r_l'))。Attention head 计算 query、key 相似度后加权 value;MLP 则在位置内变换。缓存应至少区分 layer、component、head、position、batch、dtype,并关联 input id 与 model hash,否则两个运行的同名 activation 可能不可比。
“缓存所有东西”并非目标。Attention pattern 适合观察路由,value/output 适合分析写入内容,residual stream 适合追踪累积表示,logit attribution 适合形成候选,但真正机制仍需 patch 或 ablation。缓存过多会引起显存、序列化和敏感数据风险;toy 台应先只保留支持假设的节点。
训练本身也可能制造混杂。若数据生成器泄漏标签位置,模型会学 shortcut;若训练/测试序列模板相同,所谓算法泛化可能只是记忆。应设置结构 OOD:更长序列、不同符号重命名、规则组合变化,并把成功限定在对应区间。
机制与推导
单个 head 在位置 (i) 的计算为:
q_i=W_Q r_i, k_j=W_K r_j, v_j=W_V r_j
p_ij=softmax_j(q_i·k_j/√d_k + mask_ij)
o_i=W_O Σ_j p_ij v_j
观察 (p_{ij}) 只能说明从哪里读取权重;实际写入 residual 的是经 (W_O) 变换的 value 组合。即使 head 始终关注目标位置,若 value 不含行为相关信息,它也不构成充分解释。
缓存协议可写为 CacheKey=(run_id, model_hash, input_hash, layer, hook, position, head),值还应含 shape、dtype 和 transformation。干预协议必须验证 shape 与版本,并从干净 run 复制 activation 到污染 run。可重放条件是任务 seed、模型参数、tokenizer、输入、hook 代码和 scorer 固定;浮点细微差异只在确实运行后报告。
对 toy 任务可定义行为指标 margin = logit(correct)-max logit(incorrect),比只看 accuracy 更适合 patch,因为 patch 可能改善 margin 但未跨越 argmax。仍需同时报告 accuracy,避免连续指标的微小变化被写成成功恢复。
最小练习或观察步骤
- 选择 8~16 个符号和长度 6~20 的重复规则任务,明确训练 IID、长度 OOD 和符号置换 OOD。
- 画出两层 Transformer 的张量形状,尤其是 batch、position、head、d_head 和 d_model。
- 定义 cache schema,仅计划保存 attention pattern、head output、residual pre/post 与 logits。
- 手算一个两位置单头例子:给定 q、k、v,算 softmax 权重与输出,确认“关注”与“写入”不同。
- 写一个 planned patch:把 clean 的某位置 head output 放入 corrupt run,并定义 margin 恢复和随机 head 对照;不运行时不填写结果。
常见误区与边界
- 使用真实大模型却不了解 tokenization、层结构和缓存含义,得到不可控图像。
- 混淆 attention probability、value content 与 residual contribution。
- 缓存键缺少模型和输入 hash,跨运行比较错位。
- 数据生成器泄漏标签,随后把 shortcut 解释为算法 circuit。
- Toy 模型出现清晰机制不代表大模型使用同一机制,也不代表机制在 OOD 保持。
研究/系统场景连接
研究 registry 应把任务生成器版本、模型初始化、训练配置和每次干预绑定;系统诊断可只在批准的测试集缓存内部状态,避免默认记录用户原文。在金融规则 toy 中,可将“交易序列触发规则”设为有限状态机,观察模型是否真正跟踪状态,还是依赖某个高频 token;未来具身 P4 中相应变量会变成 belief state 与传感器历史,缓存还要面对连续时间和隐藏状态。
自检问题
- Attention pattern 与 head output 分别回答什么?
- 一个可重放 cache key 为什么必须包含 model/input hash?
- 为什么 logit margin 和 accuracy 应一起看?
- 如何设计结构 OOD 来排除模板记忆?
专业课程对齐
- Stanford CS336: Language Modeling from Scratch:回看 Transformer 张量、训练循环与 tokenizer 的实现边界,为 toy 模型建立可信前向基础。
- Transformer Circuits Framework:重点理解 residual stream、QK 与 OV circuit,校准 cache 中每个张量的语义。
- ARENA Interpretability Curriculum:选读 hooks、缓存与 TransformerLens 风格实验,不要求完成整章或任何课程 Gate。
深入学习提示
先让一张纸上的两位置单头例子完全清楚,再写 hook。若实验工具自动提供几十种 activation 名称,只选择能回答当前假设的四种;解释性来自问题和干预,而不是缓存规模。
学后填写区
- Toy 任务与 ground truth:
- 模型和张量形状:
- CacheKey 设计:
- Planned patch 与 scorer:
- 当前 shortcut 风险: