Attention 和 Self-Attention 总结

本文深入探讨了Attention和Self-Attention的区别,介绍了Self-Attention的工作原理,包括Multi-head Self-Attention,强调了其在解决序列依赖和并行计算的优势。此外,还讨论了Positional Encoding的重要性以及Self-Attention与RNN和CNN的对比,揭示了Self-Attention在大规模数据训练中的优势,并提到了Masked Self-Attention在解决训练与测试不一致问题中的应用。

一、Attention

Attention 的核心逻辑是“从关注全部到关注重点”,将有限的注意力集中在重点信息上,从而节省资源,快速获得最有效的信息。

Attention 机制可以更加好的解决序列长距离依赖问题,并且具有并行计算能力。

Attention 并不需要在 Encoder-Decoder 框架下使用,是可以脱离 Encoder-Decoder 框架的。

  • 下面的图片则是脱离 Encoder-Decoder 框架后的原理图解:

  • Attention原理的3步分解:

通过 Query(查询对象) 信息从 Values(被查询对象) 中筛选出重要信息,即:计算 Query 和 Values 中每个信息的相关程度

Attention 通常可以表示为将 Query(Q) 和 key-value pairs(把 Values 拆分成了键值对的形式)映射到输出上,其中 query、每个 key、每个 value 都是向量,输出是 V(被查询对象)中所有 values 的加权,其中权重是由 Query 和每个 key 计算出来的,计算方法分为三步:

第一步:Query与每一个Key计算相似性得到相似性评分s
第二步:将s评分进行softmax转换成[0,1]之间的概率分布
第三步:将[a1,a2,a3…an]作为权值矩阵对Value进行加权求和得到最后的Attention值

公式如下:

具体步骤如下:

二、Self-Attention

2.1 Attention 和 Self-Attention 的区别

1. Attention:

传统的 Attention 机制发生在  Target的元素 和  Source中的所有元素 之间。在一般任务的 Encoder-Decoder 框架中,输入 Source 和输出 Target 内容是不一样的,比如对于英 - 中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子。

2. Self-Attention

Self-Attention 指的不是 Target 和 Sour
### Cross-Attention Self-Attention区别及应用 #### 定义与机制 Self-Attention 是一种注意力机制,它允许序列中的每个位置关注整个序列的信息。通过计算输入序列中各个部分的相关性权重,Self-Attention 能够捕捉到全局依赖关系并生成上下文感知的表示[^1]。 Cross-Attention 则用于两个不同的序列之间建立关联。具体来说,给定一个查询(Query)序列键值对(Key-Value Pair)序列,Cross-Attention 可以让查询序列基于另一个序列的内容来调整其表示[^2]。 #### 计算过程对比 在 Self-Attention 中,查询 (Q)、键 (K) 值 (V) 都来源于同一个输入序列。这意味着模型会学习如何将同一序列的不同部分联系起来,从而增强局部或远程的关系建模能力。 而在 Cross-Attention 设置下,查询通常来自于源序列或者目标序列之一,而键值则来自另一方。这种设计使得模型能够有效地跨域或多模态数据间传递信息,比如文本与图像间的交互分析。 #### 应用场景比较 - **自然语言处理领域** - 自回归解码器架构常采用 Self-Attention 来捕获句子内部单词之间的长期依存关系,在机器翻译任务中有广泛应用。 - 对于涉及多模态的任务如视觉问答(VQA),Cross-Attention 将被用来融合图片特征问题描述,以便更好地理解两者之间的语义关联。 - **计算机视觉方面** - 卷积神经网络(CNNs)虽然擅长提取空间上的局部模式,但当面对较大范围内的对象识别时可能表现不佳;引入 Transformer 结构及其核心组件——Self-Attention 后可以改善这一情况。 - 当需要结合其他类型的传感器数据(例如雷达信号)来进行环境感知时,则可利用 Cross-Attention 实现异质数据的有效集成。 - **时间序列预测** - 在某些情况下,历史观测值本身就可以提供足够的线索完成未来趋势估计工作,此时仅需依靠 Self-Attention 即可实现良好效果。 - 如果还存在外部辅助变量影响最终结果的话,则应该考虑加入 Cross-Attention 层次进一步提升准确性。 ```python import torch from transformers import BertModel, BertTokenizer tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') text = "Replace me by any text you'd like." encoded_input = tokenizer(text, return_tensors='pt') output = model(**encoded_input) print(output.last_hidden_state[:,0]) # Output contains embeddings enriched via self-attention. ``` 上述代码片段展示了 BERT 模型的应用实例,其中包含了典型的 Self-Attention 运作方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值