先画轮廓,再补细节:TreeHeap 能否逐层训练并提前停止

当前 STONE-1 C10 正在单张 RTX 3090 上读取完整语料。它和 Transformer 一样,使用 token 交叉熵产生梯度;但当前做法仍然比较朴素:每个训练步骤都启用完整 TreeHeap 和完整 decoder,一直训练到语料结束。

Houming818 提出了一个很自然的问题:

TreeHeap 本来就有 root、depth 1、depth 2,直到 leaf 的递归层级。能否先把表示轮廓的高层训练充分,然后冻结这些已经稳定的计算,只训练后续细节?

如果可以,我们就不必在每一次细节实验中,反复支付已经学会的轮廓训练成本。

这不是当前已经得到的实验结论,而是一个建立在 TreeHeap 层级结构上的新假设。本文把它写成可以执行、可以失败、也可以被外部读者审核的方案。


1. 为什么普通训练看不见“哪一层已经学完”

普通语言模型训练只有一个最终输出:

输入文本
  -> 整个模型
  -> 下一个 token 的概率分布
  -> 交叉熵

只要最终交叉熵下降,我们就知道模型整体变好了,却不知道:

  • root 是否已经稳定;
  • 哪一层仍在贡献新信息;
  • 新增一层究竟降低了多少损失;
  • 是否有一些层已经可以停止反向传播。

TreeHeap 与 flat 参数系统不同的潜在价值,是它天然暴露了递归深度。我们可以让每个深度都交出一份阶段性预测,从而测量信息是怎样随着树的展开逐步增加的。


2. “轮廓”不是人工规定的摘要句

为了方便理解,我们可能会说:

root       大致知道在谈饮食
depth 1    知道某人在吃东西
depth 2    知道动作、对象和修饰关系
leaf       补齐具体字词

这只是说明分辨率的例子,不是训练标签。

我们不会告诉 root “你必须保存主语”,也不会告诉 depth 2 “你必须保存宾语”。每层真正保存什么,仍由同一个 token 交叉熵和梯度共同形成。所谓轮廓,只采用一个可以测量的定义:

在容量受限的较浅 TreeHeap 状态下,对最终 token 分布仍然有用的预测信息。

如果 root 最后保存的是主题、句型、词频偏好或别的私有编码,只要它能稳定降低未见验证数据的 NLL,就属于模型自己形成的协议。


3. 让每层只修正上一层的错误

设只读取 root 时,模型输出一组词表 logits:

$$ z_0 = f_0(H_{\mathrm{root}}) $$

开放第一个深度后,不重新推翻 root 的结果,而是学习一个修正量:

$$ z_1 = z_0 + \Delta z_1 $$

继续开放更深层:

$$ z_d = z_0 + \sum_{k=1}^{d}\Delta z_k $$

最终概率仍然是普通 softmax:

$$ p_d(y_t)=\operatorname{softmax}(z_d) $$

每个深度仍使用相同的 token 交叉熵:

$$ L_d=-\frac{1}{N}\sum_{t=1}^{N}\log p_d(y_t) $$

这里没有发明新的“轮廓 loss”。区别只在于:TreeHeap 把最终预测拆成 root 的初始判断和每一层 detail 的残差修正。

这像先画一张低分辨率图,再逐层补充边缘和纹理。后面的画笔可以修正前面,但不需要每次从白纸开始。


4. 一次完整的渐进训练怎样运行

阶段 A:只训练 root

关闭所有 detail correction head,只让 root 尝试预测 token。它不可能恢复全部细节,因此 NLL 会比较高;我们的目标也不是让 root 背下整句话,而是让它在有限容量下达到自己的最佳验证结果。

阶段 B:开放 depth 1

把 root 参数冻结或把学习率降到很小,只训练第一层修正量 $\Delta z_1$。记录它相对 root 减少了多少验证 NLL。

阶段 C:逐层增加深度

依次开放 $\Delta z_2,\Delta z_3,\ldots$。每一阶段都从前一阶段的 checkpoint 开始,而不是从零训练整棵树。

阶段 D:低学习率联合校准

所有深度开放后,短暂解冻全模型,以很小学习率联合训练。它用于修复早期冻结造成的接口误差,而不是重新开始一轮完整预训练。


5. 什么时候可以说“这一层训练够了”

单个 batch 的 NLL 一定会波动,因此不能看到一次下降停止就冻结。每层至少记录四个量。

5.1 固定验证集 NLL

$$ L_d^{\mathrm{valid}} $$

它回答:使用 root 到 depth $d$ 时,模型在未参与梯度更新的数据上表现如何。

5.2 新增深度的边际收益

$$ G_d=L_{d-1}^{\mathrm{valid}}-L_d^{\mathrm{valid}} $$

如果 $G_d>0$,新深度提供了可泛化信息;如果长期接近零,该层可能暂时没有训练价值。

5.3 平台期

使用移动平均观察若干次验证。如果一层经过约定训练预算后,最佳 NLL 不再改善,才认为它进入平台,而不是要求每一步严格单调下降。

5.4 计算成本

同时记录 GPU 小时、训练 token 和估算反向 FLOPs。否则即使 NLL 相同,我们也无法证明渐进训练节省了算力。

一份理想报告会长这样:

可读状态 最佳验证 NLL 新层收益 累计 GPU 小时
root 7.20 - 2.0
+ depth 1 6.10 1.10 3.1
+ depth 2 5.20 0.90 4.3
+ depth 3 4.90 0.30 5.5
+ depth 4 4.88 0.02 6.7

