点击上方,选择星标,每天给你送干货!


链接:https://www.zhihu.com/question/448924025/answer/1801015343

编辑:深度学习与计算机视觉

声明:仅做学术分享,侵删

CNN是不是一种局部self-attention?

作者:吼吼

https://www.zhihu.com/question/448924025/answer/1791134786

(本回答参考:李宏毅2021机器学习课程)

cnn可不是一种局部的attention,那么我们来辨析一下cnn和attention都在做什么。

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有了新的理解,所以对之前的答案进行更新,但是我前面之前的回答就不会在删了,后续有什么关于这方面进一步的补充和说明会再加进来,欢迎大家收藏。

关于RNN和self-attention的区别,可以看我的这篇回答,希望对你有所帮助。

https://zhuanlan.zhihu.com/p/360374591

首先,说结论,CNN可以看作简化版的Self-attention,又或者说Self-attention是CNN的泛化。

之前我们对CNN和self-attention作比较,其实下意识的想的是CNN用于图像处理,将self-attention用于NLP,所以会产生这两种方法怎么会有关联的错觉,那么下面都将从图像处理方面来讨论CNN和self-attention的区别和联系,更好的来对比CNN和self-attention。self-attention用于图像处理的流程:

首先,如果用self-attention对图像进行处理,对于每一个pixel(像素值)产生Query,其他的pixel产生Key,Query*Key,然后softmax(正如评论中说的,其实不一定非要softmax,也可以采用Relu等激活函数),最后乘以对应的Value并求和作为每一个pixel经过softmax的输出值。这里大家会发现对图像做self-attention的时候每一个pixel考虑了整张图片所有的pixel,要考虑整张图像中所有的信息。

那么,如果我们用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 中得到的结论)

对于self-attenion来说,这是一种非常flexible的model,所以需要更多的数据进行训练,如果数据不够,就可能over-fitting,但对于CNN来说因为限制比较多,在training data不多的时候可以train出一个比较好的Model。

如图所示,在training data比较小的时候,CNN比较好,在training data比较大的时候,self-attention的效果会更好一些。即Self-Attention的弹性比较大,所以需要比较多的training data,在训练资料比较小的时候就容易over-fitting,CNN的弹性比较小,在training data比较小的时候,训练结果比较好,在training data比较多的时候,CNN就没有办法从更大量的训练资料中得到好处了。

作者:匿名用户

https://www.zhihu.com/question/448924025/answer/1784363556

有相似性,但是也有差异。CNN可以认为是在每个位置与固定的静态的模板做内积,是局部的投影,而attention是在不同位置之间计算内积,某种意义上可以看作一个distance metric,其中的加权矩阵其实是定义了一种distance metric。从更普遍一点的意义上,CNN是更加local的,self-attention更多强调relation. 说CNN是一种特殊的退化的attention也许更合适一点。

作者:林建华

https://www.zhihu.com/question/448924025/answer/1793085963

我认为CNN的卷积层和self-attention不是一回事情.

self-attention的K和Q都由数据产生, 所以是反应数据内部的关系

CNN卷积层可以看成由参数组成的K和不同数据产生的Q, 反应的是数据和参数的关系.

也就是说self-attention通过参数构建了不同的空间, 使得数据在不同空间中呈现不同的自相关性质

而CNN卷积通过参数, 构建了某些固定的特征, 通过统计数据在这些特征上的表现来进行后面的处理

作者:阿良
https://www.zhihu.com/question/448924025/answer/1786277036

cnn的核心在于使用局部特征获取全局特征。可以说每次将注意力放在局部的卷积核。最后通过局部卷积核特征形成整体的特征表示。

自注意力机制是重点还有个自己的自,自己和自己进行计算,它的好处在于通过自注意力机制能够对每个词能够融入全局的信息,目的是借助全局信息帮助局部特征更好表示。

所以cnn是局部到整体,自注意力机制是整体辅助局部。如果硬要将cnn与注意力扯上关系,我个人理解可以看成是局部注意力(注意没有自字)

作者:aluea
https://www.zhihu.com/question/448924025/answer/179309914

调转一下顺序,self-attention是一种强归纳偏置的CNN。

这不难理解,我们来看一下self-attention具体做了什么。

假设,对于一层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必须这么干,所以这是一种更强的归纳偏置。

关于归纳偏置的重要性,这里就不赘述了。

作者:mof.ii

https://www.zhihu.com/question/448924025/answer/1797006034

CNN不是一种局部的self-attention,但是把局部self-attention实现成一个层,做全self-attention网络的方法是可以实现的,参考Google Brain在NeurIPS19的Stand-Alone Self-Attention in Vision Models。

