Token导航 LogoToken导航

AI 资讯 · 科技行者

Transformer模块构建24层视觉AI模型

更新 2026-11-09科技行者正文 7056字阅读约 23分钟

你可能没意识到一件事:你每天用的视觉AI模型,内部其实是一座"楼"。

拿ViT-Large来说,它有24层Transformer模块,像24层楼一样一层层叠起来。每一层都有自己独立的参数,自己的"房间装修"。训练这样一个模型,意味着你要同时设计、存储、训练24套完全不同的参数。ViT-L/16这种规模的模型,参数量能到3亿出头。

现在问题来了。有研究者发现,这24层楼虽然装修都不一样,但住在里面的"人"(也就是模型学到的表征)其实长得挺像。相邻楼层之间,表征的相似度很高,跟卷积神经网络比起来,Transformer各层之间的"家族相似性"明显更强。

这就很奇怪了。如果各层本来就长得差不多,为什么还要花这么多参数去分别装修每一层?能不能只建一层楼,然后让电梯上上下下跑24趟,用同一层楼模拟出24层楼的效果?

这正是这篇论文要回答的问题。

**核心问题:共享一个模块,深度特性还能保留吗**

这个想法并不新鲜。

Universal Transformer*:一种重复使用同一个Transformer模块多次的架构,最早在语言模型领域提出,核心思路是用循环代替堆叠。

早在2019年,Universal Transformer就提出了"反复套用同一个模块"这个思路,ALBERT也用跨层参数共享省下了大量存储。但这些尝试有一个共同的软肋:共享参数虽然省钱,但往往要以掉点为代价,因为模型确实需要在不同深度做不同的事情。

浅层可能在识别边缘和纹理,深层可能在理解物体和语义,如果所有层都用同一套权重,这种"分工"怎么实现?

之前最接近解决这个问题的工作叫Raptor,来自2026年的一篇论文。Raptor发现一件很有意思的事:训练好的ViT,它的24层或12层并不是均匀渐变的,而是会自动聚成几个连续的"阶段",阶段之间有明显的转折点。基于这个发现,Raptor把深度L的网络压缩成k个(比如k=4)不同的模块模板,循环使用这几个模板。这个办法确实管用,用4个模板基本恢复了原模型大部分的性能。

但Raptor留了一个尾巴没解决:它依然保留了好几个不同的模块(k=4意味着4套参数),而且在蒸馏训练时还要求学生模型去模仿老师模型每一个中间层的特征,这个要求相当苛刻。更关键的是,Raptor的最终效果还是比原始的全深度网络要差一截。

这篇论文的野心更大:能不能真的只用一个模块,一套参数,反复循环,还不靠中间层特征对齐这种"拐杖",就能跑出和全深度模型差不多的精度?

论文给出的答案是reViT。

**解法核心:把"深度"变成一个可以连续调节的旋钮**

reViT的思路说起来不复杂,但设计得很巧妙。

既然一个共享模块没法像24层独立模块那样各司其职,那就给这个共享模块装一个"深度感知器"。每次循环到第t步时,模块会知道"我现在处于整个深度的第几步",然后根据这个信息动态调整自己的前馈网络(FFN)部分。

具体怎么调?论文引入了一个专家库的概念。

MoE(混合专家,Mixture of Experts)*:一种让模型里存在多套"专家"参数,根据需要选择性组合使用的技术,常见做法是给不同的输入token分配不同的专家。

reViT准备了E个(比如4个或8个)独立的FFN专家,每个专家都是一套完整的前馈网络参数。关键的设计在于,reViT不是像传统MoE那样让不同的token去"挑"不同的专家,而是用一个极简单的路由器,输入只有一个数字:当前深度在整个网络里的归一化位置(比如第3层在共12层里,就是3/11≈0.27)。路由器根据这个位置算出E个专家的混合权重,然后把这E个专家的参数直接在权重空间里加权平均,融合成一个全新的、独一无二的FFN,再拿这个融合后的FFN去处理这一层的所有token。

这里有个细节特别值得强调:融合发生在参数层面,不是在计算结果层面。也就是说,模型不是跑四次FFN再把输出加权平均,而是先把四套权重加权平均成一套权重,只跑一次FFN。这意味着不管你用多少个专家,每一步的计算量始终只相当于跑一个标准FFN,专家数量增加只增加存储,不增加推理时的计算负担。

