Phase 6 Transformer——从 3 到 11,再到学术基线

Attention 跑了 15 组实验,最高 3.77。Transformer 第一轮就 11.49。

为什么 Transformer 秒杀 Attention

不是因为 Transformer 更聪明——是因为 Attention 的 decoder 是 Python for-loop,而 Transformer 是全向量化的。

Phase 2 Attention Phase 6 Transformer
Decoder for t in range(T): attention per step torch.matmul(Q, K.T) 一气呵成
速度 ~15 min/epoch ~3 min/epoch
最优 BLEU 3.77 (A15, 双头+α=0.8) 11.49 (词级, ep8)

速度差 5 倍,BLEU 差 3 倍。这两个差距其实同源:计算效率决定了你能跑多少 epoch、多少数据、多深的网络。

Phase 6 实验矩阵

全部 30 epoch, BPE 8K, label smoothing 0.1, warmup scheduler:

实验 配置 Params BLEU 分析
B0 词级 d256/3L/4H 53.6M 11.49 词级 baseline
B1 BPE d256/3L/4H 11.6M 10.66 BPE 小模型反降
B2 BPE d512/6L/8H 56.4M 8.18 过拟合——参数过多
B4 BPE d512/3L/8H ~30M 8.57 宽不加深,仍过拟合
B5 BPE d256/4L/4H ~14M 11.52 B1→B3 中间点
B3 BPE d256/6L/4H 17.2M 11.70 最优

B3 的启示

B3 (d256/6L) 用 17.2M 参数跑出 11.70 BLEU——BPE 首次超过词级 baseline (11.49)

关键发现:

  • 深度 > 宽度:6 层 256 维 (17M) > 3 层 512 维 (56M) ——参数效率差 3 倍
  • 160K 句子匹配 ~15M 参数:B2 的 56M 严重过拟合,B3 的 17M 刚好
  • BPE 的真正优势在中型模型:vocab 效率释放了 embedding 参数,让每层能更宽更深

通往学术基线的路

IWSLT14 De-En 上,标准 Transformer 论文配置(d512, 6 layers, 8 heads, BPE 8K)通常达到 20-25 BLEU。我们的路线:

步骤 改动 预期 BLEU 状态
B0 词级 d256/3L 11.49
B1 BPE d256/3L 10.66
B2 BPE d512/6L/8H 8.18 ✅ 过拟合
B3 BPE d256/6L 11.70 最优
B4 BPE d512/3L 8.57 ✅ 宽过浅
B5 BPE d256/4L 11.52 ✅ 中间验证
B6 BPE d256/6L + K_lang 🔬 双头 + restricted softmax
B7+ Beam Search, 更大数据 +2-5 待验证

从 BLEU 3 到 11,我们学到了什么

1. 架构和损失函数是一体两面——都是梯度的产生方式

Phase 2 花了 15 组实验 (A1-A15) 在损失函数上反复调试。SoftBLEU、K_lang、双头梯度相乘——最好的一组 A15 达到 3.77 (+9.3% vs CE-only)。Transformer 第一轮就用纯 CE 跑到 11.49。

看起来像是"架构 > 损失函数"。但其实不是。架构和损失函数是同一个东西的两面:都是定义了梯度的产生方式。

  • 架构改变 → hidden_seq 的表示能力变了 → ∂L/∂W 经由不同路径回传 → 梯度的接收面不同
  • 损失函数改变 → L 的定义变了 → ∂L/∂W 的量级和方向变了 → 梯度的来源不同

Attention 上用 K_lang + 0.18 BLEU,Transformer 上一轮架构跳变就 +7.7 BLEU——这不是因为 Architecture > Loss,而是因为 Attention 的瓶颈在表示能力(LSTM 时序链),不是损失函数的梯度。换个场景,当架构的表达力已经够用,但数据分布有偏斜,调损失函数就是唯一的出路。

梯度的多寡和方向才是学习的唯一原料。架构和损失函数只是不同的食谱。

2. BPE 在小模型上反效果

BPE 的 8K vocab 把 embedding 参数从 33.5M 砍到 4M——在 d256 小模型上,这意味着总参数从 53.6M 缩到 11.6M。模型失去了足够的容量来学习有意义的表示。

d512 大模型应该反转这个趋势——embedding 参数占比降低,BPE 的子词泛化能力发挥作用。

3. 早停 + 倒 U 是所有模型的共有特征

无论是 Phase 2 Attention (ep2 峰) 还是 Phase 6 词级 Transformer (ep8 峰),BLEU 都呈现峰值后回落。这不是过拟合——loss 和 BLEU 同时变好。这是 teacher forcing 的 exposition bias。

4. 日志就是 infrastructure

Loki 驱动 + Grafana 看板 = 看一眼就知道实验跑到哪了。没有基础设施,3 个实验 15 个 epoch 的结果能让你翻半天日志。花 1 天修基础设施省 10 天找日志。

更新日志

日期 实验 结果
2026-05-05 BPE d256/3L (B1) 10.66
2026-05-05 词级 d256/3L (B0) 11.49
2026-05-06 BPE d512/6L (B2) 8.18 — 过拟合
2026-05-06 BPE d256/6L (B3) 11.70 — 最优
2026-05-06 BPE d512/3L (B4) 8.57
2026-05-06 BPE d256/4L (B5) 11.52
2026-05-06 BPE d256/6L + K_lang (B6) 🔬 运行中

核心发现:深度 > 宽度。d256/3L→4L→6L 步步上升 (10.66→11.52→11.70),但 d512/3L 和 d512/6L 双双过拟合。160K 句的 IWSLT14 上,17M 参数的 d256/6L 是甜点。


May the Code be with us.


License: GPLv3
本文《SameTime》系列采用 GNU 通用公共许可证第三版 (GNU General Public License v3.0) 协议进行开源发布与分发。允许任何形式的复制、修改和分发,但必须继承相同的开源协议,承认在算力宇宙中所有的迭代与变异。