本文约2400字,建议阅读6分钟本文我们来辨析一下cnn和attention都在做什么。

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

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层的计算方式,值得一看。

编辑:王菁

校对:林亦霖

基于卷积双向长短期记忆网络结合注意力机制( CNN -BILSTM- Attention )时间序列预测(Matlab完整源码和数据) 基于卷积双向长短期记忆网络结合注意力机制( CNN -BILSTM- Attention )时间序列预测(Matlab完整源码和数据) 基于卷积双向长短期记忆网络结合SE注意力机制的时间序列预测 单输出单输出,时间序列预测。 运行环境Matlab2021及以上。 评价指标包括:MAE、MBE、RMSE等,代码质量极高,方便学习和替换数据。 cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-mast er cnn -bilstm- attention -time-s er ies-prediction_k er as-ma 3、相关技术 相比LSTM,使用GRU能够达到相当的效果,准确率不会差多少,并且相比之下GRU更容易进行训练,能够很大程度上提高训练效率,因此硬件资源有限时会更倾向于使用GRU。 GRU结构图如下: 4、完整代码和步骤 此代码的依赖环境如下: tensorflow==2.5.0 numpy==1.19.5 k er as==2.6.0 matplotlib==3.5.2 ———————————————— 版权声明:本文为CSDN博主「AI信仰者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_30803353/article/details/129108978 1. Convolutional lay er (卷积层--CONV) 作用:主要就是通过一个个的filt er ,不断地提取特征,从 局部 的特征到总体的特征,从而进行图像识别等等功能。 2. Pooling lay er (池化层--POOL) 作用:是为了提取一定区域的主要特征,并减少参数数量,防止模型过拟合。扩大感受野。减少冗余,做窗口滑动卷积的时候,卷积值就代表了整个窗口的特征。... 假设有一个5*5的图像,使用一个3*3的卷积核(filt er )进行卷积,得到一个3*3的矩阵(其实是Feature Map,后面会讲),如下所示: 下面的动图清楚地展示了如何进行卷积操作(其实就是简单的点乘运算): 一个图像矩阵经过一个卷积核的卷积操作后,得到了另一个矩阵,这个矩阵叫做特征映射(feature map)。每一个卷积核都... 文章目录一、空间不变性和 局部 性二、边界检测——一个小例子感受卷积 全链接神经网络是各层之间的神经元每个都链接在一些,这样一来就会出现一个问题,那就是当我们的输出层神经元很多的时候,链接就会很多,参数的维度就会很高。比如说,假设我们有一个足够充分的照片数据集,数据集中是拥有标注的照片,每张照片具有百万级像素,这意味着网络的每次输入都有一百万个维度。 即使将隐藏层维度降低到1000,这个全连接层也将有106×10310^6 \times 10^3106×103个参数。 想要训练这个模型将不可实现,因为需要有大 只有单个神经元是由有详细的数学原理的 人工神经网络只是建立在“人多力量大”的简单将多个神经元连接起来,以期达到更好的效果,没有严格的数学证明,只有大体道理的成立。 而 cnn 是建立在人工神经网络的思想上,又加入了 局部 感受野和参数共享的思想,其原理无数学严格推理,也是建立在一般大体正确的逻辑之上。 局部 感受野是说每次我们只是感受图片 局部 的信息,表现为卷积核没有图片大,其次 局部 感受野的目的在于减小参数个数,由于图片像素点实在过于多, 局部 感受野目的在于提取特征,一般来说目前理解一个卷积核对某一特定的特征感兴趣,特征 CNN 概念: 传统意义上的多层神经网络是只有输入层、隐藏层、输出层,其中隐藏层的层数按需决定。而卷积神经网络 CNN ,在传统的多层神经网络基础上,全连接层前面加入了部分连接的卷积层、激活层和池化层操作,使得实际应用场景中能够构建更加深层、功能更强大的网络。 我相信你肯定已经在自然语言领域中听说过 transform er 这种结构,因为它在 2020 年的 GPT3 上引起了巨大轰动。 Transform er 不仅仅可以用于NLP,在许多其他领域... 总结了2021年以来,所有将 CNN Transform er 框架结合的CV算法 在卷积神经网络( CNN )中,卷积运算擅长提取 局部 特征,但在捕获全局特征表示方面还是有一定的局限性。 在Vision Transform er 中,级联自注意力模块可以捕获长距离的特征依赖,但会忽略 局部 特征的细节。 cnn transform er CNN 具有非常良好 CNN 可以很好用于图像的处理,这主要基于两个假设: 图像中同样的特征片段可能出现在不同的位置。图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,我们能用同样的一组分类器来描述各种各样不同的图像 。 最底层特征都是 局部 性的, 局部 特征远小于图像本身。也就是说,我们用10x10这样大小的过滤器就能表示边缘等底层特征 对像素进行子采样不会改变图像 CNN 架构 最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,