堆树实验全录——架构、锚点、评测、L0教训

一、为什么不是 flat world_emb

world_emb = nn.Embedding(16000, 128)  每人一行,互不共享
→ 改 cat 的 world_emb 不影响 dog
→ anchor 梯度无法传播到非 anchor token
→ 没有扩散 = 没有泛化

堆树 = 31 个共享节点 (depth=5, 1+2+4+8+16),token 按 token_id // (V/2^L) % 2^L 路由。

二、锚点设计

来源 对数 准确率
位置对齐 (平行句统计) 18568 raw → 3000 valid nce acc=17%
LaBSE 语义筛选 (cos>0.35) 1428 dedup nce acc=56%
手工标注 888 pairs (不参与训练) gold eval 专用

结论:LaBSE 语义锚点远优于位置统计。手工锚点只做 gold eval,不和训练锚点重叠。

三、评测 Bug——e[0] 把全部之前结果压了 6 倍

# BUG: 只取锚点词的第一个 BPE token
z[0]  # ZH anchor 的第一个 BPE token
 中文词 z[0]: 449/500 = 90%"▁" (BPE prefix)
 所有 ZH anchor 指针在同一 token
 gold acc 被压到 5-16%

# FIX: mean embedding
mean(heap_world(all_bpe_tokens))  # 全 token 向量均值
 gold acc: 5%  30% (6×修正)

四、LaBSE 蒸馏——768D → 128D

LaBSE teacher (768D): word-level NN acc = 39.8%  (gold ceiling)
Heap tree  (128D):   word-level NN acc = 29.3%   (best, 74% of teacher)
Distilled L0 (128D): word cos = 0.776            (good initialization)

128D 达到 768D 教师 74% 精度——维度压缩是主要损耗源。

五、架构深度——更多≠更好

实验 配置 gold
树深度 depth=3 (7 nodes) 29.7%
depth=5 (31 nodes) 29.3%
depth=7 (127 nodes) 29.4%
递归乘 2,3,4 层递归 12-26%
路由 hard routing 29.3%
Gumbel-Softmax 11.6%
对齐方法 InfoNCE 29.3%
MSE 0% (cos 退化)
评测方式 mean embed 29.3%
e[0] 5% (BUG)

结论:depth=5 + hard routing + single complex multiply + InfoNCE = sweet spot。过深、递归、学路由、MSE 全失败。

六、一字一义训练的后果

每个 EN 锚点只配一个 ZH 词 → L0[light] 只指向轻 → 无法同时表达 光 和 轻 → 树的多叶性被浪费。

七、L0 六大核心教训

  1. MSE 毁空间——逐点修正破坏全局几何,cos_L0 0.27→0.08
  2. Procrustes 不适用——前提是同构空间 (cos>0.3),实际 cos=0.11
  3. flat world_emb 无扩散——没有共享节点,梯度不能跨 token 传播
  4. e[0] 评测漏网——BPE prefix 单 token 不能代表一个词
  5. 深度递归噪音 > 信号——单层 CMul 优于 K 层递归
  6. 过拟合普适——全部实验 ep 0 最佳,之后退化 → 早停是最佳策略