注意力机制(三)(不同注意力机制对比)

简介: 主要介绍了注意力机制的基本思想,以及注意力机制中一个常见的类型——自注意力机制。前面两篇文章为了帮助大家理解注意力机制的思想用了非常多的类比,以及联系生活实际。然而,不管类比和联系多么恰当,这些做法多多少少都会让事物本身的特性被类比、联系后的事物所掩盖。

回顾

前面两篇文章:

注意力机制(一)(基本思想)-CSDN博客

注意力机制(二)(自注意力机制)-CSDN博客

主要介绍了注意力机制的基本思想,以及注意力机制中一个常见的类型——自注意力机制。前面两篇文章为了帮助大家理解注意力机制的思想用了非常多的类比,以及联系生活实际

然而,不管类比和联系多么恰当,这些做法多多少少都会让事物本身的特性被类比、联系后的事物所掩盖。

所以本篇文章我们有两个任务:

1、还原注意力机制的本质:不使用任何的类比、比喻,仅仅来灌输注意力机制的本身思想

2、比对不同注意力机制类型:在注意力机制的本质下去比对不同注意力机制类型

注意力机制本质

注意力机制是父类

注意力机制是一个宏大的概念,也注意力机制是一个宏大的概念,也就说注意力机制指的是一群方法,而不是一个方法。并且,现在的模型都不会直接用原始注意力机制来做,而是用其变型来完成。


所以:


注意力机制是自注意力机制、交叉注意力机制、多头注意力机制的一个父类。并且可以认为里面的Q的来源是一个未实现的抽象类,需要在其子类(自注意力机制、交叉注意力机制等)中具体去实现

注意力机制的限制

对于上面这张图,大家应该都非常熟悉了:

1、Q与K进行查询,查询出K与Q的相似度

2、将相似度进行缩放处理

3、将Scale结果进行softMax处理的到0-1的概率值

4、将V和概率值进行MatMul后,得到的结果V‘就包含注意力的信息

注意力机制虽然没有规定QKV的来源和关系,但是它限制QKV的做法以及其所蕴含的含义。

因此,只要满足这四步操作的,我们都可以称为是一种注意力机制

自注意力机制

自注意力机制是注意力机制的一种特殊形式,注意力机制包括自注意力机制

在自注意力机制中,QKV是同源的,因此自注意力机制能够很好的探寻序列内部的信息

从上图中,对于Thinking的词向量X1,通过三次矩阵变化就得到了q、k、v

其实,所谓的Q K V矩阵、查询向量之类的字眼,其来源都是与矩阵的乘积,本质上都是的线性变换。那么为什么不直接使用而要对其进行线性变换呢?

当然是为了提升模型的拟合能力,矩阵都是可以训练的,起到一个缓冲的效果

总之,自注意力机制对QKV的来源(初始值)、关系存在一定的限制(这个限制让自注意力机制更易探寻模型内部的信息)(对单一序列分析有很好的效果),同时也通过矩阵使得模型可训练,起到缓冲作用

交叉注意力机制

交叉注意力是注意力机制的一种,它处理两个相关但不同的序列。这在多模态任务中特别有用,如图像和文本的联合处理(存在联系的多序列联合分析)

特点:V、K同源,Q来自另一个序列(如下图)

针对这个特点,我们不难理解为何交叉注意力机制多用于多模态任务:

1、V、K来自一段视频,Q来自一段音频。要求利用音频在视频中查找音频相关的视频内容

2、此时Q就代表查询项(爱好匹配),拿这个查询项到视频构造出来的序列中去查询。给视频

(K、V)中和音频(Q)相匹配的部分给予更高的关注度

3、于是在最后得到的视频序列V‘中,就重点考虑了我们要的相匹配的部分序列。此时无论是做相关视频内容的生成、查找都可以很方便的利用这个V’

XXX注意力机制

我们同样可以:

1、让QKV都不同源

2、让Q=1,KV同源

3、anyway~~~~

总之,我们任意给QKV的来源加以改变我们就可以得到一个全新的注意力机制。但是这样的一个来源组合,你必须要能够给出一个合理的解释同时保证它有一个很好的效果,否则就是没有意义的(现在对注意力来源修改的研究很多啦,想要利用这个发现一个全新的、优秀的注意力机制可不容易)

总结

1、注意力机制是一个方法群体的总称(父类)

2、自注意力、交叉注意力机制都是对注意力机制的继承,对QKV来源进行了限制

3、注意力机制本身对QKV的限制仅仅在操作方法上

4、自注意力机制主要用于单一序列的内部分析;交叉注意力机制用于多模态学习(多序列分析)

撰写文章不易,如果文章能帮助到大家,大家可以点点赞、收收藏呀~