文章第二节详细比较了卷积层和Self-Attention层的计算方式,值得一看。

说个正事哈

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方深度学习自然语言处理”,进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

【CNN】CNN是不是一种局部self-attention?相关推荐

  1. (论文加源码)基于DEAP的脑电情绪识别(CNN,RNN和两种不同的注意力机制)

    论文及源码见个人主页:https://download.csdn.net/download/qq_45874683/85063985 (论文加源码)基于DEAP的脑电情绪识别(CNN,RNN和两种不同 ...

  2. cst操作——做倒角、走线、螺旋、两种局部拉伸的方法、参数扫描

    做倒角 ① ②几条线一起做倒角(可pick 边缘chain快速做倒角) 走线 螺旋 两种局部拉伸的方法 ①利用modify locally ②利用Extrude face ③两者区别 参数扫描 实例:

  3. CNN是不是一种局部self-attention?

    可以这么认为. 如图1,今天在使用self-attention去处理一张图片的时候,1的那个pixel产生query,其他的各个pixel产生key.在做inner-product的时候,考虑的不是一 ...

  4. 基于tensorflow2.0利用CNN与线性回归两种方法实现手写数字识别

    CNN实现手写数字识别 导入模块和数据集 import os import tensorflow as tf from tensorflow import keras from tensorflow. ...

  5. [深度学习之CNN]CNN卷积神经网络LeNet-5

    转载于http://blog.sina.com.cn/s/blog_4a1853330102v0mt.html 点击打开链接     在转载基础上添加些内容 卷积神经网络是人工神经网络的一种,已成为当 ...

  6. [CNN]|CNN与Transformer区别

    论文题目: Do Vision Transformers See Like Convolutional Neural Networks? 论文链接: http://arxiv.org/abs/2108 ...

  7. SSE图像算法优化系列十九:一种局部Gamma校正对比度增强算法及其SSE优化。

    这是一篇2010年比较古老的文章了,是在QQ群里一位群友提到的,无聊下载看了下,其实也没有啥高深的理论,抽空实现了下,虽然不高大上,还是花了点时间和心思优化了代码,既然这样,就顺便分享下优化的思路和经 ...

  8. Alats2种局部刷新的比较

    第一种是    .UpdaterPanel 首先ScriptManager中要设置EnablePartialRendering="true" 来开启局部更新功能, 同时在Updat ...

  9. TransFER: Learning Relation-aware Facial Expression Representations with Transformers--2021.Fanglei

    0.摘要 1.引入 2.相关工作 3.TransFER 3.1 Local CNNs 3.2 Multi-Attention Dropping 3.3 Multi-head Self-Attentio ...

  10. [论文阅读] Unifying Global-Local Representations in Salient Object Detection with Transformer

    论文地址:https://arxiv.org/abs/2108.02759 代码:https://github.com/OliverRensu/GLSTR 发表于:Arxiv 2021.08 Abst ...

最新文章

  1. IOS手机全屏长按识别二维码HTML代码
  2. 计算器html js php代码,JavaScript计算器网页版实现代码分享
  3. css实现文字超出显示省略号...
  4. Sqlserver:sp_recompile的副作用
  5. 【转】 ubuntu12.04更新源 官网和163等
  6. linux下添加服务,Linux下添加服务
  7. 【PTVS+Theano+CPU/GPU】在windows下使用VS安装theano深度学习工具
  8. NET问答: 如何在 ASP.NET Core 的 .json 文件中读取 AppSettings ?
  9. 《Python编程:从入门到实践》速查表
  10. 【leetcode 简单】 第八十四题 两个数组的交集
  11. 如何git-cherry-pick仅更改某些文件?
  12. Okhttp之同步和异步请求简单分析
  13. javascript--this机制
  14. python调用高德接口获取国内行政区经纬度数据
  15. 中国土地市场网数据采集爬取landChain抓取Python爬虫
  16. Scrapy学习笔记(3)爬取知乎首页问题及答案
  17. WPF DataGrid 值转换 conver使用
  18. linux系统字符设备文件类型,Linux文件类型以及颜色标识
  19. ev1527信号频率问题
  20. 解决页面报错 500-内部服务器错误

热门文章

  1. 《设计模式之禅》--设计模式大PK
  2. TensorFlow基础1——神经网络tutorial
  3. 如何去掉显卡的桌面右键菜单:
  4. getContentResolver()内容解析者查询联系人、插入联系人
  5. laravel--模型中各种属性详解
  6. vs2008软件测试实战 1
  7. Win32Asm学习笔记[不断更新]
  8. NET常出现的三十三种代码(1)
  9. 20190905 Lombok常用注解
  10. Java学习之反射机制及应用场景