TreeHeap 退火缩句协议:让重要信息活到更高层
这篇文章保存一个新的研究转折点。
它不是已经被实验支持的结论,而是 Houming818 在复盘 TreeHeap 预训练时提出的新假设。我们先把它完整、准确地记录下来,再据此设计下一轮 ARA、Predict 和 Proof。
Houming818 的原始表述是:
在第 0 层,是一个长 string,例如“夏天的凉风吹过一望无际的青青草原”。
抽水时,算法提取缩减句子,例如“夏天的凉风吹过草原”。
再往上,只剩“风吹过草原”。
这是一个缩句和插值退火的过程。信息会消失,但应保留更重要的细节。
它不能缩减成“夏天凉风”;这同样是缩减,却不是更优的缩减,因此 Loss 应该更高。
这段话把 TreeHeap encoder 的目标,从“保存所有 token”推进成了:
完整信息先进入 TreeHeap,然后在越来越窄的层级中逐步有损收缩;能够减少更多未来 Loss 的结构活到高层,其余精度留在低层 detail。
1. 上一轮实验停在哪里
上一轮真实中文预训练比较了三种缺失片段生成课程:
| 训练方式 | width-4 NLL | width-8 NLL |
|---|---|---|
| 单 token Mask | 9.1347 | 9.8977 |
| 同长度随机 span | 5.4216 | 5.9718 |
| TreeHeap 对齐 subheap | 5.3852 | 5.9179 |
实验至少确认了一件事:
只训练单 token 恢复,会让模型严重专门化到单叶问题。它对更大缺口的处理能力不但没有自然生长,反而明显恶化。
多尺度 subheap Mask 避免了这种单一化,并比等长度随机 span 小幅改善。但结构审计暴露了新的问题:
| 干预 | width-8 NLL 损失 |
|---|---|
| 换掉整棵 source TreeHeap | +0.1345 |
| 清零全部 source state | +1.5645 |
| 打乱各层 detail | +0.5311 到 +9.6856 |
| 清零 root | 仅 +0.0042 |
| FOLD 前交换相邻 left/right | 仅 +0.0022 |
因此模型学会了一个依赖 source 和多层 detail 的 seq2seq 补全器,却仍然没有把信息组织进 root 和左右地址。
上一轮的做法是:
原始 token
-> 先替换成 [MASK]
-> FOLD
-> 根据剩余信息补洞
新的问题是:被替换掉的真实 token 根本没有参加 FOLD。抽水机没有机会把它和其他 token 的关系上传到 parent。
SPR-060 因此不再研究“怎样挖一个更好的洞”,而开始研究:
完整信息在逐层收窄时,怎样自然决定什么应该继续向上,什么应该留在低层。
2. 什么叫退火缩句
考虑完整句子:
L0:夏天的凉风吹过一望无际的青青草原
理想中的层级状态可能呈现为:
L0:夏天的凉风吹过一望无际的青青草原
L1:夏天的凉风吹过草原
L2:风吹过草原
L3:风吹草原
L4:风—草原
这里的“缩句”不要求内部节点真的保存一串可阅读的汉字。encoder 与 decoder 可以形成我们看不懂的私有编码。
这些中文缩句只是帮助人类理解不同分辨率可能保留什么:
- 底层包含词面、修饰、数量和局部顺序;
- 中层包含事件参与者和动作;
- 高层包含越来越粗的关系轮廓;
- root 表示当前容量下最值得保留的全局状态。
这与普通摘要不同。它不是一次性把长句变成短句,而是产生一条连续的分辨率路径。
3. TreeHeap 中什么在消失
设相邻两个子状态为 (L) 和 (R)。当前 lifting FOLD 可以写成:
[ D = R - P_ heta(L), ]
[ U = L + A_phi(D). ]
其中:
- (D) 是当前地址保存的 detail;
- (U) 是继续向 parent 上传的状态;
- (P_ heta) 学习左右状态之间可预测的关系;
- (A_phi) 决定差异中的多少内容进入 parent。
完整的 TreeHeap 状态仍然是:
[ H_{ ext{state}}
left( root, D^{(0)}, D^{(1)}, ldots, D^{(D-1)} ight). ]
所以“信息消失”需要分两种观察口径。
3.1 对整棵 H_state 而言
如果 lifting 仍然严格闭合,那么信息没有真正消失。root 与所有 addressed detail 合在一起,仍可恢复底层状态。
3.2 对单独 parent 或 root 而言
信息确实在逐层减少。没有被上传的局部精度停留在 detail,不再继续进入更高层。
因此退火协议并不是删除整个模型中的信息,而是:
控制信息能够到达的最高深度。
重要的关系传播得更远;局部细节只在附近地址存在。
4. 为什么“风吹过草原”可能优于“夏天凉风”
两个候选压缩结果都是合法缩句:
Z1 = 风吹过草原
Z2 = 夏天凉风
TreeHeap 不应该由程序员硬编码选择 (Z_1)。选择必须来自数据和任务。
让共享 decoder 分别尝试根据两个状态解释原句或预测后续:
[ L(Z)
-log P_phi(X mid Z). ]
如果保留 (Z_1),decoder 仍知道:
某个主体
-> 执行动作“吹过”
-> 作用于空间“草原”
如果只保留 (Z_2),decoder 知道季节和风的性质,却丢失了事件方向与对象。
在大量相似语料中,如果事件骨架对恢复原句、预测后续或回答查询更有用,就会出现:
[ L(Z_1) < L(Z_2). ]
梯度因此提高“风—吹过—草原”相关状态的上传概率。
这不是说“夏天”和“凉”永远不重要。如果后续任务询问季节,或者语料的未来主要由季节决定,最优保留内容就可能改变。
所谓“重要”,不是人类预先给出的绝对语义标签,而是:
在有限上传容量下,哪部分状态能够减少更多未来误差。
5. 退火参数在哪里
为 FOLD 增加一个可学习的上传门:
[ g_d
sigma left( rac{s_ heta(L,R)}{ au_d} ight), ]
其中:
- (s_ heta) 是共享 TreeHeap kernel 计算的上传分数;
- (d) 是当前深度;
- ( au_d) 是温度;
- (g_d) 决定差异中有多少进入 parent。
父状态可以写成:
[ U
L + g_d odot A_phi(D). ]
训练早期温度较高,门比较柔软:
[ g_d in (0,1). ]
模型可以尝试多种上传方式。随着训练推进或深度升高,温度下降,门逐渐接近稳定选择:
[ g_d ightarrow 0 quad ext{或}quad g_d ightarrow 1. ]
这就是“退火”的工程含义:不是突然剪掉 token,而是让软的信息分配逐渐形成稳定协议。
6. 容量为什么必须逐层下降
如果每个 parent 都拥有无限容量,最简单的解仍然是把所有 token 原样背下来。这样不会自然产生缩句。
设第 (d) 层可用的信息容量为 (R_d):
[ R_0 > R_1 > R_2 > cdots > R_D. ]
容量可以通过多种方式实现:
- 节点数量随 FOLD 逐层减半;
- parent 的有效激活维度受限;
- 上传门的总质量受预算约束;
- decoder 每次只能读取固定数量的高层节点;
- 深度越高,量化位数或可用通道越少。
目标不是把 root 强制变成一句话,而是让模型面对一个真实选择:
root 装不下所有东西时,应该保留什么?
7. 数学上是率失真问题
令 (H_d) 是第 (d) 层可被 decoder 读取的状态。训练目标可以写成:
[ mathcal L
mathbb E_d left[ -log P_phi(X mid H_d) + eta_d R(H_d) ight]. ]
第一项是语言失真:
[ D_d
-log P_phi(X mid H_d). ]
第二项是信息容量或编码率:
[ R_d = R(H_d). ]
(eta_d) 随深度增加,表示高层承担更强的压缩压力。
这正是率失真优化:
[ min quad D + eta R. ]
- 只优化 (D):模型倾向背诵全部信息;
- 只优化 (R):模型坍缩成无意义常量;
- 同时优化:模型寻找有限容量下最有用的表示。
这里的 Loss 不一定要写成多个互相竞争的“大锅炖”目标。可以在每个样本中随机抽取一个分辨率,只计算一次 decoder Loss;长期训练的期望等价于让所有层接受不同强度的压缩考核。
8. Encoder 与 Decoder 如何形成默契
encoder 不需要输出人类定义的“主语、谓语、宾语”。
训练开始时:
FOLD 不知道怎样缩句
decoder 也不知道怎样读取 parent
二者接受同一个生成误差:
[ ( heta,phi) leftarrow ( heta,phi)
eta abla_{ heta,phi}mathcal L. ]
如果 encoder 的某种上传方式使 decoder 更容易恢复或继续生成,Loss 就下降,这种编码方式被保留。
长期训练后,双方可能形成一套私有协议:
encoder:这种几何方向表示“事件仍在继续”
decoder:看到这种方向时生成动作及其对象
人类不需要预先读懂协议。我们只需要用干预测试确认:
- root 是否包含样本相关信息;
- 某个 parent 是否覆盖自己的 receptive field;
- detail 是否保存局部精度;
- left/right 交换是否改变结果;
- 加回更多 detail 是否连续改善恢复质量。
这类似一个人能够阅读自己的笔迹。重点不是旁观者是否认识每个内部符号,而是书写和阅读系统是否共同形成了稳定、可复用的压缩协议。
9. 最小可证明 Toy
在直接使用自然语言以前,可以构造一个有限数据世界。
每个样本由核心 (C)、细节 (N) 和未来 (Y) 组成:
[ X=(C,N). ]
例如:
核心 C:风吹草原
细节 N:夏天、凉、一望无际、青青
未来 Y:草浪起伏,牛羊低头
让数据分布满足:
[ P(Y mid C,N) approx P(Y mid C). ]
即未来主要由核心事件决定,修饰细节只增加表面变化。
当高层只能保留有限信息时,理论 Predict 是:
[ H(Y mid C) < H(Y mid N). ]
因此保存核心 (C) 比保存细节 (N) 更能降低未来预测 Loss。
这个 Toy 不需要告诉模型“风吹草原是核心”。我们只控制数据生成规律,然后观察 TreeHeap 是否通过梯度把 (C) 传播到更高层。
10. 下一条 Claim
下一条正式 ARA 应围绕以下 claim 建立:
在完整输入、逐层递减容量和共享生成 Loss 下,TreeHeap FOLD 能学习一个分辨率有序的退火协议:低层保存表面精度,高层优先保存对恢复、未来预测或查询更有贡献的结构;root 与 addressed detail 共同形成连续率失真曲线。
这个 claim 必须拆成可测量 Predict。
P1:分辨率有序
从叶子到 root,原句精确恢复能力允许下降,但不能无规律跳动:
[ D_0 le D_1 le cdots le D_D. ]
P2:预测信息存活
虽然 token 精度下降,高层对未来 (Y) 的预测必须明显优于同容量随机压缩。
P3:核心优先
在有限 Toy 中,清除核心事件对高层 Loss 的伤害,应显著大于清除表面修饰。
P4:root 因果性
root shuffle 或 root zero 必须造成注册阈值以上的损失,不能再次出现仅 (+0.0042) 的结果。
P5:detail 分辨率
逐层加回 detail 时,恢复质量应形成单调改善曲线:
[ D(root) ge D(root+D_{top}) ge cdots ge D(H_{ ext{state}}). ]
P6:地址因果性
交换 left/right、移动 detail 地址或破坏 parent-child 配对,应造成可重复损失。
P7:不是普通池化
相同容量的均值池化、随机投影、flat bottleneck 和普通 RNN/Transformer bottleneck 必须作为对照。否则不能把一般的信息瓶颈效果归因于 TreeHeap。
11. 什么还没有被证明
截至本文,以下内容仍然只是新假设:
- TreeHeap 会自然产生人类可读的缩句;
- root 会自动表示句子核心;
- 高层一定对应主谓宾或事件图;
- 退火协议一定优于 Transformer;
- 这种结构已经形成意识;
- 率失真最优解在自然语言中是唯一的。
我们已经知道的是:
- lifting TreeHeap 可以严格闭合;
- WMT decoder 能因果使用多个 detail 深度;
- learned update 比固定 update 更好;
- 单 token Mask 会产生强烈课程单一化;
- 多尺度 subheap Mask 训练出了 source/detail-dependent generation;
- 当前模型仍未让 root 与左右地址变得足够因果。
SPR-060 的作用,是针对最后一个障碍提出新的机制解释和实验方向。
12. 下次从哪里继续
下次恢复研究时,不要再从“怎样设计一个更复杂的 Mask”开始。
直接读取本文,然后从下面的数据流继续:
完整过去或完整句子
-> token WRITE
-> 可学习 lifting FOLD
-> 深度递增、容量递减、温度下降
-> parent 保存粗轮廓
-> detail 保存局部精度
-> 随机选择一个分辨率
-> 共享 decoder 做恢复或未来生成
-> Loss 同时训练 encoder 与 decoder 的私有协议
第一轮 Proof 应先在可控 Toy 上回答:
当未来确实由“风吹草原”决定,而与“夏天、凉、青青”弱相关时,TreeHeap 是否会把前者传播得更高?
通过后,再把同一机制放到 NAS 真实语料,观察不同深度的恢复、未来预测、root 因果性和率失真曲线。
这是当前保存的航行位置。