BiDAF 论文解读:双向注意力流机制
BiDAF (Bi-Directional Attention Flow) 是机器阅读理解领域的经典模型,其双向注意力机制对后续 Transformer 架构产生了深远影响。
核心创新
1. Memory-less Attention
传统动态注意力 vs BiDAF 的无记忆注意力:
| 特性 | Dynamic Attention | Memory-less Attention |
|---|---|---|
| 依赖 | 前一时间步的 attended vector | 仅当前 query 和 context |
| 优势 | 可建模时序依赖 | 避免错误累积 |
| 缺点 | 错误会传播 | 无法建模长程依赖 |
2. 双向注意力
同时计算:
- Context-to-Query (C2Q):每个 context 词最相关的 query 词
- Query-to-Context (Q2C):对回答问题最关键的 context 词
模型架构
1 | Input → Embedding → Encoding → Attention → Modeling → Output |
数学表达
相似度矩阵:
其中
C2Q Attention:
$$
\tilde{U}i = \sum_j a{ij} U_j, \quad a_i = \text{softmax}(S_i)
$$
Q2C Attention:
融合表示:
PyTorch 实现
1 | import torch |
与 Transformer 的对比
| 特性 | BiDAF | Transformer |
|---|---|---|
| 注意力方向 | 双向(C2Q, Q2C) | 全方向自注意力 |
| 位置编码 | BiLSTM 隐式编码 | 显式位置编码 |
| 并行化 | 受限于 RNN | 完全并行 |
| 长距离依赖 | 受限 | 理论上无限 |
| 参数量 | 较少 | 较多 |
现代演进
BiDAF 的思想在现代模型中的体现:
1. Cross-Attention in Transformer
1 | class CrossAttention(nn.Module): |
2. FiD (Fusion-in-Decoder)
用于 RAG 的架构,类似 BiDAF 的融合思想:
1 | class FiD(nn.Module): |
实验结果(原论文)
在 SQuAD 1.1 上的表现:
| 模型 | EM | F1 |
|---|---|---|
| BiDAF | 67.7 | 77.3 |
| BiDAF + Self Attention | 72.1 | 81.1 |
| BERT-base | 80.8 | 88.5 |
| GPT-4 (few-shot) | ~90 | ~95 |
延伸阅读
转载请注明出处