当前位置: 首页 > article >正文

从BERT到ViT:聊聊那个“借”来的CLS Token,以及我们真的需要它吗?

从BERT到ViT聊聊那个“借”来的CLS Token以及我们真的需要它吗在计算机视觉领域Vision TransformerViT的出现彻底改变了传统CNN主导的格局。而其中最具争议的设计之一莫过于那个从NLP领域借来的CLS Token。这个看似简单的设计选择背后却隐藏着深刻的模型架构哲学。当我们把BERT中的[CLS] Token照搬到ViT时是否真的考虑过它在视觉任务中的最优性本文将带您深入探讨CLS Token的替代方案以及在不同场景下如何做出更明智的设计选择。1. CLS Token的前世今生1.1 NLP中的起源BERT的[CLS] Token在自然语言处理领域BERT模型引入的[CLS] Token最初是为了解决序列分类任务而设计的。这个特殊的Token会被添加到每个输入序列的开头其最终隐藏状态被用作整个序列的聚合表示。BERT的设计者们发现通过自注意力机制[CLS] Token能够有效地聚合整个序列的信息。关键特性位置固定始终在序列开头内容无关不与具体词汇关联通过训练学习全局表示1.2 CV中的迁移ViT的Class Token当Transformer架构被引入计算机视觉领域时ViT的作者们面临一个关键问题如何将二维图像特征转换为一维序列后仍然能够有效地进行全局信息聚合他们直接从BERT中借鉴了[CLS] Token的设计创造了ViT中的Class Token。# ViT中CLS Token的典型实现 class VisionTransformer(nn.Module): def __init__(self, ...): self.cls_token nn.Parameter(torch.zeros(1, 1, embed_dim)) self.pos_embed nn.Parameter(torch.zeros(1, num_patches 1, embed_dim)) def forward(self, x): B x.shape[0] cls_tokens self.cls_token.expand(B, -1, -1) x torch.cat((cls_tokens, x), dim1) x x self.pos_embed return x这种设计看似简单直接但实际上引发了一系列值得深思的问题图像与文本在数据结构上有本质差异视觉任务与语言任务的目标函数不同二维空间关系与一维序列关系的表示差异2. CLS Token的替代方案探究2.1 全局平均池化GAP方案全局平均池化是CNN时代广泛使用的特征聚合方法它简单地对所有空间位置的特征进行平均。在ViT框架下我们可以对所有patch tokens的输出进行平均作为最终的图像表示。对比实验数据方法ImageNet Top-1 Acc参数量训练稳定性CLS Token79.1%86M高GAP78.7%86M高Learnable Agg79.3%86M中注意实际效果可能因具体实现和训练细节而有所不同2.2 可学习的聚合Token除了固定的CLS Token另一种思路是引入可学习的聚合机制。例如可以设计一个轻量级的注意力层动态地学习如何聚合所有patch tokens的信息。class LearnableAggregator(nn.Module): def __init__(self, dim): super().__init__() self.query nn.Parameter(torch.randn(1, dim)) self.attn nn.MultiheadAttention(dim, num_heads1) def forward(self, x): # x: [B, N, D] query self.query.unsqueeze(0).expand(x.size(0), -1, -1) attn_out, _ self.attn(query, x, x) return attn_out.squeeze(1)这种方法的优势在于可以适应不同输入内容动态调整聚合权重避免了固定位置编码可能带来的偏差理论上具有更强的表达能力2.3 多Token聚合策略对于更复杂的视觉任务单一的聚合Token可能不足以捕获全部必要信息。一些最新研究开始探索使用多个特殊Token来捕获不同方面的视觉特征。实现示例使用3个独立的Token分别关注颜色、纹理和形状特征通过交叉注意力机制让这些Token交互最终拼接所有Token的特征进行分类3. 何时需要CLS Token——场景分析3.1 小规模数据集场景在小规模数据集上CLS Token的设计往往表现出更好的稳定性和收敛性。这是因为固定的聚合位置减少了模型需要学习的变量明确的分类目标有助于防止过拟合简化了优化过程3.2 大规模预训练场景当使用海量数据进行预训练时更灵活的聚合方式可能展现出优势可学习的聚合机制能够适应更复杂的特征关系模型有足够的数据来学习有效的聚合策略避免了固定位置可能带来的归纳偏差3.3 特定任务考量不同计算机视觉任务对特征聚合的需求各异任务类型推荐聚合方式理由图像分类CLS Token简单有效稳定可靠目标检测多Token聚合需要保留空间信息图像分割无特殊Token需要所有patch的独立输出跨模态检索可学习聚合需要更丰富的特征表示4. 深入技术细节CLS Token的运作机制4.1 位置编码的影响CLS Token的位置编码设计对模型性能有微妙影响。ViT通常将CLS Token放在序列开头位置0这带来几个好处无论输入图像被分成多少个patchCLS Token的位置编码始终一致避免了位置编码干扰分类决策简化了可变长度输入的处理4.2 注意力模式分析通过可视化CLS Token与其他patch tokens之间的注意力权重我们可以发现一些有趣的现象在浅层注意力往往比较分散随着网络加深注意力逐渐聚焦于语义关键区域最终分类决策通常依赖于少数几个高注意力patch4.3 梯度传播特性CLS Token的一个独特优势是其梯度传播特性# 反向传播路径对比 # 传统CNN模型 像素 - 卷积层 - GAP - 分类层 # ViT with CLS Token 所有patch - CLS Token - 分类层这种全连接的梯度路径使得所有patch都能直接接收来自分类目标的监督信号信息可以在所有token之间自由流动避免了梯度在深度网络中的过度衰减5. 未来发展方向5.1 动态Token选择一种有前景的方向是让模型动态决定如何使用和聚合Token。例如预测每个patch的重要性分数基于内容选择性地关注相关区域自适应地决定聚合程度5.2 任务感知聚合针对不同任务设计专门的聚合机制分类任务全局聚合检测任务区域聚合分割任务局部保留5.3 跨模态统一在多模态模型中如何设计统一的聚合策略是一个开放问题视觉和语言模态是否需要共享聚合Token如何处理不同模态的序列长度差异如何平衡模态特定和跨模态特征在实际项目中我们发现CLS Token的设计确实为ViT提供了简单有效的解决方案但随着模型规模和任务复杂度的提升更灵活的聚合策略可能会成为新的标准。最终选择哪种方案还是应该基于具体任务需求、数据特性和计算资源来综合考量。

