SPR Echo Self-Repair

树的所有路由参数为 0 时,还能训练回来吗?

1. 问题

SPR-006 确立了树的 echo 结构。但一个追问没有回答:如果参数全部被置零,树还能自己修复吗?

这个问题不是理论假设——它等价于问"系统能否从全面瘫痪中自恢复"。如果答不出,模型就没有鲁棒性。

更难的是:乘法树下,全 0 时梯度也是 0(∂loss/∂p₀ = token × p₁ × p₂,p₁=p₂=0 则梯度和为零)。任何一阶优化都逃不出这个鞍点。

2. 方案:离散路由 + sigmoid 软判决

换个视角——树的分叉不是连续乘法,是离散方向决策

每个节点:sigmoid(token @ W) → 右转概率
训练期:      软概率(梯度可穿透 sigmoid)
推理期:      sign(token @ W) → 硬方向

W 初始化为零时,sigmoid(0) = 0.5——每个 token 左转和右转概率各半,路由处于最大熵状态。训练的目标是:让 W 从零长出来,把路由推到低熵(确定性)状态。

3. 训练

前向:每个 token 对每片叶子计算软分配概率矩阵(128×16)。

损失:两个部分。

组内方差:    within_loss = Σ(token 到叶中心距离 × 分配概率)
平衡正则:    balance_loss = (leaf_counts - ideal)² / ideal
总损失:      loss = within_loss + 0.5 × balance_loss

平衡正则必不可少——没有它,所有 token 会坍缩到一片叶子(trivial solution)。

优化:Adam,500 步。

4. 结果

指标 训练前 训练后
确定性 随机 128/128
叶子活性 16/16 16/16
分配概率 0.06(均匀) 0.26(集中化)
组内损失 - 0.38

训练后,每个 token 的最可能叶子固定不变——同一 token 走两次,走到同一片叶子。echo 成立。

反转验证:初始时有 100/128 的 token 分配到最近叶子,训练后涨到 117/128——17 个 token 的路径被梯度反转到了正确的叶子。

代码:spr_p7_reversal.py

5. BLEU 验证

5.1 词级简化版

先做简化验证:每个词独立路由(不分组),用 per-node 随机权重 + 中位数二分构建树。

数据 词数 架构 叶子 BLEU-4 参数 训练
随机词 200 per-node + median 512 99.2% 7K
WMT14 真实 3011 per-node + median 4096 100% 65K
Phase 0 DummyModel 56K Embedding→Linear - 97.3% 7.3M 2 epoch

词级版代码:spr_p7_bleu.py

5.2 递归二分(句子级——正确设计)

本节回到 SPR 的正确设计:每次节点 hash 的是一个 token 组(子串),不是单个 token。

"猫猫不吃苹果" → 整句到达根节点
    │ 根节点 hash(整句) → median 半分
    ├─ "猫猫不吃"(左子树)
    │   │ hash(猫猫不吃) → median 半分
    │   ├─ "猫猫"
    │   └─ "不吃"
    └─ "苹果"(右子树)
        └─ "苹果"(独叶)

每个内部节点做三件事:

  1. Hash 当前 token 组scores = group_emb @ node_W(本组全部 token 的投影)
  2. 中位数二分:按 scores 排序 → 前半进左子树,后半进右子树
  3. 递归:每个子树带着自己的 token 组继续

当前 BLEU 实验是词级简化版(每词独立路由),句子级递归二分的 BLEU 待 SPR-008 实现。

词级版代码:spr_p7_bleu.py

代码:spr_p7_bleu.py

6. 本质:学习就是反转路径判断

把训练过程剥到底:学习 = 梯度说"这个判定错了" + 反转它。

sigmoid(W @ token) = 0.3  →  当前判定去左
loss 的梯度说:应该去右    →  ΔW 把 sigmoid 往 0.7 推

损失函数的工作不是"设计优化目标"——是定义什么算错

场景 “错了"的定义 梯度做什么
echo(P6) 同 token 两次到不同叶子 统一路由,推到确定性
平衡(P7) 叶子分配不均 把多余的分出去
语义(P8-) 语义不相干的 token 挤一叶 有语义差异的拆开

不需要复杂的损失公式——只需要回答一个问题:当前的路由判断里,哪个是错的? 答出来,梯度就自动反转它。

7. 结论

离散 sigmoid 路由 + 平衡损失解决了乘法树的全零鞍点问题。路由从随机态自恢复到确定态,证明树的决策机制具有自修复能力。

这为下一步——把路由从"随机→确定"升级为"无序→有序”(真正的翻译任务)——铺平了道路。


License: GPLv3 本文《SPR》系列采用 GPLv3 协议开源发布。