# 预注册实验:查三个问题 > 写于实验之前(2026-10-18)。跑完只在下面追加结果,不改这一节。 **背景**:ema_longrun.md 否定了"槽值无界累积"假设。无 ema 的模型在 1024~4095 字处 loss 比 64~255 字处高约 0.22; 有 ema 的高约 1.77。compare.md 里 16 个槽只有 3~5 个被写入(**更正**:3~5 是按未归一化的门控分布算的偏低值;归一化后读约 10/16,写约 6~10/层)。 ## 假设和预测 **H2(训练长度)**:长序列变差是因为训练只见过 64 字;模型在更长的位置上遇到的槽状态分布是训练时没见过的。 - 预测:训练长度改为 256(每步字数不变、其余相同)后,1024~4095 与 64~255 的 loss 差 **缩小到 T64 的一半以下**。 - 不成立时会看到:差距没有缩小(< 2 × 标准差的变化)。 **H3(ema 为什么更差)**:ema 把长期槽的写入乘上 (1-λ),训练时(64 字)长期槽几乎不起作用,模型学会只用短期槽; 到了长序列,读地址仍指向短期槽,但短期槽里的内容和训练时的统计不同。 - 预测 ③a:ema 模型的**写地址**集中在半衰期短的槽上:半衰期 > 16 字的槽,写入占比 < T64 模型的一半。 - 预测 ③b:ema 模型学到的长期槽 λ 更接近 1(半衰期更长),或者长期槽的读占比在远处位置上升。 - 不成立时会看到:两组的写入分布没有明显差别。 **H4(槽塌缩)**:塌缩不是训练失败,而是写地址的 softmax 竞争让少数槽赢者通吃;在不同序列位置上"赢的槽"不同, 所以整体统计(compare.md 的 3~5 个有效槽,见上面对该度量的更正)低估了实际用到的槽数。 - 预测 ④:按位置分段(0~63 / 64~255 / 256~1023 / 1024~4095)分别统计有效写槽数,各段的并集 > 整体有效槽数 × 1.5; 同时各段的读/写分布之间有明显差别(任意两段的 JS 散度 > 0.1)。 - 不成立时会看到:各段的分布几乎相同,用的始终是同几个槽。 **判定**:每条按上面的数值阈值判,3 个种子均值;差别和 2 × 种子间标准差比。 ## 结果(实验之后写) ### 验证 loss(64 字)和长度外推(32 条 × 4096 字;均值 ± 标准差,3 个种子) | 条件 | 64 字验证 | 0~63 | 64~255 | 256~1023 | 1024~4095 | 远−近 差 | |---|---|---|---|---|---|---| | T64 | 1.5214 ± 0.0134 | 1.4372 ± 0.0187 | 1.4742 ± 0.0341 | 1.6617 ± 0.0234 | 1.6932 ± 0.0305 | +0.2190 ± 0.0630 | | T64-ema | 1.5182 ± 0.0076 | 1.4308 ± 0.0039 | 1.6476 ± 0.0529 | 3.1084 ± 0.2157 | 3.4153 ± 0.2402 | +1.7677 ± 0.2188 | | T256 | 1.5572 ± 0.0060 | 1.4741 ± 0.0117 | 1.4486 ± 0.0098 | 1.5098 ± 0.0022 | 1.5155 ± 0.0048 | +0.0669 ± 0.0051 | ### H3:写入落在半衰期 > 16 字的槽上的占比(0~63 段),和学到的最长半衰期 | 条件 | 长期槽写入占比 | 最长半衰期(字) | 远处读长期槽占比的变化 | |---|---|---|---| | T64 | 0.061 ± 0.005 | 109 | +0.009 | | T64-ema | 0.014 ± 0.001 | 103 | +0.007 | ### H4:槽的使用(T64,写地址;各层各头平均) | 段 | 有效写槽数 | |---|---| | 0~63 | 8.6 | | 64~255 | 8.7 | | 256~1023 | 8.5 | | 1024~4095 | 8.9 | | 整体 | 8.7 | 各段用到的槽的并集 ÷ 整体有效槽数 = 0.68;各段分布之间最大的 JS 散度 = 0.010 ## 判定(按预注册的标准) - H2 训练长度:远−近差 T64 +0.2190 → T256 +0.0669 → **成立** - H3a ema 写入避开长期槽:占比 0.061 → 0.014 → **成立** - H3b ema 的长期槽更长或远处更依赖长期槽 → **不成立** - H4 槽塌缩是分段使用不同的槽:并集比 0.68,JS 0.010 → **不成立** 模型已保存在 experiments/out/diag_*.npz,可以事后再分析。