参数不是越多越好:TreeHeap 私有协议的容量与失真

一个模型要把训练数据中的规律压缩进有限参数,究竟需要多大空间?扩大 TreeHeap 参数,究竟是在增加可复用规律的容量,还是只是在增加一张更大的记忆表?

STONE-1 C02 刚完成正式实验。模型确实使用了 TreeHeap 的左右地址、递归层级和可学习 codec,但仍没有达到产品门槛。

这时最容易说:“再加参数试试。”

这可能是对的,也可能非常危险。参数过少会失真,参数过多也可能记住训练样本而不再泛化。我们要找的不是最大模型,而是:

在给定信息范围和目标失真下,TreeHeap 私有协议需要的合理容量。


1. 刚完成的 C02

C02 使用一百万对真实英中训练句、三颗随机种子,比较三种 TreeHeap codec:

方案 平均 NLL,越低越好 BLEU-4,越高越好 NLL 标准差
固定 0.4/0.6 代数核 4.1138 10.7937 0.0119
可学习连续残差核 4.0538 11.2865 0.0914
固定随机残差核 4.0910 10.6865 0.0093

可学习版本平均最好,但一颗随机种子明显退化。它没有通过 STONE-1 产品线:

指标 门槛 实际
NLL 不高于 3.90 4.0538
BLEU-4 不低于 13.5 11.2865
NLL 标准差 不高于 0.05 0.0914

所以正式结论仍然是:C02 未通过,STONE-1 没有完成。

但这不是“树没用”的结果。


2. 递归结构确实进入了计算

把训练形成的连续残差关掉,强制退回固定代数核,NLL 从 3.9876 恶化到 5.0860,损伤为 1.0984。

把每一层的 left/right 地址交换,NLL 恶化到 5.3420,损伤为 1.3545。

让同一个 checkpoint 逐层看到更细的 TreeHeap 状态:

可见层数 NLL
1,只看 root 4.6366
2 4.6250
3 4.3886
4 4.1860
5 4.0401
6 3.9876

五次增加层级,五次都改善。root 到完整压缩状态改善了 0.6491 NLL。

我们可以确认:

  1. TreeHeap 层级中保存了增量信息;
  2. decoder 会递归读取这些信息;
  3. 左右地址参与读取协议;
  4. learned codec 改变了内部协议。

但“协议存在”不等于“协议容量已经足够”。


3. 参数是私有协议的压缩介质

训练前,参数只是一组初始化数值。训练时,样本产生 loss,loss 产生梯度,梯度不断修改参数。

长期看,这相当于把训练数据中的可复用规律压缩进参数:

训练数据 → loss → gradient → 参数 Theta → 私有协议

模型不可能逐条原样保存全部语言情况。它必须寻找共享规律。例如 eat rice、eat noodles、eat medicine 可能共享“动作与可食用对象”的统计结构。

这个结构未必能被人类直接读懂;encoder 和 decoder 只要形成同一套协议,就能共同使用它。

容量太小

不同规律被迫挤进同一组参数,相互干扰,类似 hash 碰撞。模型只能保存粗轮廓,罕见模式和细节容易失真。

容量太大而数据不足

模型可能为训练样本留下大量独立记忆位置,不再被迫寻找公共规律。训练 loss 很低,测试集却不改善。

所以,参数既不是越少越先进,也不是越多越智能。


4. 用率失真理解模型大小

设 C 是模型容量,D 是模型压缩数据规律后的失真,NLL 是本实验的主要失真指标:

$

$ \min_{\theta} D(\mathrm{data},\mathrm{model}_{\theta}) \quad \mathrm{subject\ to} \quad |\theta| \le C $

$

它问的是:在容量有限时,模型最多能把输出分布逼近到什么程度?

当前 learned TreeHeap 的平均 NLL 是 4.0538 nats/token。换成二进制信息单位:

$

$ \frac{4.0538}{\ln 2} \approx 5.85\ \mathrm{bits/token} $

$

STONE-1 的 NLL 门槛 3.90 对应:

$

$ \frac{3.90}{\ln 2} \approx 5.63\ \mathrm{bits/token} $

$

当前还差约 0.22 bits/token。这些失真可能来自容量不足、训练不足、数据问题或协议缺陷。只扩大模型,不能自动区分它们。


5. 2762 万参数花在哪里

