微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 视觉Token压缩的极限游戏:Braco如何用四步编码器重新定义"少即是多"

视觉Token压缩的极限游戏:Braco如何用四步编码器重新定义"少即是多"

2026-10-23 07:05
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-10-23 07:05 • 科技行者

你有没有想过,一张图片被AI"看懂"之前,要先变成多少个数字?

答案可能超出你的想象:576个。这是主流视觉语言模型处理一张图片时,把它切成小块后生成的"视觉token"数量。每个token都要占用计算资源,都要参与后续所有的推理运算。当你用手机上的AI助手识别一张照片,或者让AI帮你读一份文档时,这576个token就在背后悄悄地拖慢速度、消耗电量。

如果能把576压缩到25,甚至压缩到4,会怎样?

这正是这篇论文要回答的问题。而更有意思的是,研究者发现,压缩到极限之后,大家一直以为的"最优解"其实走错了方向。

一、压缩到底难在哪里

先说一个可能会颠覆你认知的事实:在视觉token压缩这件事上,"挑选更聪明的token"这个听起来天经地义的思路,一旦压缩比例超过20倍,就开始集体失灵。

这怎么理解?目前主流的压缩方法大概分两派。

第一派叫token选择,做法很朴素:给每个视觉token打个分,看看哪个更重要,然后砍掉不重要的,或者把相似的合并起来。这套思路在压缩比不太狠的时候效果不错,计算开销也很低。但问题出在"重要性"这个判断本身并不靠谱。

注意力机制*:AI模型中用来判断"该关注哪部分输入"的一种打分机制,常被当作衡量token重要性的依据。

已经有研究明确指出,用注意力分数来判断token是否重要,本身就是不稳定的。换句话说,你以为砍掉的是"废话",但实际上可能砍掉的是那句"关键证据"。图片里那个占画面很小却决定了整个问题答案的小物件,很容易就这样被误判成不重要而删掉了。

第二派叫学习式重采样,代表方法比如Perceiver和后续的一系列变体。它们不再靠打分砍token,而是训练一个专门的模块,把密集的视觉token"蒸馏"成固定数量的新token,这个过程通常靠注意力机制来实现。

这套方法的准确率通常更高,因为它不是简单粗暴地丢弃信息,而是主动学习"怎么用少量token概括全部信息"。但代价也很明显:这个压缩模块本身变成了一个不小的模型,参数量、计算量、训练难度全都上去了。你相当于是用一个新的计算负担去换取信息保留,这在追求极致效率的场景里,是很尴尬的取舍。

那么问题来了:在极限压缩场景下,比如手机端推理、低延迟交互、长上下文多模态推理这些只允许几十个token的场合,我们到底该怎么办?

研究者们换了一个角度去想这个问题。他们没有继续在"选哪些token"这个框架里打转,而是提出了一个新的问题:我们真正应该讨论的,或许不是"保留哪些token",而是"用什么方式表示这批视觉信息"。

这就是这篇论文的核心思路:token参数化。

二、把压缩问题拆成两半:能不能压,压完能不能学

要理解这个思路的巧妙之处,得先弄明白一个基本事实。

对一堆视觉token做压缩,本质上是在做一次数学变换。你可以把原始的N×N视觉token网格,想象成一个高维空间里的点。压缩,就是把这个点投影到一个更低维的子空间里去。

这里面藏着两件完全不同的事。

第一件事是"选对子空间"。如果你选的这个低维子空间恰好包含了图片里的关键信息,那压缩就是安全的;如果选错了子空间,关键信息可能直接就被投影掉了,再怎么后续处理也救不回来。

第二件事是"子空间内部怎么摆放坐标"。即使你选对了子空间,保留下来的这几个数字(坐标)该怎么组织、排列,其实也会影响后面语言模型学习和理解这些视觉信息的难易程度。

论文把这两件事分别叫做压缩性(compressibility)和可学习性(learnability)。

压缩性*:衡量一个被选定的低维子空间,能保留多少任务相关信息的指标。

可学习性*:衡量在信息量相同的前提下,坐标组织方式是否更利于后续优化和跨模态对齐的指标。

这个区分乍一听有点抽象,但其实生活里到处都是类似的例子。

