为什么vit提取token作为分类?
- 在Vision Transformer(ViT)模型中,使用CLS token进行分类任务是受自然语言处理(NLP)领域的启发。在NLP中,CLS token用于句子级别的任务,如句子分类或句子对分类。在ViT中,CLS token被添加到图像patch序列的开头。Transformer编码器层通过自注意力机制处理输入序列中的每个token,包括CLS token。CLS token通过自注意力机制聚合了整个图像的信息,成为图像的全局表示。使用CLS token作为分类的输入,可以简化分类头的设计。只需要对CLS token的嵌入向量进行分类,而不需要对所有patch的嵌入向量进行复杂的聚合操作。
qkv代表什么
在Transformer模型中,查询(Query)、键(Key)和值(Value)是多头自注意力机制的核心组成部分。查询向量用于检索相关信息,键向量用于匹配查询向量,值向量则提供实际的内容信息。通过自注意力机制,模型能够捕捉输入序列中各个token之间的关系,从而生成更丰富的表示。多头自注意力机制通过并行计算多个独立的注意力头,进一步增强了模型的表达能力。
qkv如何初始化
- 在PyTorch中,线性层的权重和偏置参数默认使用均匀分布或正态分布进行初始化。
询(Query)、键(Key)和值(Value)向量的初始化通常通过线性层来实现。这些线性层的权重和偏置参数会在模型初始化时进行初始化,常见的初始化方法包括Xavier初始化和Kaiming初始化。这些初始化方法可以确保权重参数在训练开始时具有适当的尺度,从而有助于稳定训练过程。