当前模型共有 27,620,482 个参数。FP32 原始参数约 110,481,928 bytes,checkpoint 约 110.5 MB。

部分 参数量 占比
token embedding 与输出投影 26,656,833 约 96.5%
learned TreeHeap codec 296,832 约 1.1%
recursive READ、GRU 等 666,817 约 2.4%

如果把整个模型扩大到 50M,大部分新增参数仍进入 embedding、输出投影和 decoder。它测试的是整个 TreeHeap seq2seq 系统的容量,不能偷换成“codec 参数增加后更好”。

同样,Qwen 或 Kimi 覆盖的知识、语言、模态和任务范围远大于当前英中翻译实验。它们的参数规模不能直接成为 TreeHeap 的答案。

我们现在只问:

对这一百万对英中句子和当前 STONE-1 协议,2762 万参数是不是主要失真来源?


6. 为什么不能只跑一个 50M

如果 50M 变好,至少有两种解释:

  1. 更大容量保存了更多规律;
  2. 28M 本来只需要多训练一轮。

C02 中,多数最佳 checkpoint 出现在最后一步,说明训练可能还没有完全到达平台。如果没有“原模型训练更久”的对照,我们无法判断扩容是否必要。


7. C03 的容量实验

数据、随机种子、TreeHeap 结构、tokenizer、优化器和评测全部冻结。模型仍从零训练,不加载历史 checkpoint。

三个容量点

名称 状态宽度 D decoder hidden H 参数量
base_28m 192 256 27,620,482
balanced_50m 320 512 50,267,778
balanced_92m 512 1024 91,931,906

下一轮不会立刻跑完三档。

Stage A:分清容量和训练时间

实验臂 参数量 更新步数 回答的问题
已完成 base_28m 27.62M 15,625 当前基线
新增 base_28m_long 27.62M 31,250 同一模型多训练一轮
新增 balanced_50m_equal 50.27M 15,625 相同曝光下增加容量

三颗随机种子都要跑,不能只挑最好的一颗。


8. 什么结果才支持容量不足

50M 至少需要满足:

条件 门槛
相对当前 28M 的平均 NLL 改善 至少 0.08
平均 BLEU-4 改善 至少 0.75
三 seed NLL 标准差 不高于 0.08

还必须保留 TreeHeap 结构证据:

结构检查 门槛
关闭 learned codec 的损伤 至少 0.10 NLL
交换左右地址的损伤 至少 0.10 NLL
root 到 full 的改善 至少 0.50 NLL
增加深度有改善 至少 4/5 次
最大闭包误差 小于 1e-5

结果解释提前冻结:

  • 28M-long 追上 50M:主要缺训练时间;
  • 50M 跨 seed 改善:容量不足得到支持;
  • 训练集改善、测试集不改善:过拟合或数据受限;
  • 质量改善但结构因果消失:大模型绕开了 TreeHeap;
  • 两个新实验都不改善:停止扩容,回到协议设计。

STONE-1 原产品门槛不移动。通过容量测试不等于里程碑自动完成。


9. 92M 为什么暂时不跑

92M 是条件实验。只有 50M 同时表现出明确 held-out 改善、稳定性没有恶化、结构因果仍然存在,才进入 92M。

届时要观察:

28M → 50M → 92M,失真是否稳定下降?单位新增参数的收益是否开始衰减?

如果 50M 已无可靠收益,就没有理由让 3090 再花几十小时证明同一个失败。


10. 最终寻找的是膝点

合理参数规模应同时满足:

  1. 质量达到任务要求;
  2. 不同 seed 稳定;
  3. TreeHeap 结构因果仍存在;
  4. 参数与计算成本可承担;
  5. 继续扩容的边际收益已经很小。

当前我们已经知道结构参与了解码,却不知道剩余失真来自容量还是训练不足。下一轮用 28M-long 对照 50M-equal,正是为了回答这个问题。

我们不是盲目造一个更大的 TreeHeap,而是在测量:这套私有协议在当前数据范围内,究竟需要多少空间,才能以可接受失真稳定存在。

本文的 Claim、Predict、证伪条件与后续 evidence 按 ARA 流程公开记录。TreeHeap 与本文容量审计设计属于 SameTime/ARA 持续研究的一部分,使用项目仓库声明的许可证公开,欢迎人类与 AI 复核、复现和提出反例。