什么是 注意力机制?
注意力机制(Attention Mechanism)是一种神经网络技术,它通过计算加权重要性分数,使模型能够动态地关注输入数据的相关部分,从而在进行预测或生成输出时选择性地关注最相关的信息。
快速了解
| 全称 | Attention Mechanism |
|---|---|
| 创建时间 | 2014 年由 Bahdanau 等人提出,2017 年由 Vaswani 等人推广 |
| 规范文档 | 官方规范 |
工作原理
注意力机制已成为深度学习领域最具影响力的创新之一,从根本上改变了神经网络处理序列和结构化数据的方式。注意力机制最初用于机器翻译,它允许模型查看所有输入位置并确定哪些位置与每个输出位置最相关。自注意力(Self-Attention,又称内部注意力)使序列中的每个位置能够关注同一序列中的所有其他位置,从而捕获内部依赖关系。多头注意力(Multi-Head Attention)通过使用不同的学习投影并行运行多个注意力操作来扩展这一功能,使模型能够同时关注来自不同表示子空间的信息。交叉注意力(Cross-Attention)实现两个不同序列之间的交互,例如序列到序列模型中编码器输出和解码器状态之间的交互。注意力机制为每个输入计算三个向量:查询(Query, Q)、键(Key, K)和值(Value, V),其中注意力权重由查询和键之间的兼容性得出,然后应用于值以产生输出。
主要特点
- 基于输入相关性的动态权重分配,而非固定模式
- 全局依赖建模,能够捕获不受距离限制的关系
- 通过注意力权重可视化提供可解释性,展示模型关注点
- 可并行化计算,能够在现代硬件上高效训练
- 可扩展架构,支持可变长度的输入序列
- 查询-键-值(QKV)公式提供灵活的注意力计算
常见用途
- Transformer 架构作为现代语言模型的核心构建模块
- 机器翻译中用于对齐源语言和目标语言表示
- 图像识别和视觉 Transformer 中的空间特征注意力
- 语音识别中用于音频处理的时序对齐
- 文本摘要和问答系统中的上下文感知生成
示例
Loading code...常见问题
什么是深度学习中的注意力机制?
注意力机制是一种让神经网络在做预测时能够关注输入数据中最相关部分的技术。它为不同的输入元素计算加权重要性分数,使模型能够选择性地关注相关信息,而不是平等对待所有输入。
自注意力和交叉注意力有什么区别?
自注意力(内部注意力)允许序列中的每个位置关注同一序列中的所有位置,捕获内部依赖关系。交叉注意力则实现两个不同序列之间的交互,例如翻译模型中编码器输出和解码器状态之间的交互。
注意力机制在 Transformer 中是如何工作的?
在 Transformer 中,注意力使用查询(Q)、键(K)和值(V)向量。注意力分数通过查询和键的点积计算,经过缩放并应用 softmax。这些分数对值进行加权以产生输出,使模型能够关注相关上下文。
注意力机制有哪些优势?
主要优势包括:捕获不受距离限制的长距离依赖关系、支持并行计算以实现高效训练、通过注意力权重可视化提供可解释性、以及灵活处理可变长度序列而无需递归。
如何用 Python 实现注意力机制?
实现缩放点积注意力:从输入计算 Q、K、V 投影,计算注意力分数 softmax(QK^T / sqrt(d_k)),并与 V 相乘。PyTorch 和 TensorFlow 等库提供了内置的 MultiheadAttention 模块。