你的 ViT 骨架,可能还停在 2020 年
- 关联论文:2602.08071
Vision Transformer 从 2020 年问世到今天,骨架几乎没变过:Self-Attention 加 FFN,一层压一层。但同期大语言模型那边,早就把归一化、缩放、位置编码这些零件换了好几轮——层归一化换成 RMSNorm、残差分支加上 LayerScale、注意力 logits 加上 QK-Norm、相对位置编码引入旋转式 RoPE。这些改动单看都不惊艳,堆起来却能让训练更稳、精度更高。问题在于,视觉社区缺一份能照着抄的清单。
ViT-5 想解决的正是这件事:不换骨架,只换零件。论文明确保持 Attention-FFN 主结构不动,只在五个位置动手。
第一处是归一化。LayerNorm 换成 RMSNorm,省掉均值中心化这一步,参数和算力都更省,同时保留了可学习的缩放。第二处是缩放与激活。每个残差分支前乘一个可学习对角矩阵 diag(l),这就是 LayerScale,让深层网络在训练初期不会因为激活爆炸而失稳。有意思的是,论文明确拒绝引入 SwiGLU——gating 本身是个好东西,但和 LayerScale 叠加会过度调控,训练早期损失曲线会抖。这种"我知道它好,但我故意不要"的表述,在架构论文里并不常见。
第三处是位置编码。论文把可学习的绝对位置 token 和二维 RoPE 叠着用:高度、宽度两个轴各自独立编码旋转频率,让模型显式学到空间上的相对关系。对检测、分割这类需要几何感知的任务,这比纯绝对位置编码更管用。
第四处是寄存器 token。这个思路来自 Darcet 等人在 2024 年的工作,作用是给特征图里那些"高范数伪影"提供一个倾倒区,避免它们污染主特征。第五处最简单:把所有 bias 项删掉。QKV 投影和 FFN 的线性层都不带偏置,这是大模型侧的普遍实践,论文观察到训练更稳、推理略快,精度不掉。
效果上,在可比算力预算下,ViT-5-Base 在 ImageNet-1k 上拿到 84.2% 的 top-1,超过 DeiT-III-Base 的 83.8%;作为 SiT 扩散框架的骨干时,FID 从 2.06 降到 1.84。对工程团队最有吸引力的是兼容性:已经在跑 vanilla ViT 的检测、分割、生成管线,可以直接换成 ViT-5 权重做微调,主循环几乎不用动。
不过得把证据边界说清楚。这些数字出自论文摘要和公开复核,Large、Huge 配置的表现没给;COCO、ADE20K 这类密集预测任务的具体数值也未披露,只笼统说"空间推理改善"。另外,它和 ConvNeXt-V2、CoAt、MaxViT 这些结构层面改造的工作没有量化对比——两条路线方向不同,不能直接相减。还有一个未解的问题:绝对位置和 RoPE 同时用,两者信息冗余多少、成本收益如何,论文没给独立消融。
工程落地上还有几个真实的坑。LayerScale 的初始化值对结果很敏感,论文用 1e-5 或 1e-6 量级,从零训练时调大容易让深层失活。QK-Norm 多两次归一化,在手机、Jetson 这类边缘设备上要实测帧率损耗。寄存器 token 的最优数量论文也没给,一般 4 到 8 个够用,但最好自己跑一遍消融。开源仓库目前社区验证几乎为零,部署前建议先在 ImageNet 上复现一遍基线。若是 CLIP、LLaVA 这类多模态流程,换骨干需要独立验证——对比学习目标对归一化方式的敏感性并不显然。
一句话总结:ViT-5 不是新范式,而是一张经过验证的零件更换清单。它适合已经有一套 ViT 管线、想在不加算力的前提下榨出一点精度和稳定性的团队;如果你关心的是结构级改造或者纯文本模型,它帮不上忙。
标题变体
- 你的 ViT 骨架,可能还停在 2020 年
- 不换骨架,只换零件:ViT-5 交出一张 ViT 现代化清单
- 84.2% vs 83.8%:五个小改动,把老 ViT 榨出新精度
- 大模型那边的零件,该给视觉模型补上了
小红书卡片文案
你的 ViT 还停在 2020 年的骨架吗?😶
大模型这几年换了多少零件你可能没注意:RMSNorm、LayerScale、QK-Norm、二维 RoPE、寄存器 token……视觉社区就是缺一份能照抄的清单。
ViT-5 干的事很朴素:Attention-FFN 骨架不动,只换五个零件。
📊 ImageNet-1k top-1:84.2%,同算力下压过 DeiT-III 的 83.8% 🎨 挂到 SiT 扩散框架上:FID 从 2.06 掉到 1.84 🔧 检测/分割/生成管线基本无痛迁移
几个反直觉的细节: ❌ 故意不要 SwiGLU——和 LayerScale 叠加会过度调控 ✅ 敢把 bias 全删掉 🧩 绝对位置 + 二维 RoPE 双编码,但冗余多少论文没交代
⚠️ 也不是没坑:LayerScale 初始化很敏感,寄存器 token 最优数量没给,仓库还没有社区验证。
一句话:这不是新范式,是一张能直接用的零件清单。