基于门控注意力单元(Gated Attention Unit, GAU)的序列建模算法
题目描述
门控注意力单元(GAU)是一种替代Transformer中标准多头注意力(MHA)和前馈网络(FFN)层的高效结构。它通过门控机制和单头注意力设计,在保持模型表达能力的同时,显著减少计算量和参数数量。本题要求理解GAU的核心思想、数学形式及其如何解决Transformer的计算效率问题。
解题步骤详解
1. 背景与动机
Transformer的自注意力机制计算复杂度为 \(O(n^2)\)(\(n\)为序列长度),且多头注意力与FFN的堆叠导致参数量大。GAU的目标是:
- 降低计算成本:用单头注意力替代多头注意力,并通过门控简化结构。
- 保留表达能力:通过门控机制动态融合注意力输出与输入信息。
2. GAU的核心结构
GAU的输入是序列 \(X \in \mathbb{R}^{n \times d}\)(\(n\)为序列长度,\(d\)为隐藏维度),其计算分为三步:
步骤1:生成查询(Q)、键(K)、值(V)和门控向量
- 通过线性变换生成两个中间向量:
\[ U = X W_u \in \mathbb{R}^{n \times e}, \quad V = X W_v \in \mathbb{R}^{n \times e} \]
其中 \(e\) 是扩展维度(通常 \(e < d\))。
- 将 \(U\) 拆分为查询 \(Q\) 和键 \(K\),将 \(V\) 拆分为值 \(V\) 和门控向量 \(G\):
\[ Q = U_{[:, :e/2]}, \quad K = U_{[:, e/2:]}, \quad V = V_{[:, :e/2]}, \quad G = V_{[:, e/2:]} \]
步骤2:门控注意力计算
- 计算注意力权重 \(A\):
\[ A = \text{softmax}\left(\frac{Q K^\top}{\sqrt{e/2}}\right) \in \mathbb{R}^{n \times n} \]
- 对值 \(V\) 加权求和,得到注意力输出 \(O\):
\[ O = A V \in \mathbb{R}^{n \times (e/2)} \]
步骤3:门控融合与输出
- 使用门控向量 \(G\) 融合注意力输出 \(O\) 和原始输入 \(X\):
\[ Z = \text{GELU}(O) \odot G + (1 - G) \odot X W_z \]
其中 \(W_z \in \mathbb{R}^{d \times (e/2)}\) 是线性投影,\(\odot\) 表示逐元素乘法。门控 \(G\) 的值域为 \([0,1]\),通过sigmoid激活函数实现。
3. 为什么GAU更高效?
- 单头注意力:标准Transformer的多头注意力需要计算 \(h\) 次(\(h\)为头数),而GAU仅用一次注意力覆盖全部维度。
- 维度压缩:扩展维度 \(e\) 通常小于隐藏维度 \(d\)(例如 \(e=d/2\)),减少了注意力矩阵的大小。
- 门控替代FFN:门控机制同时完成了信息筛选(类似FFN的非线性变换)和残差连接,无需额外FFN层。
4. 与Transformer的对比
- 参数效率:GAU将MHA和FFN合并为一层,参数量减少约30%-50%。
- 计算效率:注意力矩阵维度从 \(O(n^2 d)\) 降至 \(O(n^2 e)\)(\(e < d\)),适合长序列建模。
5. 实际应用示例
在文本分类任务中,GAU可替换Transformer的编码层:
- 输入词嵌入序列 \(X\)。
- 堆叠 \(L\) 层GAU,每层输出作为下一层输入。
- 最终序列表示通过池化后送入分类器。
实验显示,GAU在保持准确率的同时,训练速度显著提升。
总结
GAU通过门控注意力一体化设计,实现了更紧凑的序列建模结构。其核心创新在于用门控机制动态平衡注意力输出与原始输入,既降低了计算负担,又保留了模型表达能力。这一思路对长文本处理、资源受限场景下的NLP任务具有重要价值。