相关文章:

从BERT到ViT:聊聊那个“借”来的CLS Token,以及我们真的需要它吗?

从BERT到ViT:聊聊那个“借”来的CLS Token,以及我们真的需要它吗? 在计算机视觉领域,Vision Transformer(ViT)的出现彻底改变了传统CNN主导的格局。而其中最具争议的设计之一,莫过于那个从NLP领…...

MacBook M1/M2芯片上,用Python 3.10手动安装PyTorch全家桶的保姆级避坑指南

MacBook M1/M2芯片Python 3.10环境配置:PyTorch全家桶精准安装实战手册 当你在M1/M2芯片的MacBook上打开终端,输入那行看似简单的pip install torch命令时,系统报错的那一刻,可能就开启了一场令人头疼的依赖关系迷宫之旅。作为深…...

别RAG了,直接导航:企业知识库Skill上线~

RAG的"结构性盲区" 传统RAG把大模型当成检索结果的被动消费者——它只能看到被硬塞进来的Top-k片段,既不了解语料库的全貌,也不知道自己错过了什么。面对"如何将独资企业转为LLC"这类跨主题复杂查询,平面检索只能返回表…...

终极指南:如何彻底解锁《原神》帧率限制,实现高刷新率游戏体验

终极指南:如何彻底解锁《原神》帧率限制,实现高刷新率游戏体验 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否在游玩《原神》时感觉60FPS的帧率限制让你的…...

Appium: Windows桌面应用自动化测试(二) 【Accessibility Insights实战指南-元素定位与状态验证】

1. Accessibility Insights工具的核心价值 在Windows桌面应用自动化测试中,元素定位一直是最大的痛点之一。传统Win32应用往往使用复杂的UI框架,动态生成的控件和频繁刷新的界面让测试脚本变得脆弱不堪。我经历过太多因为元素定位失败而导致的测试用例崩…...

计算机网络复习(第一章):计算机网络体系结构

计算机网络体系结构:从网络组成到分层模型的一体化理解 这一章讨论的是计算机网络体系结构。和前面偏算法、偏数据结构组织方式的内容不同,这一章更强调“系统如何协同工作”。它不只是讲几台计算机如何连起来,而是在回答一个更根本的问题&am…...

计算机图形学(Computer Graphics)核心算法与应用实践笔记