这个设计可以类比成一家连锁餐厅只有一个厨师,但这个厨师手里有一本"菜谱合集",合集里记录着几种基础菜式的配方。厨师不会把每道基础菜都做一遍端上桌让你自己挑,而是先看一眼现在是第几道菜(第几道决定了这顿饭进行到哪个阶段,开胃菜阶段还是主菜阶段),然后按比例把几种基础配方现场调配成一道新菜,一次性炒出来上桌。如果没有这个"看阶段调配方"的步骤,厨师要么永远做同一道菜(那就是最原始的参数共享,掉点严重),要么得把所有基础菜都做一遍让顾客自己混合(那计算成本就跟开了四五个灶台一样高)。reViT选的是中间路线:配方因阶段而变,但灶台始终只有一个。

路由器本身非常轻量,是一个只有16个隐藏单元的两层小型MLP,输入一个数字,输出E个混合系数。因为这个系数只跟"深度位置"有关,跟具体是哪张图片、哪个token完全无关,所以同一深度上,所有输入共享同一套混合FFN。

**为什么选"权重融合"而不是传统MoE的"token分发"**

这篇论文做了一件挺较真的事:它没有想当然地认为权重融合是最好的方案,而是把市面上几种主流的MoE思路都搬进同一个共享Transformer框架里做了公平对比。

对比的几个对手包括DeepSeek-V3风格的token分发(每个token挑选少数几个专家处理)、Qwen3风格的路由、MoEUT(把MoE塞进循环层)、以及ReMoE和Soft-MoE这类输出混合方案(所有专家都算一遍,再把输出加权平均)。

在同样的计算预算下(论文用U这个指标衡量,U=1表示和跑一个标准FFN的计算量相当),结果很能说明问题:在ImageNet-1k从零训练的实验里,reViT拿到78.2%的准确率,同样走权重融合路线的Lory和SMEAR分别是77.9%和77.7%,而token分发和输出混合阵营的方法全都卡在67.8%到70.6%之间,和reViT差了将近10个百分点。

10个百分点是什么概念?意味着同样识别100张图片,权重融合的方法比token分发的方法要多认对将近10张。差距不小。

这个差距要等到对手们把计算预算拉到4倍(U=4)才能部分追平,比如MoEUT在U=4时能冲到77.6%,但那已经意味着它要跑四倍于reViT的FFN计算量。

为什么权重融合在同等预算下占优?一个合理的解释是:token分发类方法本质上是"选择性计算",每个token只用到部分专家的能力,相当于把计算资源稀释了;而权重融合是"把所有专家的知识都压缩进一套参数里再使用",没有信息被浪费在路由选择的损耗上。这就好比同样是请四位顾问给你出主意,一种方式是让每个顾问只看你问题的一部分然后各自给建议(分发),另一种方式是让四位顾问先开会把意见统一成一份报告再给你(融合)。如果顾问们本来就该对同一个问题有整体判断,开完会统一意见显然比各管一段更靠谱。

在蒸馏训练场景下(用DINOv2大模型当老师,reViT当学生去模仿),这个优势基本保持,虽然排名有些微调整,SMEAR在某个具体指标上反超了一点点,但整体依然是权重融合阵营领先。

**蒸馏实验:学生模型几乎追平老师**

DINOv2*:Meta开发的一种自监督视觉预训练模型,不需要人工标注就能学到强大的通用图像特征,常被当作"教师模型"用来指导其他小模型学习。

论文用一个冻结参数的DINOv2-B/14作为老师,训练一个reViT-B/14学生去模仿老师最后一层输出的特征。注意这里的"只模仿最后一层"和Raptor的"模仿每个中间层"形成了鲜明对比,这意味着reViT拿到的监督信号其实更少、更粗糙。

结果却相当亮眼。在E=8专家配置下,reViT学生在ImageNet-1k线性探针上拿到83.9%的准确率,而DINOv2-B/14老师本身是84.5%,差距只有0.6个百分点。要知道,学生模型只靠最后一层的输出去反推整个网络该怎么训练,最后居然几乎追平了老师,这个结果本身就说明reViT的参数化方式确实抓住了某种更本质的东西。

在语义分割(ADE20k数据集,用mIoU衡量)和深度估计(NYUv2数据集)两个下游任务上,reViT同样展现出不错的迁移能力,E=8版本的ADE20k mIoU达到45.8%,比DINOv2-S/14老师的44.6%还要高一点。

这里有个值得琢磨的细节:reViT只用了最后一层的特征监督,依然在多个专家数配置下(E=2、3、4)全面超过了用中间层特征监督的Raptor。这暗示着一件事:也许"模仿每一层"这种细粒度监督并不是必须的,一个设计得当的参数化结构,靠更粗糙的信号也能学出正确的深度分工。

