Attention——从时序链到全连接邻接图
RNN 的悲剧不是 hash 桶不够大——是 50 个词共用一条链。
RNN 的问题:单边关系
50 个德语词依次进入 hidden₅₁₂:
词₁ → h₁ → 词₂ → h₂ → 词₃ → h₃ → ... → 词₅₀ → h₅₀ → Decoder
这是单边时序链。词₅₀ 和词₁ 的关系穿过 48 步 tanh 连乘,碾成粉末。RNN 的"关系"只有一条方向:从前到后,衰减殆尽。
在你的 hash 碰撞语言里:RNN 把 50 个词挤进同一个桶——第 1 个词的信息在第 50 个词进入时已被覆盖。Decoder 看到的只有最后一个词的 hash 值。
Attention 的解法:分桶 + 邻接矩阵
Attention 做三件事:
第一步:分桶。 每个词放进自己独立的桶——50 个词 = 50 个独立 hash 桶,互不覆盖。
第二步:建邻接矩阵。 每对词之间计算"关系强度":
词₁ 词₂ 词₃ ... 词₅₀
词₁ [ . . . . ]
词₂ [ . . . . ] ← 这就是 QK^T
词₃ [ . . . . ] ← 每对词之间的匹配度
...
词₅₀ [ . . . . ]
QK^T 不是"词与词的连接存在与否",是边权重——每对词的关系有多强。这是全连接的带权图。
第三步:按需查询。 Decoder 每生成一个英文词,就去这个图上问:“谁和我最相关?“邻接矩阵告诉它权重,它按权重把相关德语词的 hash 值拉进来。
多头 = 多重关系网
单头注意力只有一套邻接矩阵——所有关系混在一起。多头并行计算多套独立的邻接矩阵:
头 1: 冠词-名词关系
头 2: 主语-谓语关系
头 3: 介词短语关系
头 4: 时态一致关系
...
头 8: 语义相似性
每个头在自己的子空间(d_k = d_model / num_heads)里独立计算。8 个头 = 8 张并行的邻接矩阵 = 图上的 8 重关系网同时运作。
RNN vs Attention:hash 碰撞的根本差异
| RNN | Attention | |
|---|---|---|
| 桶数 | 1 个 shared hidden | 每个词独立桶 |
| 关系类型 | 单边时序链 | 全连接邻接矩阵 |
| 关系保留 | 被 tanh 衰减 | 永远 1.0(残差直通) |
| 多头 | 无 | 多套并行邻接矩阵 |
| 碰撞方式 | 挤——后面的覆盖前面的 | 查询——Decoder 按需拉取 |
| 信息丢失 | 前部词被时序擦除(BLEU 3.0) | 前部词永远可达(预期 BLEU 15+) |
Attention 为什么能解放 BLEU
RNN 用了一个桶装 50 个词——前面的被后面的覆盖,BLEU 天花板 3.0。这不是 hash 桶太小——再大的桶也会被时序覆盖破坏。
Attention 给了每个词一个独立的桶。50 个词互不覆盖。Decoder 通过邻接矩阵按需查询——需要哪个词的信息,就用 QK^T 算匹配度,按权重拉取。
信息不再被擦除。BLEU 从 3 跳到 15,不是因为换了更好的 hash 函数,是因为不再需要时序压缩了。
在你的 hash 碰撞框架里的精确位置
RNN 的困境:词之间需要保留关系(图),但只有一个桶(时序链)。图和链不兼容——链上的碰撞破坏图结构。
Attention 的解:把每个词放进独立桶,用邻接矩阵代替链。图结构直接存在邻接矩阵里,不与桶内 hash 碰撞冲突。
翻译 = 图搜索 + hash 碰撞。RNN 碰在图上——链结构破坏关系。Attention 碰在桶里——图结构完好。
Phase 2 CE 基线结果
H=256, E=256, epochs=5, pure Attention decoder(无 pack_padded 加速):
| epoch | loss | BLEU |
|---|---|---|
| 0 | 5.73 | 2.80 |
| 1 | 4.67 | 3.02 |
| 2 | 4.19 | 3.27 |
| 3 | 3.86 | 3.45 |
| 4 | 3.59 | 3.57 |
与 Phase 1 纯 RNN 的关键差异:
| Phase 1 RNN | Phase 2 Attention | |
|---|---|---|
| 最佳 BLEU | 3.06 (epoch 2) | 3.57 (epoch 4) |
| 学习趋势 | 倒 U——epoch 2 后衰退 | 持续上升——epoch 4 还在涨 |
| 过拟合信号 | 强(BLEU↓ 同时 loss↓) | 弱(BLEU↑ 同时 loss↓) |
Attention 改变了学习曲线的形状——RNN 的 teacher forcing 过拟合在 Attention 上被大幅缓解。但 BLEU 绝对值仍远低于预期(10-15),需要更大 H、更多 epoch 或更仔细的模型 debug。
SoftBLEU 对照实验运行中。
Phase 2 Attention 实验运行中。CE baseline 和 SoftBLEU 的 BLEU 数据待补入。
May the Code be with us.
License: GPLv3
本文《SameTime》系列采用 GNU 通用公共许可证第三版 (GNU General Public License v3.0) 协议进行开源发布与分发。允许任何形式的复制、修改和分发,但必须继承相同的开源协议,承认在算力宇宙中所有的迭代与变异。