一词多义——路径分离实验、堆树模运算理论
一、方向——一词多义需要同一 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
树节点应初始化为单位根,乘积组合代替加法。 各层旋转正交独立,总旋转唯一确定路径。
五、后续方向
- 树节点重训为 64 对归一化复数(单位根初始化)
- 乘积组合替换加法组合
- L1 context routing 学习 “选哪个模基组合” —— 离散选择而非连续推远
- 规模化验证 50+ 词多义路径分离