在 Vision Transformer (ViT) 中,CLS token(分类 token)是一个特殊的标记,主要用于在模型的分类任务中提取全局图像的特征表示。以下是 CLS token 的作用及其工作原理的详细解释:
-
CLS Token 的引入
• CLS Token 是一种借鉴自 NLP 领域(Transformer 模型中)的设计。在自然语言处理中,CLS token 通常用于表示整个输入序列的全局语义信息。
• 在 ViT 中,CLS token 的目的是为图像输入提供一个全局的代表符号。 -
CLS Token 的工作原理
输入阶段:
1. 图像切分为 Patch:
• 输入图像被分割成固定大小的 patches(如 ),每个 patch 被展平成一个向量。
• 这些 patches 被嵌入为固定长度的特征向量,称为 patch embeddings。
2. 添加 CLS Token:
• 在 patch embeddings 序列的最前面添加一个特殊的 CLS token。
• CLS token 通常是一个可以学习的向量(随机初始化),其维度与 patch embedding 相同。
3. 位置编码:
• 对每个 patch 和 CLS token 加入位置编码,帮助模型感知输入的位置信息。
Transformer 阶段:
1.自注意力机制:
• CLS token 会参与所有层的自注意力计算,与每个 patch embedding 交互。
• 在每一层中,CLS token 会不断汇聚来自所有 patch 的全局信息。
2. 最终输出:
• 在最后一层 Transformer 中,CLS token 的特征向量被提取出来,作为整个输入图像的全局表征。
• 这个表征被传递到分类头(如全连接层)进行分类任务。
- CLS Token 的作用
(1) 全局特征聚合
• CLS token 通过自注意力机制,从所有图像 patches 中收集全局上下文信息。
• 它的最终表示可以被视为整个图像的全局特征。
(2) 任务输出
• 对于分类任务,CLS token 的特征被直接用作分类头的输入。
• 它替代了 CNN 中常用的全局池化操作(如 GAP,全局平均池化)