**弹性深度:一个模型checkpoint能在多个深度上跑**

这是reViT另一个让人眼前一亮的设计。

因为路由器的输入只是一个"归一化深度位置"(0到1之间的一个数),而不是针对某个固定层数训练出来的查找表,所以理论上你可以把这个位置坐标重新打网格。

比如原来训练时网络深度是12层,归一化坐标是0、1/11、2/11……一直到1。如果你想在部署时把深度改成24层,只需要把坐标重新打成0、1/23、2/23……一直到1,同一个训练好的路由器照样能用,不需要重新训练。

这就像一把可以连续调节的尺子,原来你标了12个刻度,现在想标24个刻度,不需要重新造一把尺子,只要把同一根尺子上的刻度重新画密一点就行。如果路由器学的是针对12层"死记硬背"出来的固定配方(就像前面提到的那种给每层单独配一个LoRA适配器的方案),那换成24层就完全抓瞎,因为压根没有"第17层该用什么配方"这种记录。

为了让模型真正具备这种弹性,训练时用了一种叫elastic-depth training的技巧:随机丢弃一些循环步骤(类似DropPath的思路,但丢的是整个循环步而不是某个子模块),被丢弃的那一步直接变成"什么都不做"的恒等映射,剩下保留的步骤重新编号、重新铺归一化坐标。这样路由器在训练过程中就见过各种不同的有效深度,而不是只认识固定的12或24。

实验里测试了L=8、12、16、24四种推理深度,对比了"深度感知路由"(reViT默认方案)和"纯特征感知路由"(不看深度信息,只看输入特征本身,类似SMEAR的做法)两种变体。结果是深度感知版本在深度从8涨到16的过程中,各项指标持续上升:ADE20k mIoU从40.3一路涨到44.9,ImageNet线性探针准确率从82.6%涨到83.7%,NYUv2的深度估计误差从0.522米降到0.485米。

而不带深度信号的对照组,在深度超过12之后基本就"躺平"了,涨不动了,甚至在NYUv2上还出现了轻微的性能倒退(从0.498米恶化到0.507米)。

这个对比说明一件事:显式告诉模型"你现在在整个深度的哪个位置",这个信息本身是有价值的,它让模型知道该在什么阶段表现出什么样的计算行为,而不是单纯依赖输入内容自己去猜。

**专家数量越多越好吗:规模效应的分化**

论文还测试了专家数量E从1涨到8对准确率的影响。

小模型(S/16)从E=1的70.6%一路涨到E=8的80.2%,涨了9.6个百分点,涨幅相当可观;中等模型(B/16)涨了6.8个点;大模型(L/16)只涨了5.7个点。

也就是说,模型规模越大,从增加专家数量中获得的边际收益反而越小。论文用了一种叫"有效秩"(effective rank)的数学工具去解释这个现象:简单说就是衡量专家库里的几套参数到底有多"不一样",是真的各有特色,还是其实大同小异、互相之间高度重复。

有效秩*:衡量一组向量或矩阵"有效独立方向数"的指标,数值越接近专家数量E,说明这些专家之间越是各不相同、互补性越强;数值远小于E,说明专家之间高度相似,增加数量的边际收益会递减。

结果显示,S/16在E=8时,专家库本身的有效秩、路由器选择的混合方式、以及最终实际用到的融合权重,三者的有效秩分别是7.7、7.6、7.3,几乎都逼近理论上限8,说明8个专家基本都在"各司其职",每个都提供了独特的方向。而L/16在同样配置下,这三个数字分别是6.2、5.2、4.0,专家库本身还算多样(6.2),但到了实际融合阶段,有效方向数骤降到4.0,意味着大模型并没有充分"榨干"这8个专家提供的全部多样性,很多专家之间其实在做重复劳动。

这个发现挺有意思,它提示我们:大模型内部可能本来就不需要那么多"不同的处理方式",它的深度表征本身已经相对均质,硬塞更多专家进去,提升空间自然有限。而小模型恰恰相反,它更"渴望"多样化的深度特性,专家数量的增加能实实在在地转化成准确率的提升。

**路由器到底学到了什么:专家之间如何分工**

论文还做了一组挺细致的解剖实验,想搞清楚路由器内部到底学会了怎样的"深度程序"。

通过可视化不同深度下各专家的混合权重,研究者发现一个规律:虽然没有任何目标函数明确要求这么做,但训练出来的路由器会自发地让"主导专家"在训练过程中呈现出分段式的切换。也就是说,深度1到深度3可能主要靠专家A,深度4到深度7换成专家B主导,专家之间的切换边界附近会有一段柔和的混合过渡。

