演绎与归纳:TreeHeap Kernel 的两类 Proof

上一篇 SPR-024 说:

TreeHeap kernel 要分成代数 kernel 和概率 kernel。

Houming818 又把问题说得更准确:

这里其实是演绎推理和归纳推理的区别。

这句话是关键。

我们之前有时把两类 proof 混在一起了。

例如:

conjugate 按公式定义后,镜像结果成立。

这是演绎推理。

它不是模型从数据中学出来的。

而:

一个概率 kernel 通过梯度下降,学会输出接近世界模型的概率分布。

这是归纳推理。

它不是由公式直接推出的。

它必须通过数据、loss、梯度、参数更新和测试集来证明。

所以从这篇开始,我们把 TreeHeap kernel proof 正式拆成两类:

Deductive Kernel Proof
Inductive Kernel Proof

演绎 Proof 是什么

演绎 proof 的形式是:

给定定义
推出结论

例如镜像路径:

L <-> R

如果:

mirror(LRL) = RLR

再镜像一次:

mirror(RLR) = LRL

所以:

mirror(mirror(path)) = path

这是从定义直接推出的。

不需要训练。

不需要梯度。

不需要数据集。

只要定义正确,它就应该 100% 成立。

数学上可以写:

$$ \sigma^{-1}(\sigma(a)) = a $$

这就是演绎 proof。

TreeHeap 里的演绎 Kernel

TreeHeap 里很多 kernel 都是这种。

例如:

mirror kernel
conjugate kernel
path shift kernel
subheap extract kernel
one-hot Soft Plus
hard compose/decompose 的合法性

这些东西的 proof 目标是:

操作定义是否自洽。

它们的指标应该是:

mirror_error = 0
conjugate_equiv_error = 0
closure_ok = true
one_hot_soft_plus_error = 0

如果这些不成立,说明:

TreeHeap 的代数定义有 bug。

但如果它们成立,也不能说明:

模型学会了语言。
模型学会了概率。
模型学会了世界模型。

它只说明:

操作空间定义正确。

归纳 Proof 是什么

归纳 proof 的形式是:

给定数据
给定模型
给定 loss
通过训练更新参数
看模型是否学到数据中的规律

例如线性回归:

y = ax + b

我们不知道 (a,b)。

模型通过数据和梯度下降学到:

a_hat
b_hat

这不是从定义直接推出的。

这是从样本中归纳出来的。

Transformer 也是类似。

Transformer 不是因为矩阵定义在那里,所以自然懂语言。

而是因为:

大量文本数据
loss
梯度下降
参数矩阵被修正
模型学到 token 共现、上下文关系、query-key-value 结构

这是归纳推理。

TreeHeap 的概率 kernel 也必须走这条路。

TreeHeap 概率 Kernel 学什么

概率 kernel 输出的是分布:

$$ P_\theta(a \mid H,q) $$

其中:

符号 含义
(H) 当前 TreeHeap 状态
(q) query
(a) 候选操作或候选地址
(\theta) 可学习参数

世界模型给一个目标分布:

$$ P_W(a \mid H,q) $$

模型要学的是:

P_theta 尽量接近 P_W。

评价工具是 KL 散度:

$$ D_{KL}(P_W \parallel P_\theta) = \sum_a P_W(a)\log\frac{P_W(a)}{P_\theta(a)} $$

如果:

KL 接近 0

说明模型分布接近世界模型分布。

如果:

KL 很大

说明模型没学好。

这就是概率 kernel 的归纳 proof。

这次实验

我写了一个新 proof:

deductive_inductive_kernel_probe.py

证据路径:

ara/m0-treeheap-math/src/deductive_inductive_kernel_probe.py
ara/m0-treeheap-math/evidence/deductive_inductive_kernel_probe/

这个 proof 分成两部分。

第一部分:

演绎 proof

检查代数定义是否精确成立。

第二部分:

归纳 proof

训练概率 kernel 去模仿一个世界模型分布,并用 KL 测量。

Part A:演绎检查

实验检查了四个确定性性质:

mirror_path(mirror_path(p)) == p
mirror_patch(mirror_patch(x)) == x
conjugate score equivalence error == 0
one-hot Soft Plus == Hard Plus

结果:

Check Result
mirror involution True
mirror patch involution error 0.000000e+00
conjugate equivalence error 0.000000e+00
one-hot soft plus error 0.000000e+00

解释:

这些是演绎性质。
它们按定义应该成立。

这个结果说明:

TreeHeap 的这些代数 kernel 定义是自洽的。

但它不说明:

模型学到了概率分布。

这部分只属于演绎 proof。

Part B:归纳 KL 学习

为了测试概率学习,我们构造了一个 toy world model。

世界模型定义:

query 和某个子堆越接近,
这个子堆被选中的概率越高。

数学上:

$$ P_W(a \mid H,q)=\operatorname{softmax}(-\lVert patch(a)-query\rVert^2 / T) $$

