OUC AI Lab 第六章:基于卷积的注意力机制

OUC AI Lab 第六章:基于卷积的注意力机制

详解深度学习的中的即插即用模块
1.SENet

SENet在第四章已经学习过了

2.Non-local Neural Networks模块

网络中的注意力模块如图所示,事实上这个模块非常像transformer里的注意力机制,其中的θ,Φ和g就相当于是transformer中的q、k、v,有关transformer的内容在下一章再介绍。在这里,x就是经过各种网络的特征,形状为T,H,W,1024,将这个x分三份分别经过θ,Φ和g这三个1x1的卷积层就得到了我们想要的三个特征,在transformer中,经过θ得到的每一行向量可以理解为"我在找什么",例如输入的是"我去上学",经过θ后"我"会对应着1024维的向量,其中每一维可以理解为"我在找什么",例如第一维是"我周围有名词吗?",第二维是"我周围有动词吗?"

经过Φ得到的每一行向量可以理解为每个字携带的信息,而经过reshape的这两个矩阵相称就可以得到一个相似性矩阵,softmax后再乘g,就相当于进行了加权聚合,这时每个位置的特征都融入了所有其他相关位置的信息,实现了长距离依赖的建模。

我认为transformer最厉害的创新点就在于使每个词都能看到整个句子中的所有词,经过两个相乘将位置信息,上下文信息和内容信息都看到了。

3. CBAM

上图中右侧是普通的卷积神经网络,每个卷积核中有in channel个分别对输入的channel进行卷积,然后想加得到一个channel

而CBAM主要是考虑到在普通卷积网络中各个channel间的信息没有很好的交流,所以设计了两个模块,channel Attention Module就类似于SENet,不过SENet只用了平均池化,而这里分别在channel纬度上进行平均池化和最大池化,也就是将batch,channel,h,w变为batch,channel,1,1,然后经过变化相加softamat,最后乘到input feature上就完成了

Spatial Attention Module 是在空间纬度上进行平均池化和最大池化,将原本batch,channel,h,w变为batch,1,h,w,拼接后使用in_channel=2,out_channel=1的卷积层,再乘到input feature上就完成了。

4. DANet

Dual Attention Network也非常简单,你要问思想是什么,那就是对CBAM的改进,CBAM是并行,先计算通道纬度的注意力,再计算空间纬度的注意力,那么这个网络就是并行的计算注意力。

如何计算的也非常简单,上图中的A就是将形状为batch,channel,h,w的输入分为三份B,C和D,全部reshape为batch,channel,h*w。

B再调整为batch,h*w,channel,乘C,得到batch,h*w,h*w,D再乘这个结果,得到batch,channel,h*w,再次reshape恢复到原来的纬度

B这个模块就是把一开始相乘的顺序改成了batch,channel,h*w乘batch,channel,h*w。

相关推荐
冬奇Lab4 分钟前
开源项目第229期:e2e — 用自然语言写 E2E 测试,还能把 Agent 跑过的操作录成‘回放缓存‘免模型调用
人工智能·测试
东风破_5 分钟前
从 Neo4j 到 GraphRAG:用 Text-to-Cypher 构建图检索 RAG
人工智能·后端
冬奇Lab6 分钟前
LLM 自动化测试系列(05):移动端自动化(一)——ARTEMIS 的双模式架构拆解
人工智能·测试
DisonTangor7 分钟前
llama.cpp 新特性:决策模型
人工智能·开源·aigc
鲲穹AI种草8 分钟前
AI 生成 PPT 工具怎么选?鲲穹 PPT 功能实测与横向对比
人工智能·powerpoint
AI技术新视界25 分钟前
Strata 的工作原理
人工智能·推理引擎·本地ai
2501_926978331 小时前
给自指系统接一个外部锚 —— 一个关于「用 AI 观察自己」的方法
人工智能·经验分享·笔记·机器学习·ai写作
不悔哥1 小时前
小智AI聊天机器人:ESP32上的开源语音助手拆解
人工智能·机器人·开源
枯木◊靠推文躺平版1 小时前
2026 企业级 AI 办公平台选型指南:如何评估可落地的办公 AI 能力
大数据·人工智能
空奈qwq1 小时前
ANN 全连接神经网络进阶:从反向传播到完整实战
人工智能·深度学习·神经网络