状态:🔴 已跑,未达预注册及格线(2026-08-05)。结果见 p11/README.md: 绑定拿到了(换词 0.080),跨格式没拿到(F3 0.775 < 及格线 0.85)。 本文档第 2 节的设计推理已被部分证伪——两条约束的归因成立,但"满足它们就够"是错的。 动机:论文 §6 的负面结论——「参数化路线在测过的每一种配置里,最多只能拿到 词绑定或跨读出方向迁移之一;上下文注入两者都有」。本文提出一个应该能同时拿到两者的基质, 并事先写死判生死的及格线。 上游证据:p8(读出方向)· p9(换词控制 + 机制诊断)· p10(强制绑定 + 四格图)。
⚠️ 本文档不得被引用为结果。 未跑之前,第 2 节全部是设计推理。
| 约束 | 来自哪个实测失败 |
|---|---|
| 键必须是「词」本身,且推理时可观测 | post-norm 用整段末位隐状态做键:换词后 h 的余弦仍 0.994(相对变化 0.006),词的信息被物体描述淹没 ⟹ 换词落差仅 0.017 |
| 值必须进入表征,不能进入 logits | post-norm 学到的方向:cos(m, W_yes−W_no) = +0.79 vs cos(m, W_A−W_B) = +0.003(两方向余弦 −0.027)⟹ 换个读出方向即归零(I3 = 0.507 ≈ base) |
| 不能靠相似度路由去「找」那个词 | L7 全位置版:换词后路由命中槽重合率 = 1.000 ⟹ 路由层面根本看不见词,于是它去标物体 |
而上下文注入两者都拿到了(F2 0.905 / F3 0.995)。它凭什么?
键是词的 token,值进入表征。 注意力从问句里的
romi找到前言里的romi,取回的内容进入残差流, 之后整个网络照常处理——全程没有「读出方向」这回事。
⟹ 本提案 = 把上下文注入的这两个性质,做成不占上下文、跨会话持久的形式。
对每个通过门的 (对话者 u, 词 w),存一个向量 v_{u,w} ∈ R^d。推理时:
- 在输入 token 序列里精确匹配
w的 token 子串(词就在提示里,O(1) 查表,无相似度检索); - 在层
ℓ(先试ℓ = 0,即输入嵌入),只在这些位置把v_{u,w}加进残差流; - 其余一切不变,基座全冻结。
三条约束由构造满足:
| 怎么满足的 | |
|---|---|
| 词绑定 | 换词 ⟹ 触发器不点火 ⟹ 直接退回 base。不是"希望它学会看词",是不看词就没有写入 |
| 跨格式 | 值在早层进入表征,与上下文里的定义走同一条通路,后面 ~2/3 的网络照常处理,不经过任何读出方向 |
| 隔离 | 键是 (u, w),天然不相交。不需要分区 / 梯度掩码 / 双掩码——P7 那一整套麻烦(以及「隔离 ↑ ⟹ 组合 ↓」的张力)在此根本不存在,因为不同词落在不同 token 位置上,不争抢槽 |
① 假设 模型自己从教学轮里生成候选含义
② 门 压缩增益(held-out 用词决策 + 安慰剂 + 三态 ASK) ← 论文的贡献,已验证
③ 编码 只对【通过门的】用词决策拟合 v_{u,w},基座冻结 ← 本提案
④ 点火 token 触发,早层注入
③ 有一个容易被忽略的性质:v 是从用法拟合出来的,不是从一句自然语言定义翻译来的。
它可以承载一个模型说不清楚的含义——而这恰恰是 MDL 判据最有意义的场合:
文字定义的 L(c) 很长,而一个向量的描述长度是 d × bits,可以精确算。
门的两部分编码从「用文本长度近似」变成字面成立。
本节按本项目惯例写:反方先说到底,正方只在能给出证据或明确让步时才回应。 凡以「
⚠️ 让步」开头的,是我方认输的部分,必须原样进入论文的 limitations。
Textual inversion、new-token embedding learning、prompt tuning——都是这个东西。
⚠️ 让步(完全成立):基质不新,且不得声称新。 新的只在组合:(a) 门决定要不要建这个条目;(b) 值拟合于对话者的用词决策, 而不是拟合一句给定定义或重建损失;(c) 键含interlocutor_id。 而且这反而是优点——一个新颖的门应该配一个已知可靠的基质, 而不是同时赌两个未验证的东西。[P5–P10 那条线之所以塌,正是因为同时赌了两个。]
⚠️ 部分让步:它确实是查表。 若研究问题是「模型能不能自己学会把词与含义绑定」,本设计等于用规定回避了问题。 我方能说的只有两点: ① 上下文注入也是"查表"(经注意力),没人说它作弊; ② 条目的内容是学出来的,不是给定的。 ⟹ 主张必须限定为「一个不会把门已经认可的性质丢掉的存储基质」, 不得写成「模型学会了绑定」。
伪词的现有表征携带正字法/子词信息,下游要用它来复述这个词;覆盖掉可能破坏流畅性。
这条是真风险,且可测。 加两个控制: ① 范数约束:
‖v‖相对该位置隐状态范数设上限,并报告实际比值; ② ★ 复述控制:注入后让模型复述该词(Tovi's word is ___), 检查是否仍能正确拼出。若拼不出,说明注入破坏了词的身份, 那么"绑定"就是假的——它只是把那个位置变成了一个语义标记。 这个控制必须先跑,不过就不许解读主结果。
是,而且事先就认。 及格线写在 §4,跑之前定死。 抬不上去 ⟹「早层 + 词位置」不是原因,我方的机制推理错, §1 那三条约束里至少有一条不是充分条件。两种结果都有价值。
⚠️ 让步:真实词汇会随语境漂移,固定v处理不了。 本轮基准里的概念是语境无关的(颜色/材质), ⟹ 结论只能限定在语境无关的词汇项上,多义未测。
用户说「把蓝的那个递给我」而心里想的是 romi,触发器沉默。
⚠️ 让步,且这是本提案最贵的代价。 它不修复论文的 I3 负面结果,它绕开了。 不得写成"解决了 I3"。我方唯一的辩护是重新划分基质,而不是辩解:
知识类型 触发方式 基质 词汇(某个词指什么) 词的 token,精确、可观测 本提案 命题(关于人或世界的事实) 内容相似度 我们已经做出来的那个"物体级偏置" ★ 这里有个反转:我们测出参数化记忆给物体打标而不绑定词—— 作为词典这是失败,作为关于那些物体的命题性知识,这正是你想要的: 它不需要任何词出现就生效,且跨格式可读。 ⟹ 四格图里"从来没有一格同时拿到两者",很可能是"用一种基质装两类知识"这个错误的症状。
⚠️ 但这是重新解释,不是新证据——未测,不得当结论。
⚠️ 让步(部分):在质量上上下文注入更好,而且我们应该直说。 参数化路线买到的只有三样: ① 不占上下文 token(可扩到成百上千个词条); ② 跨会话持久且无需检索; ③ 拟合于用法的含义——短文字定义表达不了的那种。 若部署场景里这三样都不要紧,正确答案就是上下文注入,论文应当照实推荐。
P6 推翻了"final-layer 缺组合性",P10 推翻了"架构不能绑定"。
成立,所以计划照此设计: ① 先做最简单的变体(输入嵌入),中间层版只在简单版不够时才做; ② 及格线跑前写死(§4); ③ 复述控制(反 3)先于主结果; ④ 训练曲线检查点(P10 的教训:60 步时看着像"架构不能",900 步收敛到 1.000)。
用 P10 的同一批数据、同一 seed,只换基质。
| 指标 | 现有最好 | base | 上下文注入(天花板) | 及格线 |
|---|---|---|---|---|
| 本词 F1(held-out 物体) | 0.925(L7 强制) | 0.585 | 0.855 | ≥ 0.85 |
| 换成含义相反的词 | 0.070(L7 强制) | — | — | ≤ 0.30(触发不点火应回到 ~base;<0.30 即真绑定) |
| F2 A/B(held-out 格式) | 0.545 ≈ base | 0.540 | 0.905 | ★ ≥ 0.85 |
| F3 True/False(held-out 格式) | 0.670 | 0.525 | 0.995 | ★ ≥ 0.85 |
| 复述控制(反 3) | — | — | — | 注入后仍能正确复述该词 |
F2/F3 那两格从 ~0.55 抬到 ~0.9,就是论文 §6 那条负面结论被推翻的时刻。 任一 ★ 项不达标 ⟹ 记为负面结果,机制推理须撤回。
| 条件 | 问什么 |
|---|---|
ℓ = 0(输入嵌入) |
最简单的变体够不够——够就不做中间层 |
ℓ = 7(早中层) |
深度是否带来增益 |
ℓ = post-norm |
退化对照:同样是词触发,但值进 logits ⟹ 预测 F2/F3 仍塌(验证"值必须进表征"这条约束) |
| 全位置注入(不按词位置) | 退化对照:同样进表征,但键不是词 ⟹ 预测换词落差回到 ~0.02(验证"键必须是词"这条约束) |
★ 后两个是双向控制:它们各自故意破坏一条约束。 若它们不按预测失败,说明我方对失败原因的归因是错的。
比 P9/P10 便宜:ℓ=0 时梯度穿过全部块但只有一个 d 维参数(无 keys、无路由、无 top-k);
ℓ=7 时只穿上面 20 层。预计单条件 8 用户在 M 系列 MPS 上 10–30 分钟。
- 词不出现就不点火(反 6)——I3 是被绕开而非修复。
- 固定向量扛不住多义/语境依赖(反 5)。
- 基质本身不新(反 1)。
- 多 token 的词注入到哪些位置是未定的设计选择(全部?最后一个?)——须报告所选方案。
- 两个词条同时点火的组合行为未测。我方预测比 P7 好(不争槽),但那是预测。
- 上下文注入在质量上仍可能更优(反 7)——若三样收益都不需要,应直接推荐上下文注入。
原写的是「先做
ℓ=0,够就不做ℓ=7」。实测:
复述控制的两种做法 结果 同量级随机向量(辩论时设想的做法) 0.88 ✅ 通过 ★ 学出来的真实 v(同样 ‖v‖/‖h‖ = 1.00) 0.00 🔴 词的身份被完全破坏 ⟹ 范数不是正确的约束——问题不在大小而在方向。 梯度只优化决策,没有任何一项在保护 token 的身份,于是它径直落在覆盖身份的方向上。 而
ℓ=0恰恰是词的身份所在的层,在那里注入必然最具破坏性。
⚠️ 这同时说明辩论反 3 我方回应得太轻:当时用随机向量验证就宣布通过, 而随机方向与优化出来的方向完全不是一回事。 教训:控制实验必须用【真实产物】跑,不能用同量级的替身。
⚠️ 另须澄清一处我方原措辞过强:反 3 写「拼不出 ⟹ 绑定是假的」。 实测ℓ=0换词后 AUC = 0.000(完全翻转),绑定行为是真的; 丢掉的是「还能把那个词说出来」。精确表述应为: 词条【替换】了该词的表征,而不是【丰富】它 —— 是真缺陷,但不否定绑定。
- 复述控制(反 3)——不过就停。必须用学出来的真实 v 跑,不得用随机替身。
🔴 已跑,复述控制未过(0.00)⟹ 主结果不可解读。ℓ = 0主实验- 改为先做
ℓ = 7(身份信息已被读出,注入的破坏性应更小)——这是被控制实验改的顺序,不是直觉。 - 🔴 已跑,
ℓ=7复述仍不过(0.50) ⟹ 问题不在层数,而在目标函数缺少身份保持项。 - 加身份保持项(P11c,2026-08-05)——预期须跑前写死:
本步不是为了过 0.85 那条线(加正则不会把 F3 抬上去),而是回答 身份与含义是否直接冲突: · 复述恢复 ✅ 且 F3 仍 ~0.775 ⟹ 原结果从「不可解读」变为可解读的负面结果; · 复述恢复但 F3 塌掉 ⟹ 两者直接冲突——比原结果更强的结论, 意味着「词条只能靠覆盖身份来携带含义」。
- 达标 ⟹ 回到完整回路,把门接上(§2.1 的 ①→④),复跑 P4 式端到端。
research/learning-in-referencing/p11/:
p11_lexical_entry.py(主实验 + 双向控制)· p11b_f2_diag.py(F2 诊断)·
p11c_identity_loss.py(身份保持项)。结果见 p11/README.md。