表中数字只是说明格式,不是实验结果。如果真实结果在 depth 4 只改善 0.02,我们才有依据讨论停止扩展,而不是凭肉眼判断“轮廓已经够好”。


6. 算力究竟省在哪里

渐进训练不会神奇地让所有计算消失。它可能节省的是:

  1. 冻结参数的反向传播:稳定层不再计算参数梯度和优化器状态更新。
  2. 高层状态缓存:对于固定训练样本,可以缓存冻结 encoder 的高层结果。
  3. 实验复用:更换细节 kernel 时,可以从稳定的轮廓 checkpoint 出发。
  4. 提前停止深度增长:当连续深度的边际收益低于成本时,不再增加层级。
  5. 按设备分级发布:低算力设备只运行高层,高算力设备继续读取细节。

但如果最终联合校准必须重新训练全部参数很久,或者冻结后性能明显恶化,那么算力优势就不存在。这个可能性必须保留。


7. 最危险的失败方式

7.1 root 被迫记住所有细节

如果 root 容量过大,它可能直接记忆 token,后续深度失去作用。需要限制 root 容量,并通过 detail 打乱和 root 消融确认信息分工。

7.2 冻结了错误的早期协议

早期 root 可能只是快速收敛到一个局部最优。过早硬冻结会让后续层永远修补错误地基。因此正式实验应比较:

硬冻结
降低学习率
周期性短暂解冻
全程联合训练

7.3 correction head 只是另一个 flat 模型

如果每层 correction head 可以绕过 TreeHeap 地址,直接读取全部 token,它会退化成普通 MLP。每个 head 必须只读取对应深度的 TreeHeap 状态,并接受地址交换与 detail shuffle 审计。

7.4 深度增加反而损害泛化

训练 NLL 下降而验证 NLL 上升,说明新增层只记住了训练语料。此时不能把“更深”当作“更智能”。


8. Claim、Predict 与 Proof

Claim:S3-TH-PROGRESSIVE-C01(Open)

TreeHeap 可以把 token 预测分解为高层轮廓预测与逐深度 detail 残差;在最终验证质量不劣于联合训练的条件下,稳定高层可以被复用,从而减少后续训练的反向计算成本。

Predict

如果 Claim 成立,应同时观察到:

  1. 增加并充分训练一个有效深度后,历史最佳验证 NLL 不恶化。
  2. 不同深度带来可重复的正边际收益,而不是只靠最后一层完成全部任务。
  3. 冻结高层后,新增 detail 仍能继续降低验证 NLL。
  4. 渐进方案达到与联合训练接近的最终 NLL,但累计反向计算量更低。
  5. 打乱某层 detail 会损害它已经带来的收益,证明 correction head 没有绕过树结构。

对照实验

实验臂 训练方式 目的
A 所有深度从头联合训练 当前基线
B 逐层开放并硬冻结旧层 测试最大算力节省
C 逐层开放,旧层使用低学习率 测试协议能否缓慢协调
D 逐层开放并周期性联合校准 测试冻结与自由度的折中

所有实验必须使用相同语料、tokenizer、参数预算、固定验证集和随机种子组。报告最终 NLL 的同时,也报告 wall-clock、GPU 小时和处理 token 数。

Falsification

以下任一结果都会削弱或否定 Claim:

  • 只有全模型始终联合训练才能达到目标 NLL;
  • 冻结高层后,新增深度无法继续学习;
  • 所有收益都集中在最后一层或 GRU 输出头;
  • 打乱 TreeHeap 地址和 detail 不影响结果;
  • 渐进训练的计算成本不低于联合训练;
  • 所谓轮廓模型只是在训练集上记忆,固定验证集没有改善。

9. 与当前 C10 的关系

当前 C10 仍然是必要基线。它使用完整 TreeHeap 联合训练,回答“在全量原始语料上,这个架构能达到什么 NLL”。没有这条基线,我们无法评价渐进方案到底节省了什么、损失了什么。

因此正确顺序是:

C10 完整训练结束
  -> 保存最佳固定验证 checkpoint
  -> 完成 TreeHeap 因果审计
  -> 以相同数据复制联合训练基线
  -> 实现逐深度 correction head
  -> 比较渐进训练的质量与成本

我们现在没有证据宣称“越靠近 root 必然是人类可读的语义轮廓”。真正需要证明的是一个更克制、也更有工程价值的命题:

较浅状态是否先形成稳定、可复用的预测能力;较深状态是否能够在其上持续增加信息。

如果答案是肯定的,TreeHeap 的层级就不只是数据摆放方式,而会成为一种可观察、可冻结、可继续生长的训练坐标系。


10. 当前结论

本文没有宣布新实验成功。它完成的是下一阶段航线设计:

  • Loss 仍然使用经过长期验证的 token 交叉熵;
  • TreeHeap 深度负责拆分预测分辨率;
  • 每层通过 logit 残差修正上一层;
  • 训练是否停止由固定验证 NLL 和边际收益决定;
  • 算力优势必须用相同质量下的累计成本证明;
  • 结构真实性必须经过地址和 detail 干预审计。

这条航线值得执行,因为它把“先有轮廓,再补细节”的直觉,转换成了可以失败的数学定义和实验表格。

本文提出的是 SameTime/TreeHeap 项目中的研究假设与实验设计,不主张未经文献检索的普遍学术首创。代码、实验和文章按项目许可证公开,欢迎复现与反驳。

License: GPLv3