ZeroPoint v0 research prototype: new from-scratch NumPy framework, memory-slot architecture, audited Transformer comparison
5c6c847 verified |
Download experiments/recall.md from Holmes2011/ZeroPoint: direct link, hf CLI and curl.
- Browser
- Download file 2.86 kB
-
https://huggingface.co/Holmes2011/ZeroPoint/resolve/main/experiments/recall.md
- Command line
-
hf download hf://Holmes2011/ZeroPoint/experiments/recall.md
-
curl -L -o recall.md https://huggingface.co/Holmes2011/ZeroPoint/resolve/main/experiments/recall.md
2.86 kB
| # 长距离精确回忆(联想检索) | |
| `k1 v1 k2 v2 … kN vN [问] kq` → 回答 kq 对应的值。16 个键、16 个值,随机猜的准确率是 1/16 ≈ 6%。 | |
| 三个模型宽 64、2 层、4 头;训练 20000 步,N 在 2~16 随机;每格是 512 道测试题 × 种子 [0, 1] 的平均准确率。 | |
| | 模型 | N = 2 | N = 4 | N = 8 | N = 12 | N = 16 | | |
| |---|---|---|---|---|---| | |
| | Transformer | 50% | 30% | 23% | 20% | 18% | | |
| | ZeroPoint (16 槽) | 51% | 32% | 23% | 20% | 16% | | |
| | ZeroPoint (32 槽) | 49% | 31% | 24% | 20% | 17% | | |
| ## 判定与解释(11-08 补) | |
| **预注册判定**(见 [`recall_prereg.md`](recall_prereg.md)) | |
| - P1(Transformer 在 N=16 准确率 ≥ 80%)**不成立**:18%。 | |
| - P2(ZeroPoint 比 Transformer 低 ≥ 20 个百分点)**不成立**:N=16 时 16% / 17% vs 18%,差 1~2 点。 | |
| - P3(32 槽比 16 槽高 ≥ 5 个百分点)**不成立**:17% vs 16%。 | |
| **和 3000 步比**:几乎完全一样(Transformer N=2 52% → 50%、N=16 14% → 18%;ZeroPoint 16 槽 51% → 51%、17% → 16%)。训练量加长 6.7 倍没有任何可辨别的提升。 | |
| ## 诊断(11-08,`recall_diag.py`;诊断性实验,不参与上面的预注册判定) | |
| 1. **固定 32 条 N=2 题反复训练**:600 步训练集准确率 100%,loss ≈ 0 → 框架、优化、反向传播没问题。 | |
| 2. **只训 N=1**(复制值,不需要匹配查询):500 步 100% → 复制机制能学会。 | |
| 3. **只训 N=2,换学习率安排**(种子 0,各 8000 步): | |
| - 恒定 3e-3(本脚本原设置):N=2 停在 53%,loss ≈ 0.72。 | |
| - 余弦 3e-3 → 3e-4:N=2 停在 53~59%,loss ≈ 0.72。 | |
| - **余弦 1e-3 → 1e-4:第 6000 步开始突破,第 8000 步 N=2 = 100%,loss 0.001。** | |
| → 任务能学会;**原来的 3e-3 恒定学习率把模型困在"两个候选值各猜一半"的状态**(loss ≈ ln 2 ≈ 0.69)。另外,单独只用恒定 3e-3 训 N=2 到 20000 步也仍是 53%,所以不是步数问题。 | |
| 4. **混合 N(2~16)用同一个 1e-3 余弦跑 12000 步**:N=2 仍只有 56%。混合训练里 N=2 的样本只占约 1/15,梯度信号被稀释,12000 步对 N=2 只相当于 800 步左右——还不够。 | |
| **结论(已测量)**:20000 步无结论不是"训练量差一点",而是**训练配置问题**: | |
| - 恒定 3e-3 太高,模型停在 50/50 对冲的局部解,学不出"用查询键选值"的回路; | |
| - 混合 N 把简单样本(N 小)的信号稀释了大约 15 倍。 | |
| - 只学 N=2 时,1e-3 余弦 8000 步就能到 100%,说明 Transformer 架构有能力学这个任务。 | |
| **下一步**:按修正后的学习率(1e-3 余弦)重跑 recall,或者加课程(先 N=2,再逐步加长到 16);需要重写预注册。在那之前,recall 的结论仍是"无结论",**不能拿这张 20000 步的表去比架构**。 | |