注意力机制 Attention

CSDN:https://blog.csdn.net/Roaddd/article/details/114646354
论文:https://arxiv.org/pdf/1807.06521.pdf

【CBAM(Convolutional Block Attention Module)】

在这里插入图片描述

可以看到 CBAM 包含2个独立的子模块, 通道注意力模块(Channel Attention Module,CAM) 和空间注意力模块(Spartial Attention Module,SAM) ,分别进行通道与空间上的 Attention 。
这样不只能够节约参数和计算力,并且保证了其能够做为即插即用的模块集成到现有的网络架构中去。
通道上的 Attention 机制在 2017 年的 SENet 就被提出,SENet可以参考我的这篇文章 https://blog.csdn.net/Roaddd/article/details/111357490。
事实上,CAM 与 SENet 相比,只是多了一个并行的 Max Pooling 层。至于为何如此更改,论文也给出了解释和实验数据支持。

1、Channel Attention Module(CAM)
在这里插入图片描述

将输入的特征图F(H×W×C)分别经过基于width和height的global max pooling(全局最大池化)和global average pooling(全局平均池化),得到两个1×1×C的特征图。
接着,再将它们分别送入一个两层的神经网络(MLP),第一层神经元个数为 C/r(r为减少率),激活函数为 Relu,第二层神经元个数为 C,这个两层的神经网络是共享的。
而后,将MLP输出的特征进行基于element-wise的加和操作,再经过sigmoid激活操作,生成最终的channel attention feature,即M_c。
最后,将M_c和输入特征图F做element-wise乘法操作,生成Spatial attention模块需要的输入特征。

2、Spatial Attention Module(SAM)
在这里插入图片描述

将Channel attention模块输出的特征图F‘作为本模块的输入特征图。
首先做一个基于channel的global max pooling 和global average pooling,得到两个H×W×1 的特征图,然后将这2个特征图基于channel 做concat操作(通道拼接)。
然后经过一个7×7卷积(7×7比3×3效果要好)操作,降维为1个channel,即H×W×1。
再经过sigmoid生成spatial attention feature,即M_s。
最后将该feature和该模块的输入feature做乘法,得到最终生成的特征。

3、CBAM和ResBlock组合
在这里插入图片描述

【Dual Attention Network for Scene Segmentation】

知乎:https://zhuanlan.zhihu.com/p/48056789
CSDN:https://blog.csdn.net/mieleizhi0522/article/details/83111183
代码(torch):https://github.com/junfu1115/DANet
论文:https://arxiv.org/pdf/1809.02983.pdf
在这里插入图片描述在这里插入图片描述

【Rotate to Attend: Convolutional Triplet Attention Module】

CSDN:https://blog.csdn.net/weixin_39858245/article/details/111392537
论文:https://arxiv.org/pdf/2010.03045.pdf
代码:https://github.com/landskape-ai/triplet-attention

【SE:Squeeze-and-Excitation】

知乎:https://zhuanlan.zhihu.com/p/32702350
在这里插入图片描述

### 自注意力机制的概念 自注意力机制(Self-attention mechanism)允许模型在同一序列的不同位置之间建立联系,从而捕捉到更丰富的上下文信息。通过这种方式,每个位置都可以关注整个序列中的其他部分,而不仅仅是相邻的位置[^4]。 在深度学习中,自注意力机制通常用于处理变长的输入序列。与传统的循环神经网络不同的是,自注意力机制能够一次性考虑所有时间步的信息,而不是逐个时间步地顺序处理数据。这种特性使得自注意力机制特别适合于自然语言处理任务和其他涉及长期依赖的任务[^1]。 ### 工作原理 在一个典型的实现中,对于给定的一组词元,这些词元会同时作为查询(Query)、键(Key)以及值(Value)。具体而言: - **查询 (Q)**:表示当前要计算注意力得分的目标项; - **键 (K)**:用来与其他查询匹配的对象; - **值 (V)**:当某个特定查询成功找到对应的键时所返回的内容; 为了计算注意力分数,首先会对每一对查询和键执行点乘操作,并除以根号下的维度大小来缩放结果。接着使用softmax函数将得到的结果转换成概率分布形式,最后再加权求和获得最终输出向量。 ```python import torch import math def scaled_dot_product_attention(query, key, value): d_k = query.size(-1) scores = torch.matmul(query, key.transpose(-2, -1)) / math.sqrt(d_k) # 计算注意力得分 p_attn = torch.softmax(scores, dim=-1) # 应用Softmax获取权重 output = torch.matmul(p_attn, value) # 加权求和得到输出 return output, p_attn ``` ### 应用场景 #### 多模态语音情感识别 研究显示,在多模态语音情感识别方面引入自注意力机制可以显著提高分类准确性。通过对音频特征、文本转录等多个通道的数据施加自注意力层,系统能更好地理解说话者的语气变化及其背后的情感状态[^2]。 #### 深度语义角色标注 利用自注意力机制还可以改进深层结构化的预测任务,比如深度语义角色标注(SRL),这有助于解析句子内部复杂的语法关系并提取出事件参与者之间的关联模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值