S1-echo 纠错:mirror 不是另一种读法,而是要先扭回 echo
这篇是一次纠错。
我上一版 SPR-041 写错了方向。
上一版做的是:
task = echo -> 选择 identity read kernel
task = mirror -> 选择 mirror read kernel
看起来能跑,指标也好看。
但 Houming818 指出,这不是 TreeHeap 想要的结构。
真正应该做的是:
如果输入是 mirror 结构,
先用一个对向 gate / inverse gate,
把 mirror 扭回 canonical echo state,
然后再用同一个 echo decoder 读取。
也就是说,不是:
mirror -> mirror decoder/read
而是:
mirror -> inverse mirror -> echo state -> echo decoder
这个差别非常关键。
为什么上一版是错的
上一版的模型可以选择不同 read kernel:
echo 用 echo read。
mirror 用 mirror read。
这当然可以解决 toy task。
但它绕开了 TreeHeap 的核心目标:
结构变换应该把输入规约到同一个参考系。
如果每种结构都用一种特殊 read kernel 直接读出,那就变成:
为每种任务准备一个读法。
这不够好。
我们真正需要的是:
先做结构规约,
再共享读取。
类比语言:
I arrived home at 7 o'clock.
我七点到家了。
这里不是 decoder 背一个“英文尾部时间 -> 中文前置时间”的读法。
更合理的是:
发现时间短语位置需要重排;
用一个结构 kernel 把它移到目标参考系;
然后统一读出。
所以 SPR-041 必须改。
corrected 任务怎么设计
我们定义一个 canonical 序列:
canonical = [t0, t1, t2, t3]
输入可能是 identity:
observed = [t0, t1, t2, t3]
也可能是 mirror:
observed = [t3, t2, t1, t0]
但目标永远是 canonical:
target = [t0, t1, t2, t3]
所以任务不是:
给 mirror,输出 mirror。
而是:
给 mirror,先扭回 canonical,再输出 canonical。
这才是 inverse gate。
模型结构
模型有四个部分:
E[token]
inverse_route_logits[op,out,in]
inverse_gate[transform,op]
echo_decoder
含义分别是:
E[token]:
token 写入 TreeHeap leaf 的向量。
inverse_route_logits:
结构逆操作的路由 kernel。
inverse_gate:
当前输入结构选择哪个 inverse operator。
echo_decoder:
只负责从 canonical state 读 token。
整体流程是:
observed tokens
-> leaf embeddings
-> inverse gate
-> canonical TreeHeap state
-> shared echo decoder
-> canonical tokens
注意最后只有一个 decoder。
这就是 corrected 版和上一版的根本区别。
数学写法
输入 token 写成 leaf 向量:
v_i = E[observed_i]
inverse gate 给出:
p(k | transform)
其中 k 是某个 inverse kernel。
每个 inverse kernel 给出一个 route:
p(i | k, j)
表示 canonical slot j 应该从 observed leaf i 读取。
于是 canonical state 是:
h_j =
sum_k p(k | transform)
sum_i p(i | k,j) v_i
然后统一 echo decoder:
logits_j = EchoDecoder(h_j)
训练目标不是只有 token CE。
这次我们加入 canonical-state loss:
L =
CE(logits, canonical_tokens)
+ lambda_state * ||h - E[canonical_tokens]||^2
+ lambda_entropy * entropy(gate/routes)
为什么要加这个?
因为第一次 corrected proof 只用 CE 时,模型已经能把 token 输出对,但隐藏状态没有真的变成 canonical state。
换句话说:
decoder 可以补偿。
这正是我们要避免的。
所以 corrected proof 必须要求:
不仅输出 token 对,
中间 canonical state 也要接近真实 canonical leaf embedding。
这才是在证明“mirror 被扭回 echo”。
实验结果
脚本:
ara/s1-echo/src/s1_echo_inverse_gate_probe.py
证据:
ara/s1-echo/evidence/s1_echo_inverse_gate_probe/
主机:
io.grepcode.cn
结果:
| 指标 | 数值 |
|---|---|
| pilot_pass | true |
| canonical echo OOD exact | 1.000000 |
| inverse route argmax ok | 1.000000 |
| identity gate -> identity inverse | 0.999794 |
| mirror gate -> mirror inverse | 0.999784 |
| canonical state MSE | 0.000988962 |
| no-inverse baseline OOD exact | 0.218750 |
解释:
identity 输入几乎完全选择 identity inverse。
mirror 输入几乎完全选择 mirror inverse。
route 的 argmax 全部对齐 identity/mirror 地址。
中间 state 接近 canonical leaf embedding。
同一个 echo decoder 可以读回 canonical token。
没有 inverse gate 的 baseline 明显失败。
这才是我们想要的 proof。
旧 proof 怎么处理
旧 proof 不删除。
它保留在:
ara/s1-echo/evidence/s1_echo_entry_gate_probe/
但状态改为:
downgraded / misdirected pilot
意思是:
它证明了一件能跑但方向不对的事。
它的价值是提醒我们:
高分不等于正确结构。
如果 loss 只看输出 token,它很容易让模型走捷径。
因此,TreeHeap 的 S1 loss 不能只问:
输出对不对?
还要问:
中间 TreeHeap state 是否真的进入了我们定义的参考系?
这就是这次纠错最重要的收获。
这说明了什么
SPR-041 corrected 支持:
受控 S1-echo v0 可以开始。
但支持的是这个版本:
observed structure
-> inverse/canonicalization gate
-> canonical TreeHeap state
-> shared echo decoder
而不是这个版本:
task
-> choose separate output read kernel
-> decode
这和 TreeHeap 的产品逻辑更一致:
先用结构算子把世界规约到参考系,
再在参考系里读取和坍缩。
还没有证明什么
这篇仍然没有证明:
WMT 翻译
真实语义理解
自然语言自动触发 mirror
时间状语前置
递归深度选择
Transformer superiority
长句法结构
最关键的边界还是:
transform flag 是给定的。
也就是说,模型现在知道:
这个输入是 identity 还是 mirror。
下一步要让它从 token/context 中自己判断。
下一步
下一步不是再做一个“输出好看”的 echo。
下一步应该是:
learned trigger + inverse canonicalization
也就是:
tokens/context
-> trigger/gate
-> inverse structural operator
-> canonical state
-> shared decoder
再往后才是:
mask/noise restore
variable-length WMT BPE
短句结构重排
S2 fold / translation
一句话总结
SPR-041 的正确结论是:
mirror 不应该被当成另一种读法;
mirror 应该先被 inverse gate 扭回 canonical echo state。
corrected proof 表明:
这个逆向规约可以被梯度学会,
中间 state 也能接近 canonical TreeHeap 表示,
然后由同一个 echo decoder 读回 token。
这才是 S1-echo 应该站上的入口。
ARA: S1 echo entry gate / corrected evidence / claims