
优雅谈大模型:DeepStack是什么? 原创
当Qwen3-VL发布,一项名为DeepStack的技术浮出水面。今天就跟随着小编一起来看看这项技术是否有过人之处。想象你在欣赏一幅画作。你的视线会从画布的纹理质感,游移到人物的表情神态,最后领会整幅画的意境氛围。这是一个自然而连贯的多层次认知过程。然而,传统的AI视觉模型却像是望远镜看画——只能看清远处的整体轮廓,却丢失了笔触、色彩过渡等近处的细腻之处。DeepStack的出现,正是尝试弥补这一缺憾。
1.传统视觉语言模型
在DeepStack诞生之前,主流的视觉语言模型如GPT-4V、LLaVA、Qwen-VL等都采用类似的架构:先用视觉编码器提取图像特征,再将这些特征输入语言模型生成描述。
以LLaVA-1.5为例,这个开源模型使用CLIP的视觉编码器处理图像。CLIP本身是一个多层神经网络,包含12到24层不等的Transformer层。每一层都在提取不同抽象程度的特征:早期层捕捉边缘和纹理,中间层识别形状和部件,最后几层则形成高层语义概念。但LLaVA只使用了CLIP最后一层的输出,就像读书只看总结,所有过程中的细节都被舍弃了。
当让模型描述一张包含小字的图片时,它往往无法识别文字内容;当图像中有细微的纹理差异时,模型容易混淆;要求模型精确定位"图片左上角第三个按钮"这类细节时,它常常无能为力。根源就在于:细节信息在视觉编码器的早期层,而这些信息从未传递给语言模型。
类似的问题也出现在InternVL、MiniGPT-4等开源模型中。尽管它们在整体语义理解上表现出色,但在需要细粒度视觉信息的任务上,表现始终受限。
2.ViT的技术秘诀
要理解DeepStack的创新,需要先深入了解Vision Transformer(ViT)这个关键组件。ViT由Google在2020年提出,现在已成为视觉AI的基础架构,被广泛应用于CLIP、DINO、DINOv2等知名开源模型中。
ViT的核心思想是将图像处理问题转化为序列处理问题。它首先把一张图片(比如224×224像素)切割成固定大小的小块(通常是16×16像素),这样一张图就被分解成196个小块。每个小块经过线性变换后成为一个"token",就像文本中的一个词。然后,这196个token被送入多层Transformer进行处理。ViT的魔力在于它的层级处理机制。以DINOv2为例,这个Meta开源的自监督视觉模型包含24层Transformer。
研究表明,不同层关注的内容截然不同:
- 浅层(第1-6层)专注于低级视觉特征。在这些层中,模型学习识别边缘方向、颜色对比、简单纹理。如果你可视化这些层的激活图,会看到类似边缘检测器的效果。这些特征是视觉理解的基石。
- 中层(第7-16层)开始组合这些低级特征,形成更复杂的模式。这里能识别出物体的部件——车轮、窗户、树枝、眼睛。这些层开始理解形状和空间关系,但还没有达到"物体"级别的抽象。
- 深层(第17-24层)进行高层语义抽象。在这里,分散的部件被整合成完整的概念——"汽车"、"树木"、"人脸"。这些层的输出已经非常抽象,包含的是物体类别、场景类型等语义信息,但代价是丢失了大量的细节信息。
这种层级结构不是设计出来的,而是通过训练自然涌现的。无论是有监督训练的ViT,还是自监督训练的DINO,都表现出这种从具体到抽象的渐进特性。这恰恰反映了视觉认知的本质:理解图像需要在多个抽象层次上同时工作。
3.LLM的技术秘诀
如果说ViT是分层理解图像,那么大型语言模型(LLM)同样是分层理解文本的。这一点常被忽视,但对理解DeepStack至关重要。
以Llama-3为例,这个Meta开源的语言模型有32层Transformer。每一层都在不同的抽象级别上处理语言信息,就像ViT处理视觉信息一样。
- 浅层(第1-8层)处理基础语言现象。这些层负责识别词性、理解词形变化、掌握基本语法规则。如果输入"cats",浅层会识别这是"cat"的复数形式;如果输入"running",会理解这是"run"的现在分词。这些层就像语言的"边缘检测器",处理最基础的语言构件。
- 中层(第9-16层)开始理解句法结构和局部语义。这里能分析出主谓宾结构、识别短语边界、理解简单的指代关系。如果输入"The cat that sat on the mat was gray",中层能理解"that sat on the mat"是修饰"cat"的定语从句,"gray"是描述猫的颜色。
- 中深层(第17-24层)进行语义理解和推理。这些层调用世界知识,进行常识推理,理解隐含信息。如果输入"虽然下雨了,他还是去了公园",这些层能推断出:下雨通常让人不想出门,"虽然...还是"表示意志坚定,他可能有重要的理由去公园。
- 深层(第25-32层)负责全局理解和生成决策。这些层把握整体意图、判断文本风格、规划生成策略。它们决定着模型如何回应用户,应该生成什么样的内容。
这种层级划分已经被大量的"探针实验"(probing experiments)证实。研究者们会冻结模型的某一层,然后测试它在特定任务上的表现。结果显示:语法任务在浅层表现最好,语义任务在中层表现最好,推理任务在深层表现最好。
像Mistral、Qwen、Gemma这些开源语言模型,尽管架构细节不同,但都展现出类似的层级特性。这不是偶然,而是语言理解本身的层次性在神经网络中的体现。
4.DeepStack的核心思想
DeepStack的核心思想可以用一句话概括:让视觉编码器的每一层,与语言模型的对应层进行对话。传统方法只用ViT的最后一层输出,相当于只把"猫"这个抽象概念告诉语言模型。DeepStack则从ViT的多个层提取特征,分别注入到语言模型的不同层。这就像给语言模型提供了一份"多层次的视觉报告":
- ViT浅层的特征(边缘、纹理)注入到LLM浅层
- ViT中层的特征(形状、部件)注入到LLM中层
- ViT深层的特征(语义、概念)注入到LLM深层
为什么这样做有效?因为它遵循了一个优雅的原则:层级对齐。
当LLM的浅层在处理基础语法时,它同时接收到ViT浅层的视觉细节。这些细节信息(边缘、纹理、小字符)对应着语言中的"词"和"字"级别的理解。比如识别图片中的文字,就需要这种细粒度的视觉信息与字符级的语言理解配合。
当LLM的中层在分析句子结构时,它接收到ViT中层的物体部件信息。这些中等抽象的视觉特征(轮廓、形状)对应着语言中的"短语"和"句子成分"。比如描述"左上角的红色按钮",需要空间关系、颜色、形状等中层特征支撑。
当LLM的深层在进行语义理解时,它接收到ViT深层的高层概念。这些抽象的语义信息(物体类别、场景类型)对应着语言中的"主题"和"意图"。比如判断"这是一张自然风景照",需要的是整体性的语义理解。
这种对齐不是简单的拼接,而是通过残差连接(residual connection)实现的深度融合。具体来说,在LLM的第k层,模型不仅处理来自前一层的文本信息,还会接收来自ViT对应层的视觉token。这些视觉token通过加法运算融入LLM的隐藏状态,参与后续的计算。
在前向传播过程中,当图像进入ViT时,模型会在预设的检查点层保存输出。这些输出都是形状为(196, embed_dim)的张量。其中196是图像patch的数量,embed_dim是特征维度(通常是768或1024)
这些保存的特征会在LLM的对应层被调用,融合方式如下:
LLM第k层的输出 = LLM第k层处理文本的结果 + ViT对应层的视觉token
这个加法操作看似简单,实则蕴含深意。它通过残差连接的方式,让视觉信息能够"插入"到语言模型的信息流中,而不是生硬地拼接在输入端。
5.DeepStack的技术实现
DeepStack的实现比许多人想象的要简单,最核心的问题是:如何决定ViT的哪一层对应LLM的哪一层?答案是等间距映射。
假设ViT有24层,LLM有32层,想从ViT中采样4个检查点层。那么:
从ViT中选择第6、12、18、24层,分别映射到LLM的第8、16、24、32层
映射规则很简单:LLM层索引 = (LLM总层数 / 采样层数) × 采样序号
这种均匀分布的策略确保了各个抽象层次的信息都被覆盖,不需要复杂的学习算法来决定映射关系。在Qwen3-VL的实现中,这个映射是固定的,模型训练过程会自动学习如何最好地利用这些多层特征。
DeepStack的训练是端到端的。整个模型(ViT + 投影层 + LLM)一起训练,损失函数是标准的语言建模损失——预测下一个token。关键在于,反向传播的梯度会流经所有注入点,这意味着:ViT的每一层都会收到来自LLM多个层的梯度信号。
DeepStack的理论优雅性最终要体现在实际效果上。在多个开源基准测试上,采用DeepStack的Qwen3-VL展现出明显的优势。
在OCR(光学字符识别)任务上,DeepStack的优势尤为明显。传统的视觉语言模型在识别图片中的小字、模糊文字或艺术字体时常常失败,因为这些信息在ViT的深层早已被抽象掉了。而DeepStack通过浅层特征注入,让模型能够访问原始的纹理和边缘信息,大幅提升了文字识别的准确率。
在TextVQA数据集上,Qwen3-VL的表现超越了同等规模的LLaVA和InternVL模型。更重要的是,这种提升不需要专门的OCR模块,完全是通过更好的视觉-语言对齐实现的。
"描述图片左上角的物体"——这类涉及空间关系的任务对视觉语言模型是个挑战。空间信息在ViT的中层表示得最清晰,而传统方法忽略了这些中层特征。DeepStack通过中层特征注入,让模型能够更准确地理解和描述空间位置。在RefCOCO系列数据集上(专门测试指代表达理解的基准),DeepStack架构展现出更强的定位能力。模型不仅能识别"红色的杯子",还能理解"左边那个红色的杯子"这种包含空间关系的复杂指代。
DeepStack的优势在视频理解任务上更加突出。视频本质上是时空序列,既需要理解每一帧的细节,又需要把握整体的叙事。多层特征注入让模型能够同时处理这两个层次:浅层特征帮助追踪快速的运动细节,深层特征理解长期的动作意图。
结合Qwen3-VL的另外两项技术——Interleaved-MRoPE(多维旋转位置编码)和Text-Timestamp Alignment(文本-时间戳对齐),DeepStack使模型能够精确定位"视频第23秒出现的物体",或者回答"红衣服的人在第几秒离开画面"这类细粒度问题。
即便在不特别需要细节信息的任务上,DeepStack也带来了整体性能提升。原因在于,多层特征提供了更丰富的信息,让语言模型有更多的"线索"来理解图像。这就像给盲人描述一幅画,提供的细节越多,他脑海中的画面就越清晰。
6.其他类似的技术
DeepStack并不是唯一尝试改进视觉-语言对齐的技术,BLIP-2是Salesforce开源的经典视觉语言模型,它使用一个名为Q-Former的额外模块来处理视觉特征。Q-Former接收ViT的最后一层输出,通过可学习的查询向量(query vectors)提取最有用的信息,然后输入到LLM。
这个设计的优点是灵活性——Q-Former可以学习提取任意类型的信息。但缺点也明显:它仍然只使用ViT的最后一层,细节信息已经丢失;额外的模块增加了模型复杂度和训练难度。
DeepMind的Flamingo采用了交叉注意力(cross-attention)机制,让LLM的每一层都可以"查询"视觉特征。这是一个强大的机制,允许灵活的视觉-语言交互。但交叉注意力的计算成本很高,因为每个LLM层都要与所有视觉token进行注意力计算。这在处理高分辨率图像或长视频时成为瓶颈。、
LLaVA系列模型采用最简单的方法:用一个线性层或浅层MLP将ViT的最后一层输出投影到LLM的输入空间。这种方法简单高效,也是为什么LLaVA能够快速迭代的原因。LLaVA-1.5、LLaVA-NeXT等模型在细节理解任务上的表现始终不如采用更复杂对齐机制的模型。它们通过增大ViT规模、提高图像分辨率来弥补,但这只能部分缓解问题。
尽管DeepStack是一项重要创新,但它也有自己的局限。首先是计算成本。从ViT的多个层提取特征并保存,确实增加了内存使用和计算量。虽然这个增加相对可控(只在前向传播时多保存几组张量),但在处理超高分辨率图像或超长视频时,累积效应不容忽视。
其次是映射策略的简单性。当前的等间距映射虽然优雅,但可能不是最优的。不同的任务可能需要不同的层级对齐策略——OCR任务可能更需要浅层特征,而场景理解任务可能更依赖深层特征。固定的映射策略无法动态适应。
再者是可解释性的挑战。虽然理论上知道各层在做什么,但很难精确验证每个注入点的具体作用。模型的黑盒特性在DeepStack中进一步加深。
后续还有很多有趣的研究方向,例如自适应层选择可能是一个有前景的方向。与其固定采样ViT的哪些层,可以让模型根据输入动态决定。比如,对于包含小字的图像,自动增强浅层特征的权重;对于需要整体理解的场景图像,提升深层特征的权重。或者层级权重学习也值得探索。目前所有注入层的贡献是平等的,但实际上某些层的特征可能更重要。可以引入可学习的权重参数,让模型自动调整各层的相对重要性。
DeepStack更多的代表了一种思考方式的转变。在大模型时代,不应满足于"能用"的方案,而要追问:模型真的"理解"了吗?如果没有,瓶颈在哪里?DeepStack对这些问题给出了自己的答案,也为后来者指明了方向。
本文转载自鲁班模锤,作者:祝融
