首页 > 编程知识 正文

selfattention机制做分类问题,selfattention公式

时间:2023-05-03 12:03:55 阅读:199672 作者:4477

传统的CNN得弱点在于一般都是读取局部信息,而没有考虑整个全局的信息。此时如果使用很大的kernel size一次覆盖掉所有的输入。但是弱点有:

在机器翻译中的输入长度不定。这种情况下的kernel参数量非常多,容易overfitting。

self-attention就是一种可以考虑全局信息的机制。相关论文为: attention is all you need

self-attention可以和CNN和FC结合使用。

self-attention计算方法如下:

计算 a 1 a^1 a1与其他输入的相似度:

连个vector相似度的计算方法有点积和相加两种:

对于dot-product, 将连个向量分别乘以两个矩阵 W q W^q Wq和 W k W^k Wk,然后讲得到的向量相乘得到:
α = q ⋅ k alpha = qcdot k α=q⋅k

然后分别计算 a 1 a_1 a1​和 a 1 , a 2 , a 3 , a 4 a_1, a_2, a_3, a_4 a1​,a2​,a3​,a4​的关联性:

注意这里的query和key的名字,表示 q q q是要搜寻的向量, k k k是要比较的向量。

接下来就可以得到 a 1 a^1 a1与其他向量的相似度:

接下来利用相似度来提取sequence的信息,即将输入 a a a乘以一个矩阵 W v W^v Wv得到一个新的value,然后再与相似度进行加权求和:

接下来同样的方法得到 b 2 b^2 b2:

有些情况下,相关性有多种不同的定义,因此就需要multi-head attention。即使用多个 k , q , v k, q, v k,q,v:

注意这里 q i , 1 q^{i, 1} qi,1之和 k i , 1 k^{i, 1} ki,1和 v i , 1 v^{i, 1} vi,1做相似度计算,不和 k i , 2 k^{i, 2} ki,2, v i , 2 v^{i, 2} vi,2做相似度计算。

得到多个相似度之后拼接起来然后乘以一个矩阵得到最终的输出:

以上即为multi-head attention的计算过程。

但是问题在于: 这样的机制么有考虑输入sequence的位置信息。即将位置打乱后没有任何差别。

因此需要将位置的信息加入进去, 在self-attention中使用positional encoding方法:

将位置信息 e i e^i ei直接加到原始输入 a i a^i ai上。

不同的positioning encoding的生成方法有:

如果sequence过长,可以使用truncated self-attention,即计算相似度时限制范围:

self-attention与CNN的区别:

CNN只计算了receptive field范围内的相似度, self-attention考虑了整个图像的相似度。self-attention是复杂版本的CNN. 即self-attention是自动定义receptive field. CNN是self-attention的特例。但是self-attention需要更多的数据集,而CNN需要的数据量相对较少。

相关文章: On the Relationship between Self-Attention and Convolutional Layers
, 讨论了CNN和self-attention的关系。

An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
讨论了不同的数据量下self-attention和CNN的性能。

RNN与self-attention的区别:

RNN会存在长期记忆遗忘的问题,self-attention没有。RNN是串行输出, 而self-attention则可以并行处理,可以一次性一起输出。因此self-attention计算效率更高。

相关文章: Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention

self-attention与graph的应用:

self-attention的效果和效率的关系:

self-attention和attention的区别:

Attention机制发生在Target的元素Query和Source中的所有元素之间。

Self Attention不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的注意力计算机制。

其具体计算过程是一样的,只是计算对象发生了变化而已。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。