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*wbatch,channel,h*w

相关推荐
冬奇Lab3 小时前
Workflow 系列(01):基础理论——三种执行模型与 Anthropic 5 种模式
人工智能·agent·工作流引擎
冬奇Lab3 小时前
每日一个开源项目(第143篇):page-agent - 纯 JS 的网页 GUI Agent,无需截图、无需插件、无需后端
前端·人工智能·agent
程序员cxuan5 小时前
虽迟但到!GPT-5.6 终于来了!
人工智能·后端·程序员
ZhengEnCi7 小时前
Q03-UI设计进阶技巧-让界面更高级的7个核心原则
人工智能
IT_陈寒7 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
不加辣椒9 小时前
第12章 工具调用与 Agent 提示工程
人工智能
用户1693176172669 小时前
前端给AI消息做日期分组与时间线
人工智能
i晟9 小时前
Claude Code Harness 深度拆解:从你敲回车到模型回复,中间发生了什么
人工智能
用户2527362781410 小时前
【踩坑复盘】我在本地跑 RAG 知识库时踩了 5 个大坑,吐血整理避坑指南
人工智能
大模型真好玩10 小时前
LangChain DeepAgents 速通指南(九)—— 生产级智能体框架 DeepAgents Code 源码导读
人工智能·langchain·agent