一词多义——路径分离实验、堆树模运算理论

一、方向——一词多义需要同一 EN 走不同路径

L0 只知 "cat 是什么词" → 一词一义
L1 应该知 "cat 在这是什么角色" → context → 不同路径 → 光/轻

训练: CMul(L0[light], path_光) → InfoNCE → 光
       CMul(L0[light], path_轻) → InfoNCE → 轻

梯度区别分布:light→光 和 light→轻 的梯度流到不同树节点子集 → 节点自然分化。

二、最小验证——路径分离实验

冻结: L0 + t_nodes + t_merge (最佳 ckpt, gold~6.4%)
训练: 仅 path_B [128] 和 path_C [128], 随机小 init

path_B → CMul(L0[light], path_B) → InfoNCE(目标=光)
path_C → CMul(L0[light], path_C) → InfoNCE(目标=轻)
指标 训前 训后
cos(path_B, path_C) -0.10 0.53
cos(CMul out B, CMul out C) -0.15 0.54 (57°)
rank(光) 1/192
rank(轻) 1/192
gold 6.4% 6.4%

结论:两条 path 没坍塌到 1.0,InfoNCE 双拉力停在 cos=0.53 平衡点。CMul 可以分化,57° 夹角足以相互区分。

三、堆树的数学本质——模运算

堆树路由 = (token_id // (V/2^L)) % 2^L

V=16000, L=4: (tid // 1000) % 16
→ 每 1000 个 token 同余 → 同路径

一维模 → 复数旋转: a % M = r 等价于 e^{i·2π·a/M} —— 数轴折叠成圆周,余数是指针。复数天然表达模运算的周期性。

CMul = 64 个独立 2D 旋转: 64 对复数的逐元素乘法 = 64 轴各自做独立的 2D 旋转。

四、根因——加法坍缩,乘积不坍

当前 path = root + Σ children      (加法)
|root|=4.56, |child|~2.0           root 压倒一切
→ 16 条 path cos≈0.88             → 不分

应该: 节点 = 64 对单位复数 (aᵣ²+aᵢ²=1)
      每层 = 2^L 次单位根 (纯旋转)
      path = ∏ node[L][k_L]        (乘积 = 旋转组合)
→ 换一层节点 → 整体旋转不同 → cos≈0

树节点应初始化为单位根,乘积组合代替加法。 各层旋转正交独立,总旋转唯一确定路径。

五、后续方向

  1. 树节点重训为 64 对归一化复数(单位根初始化)
  2. 乘积组合替换加法组合
  3. L1 context routing 学习 “选哪个模基组合” —— 离散选择而非连续推远
  4. 规模化验证 50+ 词多义路径分离