注意力机制
注意力机制分类
注意力机制的计算分为两部分,首先计算注意力分布,然后对输入进行加权
注意力分布
加权平均
多头注意力
VIT
长下面这个样子
图像分割
将一张图像进行分割,traansformer接受词嵌入的一维序列,而图像是二维的,这是图像的形状:
被分割后补丁的形状如下:
H,W是图像的宽和高,而C是图像的通道数,每个补丁的分辨率为P×P,N = HW/P^2,Transformer在其所有层中使用恒定的潜在向量大小D,因此我们将补丁展平,并通过一个可训练的线性投影将其映射到D维度。
“[CLS]” token
BERT(Bidirectional Encoder Representations from Transformers)中的"[class]" token,也常被称为"[CLS]" token,是一个特殊的标记,用于在模型处理序列数据时指示句子的开始。它的主要作用如下:
-
句子分类的标识:在BERT模型中,“[CLS]” token被放置在每一个输入序列的开始位置。对于句子分类任务,模型会使用这个token的最终隐藏状态来代表整个句子的语义,因为它是第一个被处理的token,能够编码整个句子的信息。
-
聚合信息:由于BERT是双向的,“[CLS]” token能够从两个方向(左和右)捕获句子的上下文信息。这使得它的隐藏状态成为一个包含整个句子信息的丰富表示,非常适合用于分类任务。
-
多任务学习的通用性:在BERT的设计中,“[CLS]” token的使用使得模型可以很容易地适应多种任务,不仅仅是句子分类。例如,在自然语言推理(NLI)任务中,可以使用"[CLS]" token的输出来判断两个句子之间的关系。
在实际应用中,当你将文本数据送入BERT模型时,你会在每个句子的开头添加"[CLS]" token,然后模型会输出一个包含所有token表示的矩阵。对于分类任务,你会取出与"[CLS]" token对应的输出向量,并将其传递给一个分类器(如softmax层)来得到最终的分类结果。
计算过程
公式(1)中的带class下标的x,就是上面的”cls"token,E是将补丁映射的矩阵,带pos下标的E是位置信息的嵌入,LN是Layernorm,MSA是多头注意力机制
这是论文带的图,有点像CNN那个热力图
图7(左)展示了学习到的嵌入滤波器的首要主成分。这些成分类似于每个补丁内精细结构的低维表示的合理基函数。在投影之后,一个学习到的位置嵌入被加到补丁表示上。图7(中心)显示,模型学会在位置嵌入的相似性中编码图像内的距离,即更近的补丁倾向于具有更相似的位置嵌入。此外,行-列结构也显现出来;同一行/列中的补丁具有相似的位置嵌入。自注意力机制允许ViT即使在最低层也能整合整个图像的信息。根据注意力权重计算了图像空间中信息整合的平均距离(图7,右侧)。这种“注意力距离”类似于CNN中的感受野大小。在最低层中,一些注意力头已经关注到了图像的大部分区域,这表明模型确实使用了全局信息整合的能力。而其他注意力头在低层中的注意力距离始终较小。此外,注意力距离随着网络深度的增加而增加。
ViT能够通过自注意力机制有效地识别并关注对分类任务最重要的图像部分,而不仅仅是局部特征。这种全局信息的整合是Transformer模型相比于传统CNN的一个显著优势。