TreeHeap kernel 的 mirror 手性翻转:几何翻转如何变成代数置换

先统一术语。

之前草稿里用了“共轭”这个词。这个词容易让人想到复数共轭、矩阵共轭、群表示里的 conjugation。SPR-040 现在不再这样叫。

这里讨论的是:

mirror / chiral flip / 左右镜像翻转

也就是把一棵 TreeHeap 的 left 和 right 对换。

这篇文章要证明一件很具体的事:

几何上的左右翻转,
可以在代数层面变成两个置换:

1. 堆地址置换
2. kernel 槽位置换

这不是语言理解 proof,也不是 WMT proof。它是 TreeHeap kernel 工具箱里的一个基础 proof。

为什么要证明 mirror

SPR-039 证明了:

参数 TreeHeap Theta 可以通过梯度学习一个局部卷积 kernel。

例如在 7 节点堆上:

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

一个最小 kernel 可以写成:

theta = [theta_root, theta_left, theta_right]

它在某个内部节点 i 上做:

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

如果 theta = [1,1,1],它就是局部求和。

但 Houming818 提醒了一个更关键的问题:

TreeHeap kernel 不能只会求和。
它应该能表达结构操作。

比如,左右镜像翻转。

如果 TreeHeap 真的是结构化空间,那么:

树翻了,
算子也应该按结构翻。

这就是 SPR-040。

mirror 在堆地址上的定义

仍然看这棵 7 节点完全二叉堆:

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

左右 mirror 后:

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

所以地址映射是:

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]

这不是随便重排。

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

代数上可以写成:

H' = P_m H

其中 P_m 是堆地址的置换矩阵。对于 7 节点堆,它对应:

P_m = (0, 2, 1, 6, 5, 4, 3)

这里用的是 zero-based index。

mirror 在 kernel 槽位上的定义

局部 kernel 是:

theta = [root, left, right]

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

所以 kernel 也要 mirror:

P_lr(theta) = [root, right, left]

写成矩阵:

P_lr =
[[1,0,0],
 [0,0,1],
 [0,1,0]]

这就是这篇 proof 的重点。

不是只翻树。

而是:

翻树地址 P_m
同时翻 kernel 槽位 P_lr

Claim

SPR-040 的 claim 是:

S1-KERNEL-MIRROR-C01:

TreeHeap local convolution is equivariant under mirror / chiral flip:

P_m K_theta(H) = K_{P_lr theta}(P_m H)

中文说:

先卷积,再 mirror
等价于
先 mirror,再用 mirror 后的 kernel 卷积。

这就是“几何操作由代数操作实现”。

一个具体例子

输入:

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

这个 kernel 是故意选成非对称的。

因为如果用 [1,1,1],left 和 right 权重一样,翻不翻都一样,证明没有力量。

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 输入:

P_m H = [1,3,2,7,6,5,4]

就必须同时使用 mirrored kernel:

P_lr theta = [0.5, -0.75, 1.25]

这时两条路径会得到同一个结果:

P_m K_theta(H)
=
K_{P_lr theta}(P_m H)

Proof 分两部分

Proof A:演绎等式检查

这部分不训练。

直接检查:

left  = P_m K_theta(H)
right = K_{P_lr theta}(P_m H)

然后算:

max_abs(left - right)

如果这个误差接近 0,就说明代数等式成立。

Proof B:归纳学习检查

这部分训练。

我们构造 mirrored data:

input  = P_m H
target = internal_nodes(P_m K_theta(H))

然后让一个三槽位参数:

Theta = [theta_root, theta_left, theta_right]

通过 MSE loss 和梯度下降学习。

如果数据真的携带 mirror 规律,那么它应该学出:

Theta ~= P_lr theta = [0.5, -0.75, 1.25]

这一步说明的不只是“公式手写成立”,还说明这个 mirrored kernel 可以从数据里被学回。

实验结果

脚本:

ara/s1-echo/src/s1_mirror_kernel_symmetry_probe.py

证据:

ara/s1-echo/evidence/s1_mirror_kernel_symmetry_probe/

主机:

io.grepcode.cn

结果:

指标 数值
pilot_pass true
flipped-kernel test max error 8.88e-16
flipped-kernel OOD max error 3.55e-15
unflipped-kernel mean error 6.4372
learned mirrored theta [0.5000000000000002, -0.7499999999999998, 1.2499999999999996]
theta-mirror L2 error 5.44e-16
learned test MSE 1.01e-30
learned OOD MSE 9.76e-30

解释:

用 mirrored kernel 时,误差是机器精度。
不用 mirrored kernel 时,误差明显变大。
从 mirrored data 训练时,参数能学回 [root,right,left]。

所以:

S1-KERNEL-MIRROR-C01 -> supported pilot

这说明了什么

SPR-040 支持一个很重要的方向:

TreeHeap 的几何操作,可以下降到代数操作。

具体到这篇:

几何 mirror
-->
堆地址置换 P_m
+ kernel 槽位置换 P_lr

这让 TreeHeap kernel 不只是“局部求和器”。

它开始像一个结构化算子系统:

卷积
写入
读取
mirror
路径移动
子堆组合
子堆分解

这些都可以成为后续 encoder/decoder 的基本工具。

还没有证明什么

这次没有证明:

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

它只证明:

TreeHeap 的 root/left/right 局部卷积,
在 mirror 操作下有正确的代数置换形式。

下一步

接下来可以沿着几个方向扩展:

1. scalar kernel -> vector / matrix kernel
2. depth-1 kernel -> recursive depth-k kernel
3. mirror -> path permutation / subtree move / slot transform
4. single kernel -> multi-kernel bank
5. toy heap -> short real corpus TreeHeap echo

如果这些继续成立,TreeHeap 的 kernel 就不是一组临时写出来的函数,而是一个可以逐步扩展的结构化代数工具箱。

一句话总结:

SPR-040 证明:
TreeHeap 的左右 mirror 可以用代数置换实现;
树地址要翻,kernel 的 left/right 槽位也要翻;
这个规则既能手算成立,也能从 mirrored data 里被梯度学回。

ARA: mirror kernel symmetry / evidence / claims