1. 注意力机制
注意力本质上是模仿人的行为。这种行为可以描述为人在观察一些事物时,会对感兴趣的区域会产生更多的聚焦,而会选择性的忽视(或者减少关注)另一些区域。
举个简单的例子,一些对跑车感兴趣的人,在路上看到看到某种日常难以见到的跑车时,注意力往往会聚焦到跑车上,而忽略其他车辆。
在这个例子中,跑车就像是神经网络中的“关键信息”,而其他车辆则类似于“背景信息”。注意力机制允许神经网络模型模仿这种人类专注于关键信息的能力,即在处理大量数据时自动“寻找”并集中处理最关键、最相关的信息片段,而非平等地处理所有信息。这种机制在提高模型处理效率和准确性方面非常有效。
从另一方面讲,关键信息会被增强,而其他背景信息会被削弱,由此来引起后续神经网络或其他识别系统的选择性关注。
2.
2. 注意力的产生
人对特定目标的注意力是怎么来的?
每个人感兴趣的事物不同,在所观察的场景中,聚焦的范围也不同。从另一方面讲,人类之所以产生注意力,更多的是因为感兴趣。而感兴趣,或者本身对某一事物的重要性判定产生是一个逐渐发展的过程,基于对事物的持续观察和理解。
同理,在深度学习中,一个神经网络模型的训练过程也是一个逐步发展的过程。就像人类通过不断的经验积累学会关注某些事物的关键方面一样,神经网络通过大量的数据训练逐渐学会识别和处理对当前任务最重要的信息。这个过程需要大量的数据和迭代,以便模型能够学习到如何有效地聚焦于关键特征,并在预测或决策时忽略不相关的信息。
3. 自注意力机制
相关性。
在图像领域,相关性是用来度量两幅图像的相似程度或一致性程度,两幅图像越相似,相关性越强。这种相关性会体现在像素级,结构性或更深层次的特征上。例如我们在学习图像处理时,经常会用的HOG,SIFT,SURF等提取特征向量,然后再通过欧氏距离,曼哈顿距离或余弦相似度、皮尔逊系数等方法度量相似度。
在注意力机制中,一般是通过QKV操作实现相似度判别。
这种机制的基本思想是增强相似元素之间的关系,而减弱不相似元素之间的关系。这一过程通过以下几个步骤实现:
查询(Query)、键(Key)和值(Value)的生成:对于序列中的每个元素,模型生成三个向量,即查询(Q)、键(K)和值(V)。这些向量通常通过不同的线性变换获得。
相似度计算:模型计算查询向量与每个键向量之间的相似度。这通常通过点积(或者其他相似度度量方式)来实现。点积的结果是一个标量,表示两个元素之间的相似程度。
注意力分数的归一化:通过softmax函数对这些相似度分数进行归一化。这一步骤确保了每个元素的注意力分数之和为1,并且更高的分数会被赋予相似度更高的元素。
权重应用与聚合:将归一化后的注意力分数应用于值(V)向量。如果一个元素的键与另一个元素的查询非常相似,那么这个元素的值向量将在最终输出中占据更大的比重。这意味着相似的元素在最终的表示中得到增强,而不相似的元素则被削弱。
输出生成:所有加权的值向量相加,生成最终的输出向量,这个向量是序列中每个元素考虑到其他所有元素后的综合表示。
这种机制使得模型能够捕捉和强调序列中重要的特征,同时忽略那些不相关或者不重要的信息,从而在处理复杂的语言结构时表现出色。
具体实现方式,推荐参考下面两个连接就可以了。在本文中不再重复造轮子了。
Vision Transformer(VIT)-CSDN博客
自注意力机制(Self-Attention)-CSDN博客