什么是 注意力机制?
注意力机制(Attention Mechanism)是一种可微计算:它在掩码允许的表示上计算与数据相关的权重,并据此组合输出。其行为取决于 Query、Key、Value 投影、掩码、归一化、学习参数和外围模型。
快速了解
| 全称 | Attention Mechanism |
|---|---|
| 创建时间 | 2014 年由 Bahdanau 等人提出,2017 年由 Vaswani 等人推广 |
| 规范文档 | 官方规范 |
工作原理
注意力机制先形成 Query(Q)、Key(K)和 Value(V)表示,对允许的 Q-K 对打分,应用掩码和归一化,再根据权重组合 Value。自注意力的三者来自同一表示流;交叉注意力的 Query 与 Key/Value 来自不同表示流;多头注意力并行执行多组学习投影并组合结果。注意力是 Transformer 的重要组件,但整体行为还取决于前馈层、残差路径、归一化、位置编码、数据和训练。 稠密注意力的计算与内存成本会随序列长度变化。因果掩码、局部或稀疏模式、分组查询变体、内核实现、精度、批形状和硬件都会改变权衡。注意力图可作为诊断工具,但不能单独作为模型决策的因果解释。应结合形状与掩码测试、数值检查、目标任务质量、内存、延迟和代表性失败案例评测实现。
主要特点
- 在掩码允许的位置上计算数据相关的加权组合
- 可建模长距离交互,但受上下文、掩码和资源限制
- 使用语义由训练学习而非预先指定的 QKV 投影
- 常见稠密实现支持并行计算,但序列成本为二次增长
- 因果、Padding、局部或交叉掩码会改变其行为
- 需要目标任务评测,权重可视化不是完整解释
常见用途
- Transformer 架构作为现代语言模型的核心构建模块
- 机器翻译中用于对齐源语言和目标语言表示
- 图像识别和视觉 Transformer 中的空间特征注意力
- 语音识别中用于音频处理的时序对齐
- 文本摘要和问答系统中的上下文感知生成
示例
Loading code...常见问题
什么是深度学习中的注意力机制?
注意力是一种数据相关的加权计算。模型把表示投影为 Query、Key 和 Value,对允许的 Query-Key 对打分、归一化,再组合 Value。权重仅展示其中一部分计算,不能单独证明某个位置导致了最终预测。
自注意力和交叉注意力有什么区别?
自注意力(内部注意力)允许序列中的每个位置关注同一序列中的所有位置,捕获内部依赖关系。交叉注意力则实现两个不同序列之间的交互,例如翻译模型中编码器输出和解码器状态之间的交互。
注意力机制在 Transformer 中是如何工作的?
在 Transformer 中,注意力使用查询(Q)、键(K)和值(V)向量。注意力分数通过查询和键的点积计算,经过缩放并应用 softmax。这些分数对值进行加权以产生输出,使模型能够关注相关上下文。
注意力机制有哪些优势?
注意力可以在允许的位置间建立灵活交互,常见实现也支持并行计算。其成本与收益取决于序列长度、掩码、架构、内核、硬件和任务;它不会自动使系统可解释、高效或鲁棒,必须用目标任务证据验证。
如何用 Python 实现注意力机制?
实现缩放点积注意力:从输入计算 Q、K、V 投影,计算注意力分数 softmax(QK^T / sqrt(d_k)),并与 V 相乘。PyTorch 和 TensorFlow 等库提供了内置的 MultiheadAttention 模块。