TreeHeap kernel 的共轭翻转:mirror 后 kernel 也要翻

SPR-039 证明了一个最小事实:

参数 TreeHeap Theta 可以通过梯度学会局部 subheap 卷积核。

当时的 kernel 是最简单的:

[root, left, right] = [1, 1, 1]

这个确实有用,但也有一个问题:

它太像普通求和了。

Houming818 问了一个更关键的问题:

如果 TreeHeap 真的有结构卷积,
能不能证明共轭对称翻转?

也就是说:

树 mirror 以后,
kernel 是不是也应该 mirror?

这篇 SPR-040 就是这个 proof。

什么是 mirror

还是这棵 7 节点 TreeHeap:

        1
      /   \
     2     3
    / \   / \
   4   5 6   7

mirror 操作 M 是左右对称翻转:

M(1) = 1
M(2) = 3
M(3) = 2
M(4) = 7
M(5) = 6
M(6) = 5
M(7) = 4

所以:

H = [1,2,3,4,5,6,7]
M(H) = [1,3,2,7,6,5,4]

这不是随机打乱。

它是保持树结构的左右镜像。

什么是 kernel 共轭

局部 kernel 写成:

theta = [theta_root, theta_left, theta_right]

如果树左右翻转,那么 left 和 right 的意义也交换。

所以共轭 kernel 应该是:

conj(theta) = [theta_root, theta_right, theta_left]

例如这次实验用的是非对称 kernel:

theta = [0.5, 1.25, -0.75]

它的共轭翻转是:

conj(theta) = [0.5, -0.75, 1.25]

注意这里 left/right 不一样。

如果 left/right 本来相等,比如 [1,1,1],那翻不翻都一样,证明就没有力量。

所以这次必须用非对称 kernel。

要证明的等式

TreeHeap 局部卷积:

K_theta(H)[i]
  = theta_root  * H[i]
  + theta_left  * H[left(i)]
  + theta_right * H[right(i)]

我们要证明:

M(K_theta(H)) = K_conj(theta)(M(H))

中文说就是:

先卷积再翻转
等于
先翻转树,再用翻转后的 kernel 卷积

这就是共轭对称。

一个具体例子

输入:

H = [1,2,3,4,5,6,7]
theta = [0.5, 1.25, -0.75]

对 root 节点:

K_theta(H)[1]
  = 0.5*1 + 1.25*2 - 0.75*3
  = 0.75

对 node 2:

K_theta(H)[2]
  = 0.5*2 + 1.25*4 - 0.75*5
  = 2.25

对 node 3:

K_theta(H)[3]
  = 0.5*3 + 1.25*6 - 0.75*7
  = 3.75

所以卷积后内部节点是:

[0.75, 2.25, 3.75]

再 mirror,node 2 和 node 3 会交换。

如果我们先 mirror 输入:

M(H) = [1,3,2,7,6,5,4]

再用共轭 kernel:

conj(theta) = [0.5, -0.75, 1.25]

得到的结果应该完全对应。

这就是实验要测的东西。

实验一:演绎等式检查

第一部分不是训练。

它直接检查:

M(K_theta(H)) == K_conj(theta)(M(H))

在随机 test / OOD heaps 上测误差。

结果:

指标 数值
flipped-kernel test max error 8.88e-16
flipped-kernel OOD max error 3.55e-15
unflipped-kernel mean error 6.4372

解释:

用 conj(theta) 时,误差是机器精度。
不用 conj(theta) 时,误差很大。

这说明共轭翻转不是平凡成立的。

它依赖:

树 mirror
kernel left/right 也 mirror

实验二:从 mirrored data 学回共轭 kernel

第二部分是学习。

训练数据是 mirrored data。

目标是让模型从数据中学出:

conj(theta) = [0.5, -0.75, 1.25]

结果:

指标 数值
learned mirrored theta [0.5000000000000002, -0.7499999999999998, 1.2499999999999996]
theta-conj L2 error 5.44e-16
learned test MSE 1.01e-30
learned OOD MSE 9.76e-30

这说明:

不只是手写公式成立。
参数 Theta 也能从 mirrored data 学回共轭 kernel。

Claim 状态

S1-KERNEL-CONJ-C01:
TreeHeap local convolution is equivariant under mirror conjugation:
M(K_theta(H)) = K_conj(theta)(M(H)).

status: supported pilot

证据目录:

ara/s1-echo/evidence/s1_conjugate_kernel_symmetry_probe/

脚本:

ara/s1-echo/src/s1_conjugate_kernel_symmetry_probe.py

这说明了什么

SPR-039 证明:

TreeHeap kernel 可以学会局部卷积。

SPR-040 继续证明:

TreeHeap kernel 不只是简单平移求和。
它还可以服从结构变换下的共轭规律。

这很重要。

因为如果 TreeHeap 只是一个数组,那么 mirror 只是重排。

但如果 TreeHeap 是结构化空间,那么 mirror 应该要求:

数据结构变换
算子也随之变换

这就是共轭。

还没有证明什么

这次没有证明:

语言理解
WMT 翻译
任意群等变
真实语义镜像
TreeHeap 胜过所有 flat model

它只证明一个局部代数事实:

TreeHeap 的 root/left/right kernel
在 mirror 操作下有正确的共轭形式。

下一步

下一步可以扩展:

1. scalar kernel -> vector / matrix kernel
2. depth-2 tree -> deeper recursive TreeHeap
3. mirror conjugation -> rotate / path permutation / slot conjugation
4. single kernel -> multi-kernel bank 的对称变换

如果这些继续成立,TreeHeap 的 kernel 就不只是“能算”。

它会开始接近一个结构化算子系统:

结构变换
算子共轭
参数学习
局部卷积

一句话总结

SPR-040 的结论是:

TreeHeap 局部卷积满足 mirror conjugation:
树翻转时,kernel 的 left/right 权重也必须翻转;
这个共轭 kernel 既能手算成立,也能从 mirrored data 中学出来。

ARA: conjugate kernel symmetry / evidence / claims