想象你要打包搬家,箱子空间有限,只能带走原来家当的5%。这时候你面临两个完全独立的决策:第一,哪些东西该带走(这决定了你能不能保留生活必需品,相当于"压缩性");第二,带走的东西该怎么摆放进箱子(这决定了你搬到新家后翻找起来方不方便,相当于"可学习性")。

如果你只关心"带走哪些东西",把值钱的、常用的都塞进箱子,但胡乱堆叠,到了新家你翻遍整个箱子才能找到牙刷,那这次打包依然是低效的。反过来,如果你把东西摆得整整齐齐,但一开始就带错了东西(比如带了滑雪板却忘了带常用衣物),那再怎么整理也没用。

Braco*:本论文提出的视觉token压缩方法,全称来自"Backbone-residual + basis + coordinate"(骨干-残差+基底+坐标),是一个轻量级的四步编码器。

这两件事必须分开处理,而不能混为一谈,这正是Braco设计的出发点。之前的方法往往把"选token"和"怎么表示token"糅在一起考虑,导致优化目标本身就是模糊的。

三、DCT基底:让信息在压缩之前先"聚拢"

Braco的第一步,是给视觉token换一套"数学语言"。

原始的视觉token是按空间网格排列的,每个token对应图片上的一小块区域。这种排列方式虽然直观,但信息是分散的,图片里的能量(也就是信息量)平均分布在各个小块里,没有明显的集中区域。

这里就要提到一个来自图像压缩领域的老朋友了。

离散余弦变换(DCT)*:一种数学变换方法,能把图像从"空间域"(一个个像素点)转换到"频率域"(一组组频率系数),JPEG图片压缩用的就是这套技术。

DCT这个东西其实不新鲜,它已经在JPEG压缩里服役了几十年。它的核心特点是能把一张图片的"能量"重新排布,让大部分重要信息聚集在少数几个低频系数里,高频细节则相对分散且能量较小。

Braco的做法是,把视觉token网格先做一次DCT变换,然后只保留左上角一个C×C的低频区块,这个区块被称为"结构化低通截断"。剩下的高频部分就直接舍弃。

论文里做了一个很有说服力的对比实验。他们测试了四种不同的基底:原始空间排列、DCT、Haar小波,还有随机正交基。结果显示,在保留32个token的情况下,DCT和Haar能保留大约51%的能量,而空间排列和随机基底只能保留4%左右,差了十几倍。保留64个token时,这个差距依然存在,DCT能到57%,空间排列只有8%。

这组数字说明了什么?说明在固定的、可部署的截断规则下(也就是永远只取左上角这块),选对基底能让同样数量的token装下多得多的信息。

这里可以做一个类比。假设你要给朋友总结一本300页的小说内容,但只允许发一条140字的短信。如果你按照书本的物理页码顺序,随便摘抄第1到第5页的原文发过去,朋友大概率一头雾水,因为开头几页往往是铺垫,信息密度很低。但如果你先把整本书的核心情节提炼成几个关键词(这就相当于"变换基底"),再从这些关键词里挑最重要的几个发过去,信息传递效率就完全不同了。DCT做的正是这件事:它先把图片信息"提炼"成一组频率系数,让重要信息自然地聚集到少数几个系数里,这样"只取前几个"这个简单粗暴的截断规则才能真正有效。

论文还用了CelebA人脸数据集做了另一个验证实验,专门测试"语义可读性",也就是压缩后的信息能不能支持简单的分类任务。结果显示,DCT基底在只保留1个token时准确率91.6%,空间排列只有89.8%;保留4个token时DCT是92.5%,空间排列是90.9%。这说明DCT不只是在"能量"这个泛化指标上占优,在真正有语义含义的下游任务上同样领先。

那为什么不选择理论上更完美的方案?论文里还提到了一个叫KLT的"oracle"基底,它是专门针对当前数据集拟合出来的最优正交基,能量保留能力比DCT还要强。但Braco没有用它,原因很实际:KLT需要针对具体数据集重新计算,而DCT是一个固定的、不依赖数据的标准变换,直接可以拿来用,部署起来更简单可靠。这是一个典型的工程取舍:牺牲一点理论最优性,换取可部署性和稳定性。

四、位置编码:给压缩后的token找回"身份证"

DCT变换带来了一个新问题。

原来的视觉token各自对应图片上的一个具体位置,这个位置信息本身就是有意义的语境线索,语言模型可以据此判断"这个token描述的是画面左上角还是右下角"。但做完DCT变换后,每个保留下来的系数变成了一个"全局性"的频率信息,它不再对应任何具体的空间位置,原来那种直观的位置识别能力就丢了。