其中 (T=0.45) 是温度。

模型看不到这个公式。

模型只看到:

raw query
raw patch
path/topology metadata
目标概率分布 P_W

训练目标:

$$ \min_\theta D_{KL}(P_W \parallel P_\theta) $$

测试指标:

train_KL
test_KL
OOD_KL
top1_agreement
entropy_error
calibration_l1

对照模型

这次用了五个模型:

Model 含义
address_prior 只记地址偏好,不看 query / patch
linear_raw 线性模型,看 raw query + raw patch
mlp_raw 非线性 MLP,看 raw query + raw patch
treeheap_prob_kernel MLP + path/topology metadata
oracle_fixed_kernel 直接使用世界模型公式,上限参考

注意:

oracle_fixed_kernel 不算学习。

它只是告诉我们理论上最优可以到哪里。

实验结果

Model Train KL Test KL OOD KL OOD top1
address_prior 1.435286 1.434764 2.403086 0.047
linear_raw 1.436146 1.440253 2.403392 0.040
mlp_raw 0.007935 0.009027 0.022695 0.957
treeheap_prob_kernel 0.009950 0.010835 0.053386 0.877
oracle_fixed_kernel 0.000000 0.000000 0.000000 1.000

结论先说清楚:

归纳学习成立。
TreeHeap 结构优势没有在这个 toy 里成立。

为什么?

因为:

mlp_raw 的 OOD KL = 0.022695
treeheap_prob_kernel 的 OOD KL = 0.053386

也就是说,在这个 toy world 里,单纯的 raw MLP 比加了 path/topology 的 TreeHeap prob kernel 更好。

这不是坏消息。

这是一个很有用的负边界。

它说明:

这个世界模型主要由 query-patch 内容距离决定。
路径/topology 不是必要信息。

所以 TreeHeap 结构没有优势,是合理的。

这个实验真正证明了什么

它证明了三件事。

第一:

演绎 proof 和归纳 proof 必须分开。

代数恒等式成立,是定义正确。

KL 下降,是参数从数据中学到概率规律。

第二:

概率 kernel 可以用 KL 来评价。

mlp_raw 从高 KL 降到:

test_KL = 0.009027
OOD_KL = 0.022695

说明它确实通过梯度学习到了世界模型分布。

第三:

TreeHeap 结构优势需要更合适的数据分布。

如果世界模型只依赖内容距离:

distance(query, patch)

那么普通 MLP 就足够强。

TreeHeap 应该在这些数据分布上证明自己:

路径前缀影响概率
镜像结构影响概率
子堆组合影响概率
延迟坍缩影响概率

也就是说,下一步的世界模型不能只靠内容距离。

它必须让:

address
path
topology
composition
decomposition

真的进入 (P_W)。

这次实验没证明什么

它没有证明:

TreeHeap 比 MLP 更强。

相反,这个 toy 里:

mlp_raw 更好。

它也没有证明:

TreeHeap 能翻译。
TreeHeap 能理解句法。
TreeHeap 能替代 Transformer。

它只证明:

概率 kernel 的归纳学习可以用 KL/OOD KL 来测量。

这个边界很重要。

下一步怎么改世界模型

下一步的世界模型应该加入结构项。

例如:

$$ P_W(a \mid H,q)=\operatorname{softmax}(-(d_{content}(a)+\lambda d_{path}(a)+\mu d_{topology}(a))/T) $$

其中:

d_content:
  query 和 patch 的内容距离

d_path:
  query 目标路径和候选路径的前缀距离

d_topology:
  候选子堆的结构合法性或组合关系

这样,TreeHeap kernel 才有机会利用:

path
topology
subheap relation

否则它只是一个更复杂的 MLP。

下一轮 predict 应该是:

P-SOFT06:
当世界模型分布同时依赖 content + path + topology 时,
TreeHeap prob kernel 的 OOD KL 应该低于 mlp_raw。

对应 falsification:

如果 mlp_raw 在 content+path+topology 世界里仍然匹配或优于 TreeHeap prob kernel,
那么当前 TreeHeap 概率 kernel 没有显示结构归纳偏置。

总结

这篇的结论是:

演绎 proof 证明定义正确。
归纳 proof 证明参数从数据中学习。

TreeHeap 需要两种 proof。

代数 kernel 的成功,不应该冒充概率学习。

概率 kernel 的成功,必须用 KL、OOD KL、校准和样本效率来衡量。

这次实验支持:

M0-SOFT-C09:
TreeHeap kernel proof 必须区分演绎代数恒等与归纳概率学习;
KL 散度可以衡量 learned probabilistic kernel 是否模仿了世界模型分布。

但它也给出一个负边界:

当前 toy 不支持 TreeHeap 结构优势。

下一步,要把世界模型从:

只依赖内容距离

升级为:

同时依赖内容、路径、拓扑、组合和分解。

那才是真正测试 TreeHeap 存在性的概率 proof。