TreeHeap 的存在性证明:把 Claim 说清楚

上一篇 SPR-016 讲了一件事:

TreeHeap 不是要推翻机器学习。
TreeHeap 是把机器学习接到一种高维、可寻址、可组合的结构对象上。

所以它和 Transformer 在大范式上是相通的:

固定数学算子
+ 可学习参数
+ loss
+ gradient
+ update

Transformer 里:

matmul / softmax / residual add 是固定算子
Wq / Wk / Wv / FFN 是可学习参数

TreeHeap 里我们现在倾向于这样分层:

plus / address / subheap / kernel_search / fold 是固定算子候选
arr.value / primitive basis / world model slots 是可学习参数

但这里必须非常谨慎。

我们上一版实验 A 把这个规则放进去了:

target = (cursor + 1) mod base

这不是普通整数加法。

普通整数里:

11 + 2 = 13

它不等于:

3

只有当我们明确进入模系统时,才能说:

13 ≡ 3 (mod 10)

也就是说,mod base 不是“加法天然要折叠”,而是一个有限容量系统里的回绕规则。它更像 circular buffer:

cursor = (cursor + 1) mod base
arr[cursor] = value

所以当前实验 A 不能被说成:

证明了 TreeHeap plus。

它只能被说成:

证明了学习器在模地址回绕 toy task 上的归纳边界。

这篇文章就是把三个实验的 claim 重新钉牢。

三个实验到底在 Claim 什么

先给结论。

实验 当前真正测的东西 当前能 claim 什么 当前不能 claim 什么
A circular addressing toy task 普通学习器从短样本模仿模地址规则时存在归纳边界 不能证明完整 TreeHeap plus/fold,不能证明 TreeHeap learner 已经赢
B subheap kernel relocation 显式树堆地址上的局部 kernel 可以稳定迁移 不能证明语言结构已经学会
C prefix compression + probability container 共享路径前缀可以压缩 toy 分布,并保留候选概率 不能证明真实语言翻译质量提升

这三个实验现在只是数学工具箱的第一层 toy proof。它们不是 WMT 证明,也不是 TreeHeap 语言模型证明。

实验 A:循环寻址规则的归纳边界

当前 A 实际做了什么

当前 A 的状态是一个有限容器:

State = {
  arr,
  root = arr[0],
  cursor,
  base,
  summary
}

当前 A 的写入规则是:

circular_write(H, p):
  target = (cursor + 1) mod base
  arr[target] = p
  cursor = target
  summary = summarize(arr)
  return H

这个规则有闭包:

H 是有限状态容器
circular_write(H, p) 仍然是有限状态容器

但是它不是普通加法,也不是完整 TreeHeap plus。

更准确地说:

plus:
  n -> n + 1
  不折叠。

mod plus:
  n -> (n + 1) mod base
  有限容量回绕。

fold plus:
  容量满后不是简单覆盖,而是把旧结构折叠进 summary / parent node。

当前 A 只做了第二种:mod plus

A 的训练操作

脚本生成很多 primitive 序列:

[p0, p1, p2, ..., pn]

然后用固定规则生成答案:

target_address = (length - 1) mod base
read_value = 最后一次写入 query_addr 的 token

训练时只给短序列:

train length <= 8

测试时给:

test length = 8 / 16 / 32 / 64

参与训练的模型是:

flatten MLP
small Transformer

还有一个 rule oracle

rule oracle = 直接执行 circular_write 的参考实现

这个 rule oracle 不是训练出来的 TreeHeap 模型。它只是标准答案生成器。

所以 A 的有效证据不是:

TreeHeap learner 取得 1.0。

而是:

MLP / Transformer 在模地址规则上,从短样本外推到长样本时会出现边界。

A 的 8 小时结果

flatten MLP 的读值能力:

test length read accuracy
8 0.1827
16 0.0593
32 0.0567
64 0.0406

small Transformer 的 address accuracy:

test length address accuracy
8 0.9997
16 0.9955
32 0.9804
64 0.9292

这说明:

MLP 没有稳定学会 read-after-overwrite。
Transformer 更强,但在长长度上也有下降和失败样本。

A 的准确 Claim

Claim A:
在 circular addressing toy task 上,
普通学习器从短样本模仿规则时存在归纳边界。

A 不能 claim:

完整 TreeHeap plus 已经成立。
完整 TreeHeap fold 已经成立。
TreeHeap learner 已经优于 Transformer。

下一步必须把 A 拆成:

A1: unbounded successor
    11 + 2 = 13,不做 mod。