1. 计算机图形学入门:从像素到虚拟世界 第一次接触计算机图形学时,我被屏幕上那些跳动的像素深深吸引。想象一下,你正在玩的3D游戏里随风摇曳的树叶、电影中逼真的特效场景,甚至手机拍照时自动添加的可爱贴纸——这些都离不开图形…...

iOS设备iCloud绕过解决方案:applera1n工具使用指南

iOS设备iCloud绕过解决方案:applera1n工具使用指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 当你面对一台被iCloud激活锁困住的iOS设备时,那种无力感是每个技术爱好者都曾…...

MATLAB实现光束形态变换:高斯光束到平顶光束的转换及SLM相位分布计算

MATLAB实现高斯光束到平顶光束的转变 基于GS算法或者直接计算SLM相位分布。一、引言 在光学工程、激光技术等领域,光束整形是一项关键技术,其核心目标是将一种光束的振幅、相位分布转换为目标分布,以满足特定应用场景的需求。本文所介绍的代码…...

如何修复受损音频:VoiceFixer的完整实践指南

如何修复受损音频:VoiceFixer的完整实践指南 【免费下载链接】voicefixer General Speech Restoration 项目地址: https://gitcode.com/gh_mirrors/vo/voicefixer 你是否曾因为录音中的噪音、回音或失真而感到困扰?无论是珍贵的家庭录音、重要的会…...

如何用NSC_BUILDER高效管理你的Switch游戏文件库:从新手到高手的完整指南

如何用NSC_BUILDER高效管理你的Switch游戏文件库:从新手到高手的完整指南 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase ti…...

技术赋能,场景延伸——超元力VR大空间CS的发展与突破

近年来,VR技术的快速发展推动了线下娱乐行业的转型升级,VR大空间CS作为其中最具代表性的品类,凭借技术创新与场景延伸,逐渐从小众娱乐走向大众视野,成为连接虚拟竞技与现实体验的重要载体。它不仅改变了人们的娱乐方式…...

保姆级教程:在Linux(Ubuntu 20.04)上搞定Java 11 + JavaFX 11的完整配置流程

从零开始:Ubuntu 20.04下Java 11与JavaFX 11开发环境深度配置指南 在Linux系统上进行Java桌面应用开发,环境配置往往是新手面临的第一个挑战。不同于Windows或macOS的一键安装体验,Ubuntu上的JavaFX开发需要开发者对模块化系统、环境变量和依…...

沉浸破界,热血同行——超元力VR大空间CS的全新娱乐体验

当虚拟技术打破现实边界,人们对娱乐体验的需求不再局限于屏幕内外的割裂,超元力VR大空间CS的出现,将电子竞技的热血与现实运动的沉浸感完美融合,成为当代年轻人释放压力、享受社交的全新选择。不同于传统CS游戏的桌面操作&#xf…...

别再纠结Java private方法怎么测了!用JUnit反射实战,5分钟搞定分支覆盖

破解Java私有方法测试难题:JUnit反射实战指南 在项目冲刺阶段,测试覆盖率报告上那个刺眼的红色数字总是格外醒目——98%的覆盖率卡在一个私有方法上,整个团队都在等待这个指标达标才能发布。作为经历过多次类似场景的老兵,我完全理…...

手把手教你玩转English-Corpora.org:从查词频到挖冷门搭配的完整指南

手把手教你玩转English-Corpora.org:从查词频到挖冷门搭配的完整指南 当你在写作中纠结"significant"和"crucial"哪个更学术,或是想找出"break the ice"的地道变体时,英语语料库就是你的秘密武器。不同于传统…...

2026年AI圈薪资大揭秘:手握大模型技能,年薪百万只是起点!

文章揭示了2025年AI领域的高薪现状,指出“大模型算法”等核心技能可使月薪达到7万,年薪百万成为常态。文章分析了高薪原因,包括人才供需失衡、政策与热钱的推动以及技术红利窗口期。此外,文章还详细介绍了五大高薪AI岗位及其必备技…...

如何高效使用Splatoon插件:全面指南提升FFXIV游戏体验

如何高效使用Splatoon插件:全面指南提升FFXIV游戏体验 【免费下载链接】Splatoon An accessibility tool to assist in gameplay and compensate for human imperfections. 项目地址: https://gitcode.com/gh_mirrors/spl/Splatoon 在《最终幻想14》的高难度…...

如何应对频繁变化的需求:提高测试用例编写与执行的实用性

在软件开发中,需求的频繁变化很多时候成了常态。尽管这种变化有助于确保最终产品更符合用户需求,但对于质量保证(QA)团队来说,这也带来了巨大的挑战。下面,我们通过一个具体案例,探讨如何改进测…...

