注意力机制

注意力机制是深度学习的核心创新,它允许模型动态地关注输入中最相关的部分,是Transformer架构的基础。

共 3 篇文章·阅读时间:约40分钟

01注意力类型

注意力机制可以根据不同的维度进行分类,每种类型都有其特定的应用场景和优势。

注意力分类

分类维度类型说明
注意力来源自注意力Q、K、V来自同一序列
交叉注意力Q来自A,K/V来自B
注意力范围全局注意力关注所有位置
局部注意力只关注局部窗口
稀疏性稠密注意力所有位置参与
稀疏注意力只计算部分位置

自注意力 vs 交叉注意力

自注意力(Self-Attention)

Q、K、V来自同一个序列。用于捕捉序列内部的依赖关系。
应用:Transformer编码器、BERT、GPT

交叉注意力(Cross-Attention)

Q来自解码器,K、V来自编码器。用于建立两个序列之间的联系。
应用:机器翻译、图像描述、视觉问答

02交叉注意力

交叉注意力允许两个不同序列之间进行信息交互,是Seq2Seq模型和多模态模型的关键组件。

交叉注意力原理

在交叉注意力中,Query来自当前处理的序列,而Key和Value来自另一个上下文序列。

公式

Qcross = XWQ # 当前序列

Kcross = YWK # 上下文序列

Vcross = YWV # 上下文序列

然后使用标准注意力公式计算:softmax(QKT/√d)V

应用场景

机器翻译

解码器通过交叉注意力关注源语言编码器输出,实现跨语言对齐。

图像描述生成

解码器通过交叉注意力关注图像特征,生成描述文字。

视觉问答

模型通过交叉注意力关联问题文本和图像内容。

文档问答

根据问题查询文档内容,提取相关片段。

03稀疏注意力

稀疏注意力通过只计算部分位置之间的注意力,大幅降低计算复杂度,使处理长序列成为可能。

稀疏注意力动机

标准注意力的计算复杂度是 O(n²),当序列长度增加时,计算和内存成本急剧上升。

长序列的挑战

  • 计算量:n=10K时,需要100M次点积运算
  • 内存:存储n×n的注意力矩阵需要O(n²)空间
  • 实际观察:大多数位置之间的注意力权重接近于0

稀疏注意力方法

局部窗口注意力

只关注每个位置周围固定大小的窗口(如滑动窗口)。
代表:Longformer、BigBird

稀疏模式

基于预设的稀疏模式选择参与计算的位置。
代表:Sparse Transformer

学习式稀疏

通过可学习的模式动态决定关注哪些位置。
代表:Routing Transformer

线性注意力

通过核函数近似,将复杂度降到O(n)。
代表:Linear Transformer、Performer

Flash Attention

Flash Attention通过IO-aware的矩阵计算,在保持精确注意力结果的同时, 将内存复杂度从O(n²)降到O(n)。是目前最流行的注意力优化方法。

----