A2: bounded circular addressing
    13 ≡ 3 (mod 10),这是有限容量回绕。

A3: fold write
    容量满后做结构折叠,不是简单覆盖。

这才是严谨的 TreeHeap algebra proof。

实验 B:子结构 Kernel 搜索

B 实际做了什么

B 定义一个局部模式:

      A
     / \
    B   C

在数组里就是:

[arr[i], arr[left(i)], arr[right(i)]]

训练时 pattern 只出现在:

train positions = {0, 1, 2}

测试时放到新地址:

test positions = {6, 10, 13}

TreeHeap kernel 的做法是:

for each address i:
  sub = subheap(H, i)
  score[i] = match(sub, K)

answer = max(score)

这就是树堆空间里的卷积。

B 的 8 小时结果

method accuracy mean min max
TreeHeap kernel 1.0000 1.0000 1.0000
flatten MLP 0.4996 0.4258 0.5703
sequence CNN 1.0000 1.0000 1.0000
small Transformer 0.9846 0.6055 1.0000

这组结果不能被解释成“只有 TreeHeap 能做”。CNN 也满分,说明这个任务本质就是局部 kernel 迁移。

更准确的解释是:

局部模式 + 可复用 kernel 是强归纳偏置。
TreeHeap 的价值在于把这种 kernel 从线性/网格空间推广到树堆地址空间。

B 的准确 Claim

Claim B:
如果局部模式定义在树堆地址上,
显式 subheap kernel 可以稳定做 relocation。

B 能支持:

TreeHeap 可以拥有类似卷积的结构算子。

B 不能支持:

语言结构已经学会。
复杂树变换已经解决。
TreeHeap 在所有结构任务上优于 Transformer。

下一步 B 要加难度:

新深度
兄弟交换
局部噪声
缺失子节点
多 kernel 同时存在
kernel composition

实验 C:前缀压缩和延迟坍缩

C 实际做了什么

C 构造共享前缀序列,例如:

A B C X
A B C Y
A B D X
A B D Y
A E F X

普通序列会重复保存这些路径。

前缀树可以共享:

A
├── B
│   ├── C
│   │   ├── X
│   │   └── Y
│   └── D
│       ├── X
│       └── Y
└── E
    └── F
        └── X

共享前缀意味着可以共享:

存储
计算
summary
候选概率

给定前缀:

A B C

后面可能是:

X or Y

TreeHeap 可以在前缀节点上保留候选概率:

A-B-C -> {
  X: 0.5
  Y: 0.5
}

这就是概率容器。它不急着 argmax,而是等待更多上下文。

C 的 8 小时结果

metric value
sequence_node_count 800
prefix_tree_node_count 11
compression_ratio_mean 72.7273
prefix_reuse_rate_mean 0.98625
new_branch_Z_probability_after_one_mean 0.01249

这说明在这个 toy 分布里:

800 个普通序列节点
可以压成 11 个前缀树节点。

新分支 Z 出现一次后,没有直接覆盖旧候选,而是以小概率进入候选容器:

P(Z) ≈ 0.01249

C 的准确 Claim

Claim C:
共享路径前缀可以显著压缩 toy 分布,
并且可以在前缀节点保留候选概率。

C 能支持:

TreeHeap 的路径不是普通 token 序列。
路径前缀可以成为存储、计算、概率容器的共享对象。

C 不能支持:

真实语言中的前缀压缩率也这么高。
delayed collapse 已经提升翻译质量。
概率容器已经学会语义消歧。

下一步 C 要提高难度:

更多分支
更高 entropy
更少重复
上下文反转候选概率
概率校准
delayed-collapse accuracy

总结:现在我们到底知道什么

现在最稳的结论是:

TreeHeap 的存在性还没有被完整证明。
但是三个 toy 实验给出了三个方向的信号。

这三个方向分别是:

A: 地址规则不应该完全靠模型从样本里猜。
B: 子结构 kernel 可以成为树堆空间的卷积工具。
C: 路径前缀可以成为压缩和概率容器。

更严谨地说:

TreeHeap 的 claim 不是“我也能学习”。
Transformer 也能学习。

TreeHeap 的 claim 是:
如果把地址、子结构、路径前缀、概率容器做成显式数学对象,
模型可能获得更好的结构归纳偏置。

但这还需要下一轮 proof:

A1/A2/A3: plus / mod / fold 拆分
B2: kernel composition 和结构变换
C2: 高熵概率容器和上下文坍缩

只有这些 proof 更稳以后,语言任务才应该站在这个数学工具箱上。

License: GPLv3