这个现象和前面提到的Raptor论文发现的"ViT各层自动聚成几个阶段"的观察高度呼应,不同的是Raptor是先观察到这个现象然后手工设计了阶段结构,而reViT是靠训练自动涌现出类似的分段模式,仅仅靠模仿老师模型最后一层的输出,这件事本身挺耐人寻味。

研究者还做了一个"拆专家"实验:把某个专家的混合权重强制设成0,看看去掉这个专家之后,学生模型和老师模型的特征相似度(用CKA指标衡量)会掉多少。结果发现,去掉大多数专家都会造成相似度下降,但下降幅度普遍小于随机扰动同等规模的权重变化所造成的损失,说明专家库的设计确实比随机调整权重更稳健、更有针对性。有一个专家(E=8配置下的5号专家)被去掉后相似度几乎没有变化,暗示它可能承担了相对次要或者可替代的角色。

更有意思的是一个"打乱专家分配"的实验:保留所有专家本身不变,也保留每个深度的混合系数不变,只是把"哪个系数对应哪个专家"这个映射关系随机打乱重排。结果无论怎么打乱,相似度都会大幅下降,在E=4的情况下,23种非恒等排列全部导致相似度下降;E=8时测试的64种排列同样全部下降。

这说明一件挺关键的事:仅仅拥有一套多样化的专家库是不够的,专家和深度位置之间的具体对应关系本身也是训练学出来的、有意义的知识,不能随便换着用。

**实际部署:动态图还是固定图**

最后聊聊这个设计在实际落地时的权衡。

因为reViT的融合FFN只跟深度位置有关,跟具体输入的图片内容无关,所以一旦确定了部署时用多少层(比如固定用12层),这12个融合后的FFN其实可以提前算好,存成12套独立的、普通的dense FFN,插进一张标准的、没有任何路由和融合逻辑的计算图里。这样部署时就完全不需要在线做专家融合这个额外步骤,推理路径和一个传统的12层ViT没有任何区别。

代价是什么?存储空间变大了。原来只需要存E套专家(比如4套)就能覆盖所有深度,现在变成要存L套融合后的FFN(比如12套),存储开销从"专家数量级"变成了"深度数量级"。

论文还实测了在H100 GPU上,动态路由版本(也就是不预先融合,实时计算)相对于传统ViT的延迟开销。在batch size为1时,reViT的部署参数量只有标准ViT的1/3.6,运行时显存减少了48%,但延迟增加了13%;在batch size涨到64时,延迟开销涨到39%,显存优势基本被摊薄到跟标准模型差不多。这说明动态路由的额外计算成本(主要来自用FP32做权重融合的开销)在大批量场景下会变得更明显,这也是这项技术在工程落地时需要权衡的现实问题。

这就好比你平时做饭是现炒现吃(动态融合),灵活是灵活,但每顿都要花时间配菜;如果你提前把一周的菜都备好、切好、分装冷冻(固定图预计算),每天吃饭速度飞快,但冰箱得腾出更大的空间来存货。两种方式各有取舍,没有哪个绝对更优,取决于你更在乎时间还是空间。

Q&A

Q1:reViT是什么,它和普通ViT有什么区别?

A:reViT是一种只用一个Transformer模块反复循环来替代传统ViT多层堆叠结构的新架构。普通ViT每一层都有独立参数,reViT则共享同一套注意力参数,并通过一个深度感知路由器动态混合一小组专家FFN的权重,让共享模块在不同深度表现出不同行为,同时大幅减少存储参数量。

Q2:reViT相比Raptor这类同类研究有什么优势?

A:Raptor需要保留多个(如4个)独立模块模板,并依赖老师模型中间层特征做蒸馏监督。reViT只用一个模块,仅靠老师模型最后一层输出做监督,在同等专家数配置下,ImageNet、ADE20k、NYUv2等多项指标上reViT的表现都优于Raptor。

Q3:reViT的弹性深度功能具体是怎么实现的?

A:reViT路由器的输入是归一化深度坐标(当前层数除以总层数),而非针对固定层数训练的查找表。训练时用随机丢弃循环步骤的方式让模型适应不同有效深度,部署时只需重新铺设坐标网格,同一个训练好的checkpoint就能在8层、12层、16层、24层等不同深度下工作,无需重新训练。

文章标签大模型

资讯来源:由AI资讯编辑整理自互联网公开内容,版权归原作者所有,未经许可,不得转载。