MATLAB新手避坑指南:datetime函数解析中文日期和带‘T’、‘Z’的ISO 8601格式

MATLAB datetime函数实战:解析中文日期与ISO 8601格式的深度指南 当你第一次从API接口拿到2023-10-01T14:30:00Z这样的时间戳,或是需要处理中文报表中的2023年十月一日这类日期时,MATLAB的datetime函数可能会让你感到困惑。本文将带你深入理解…...

多云环境测试:跨平台方案深度解析与实践指南

当多云战略遇见跨平台应用随着企业数字化转型进入深水区,业务形态正以前所未有的复杂度和广度展开。一方面,为追求弹性、成本优化与风险规避,多云架构已成为企业技术栈的必然选择,工作负载分布于AWS、Azure、阿里云乃至边缘节点之…...

你的GD32代码安全吗?深入浅出聊聊Flash读保护(RDP)的机制、应用场景与误区

GD32 Flash读保护机制深度解析:从硬件原理到工程实践 在嵌入式系统开发中,代码安全始终是产品设计的关键考量。当工程师们将精心编写的固件烧录到GD32微控制器时,如何防止未经授权的访问和复制成为必须面对的现实问题。Flash读保护&#xff0…...

给多极对电机做“电角度身份证”:STM32 FOC中编码器读数与电角度的换算保姆教程

STM32 FOC实战:多极对电机电角度精准解码全攻略 在电机控制领域,场定向控制(FOC)算法的核心在于准确获取转子位置——也就是电角度。但对于多极对电机而言,这个看似简单的任务却暗藏玄机。想象一下,当你用1…...

MPC模型预测控制实战:从理论到代码实现(Python示例)

MPC模型预测控制实战:从理论到代码实现(Python示例) 在工业控制和自动化领域,模型预测控制(MPC)已经成为处理多变量约束系统的主流方法。不同于传统的PID控制,MPC通过在线优化解决控制问题,特别适合处理具有…...

别再只会AT指令了!用STM32CubeMX+正点原子LoRa模块,5分钟搞定透明传输

STM32CubeMX与正点原子LoRa模块的高效开发指南 在嵌入式开发领域,LoRa技术因其长距离、低功耗的特性广受欢迎,但传统的AT指令配置方式往往让开发者陷入繁琐的底层调试中。本文将带你体验STM32CubeMX图形化工具与正点原子LoRa模块的完美结合,告…...

别只装Qt!在Deepin 20.6上配置Qt 6.3.1时,这3个环境(Android/WebAssembly/输入法)的坑你得提前知道

Deepin 20.6上Qt 6.3.1环境配置避坑指南:Android/WebAssembly/输入法全攻略 在Deepin 20.6上配置Qt 6.3.1开发环境时,很多开发者会遇到一些"隐藏"的依赖问题。这些问题往往在Qt主程序安装完成后才会暴露,导致反复折腾和浪费时间。本…...

Solid 完整案例:重构遗留代码,搭建现代化工程架构

一、前言Solid 完整案例:重构遗留代码,搭建现代化工程架构。本文从实际项目出发,给出完整可运行的代码,帮你快速掌握实战技能。二、需求分析与架构设计2.1 业务需求功能需求: - 用户注册/登录,支持邮箱和手…...

VirtIO-GPU 指令流

VirtIO-GPU 指令流是虚拟机(Guest)与宿主机(Host)之间传输图形渲染命令的序列化字节流,基于 VirtIO 协议,分为 2D 控制指令流与 3D 渲染指令流(VirGL/Venus),通过 VirtQu…...

PostgreSQL 完整案例:重构遗留代码,搭建现代化工程架构

一、前言PostgreSQL 完整案例:重构遗留代码,搭建现代化工程架构是后端工程师必须掌握的核心技能。本文从PostgreSQL出发,覆盖开发中最实用的知识点,配有完整可运行的 SQL/代码示例。二、索引设计与优化2.1 索引类型选择-- 基础索引…...

大一小白也能拿奖?我们如何用HTML+CSS+JS做了一个考研计划网站参加C4网络技术挑战赛

大一团队如何用基础Web技术斩获C4网络技术挑战赛奖项 去年秋天,当宿舍里三位计算机专业的大一新生决定组队参加"中国高校计算机大赛-网络技术挑战赛"时,他们手里只有半学期学到的HTML/CSS基础知识和几节JavaScript入门课。令人意外的是&#x…...