TreeHeap 差分代数:从 Zero 到距离,再到学习
上一篇 SPR-026 做了一个浅层 S1 proof:
真实短句
-> soft TreeHeap write
-> root / subject / object slot
-> query
但 Houming818 指出了一个更底层的问题:
两个 TreeHeap 结构如何计算距离?
我一开始直接回答“可以算节点距离、路径加权距离、子堆距离”。
这个回答不算错,但跳了一步。
真正第一性的问题是:
TreeHeap 的差分怎么定义?
因为距离不是第一定义。
距离应该来自:
差分
↓
范数
↓
距离
就像实数一样:
|x-y|
这里真正先发生的是:
x-y
再取绝对值。
向量也是一样:
||a-b||
先有:
a-b
再有范数。
TreeHeap 也应该这样。
为什么差分比距离更基础?
机器学习不是只需要“两个东西远不远”。
机器学习还需要知道:
如果我把参数改一点,
loss 会怎么变?
也就是:
差分 / 微分 / 梯度
如果 TreeHeap 只有一个距离函数:
Distance(A,B)
但没有:
Diff(A,B)
那它很难接上学习。
因为学习要做的是:
Δloss / Δparameter
所以我们需要先定义:
Zero
Subtraction
Norm
Inner Product
Cosine
Finite Difference
这就是本篇的主题。
Zero TreeHeap
先定义零 TreeHeap:
Zero[i] = 0 ∈ R^128
也就是每个节点都是 128D 零向量。
如果一个 TreeHeap 是:
H
那么它的大小不是凭空来的,而是:
H - Zero
再取范数。
这和实数一致:
|x| = |x - 0|
TreeHeap 差分
假设两个 TreeHeap 的地址空间一样:
A[i] ∈ R^128
B[i] ∈ R^128
那么差分定义为:
Diff(A,B)[i] = A[i] - B[i]
注意:
Diff(A,B)
仍然是一个 TreeHeap-shaped object。
只是每个节点存的是:
向量差
而不是原始向量。
这点很关键。
我们不是把 TreeHeap 压扁成一个 scalar。
我们先保留结构差异。
TreeHeap 范数
TreeHeap 不是普通 flat vector。
节点有深度:
root depth = 0
left/right depth = 1
deeper nodes depth = 2,3,...
所以第一版范数加入深度权重:
$$ \lVert H\rVert_T = \sqrt{\sum_i \alpha^{depth(i)} \lVert H[i]\rVert_2^2} $$其中:
0 < alpha < 1
这表示:
越靠近 root,权重越大。
越深的节点,权重越小。
这不是最终答案,但它是一个合理的第一版。
TreeHeap 距离
有了差分和范数,距离自然定义为:
$$ d(A,B) = \lVert A-B\rVert_T $$也就是:
先差分
再取 TreeHeap 范数
这比直接写一个 distance(A,B) 更干净。
因为它和学习、微分、梯度可以接上。
TreeHeap 内积和 cosine
同样,cosine 也不应该是随便把节点平均后再算。
先定义 TreeHeap 内积:
$$ \langle A,B\rangle_T = \sum_i \alpha^{depth(i)} \langle A[i],B[i]\rangle $$然后定义 TreeHeap cosine:
$$ \cos_T(A,B)=\frac{\langle A,B\rangle_T}{\lVert A\rVert_T\lVert B\rVert_T} $$这样 cosine 也是从 TreeHeap 代数结构来的。
不是临时拼出来的。
有限差分
现在进入学习。
如果:
L(H)
是一个 loss,我们想知道沿着方向:
U
改变 TreeHeap 时,loss 怎么变。
有限差分可以写成:
$$ \frac{L(H+\epsilon U)-L(H-\epsilon U)}{2\epsilon} $$如果 TreeHeap 差分代数正确,这个数应该和解析方向导数对上。
对一个简单的加权 MSE:
$$ L(H)=\frac{1}{2}\lVert H-Target\rVert_T^2 $$方向导数应该是:
$$ \langle H-Target, U\rangle_T $$这就是实验要检查的第一件事。
prob vector plus 的学习信号
我们还要检查它能不能接上写入学习。
定义一个最小 prob vector plus:
H'[i] = H[i] + p_i · x
其中:
x ∈ R^128
p = softmax(theta)
这表示:
把一个 128D token/world vector
按概率写入 TreeHeap 节点。
目标 TreeHeap 是:
Target[target_node] = x
其他节点 = 0
loss:
$$ L=\frac{1}{2}\lVert H'-Target\rVert_T^2 $$如果差分代数能支持学习,那么:
有限差分算出来的 dL/dtheta
应该接近:
解析梯度算出来的 dL/dtheta
并且做一步梯度下降后:
loss 应该下降
target_node 的写入概率应该上升
实验脚本
脚本:
ara/m0-treeheap-math/src/treeheap_diff_algebra_probe.py
执行主机:
io.grepcode.cn
证据:
ara/m0-treeheap-math/evidence/treeheap_diff_algebra_probe/
参数:
nodes = 15
dim = 128
alpha = 0.72
eps = 1e-5
实验结果
| Metric | Value |
|---|---|
norm_zero |
0.000000 |
dist_aa |
0.000000 |
dist_ab |
8.779953 |
dist_ba |
8.779953 |
cos_aa |
1.000000 |
anti_sym_error |
0.000000 |
directional_derivative_abs_error |
3.48e-10 |
theta_grad_abs_error |
4.21e-10 |
theta_grad_rel_error |
2.10e-10 |
initial_loss |
29.138441 |
stepped_loss |
0.000660 |
target_prob_before |
0.064808 |
target_prob_after |
0.995534 |
这些结果说明:
Zero 范数为 0。
自己到自己的距离为 0。
距离对称。
cos(A,A)=1。
Diff(A,B)=-Diff(B,A)。
TreeHeap 状态有限差分和解析方向导数一致。
prob vector plus 的 theta 梯度和有限差分一致。
一步梯度下降能显著降低 loss。
写入概率会从错误的扩散状态坍缩到目标节点。
这次证明了什么?
这次支持:
M0-DIFF-C01 -> supported pilot
也就是:
TreeHeap 可以先定义差分代数,
再由差分推出距离、cosine、loss 和有限差分学习信号。
这件事很重要。
因为 S1 的 prob vector write 需要的不只是:
我能把 token 写进去。
还需要:
写错了,loss 怎么变?
参数该往哪边改?
这就是差分代数给出的东西。
这次没有证明什么?
边界也要清楚。
这次没有证明:
TreeHeap 已经学会语言。
TreeHeap 已经有世界模型坐标系。
prob vector plus 已经是最终 encoder。
TreeHeap 比 MLP / Transformer 强。
TreeHeap 能做 WMT。
它证明的是更底层的事:
TreeHeap 有可用于学习的差分/距离/梯度评价框架。
对 S1 的意义
现在我们可以把 S1 的写入问题说得更精确。
不再只是:
把 token 写到 TreeHeap。
而是:
从 Zero TreeHeap 出发,
用 prob vector plus 写入 128D token/world vector,
用 TreeHeap diff distance 评价写入结果,
再用有限差分/梯度更新写入 kernel。
这条链是:
Zero
-> Prob Vector Plus
-> TreeHeap state
-> Diff to Target
-> Norm / Loss
-> Finite Difference / Gradient
-> Update Kernel
这才是 M0 工具箱进入 S1 的真正接口。
下一步
下一步不是再问:
距离怎么算?
而是问:
Target 从哪里来?
也就是我们前面说的世界模型坐标系。
例如:
foot + ball -> football
hand + ball -> handball
rain + coat -> raincoat
book + shelf -> bookshelf
我们需要这样的数据,告诉 TreeHeap:
什么样的写入结果是对的?
什么样的组合关系应该在空间里接近?
没有世界模型坐标系,TreeHeap 只能学 echo。
有了世界模型坐标系,TreeHeap 才能学语义拓扑。
总结
这篇的核心结论是:
TreeHeap 距离不是第一定义。
TreeHeap 差分才是第一定义。
从差分出发,我们得到了:
Zero
Subtraction
Norm
Inner Product
Cosine
Finite Difference
Gradient Signal
这让 TreeHeap 不再只是一个“树形存储结构”。
它开始具备进入梯度学习的数学接口。