Braco的解法是给这些变换后的token重新配一套坐标系统。

具体做法是,对于变换域网格上的每个坐标点(u,v),先算出它的极坐标形式:一个半径r(代表频率高低)和一个角度θ。然后用一组固定的正弦余弦函数把这个极坐标编码成一个向量,再通过一个共享的线性映射,把这个编码加到对应的token上。

这套编码是输入无关的,也就是说不管图片内容是什么,同一个坐标位置总是加上同样的编码。这样一来,语言模型虽然看到的是变换域里的系数,但依然能从附加的编码里读出"这个token在频率网格上处于什么位置"这样的结构信息。

如果不做这件事会怎样?论文的消融实验给出了答案:在16 token的设置下,把这套极坐标Fourier编码换成学习出来的位置编码,或者换成普通的2D正弦余弦编码,准确率都会掉0.8到0.9个百分点。看起来不多,但考虑到这已经是极限压缩场景下的精细调优,这个差距其实反映出坐标编码方式确实会实实在在影响下游对齐效果。

这有点像图书馆重新编目。假设一个图书馆原来是按照书架物理位置摆放图书,找书全靠"记住它在第几排第几层"。后来图书馆决定按照主题重新分类整理(相当于换基底),这时候如果不给每本书配一个新的索书号(相当于位置编码),读者虽然拿到手里的书内容没变,但完全无法在新系统里定位和检索它们。位置编码就是给变换后的信息重新配的那套索书号,它本身不改变书的内容,但决定了系统能不能高效地组织和调用这些内容。

五、坐标组织:同样的信息,摆法不同会影响学习速度

这是整篇论文里我觉得最反直觉的一个发现。

按照常理,如果两种表示方式包含的信息量完全一样(数学上严格等价,只是做了一次正交旋转),那它们应该是"等价"的,对下游模型来说没有区别。

但论文发现事实并非如此。

正交变换*:一种保持向量长度和角度关系不变的数学变换,可以理解为纯粹的"旋转"或"翻转"操作,不会丢失任何信息。

论文引用了一个来自深度学习优化理论的经典结论:下游的优化过程,对token坐标轴的旋转并不是不变的。也就是说,即使两组坐标包含完全相同的信息量,神经网络学习它们的难易程度可能天差地别。

Braco比较了三种坐标组织方式:保留原始的DCT系数坐标(叫vanilla)、做逆DCT变换后得到的粗粒度空间网格坐标(叫idct)、还有一个随机正交旋转(叫randrot)。这三种方式理论上信息量完全一致,但论文通过一个专门的"可学习性"实验发现,它们的优化行为差异很大。

具体实验是这样的:固定同一个低频DCT子空间,只改变坐标组织方式,然后跑预训练目标,观察验证集损失下降到某个阈值需要多少步。结果显示,当保留的backbone很小(Kb=4)时,只有vanilla坐标能达到目标损失,idct和randrot都停在更高的损失水平上不下降了。但当backbone稍大一些(Kb=16和Kb=64)时,情况反转了,idct反而比vanilla快18%到60%达到同样的目标损失。

这个现象说明了什么?说明同样多的信息量,摆放方式不同,会直接影响神经网络"学起来顺不顺手"。

这让我想到一个生活场景。假设你要记住一串很长的电话号码,比如13812345678。如果把这11位数字直接按顺序背下来(相当于vanilla坐标,保持原始的、未经重组的形式),信息量没有任何损失,但对大脑来说记忆负担很重。但如果你把它按照习惯的方式分组,138-1234-5678(相当于idct坐标,重新组织成更符合认知习惯的结构),信息完全一样,但记忆和调用的效率明显不同。当号码很短的时候(比如只有4位),直接背可能反而更快,分组反而增加了额外的切分成本;但当号码变长了,分组的优势就会显现出来。这正好对应了论文发现的那个"budget-dependent"(依赖token预算大小)的规律:小预算下vanilla更好学,大预算下idct更好学。

论文进一步把这个观察形式化成了一个可以计算的判据。核心思路是比较两项代价:一项是"统计条件数代价"(衡量坐标之间的相关性是否杂乱),另一项是"几何兼容性代价"(衡量坐标排列是否符合下游模型习惯的空间结构)。当保留的token数量很小时,统计条件数代价占主导,所以选vanilla;当token数量变大后,几何兼容性代价占主导,所以切换到idct。论文给出了具体的实现规则:backbone小于16个token时用vanilla,大于等于16时用idct。

