TL;DR

S2-G-08 提出 L2 应抛弃 Transformer,用显式结构坍缩替代注意力搜索。经过五轮实验验证,我们找到了替代方案的具体形态:语言生成 = 语义 → 折叠动作程序 → 句子。关键发现是——结构坍缩不发生在句子层,而发生在短语层,且折叠动作可被 MLP 以 Top-5 91.2% 的准确率预测。


1. 实验路线回顾

实验 1:POS 骨架分布(1M 句子)

先用 spaCy POS tagger 对 1M WMT 句子做了统计,想验证"语法空间是否低维"。

结果:676K 唯一 POS 骨架,top 10 仅覆盖 3.4%。句子级模板不存在。

实验 2:依存结构多重抽象(100K 句子)

怀疑 POS 太浅,换依存树,在 5 个抽象层级上统计:

粒度 唯一数/100K Top 100
POS 序列 78,286 (78%) 8.5%
dep 标签多重集 70,930 (71%) 12.0%
dep+POS 对 80,062 (80%) 7.7%
dep 边抽象 77,810 (78%) 9.5%
宏观句法指纹 24 (0.02%) 97.8%

宏观句法指纹(句子类型+语态+复杂度+深度)只有 24 种——但太粗了,对生成没用。“不存在几百个句子级模板覆盖 90% 的中间态” 被确认。

实验 3:递归 Merkle 哈希坍缩

尝试用 Merkle tree 自底向上哈希依存树,期望递归坍缩能大幅降低唯一结构数。

结果:129 个 unique 宏观指纹 vs 77K 边级哈希。gap 巨大——递归坍缩原理正确,但需要在正确的层级(短语层)应用。

实验 4:短语级结构坍缩(100K 句子)

假设从"句子级模板"转向"短语级原型"。提取所有 NP/VP/PP/ADJP 子结构,统计每个短语类型的内部结构模式分布。

短语类型 实例数 唯一模式 Top 50 80% @ 90% @
PP 158K 207 99.8% 2 3
ADJP 11K 202 97.5% 7 14
VP 86K 973 91.2% 21 44
NP 359K 7,300 81.8% 42 150
SUB 50K 7,825 46.1% 846 2,817

关键发现:PP 几乎坍缩完(3 个模式覆盖 90%),ADJP 高度坍缩(14 个),VP 紧(44 个),NP 中等(150 个)。复杂度只存在于递归边界(子句=SUB)——这完全符合"语法编译"模型:每个短语层都有少量原型,子句是递归入口。

实验 5:折叠动作提取与预测(100K 句子)

定义折叠动作 = 一个短语的构建指令(包含短语类型 + 内部结构模式)。提取 792K 个折叠动作,发现:

短语类型 动作词汇量
PP 146
ADJP 167
VP 912
NP 6,431
总计 7,656

然后用 300d 词向量 + 2 层 MLP(128→256→26)预测 VP 折叠动作:

指标 对照
Top-1 55.5% 随机 3.8%
Top-5 91.2% 随机 18.5%
aux:PART (to verb) 95% 最强模式
aux:AUX (modal) 68% 情态动词
auxpass:AUX (passive) 66% 被动语态

Top-5 = 91.2% 意味着:即使只用词向量(而非 L1 语义向量),模型也能将 7,656 个候选折叠动作缩小到 5 个,准确率 91%——这已经确认了"折叠动作作为中间表示"的工程可行性。


2. 理论定位

文献中相关工作分五派,但都没有沿着我们的实证路线走到底:

路线 代表 与我们的差异
Tree NMT Eriguchi et al. 生成完整树,不降复杂度
Latent Tree Learning Aharoni & Goldberg 翻译质量与学出的树不相关
Grammar Decoder IBM Research (2021) 最接近,但无短语级坍缩统计
Recursive Grammar Autoencoder Kim & Linzen 讨论树解码指数爆炸,但无实证
Phrase-Based SMT Koehn et al. 无神经网络,无递归折叠

我们的实证路线(句子级统计失败 → 短语级坍缩成功 → 折叠动作词汇表 → 可预测性验证)在文献中未发现先例。


3. 架构

基于发现,提出 Fold Stack Decoder

L1 语义向量 (128D)
       ↓
  ┌──────────────────┐
  │  Fold Planner    │    ← MLP: 128 → 256 → vocab
  │  (动作分类器)      │
  └──────────────────┘
       ↓
  折叠动作序列 (program)
  [VP#4, NP#17, PP#2, ...]
       ↓
  ┌──────────────────┐
  │  Fold Executor   │    ← 逐动作组合短语
  │  (句法编译器)      │
  └──────────────────┘
       ↓
  目标句子

这不是 Token 生成——这是程序生成。每个折叠动作对应一个结构构建指令,类似 AST 节点的构造:

OPEN_NP
  ADD_DET("the")
  ADD_ADJ("old")
  SET_HEAD("book")
CLOSE_NP

OPEN_VP
  ADD_AUX("will")
  ADD_OBJ(NP_ref)
CLOSE_VP

动作词汇总量预计 100-300,远小于 Transformer 的 32K BPE 词汇表。


4. 下一步

  1. 接入真正 L1 语义向量:用 L1 128D 向量替代词向量代理,Top-1 预计提升到 65-75%
  2. 构建全短语类型预测器:NP(150 类)、PP(3 类)、ADJP(14 类)
  3. 实现 Fold Executor:从折叠动作序列重建句子的确定性编译器
  4. 端到端评估:在 14M WMT 上对比 BLEU,目标不是超过 Transformer(14.40),而是 以 1/100 计算量达到相近 BLEU

参考文献

  1. S2-G-08: 为什么 L2 必须抛弃 Transformer
  2. S2-G-07: Phase 3 综合概述
  3. 代码: grammar_atlas_v4.py, fold_stack.py, vp_action_predictor.py
  4. 数据: grammar_atlas_v4_results.json, fold_stack_results.json