什么是注意力机制?
1.注意力机制的概念:
我们在听到一句话的时候,会不自觉的捕获关键信息,这种能力叫做注意力。
比如:“我吃了100个包子”
有的人会注意“我”,有的人会注意“100个”。
那么对于机器来说,我们输入一项媒体信息,希望机器去注意某些关键信息,比如图片上的目标等,
能够实现这一功能的方法就是注意力机制,具体怎么实现请继续看。
2.注意力机制的核心问题
注意力机制的核心重点就是让网络关注到它更需要关注的地方
当我们进行深度学习训练时,我们想要让它注意到我们希望它关注的信息,而不是什么都去获取什么都注意,我们会希望让网络去自适应注意,让深度学习的卷积网络去自适应注意物体是注意力机制的的核心问题之一。
3.注意力机制的形式
通常来讲,基本的注意力机制分为通道注意力机制,空间注意力机制,混合注意力机制。
注意力机制的图示解析
对于一个图像媒体信息,我们可以将其分为多个特征层(通道),一个特征层(通道)都包含这个图像的部分信息。
1.通道注意力机制
顾名思义,我们是对于整个图像的某几个特征层(通道)特别注意,并没有特别地挑选出图像的某些区域,把这几个通道拿出来进行池化等操作,能够利于网络获取特征信息。
2.空间注意力机制
同样的顾名思义,我们对于图像中的某些区域特别注意,并且把这种区域的所有特征层都拿出来处理。
注意力机制的实现
如下图所示,注意力机制的本质是通过“查询”来生成一组能够重新作用于原图的权值,具体实现步骤有:
1.采用某种方法获取查询矩阵Q,然后获得查询图像返回的键值矩阵K,根据点积相乘获得一个“相似度“矩阵。
2.相似度矩阵中的各个数值经过运算,得出Q与K对应的的一组值,代表了Q和K的各项相关性得分,随后将得分进行缩放之后,采用softmax()归一化。
3.归一化之后得到“概率”向量a,用a和原本的权值矩阵v相乘得到可以作用于原图像的新的权值矩阵,完成注意力操作。
一些需要注意的点:(引自博客:【Transformer 相关理论深入理解】注意力机制、自注意力机制、多头注意力机制、位置编码)
为什么softmax前要缩放?为什么是除以维度的根号?
1.缩放是因为softmax归一化是有问题的,当缩放前的某个元素非常大的时候,softmax会把大部分的概率分给这个大的元素,这就会产生一个类似one-hot的向量,softmax反向传播会导致梯度消失。所以在softmax前缩放,缓解这种问题。
2.除以维度的根号因为我们希望输入softmax的数据是均值为0,方差为1。
为什么不能用Key和Key自乘得到相似度,而要新建一个Q?
如果Key自乘得到相似度,这个时候得到的其实是一个对称矩阵,相当于把Key投影到同一个空间中,泛化能力弱。
自注意力机制
自注意力机制和注意力机制的唯一区别就是QKV的来源。
在注意力机制中,Q,K,V不要求同源,只需K和V有一定关联即可。而自注意力机制要求Q,K,V同源,也就是说自注意力机制要获取自身内部的元素关联。
实现过程
1.通过共享参数Wq,Wk和Wz
之后的步骤便和注意力机制一样
如图所示,Thinking Machines这句话。
一开始,X1和X2是两个单词的特征矩阵,获取各自的Q,K,V之后,对于thinking来说,他会令q1和(k1,k2)卷积,然后得到一个得分,最后得出一个权值v,然后对于值z,它包含了thinking和thinking的联系还有thinking和machines的联系。
z向量(矩阵)本质上还是x,只不过是经过了重新得分后的v的作用,新的向量(矩阵)z包含了thinking和其他每一个词之间的关系。
而我们也可以用更长一点的话来使用自注意力机制,可见经过自注意力机制后,its这个单词包含了和law还有application这两个单词的相似度。这样我们再查询its这个单词的特征向量时也可以获得他和其他单词的相似度。
如果不做自注意力机制,its词向量就是单纯的its词向量,没有任何附加信息。而做了自注意力信息,its就有了law和application这层意思,可以包含law的信息,挖掘潜在意思,翻译起来就更加准确。
明日:常见注意力机制模型介绍,软硬注意力机制有什么差别,YOLO模型介绍。