这个规则不是拍脑袋定的,论文还专门做了跨编码器的校准实验,测试了CLIP、SigLIP、SigLIP2三种不同的视觉编码器,在LLaVA-Pretrain数据和DocVQA数据两种不同分布上,都验证了这个交叉阈值的存在,虽然具体数值会随编码器和数据分布浮动(比如CLIP的阈值是16,SigLIP2是36),但这个"先统计占优、后几何占优"的规律是稳定的。这给了实际部署者一个可操作的建议:换了新的视觉编码器或者新的应用场景,可以用一小批无标注图片重新校准这个阈值,而不用整套重新调参。

六、空间残差:把丢掉的细节偷偷捡回来

DCT低通滤波有个天生的短板:它对付大范围的、平滑变化的全局结构很在行,但对付那种局部的、稀疏的、突兀的细节信息,效果就很差。

这个短板可以用一个数学不等式来说明:一个只有s个非零位置的稀疏空间信号,在一个"相干性"为μ的正交变换基底下,最好的m个变换系数,最多也只能保留mμ?s/L比例的能量。当mμ?s远小于L的时候,变换域截断几乎捕捉不到这些局部证据。

相干性*:衡量一个变换基底和原始空间基底之间"重叠程度"的数学指标,相干性越低,说明稀疏信号在变换域越分散。

翻译成人话就是:如果图片里有一个很小但很关键的细节,比如一张街景照片角落里一块指示牌,这类局部化的信息,在DCT这种全局性的变换里,会被摊薄到几乎所有频率系数上,单独截取任何几个低频系数都抓不住它。

这就是为什么Braco要在DCT主干之外,再单独开一条"空间残差"通道。

具体做法是用一个轻量级的打分器(类似TokenLearner的思路),在原始的空间token网格上生成若干个权重图,然后通过一种叫sparsemax的机制,让每个权重图聚焦在少数几个空间位置上,最后把这些位置的token加权求和,得到一个残差token。这个过程和DCT主干是并行进行的,互不干扰。

sparsemax*:一种类似softmax但会产生"稀疏"输出的归一化函数,也就是说大部分位置的权重会被压到0,只有少数关键位置保留非零权重。

论文的消融实验很直观地证明了这个设计的必要性。在9个token的预算下,纯DCT主干(不带残差,即c3s0)只有89.8%的准确率;纯残差通道(不带DCT主干,即c0s9)能到92.0%;而两者结合的c2s5配置达到93.2%,明显超过任何一个单独的分支。更关键的是,这个混合方案的计算成本和单独用残差通道几乎一样,并没有因为多了一个DCT主干而显著增加开销。

这可以类比成摄影里的"高低频分离"处理思路。一张照片可以拆成两部分:一部分是大范围的色调和光影变化(对应DCT保留的低频信息),另一部分是皮肤纹理、发丝这些细小锐利的细节(对应空间残差)。如果只做磨皮(相当于只保留低频),照片会显得平滑但失真,五官细节全没了;如果只保留细节而不管整体色调(相当于只保留残差),照片又会显得凌乱没有整体感。专业修图师的做法正是把这两层分开处理,再合成到一起,这样既保留了整体的舒适感,又不丢失关键的局部锐度。

七、把四步拼起来:一个完整的编码流水线

现在把这四个设计拼成一个完整的系统,就是Braco。

它的工作流程是:拿到原始的N×N视觉token网格后,先做2D DCT变换,保留一个C×C的低频区块作为骨干信息;然后给这个区块加上前面说的极坐标位置编码;接着根据骨干大小,判断是保留原始系数坐标还是切换成逆DCT的粗粒度网格坐标;最后,并行地用一个轻量打分器从原始空间网格里提取若干个稀疏残差token,补充局部细节。

总的token预算K被拆成两部分:K = Kb + Kr,Kb是骨干token数量(等于C的平方),Kr是残差token数量。论文里针对不同的总预算给出了具体配置:4个token时用1×1骨干加3个残差(c1s3),9个token用2×2骨干加5个残差(c2s5),16个token用3×3骨干加7个残差(c3s7),25个token用4×4骨干加9个残差(c4s9,这里骨干足够大,切换到了idct坐标)。

