点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自:深度学习爱好者 链接:https://www.zhihu.com/question/448924025/answer/1801015343 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删
1:cnn可以理解为权值共享的局部有序的fc层,所以cnn有两个和fc层根本区别的特征,权值共享和局部连接。也就是在保证不丢失一些根本feature的情况下大大减少了参数量。
2:attention的步骤是通过Q和K点乘得到attention maritx并表示二者的相似性,即Q和K相似性越大的部分点乘越大,之后scale并softmax之后得到attention score,之后乘以V,得到attention之后的结果。
attention的本质是求Q和K的相似性,强调Q中和K相似的部分而已。
其本质区别还可以理解为cnn是提取特征,attention是强调特征即可,二者可不相似。那要是这么说所有model都是围绕feature做一些东西,那就说这些都是一样的话显然不合理。
更新,因为对CNN有了新的理解,所以对之前的答案进行更新,但是我前面之前的回答就不会在删了,后续有什么关于这方面进一步的补充和说明会再加进来,欢迎大家收藏。
首先,说结论,CNN可以看作简化版的Self-attention,又或者说Self-attention是CNN的泛化。
之前我们对CNN和self-attention作比较,其实下意识的想的是CNN用于图像处理,将self-attention用于NLP,所以会产生这两种方法怎么会有关联的错觉,那么下面都将从图像处理方面来讨论CNN和self-attention的区别和联系,更好的来对比CNN和self-attention。self-attention用于图像处理的流程:
那么,如果我们用CNN对图像进行处理,我们会选取不同的卷积核,用卷积核对图像进行处理,每一个pixel(像素值)其实只需要考虑这个卷积核中其他的pixel就可以了,只需要考虑这个receptive field就可以了,而不需要考虑整张图像中的所有信息。
进而,我们可以得到一个一般性的结论,CNN可以看作一种简化版的self-attention,即CNN只需要考虑卷积核(receptive field)中的信息即可,但是对于self-attention需要考虑全局的信息。
反过来,我们可以同样理解为,self-attention是复杂化的CNN,CNN需要划定receptive field,只考虑Receptive field里面的资讯,而Receptive field的范围和大小是需要自己设定的大小。而对Self-Attention而言,用attention找到相关的pixel,就好像Receptive是自动学出来的,即以这个pixel为中心,其他哪些pixel是需要我这个pixel考虑的,是与我这个pixel相关的。
简单一句话,CNN每一个pixel只学卷积核中的信息,Self-Attention每一个pixel学整张图像中的信息。(这里只考虑一层卷积,如果多层卷积的话,CNN其实达到了和self-attention类似的效果)
那么,知道self-attention和CNN联系,我们可以得到什么结论呢?
我们知道了CNN就是Self-Attention的特例,或者说Self-Attention就是CNN的泛化,非常的flexible的CNN,对Self-Attention做某些限制, Self-Attention和CNN是一样的。(论文:https://arxiv.org/abs/1911.03584 中得到的结论)
CNN卷积层可以看成由参数组成的K和不同数据产生的Q, 反应的是数据和参数的关系.
也就是说self-attention通过参数构建了不同的空间, 使得数据在不同空间中呈现不同的自相关性质
而CNN卷积通过参数, 构建了某些固定的特征, 通过统计数据在这些特征上的表现来进行后面的处理
https://www.zhihu.com/question/448924025/answer/1786277036
自注意力机制是重点还有个自己的自,自己和自己进行计算,它的好处在于通过自注意力机制能够对每个词能够融入全局的信息,目的是借助全局信息帮助局部特征更好表示。
所以cnn是局部到整体,自注意力机制是整体辅助局部。如果硬要将cnn与注意力扯上关系,我个人理解可以看成是局部注意力(注意没有自字)
作者:aluea
https://www.zhihu.com/question/448924025/answer/179309914
假设,对于一层self-attention,存在a、b、c、d四种侯选特征可同时输入,而仅有ac、bd两种combine的嵌入表示对下游任务有贡献。那么self-attention就会注意这两种combine而遮掩其他特征;比如,[a,b,c]->[a',0,c']。Ps. a'表示a的输出表征。
对于一层CNN,就比较直白,有一说一,[a,b,c]->[a',b',c']。那么CNN可不可以完成像self-attention的功能,完全可以,再加一层CNN弄两个过滤器一个滤ac;一个滤bd就完事了。
当然我CNN完全可以不这么干,也能拟合分布;而self-attention必须这么干,所以这是一种更强的归纳偏置。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
下载1:OpenCV-Contrib扩展模块中文版教程 在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。 下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。 下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。 交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~