相关文章
|
6月前
|
机器学习/深度学习 Ruby
YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
YOLOv5改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
345 0
|
6月前
|
机器学习/深度学习 Ruby
YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
YOLOv8改进 | 2023注意力篇 | iRMB倒置残差块注意力机制(轻量化注意力机制)
689 0
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
多头注意力机制介绍
【10月更文挑战第4天】
|
4月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进 - 注意力机制】DoubleAttention: 双重注意力机制,全局特征聚合和分配
YOLOv8专栏探讨了该目标检测模型的创新改进,如双重注意力块,它通过全局特征聚合和分配提升效率。该机制集成在ResNet-50中,在ImageNet上表现优于ResNet-152。文章提供了论文、代码链接及核心代码示例。更多实战案例与详细配置见相关CSDN博客链接。
|
4月前
|
机器学习/深度学习 图计算 计算机视觉
【YOLOv8改进 - 注意力机制】 CascadedGroupAttention:级联组注意力,增强视觉Transformer中多头自注意力机制的效率和有效性
YOLO目标检测专栏探讨了Transformer在视觉任务中的效能与计算成本问题,提出EfficientViT,一种兼顾速度和准确性的模型。EfficientViT通过创新的Cascaded Group Attention(CGA)模块减少冗余,提高多样性,节省计算资源。在保持高精度的同时,与MobileNetV3-Large相比,EfficientViT在速度上有显著提升。论文和代码已公开。CGA通过特征分割和级联头部增加注意力多样性和模型容量,降低了计算负担。核心代码展示了CGA模块的实现。
|
5月前
|
机器学习/深度学习 自然语言处理 机器人
注意力机制详解(二)
注意力机制(Attention Mechanism)对比分析:无Attention模型中,Encoder-Decoder框架处理文本序列时,输入信息被编码为单一的中间语义表示,导致每个目标单词生成时使用相同编码,忽视了输入序列中各单词的不同影响。引入Attention模型后,每个目标单词根据输入序列动态分配注意力权重,更好地捕捉输入相关性,尤其适用于长序列,避免信息丢失。Self-Attention则进一步在序列内部建立联系,用于理解不同部分间的关系,常见于Transformer和BERT等模型中。
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
注意力机制详解(一)
注意力机制是受人类认知过程启发的一种深度学习技术,它允许模型动态地聚焦于输入的不同部分,根据上下文分配“注意力”。这种机制最早在序列到序列模型中提出,解决了长距离依赖问题,增强了模型理解和处理复杂数据的能力。基本的注意力计算涉及查询(Q)、键(K)和值(V),通过不同方式(如点积、拼接等)计算相关性并应用softmax归一化,得到注意力权重,最后加权组合值向量得到输出。自注意力是注意力机制的一种形式,其中Q、K和V通常是相同的。在自然语言处理(NLP)中,注意力机制广泛应用在Transformer和预训练模型如BERT中,显著提升了模型的表现。
|
5月前
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 注意力机制 | 添加混合局部通道注意力——MLCA【原理讲解】
YOLOv8专栏介绍了混合局部通道注意力(MLCA)模块,它结合通道、空间和局部信息,提升目标检测性能,同时保持低复杂度。文章提供MLCA原理、代码实现及如何将其集成到YOLOv8中,助力读者实战深度学习目标检测。[YOLOv8改进——更新各种有效涨点方法](https://blog.csdn.net/m0_67647321/category_12548649.html)
|
4月前
|
机器学习/深度学习 编解码 计算机视觉
【YOLOv10改进-注意力机制】Polarized Self-Attention: 极化自注意力,双重注意力机制
YOLOv10引入了极化自注意(PSA)块,结合通道和空间注意力,降低信息损失。PSA通过极化过滤保持高分辨率,并用增强处理非线性分布。在2D姿态估计和分割任务上提升1-2点精度,相比基线提升2-4点。代码示例展示了PSA模块如何集成到模型中。更多配置详情见相关链接。
|
5月前
|
机器学习/深度学习 自然语言处理 算法
YOLOv5改进 | 注意力机制 | 添加三重注意力机制 TripletAttention【完整代码】
本文介绍了三重注意力机制在YOLOv5目标检测中的应用,这是一种轻量级方法,通过三分支结构捕获跨维度交互来计算注意力权重,几乎不增加计算开销。文章详细阐述了三重注意力的原理,包括全局、组间和组内三个层次的注意力计算,并提供了将TripletAttention模块添加到YOLOv5网络的教程。作者提供了代码实现和yaml配置文件的修改指导,以及在训练脚本中设置配置文件路径的步骤。完整代码附在文章末尾,适合初学者实践。此外,文章还鼓励读者探索在不同位置添加三重注意力以进一步优化模型性能。