八、实打实的效果对比

理论说得再漂亮,最终还是要看实际跑分。

论文在LLaVA-1.5-7B这个经典的视觉语言模型基础上,替换掉原来的视觉接口,跟六种主流压缩方法在八个基准测试上做了对比,包括GQA、MMBench中英文版、MME、POPE、ScienceQA、TextVQA和MMVet。

结果显示,在25个token(相当于23倍压缩)、16个token(36倍压缩)、9个token(64倍压缩)这三档预算下,Braco在所有对比方法中都拿到了最高的综合准确率,分别是95.2%、94.0%、93.2%(相对于不压缩的576-token模型做归一化)。即使在4个token这个极端的144倍压缩场景下,Braco也做到了91.2%,只比表现最好的QueCC方法低0.2个百分点,但计算成本更低。

更值得关注的是压缩模块本身的开销。在16个token这一档,Braco的压缩器延迟只有1.073毫秒,而QueCC需要17.864毫秒,整整差了16.6倍;FLOPs方面Braco是1.389G,QueCC是109.504G,差了78.8倍。这意味着Braco不仅最终效果好,压缩这一步本身几乎不消耗额外资源。

这组对比数字揭示的差距,可以做一个具体的类比感受。假设QueCC的压缩过程像是每次都要开一次十几分钟的专项会议,才能决定该保留哪些信息;而Braco的压缩过程更像是走一道预先设定好的流水线,几乎不需要"临时开会讨论",直接按规则执行就能拿到差不多的结果。当你只需要处理一张图片,多花十几毫秒可能感觉不出来,但当你需要一秒钟处理成百上千张图片(比如批量处理监控画面或者文档扫描件),这十几倍的延迟差距就会被成倍放大。

论文还专门测试了更大输入规模下的表现。在Vicuna-7B配合2880个输入token(对应高分辨率图片切分成多个视图)的设置下,Braco把全流程FLOPs从40.57T压到3.45T,延迟从261.08毫秒降到44.36毫秒,同时保留98.1%的准确率。在换用更小的Qwen2.5-3B语言模型时,这个优势体现得更明显:QueCC的准确率从原本接近Braco的水平掉到了77.2%(729输入token场景),而Braco依然保持在93.1%。这暗示了一个有意思的现象,QueCC这类依赖"提示词条件"的压缩方法,在小语言模型上可能会因为提示理解能力较弱而表现打折,而Braco的方案完全不依赖提示词,所以更稳健。

论文还用三个不同随机种子重复训练验证了结果的稳定性,Braco在16和9个token上领先QueCC约0.24到0.27个百分点,标准差都在0.14以内,说明这不是偶然的实验波动。

主要实验结果对比(部分核心数据):

在25个token(23倍压缩)设置下,Braco综合准确率95.2%,是所有对比方法中最高的,同时保持1.37T的FLOPs和41.03毫秒的延迟。

在16个token(36倍压缩)设置下,Braco达到94.0%,超过学习式压缩方法QueCC的93.9%,但延迟只有40.59毫秒,远低于QueCC的63.22毫秒。

在9个token(64倍压缩)设置下,Braco为93.2%,同样领先所有对比方法,延迟40.22毫秒对比QueCC的62.79毫秒。

在压缩器成本对比中,Braco的模块延迟为1.073毫秒,FLOPs为1.389G,显著低于QueCC的17.864毫秒和109.504G。

Q&A

Q1:Braco是什么?

A:Braco是论文提出的一种轻量级视觉token压缩方法,全称对应"骨干-残差+基底+坐标",通过DCT变换截断、位置编码、坐标重组和空间残差四个步骤,把视觉语言模型的图片token数量压缩几十甚至上百倍,同时尽量保留识别准确率。

Q2:Braco和之前的token压缩方法相比优势在哪?

A:以往方法要么靠打分砍token容易漏掉关键信息,要么靠学习式重采样模块又增加了计算负担。Braco在16个token设置下延迟只有QueCC的六十分之一左右,FLOPs不到八十分之一,同时准确率还略高,兼顾了效果和效率。

Q3:DCT基底在Braco里起什么作用?

A:DCT能把图片信息的"能量"集中到少数低频系数上,实验显示保留32个token时DCT基底能保留约51%的能量,而普通空间排列只有约4%,让固定的截断规则也能有效保留关键信息。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-