多模态模型
ViT(Vision Transformer)
ViT(Vision Transformer) 是谷歌在 2020 年提出的突破性图像识别模型(论文名:《An Image is Worth 16x16 Words》)。
它的核心贡献在于:打破了计算机视觉(CV)领域由卷积神经网络(CNN)绝对统治的局面,直接将原本用于自然语言处理(NLP)的 Transformer 架构生搬硬套(几乎一字未改)地应用到了图像分类任务上,并且取得了超越经典 CNN 的效果。
ViT 的核心架构与工作流程
为了让擅长处理一维文本序列的 Transformer 理解二维图像,ViT 将图像进行了“文本化”处理。整个前向传播的流程如下:
1.图像切块与展平 (Patch Partition & Flattening):Step 1。
输入图像无法像文本那样直接输入。ViT 首先将一张宽高为 H × W 的图像,切分成一个个固定大小的图像块(Patches),比如 16 × 16 像素。如果图像是 224 × 224,就会被切成 14 × 14 = 196 个块。每个块被展平成一个一维向量。
2.线性映射与标量化 (Linear Projection of Flattened Patches):Step 2。
展平后的图像块通过一个线性变换层(Linear Layer),映射到指定的特征维度(Embedding Dimension),这一步就相当于 NLP 中的 Word Embedding,把图像块变成了 Visual Tokens。
3.引入 Class Token 与位置编码 (Position Embedding):Step 3。
- [class] Token:参考了 BERT 的做法,在所有图像 Token 最前面拼一个可学习的分类 Token。经过多层 Attention 交互后,该 Token 沉淀出的特征将直接用于最后的分类预测。
- Position Embedding:因为标准自注意力机制是“词序无关”的,ViT 为每个 Token 加上了一维的、可学习的位置编码,以此保留图像块之间的空间相对位置关系。
4.Transformer 编码器堆叠 (Transformer Encoder):Step 4。
拼好位置编码的 Token 序列进入标准的 Transformer Encoder。内部包含多头自注意力机制(Multi-Head Attention)和 MLP 块。由于自注意力机制的存在,任意两个图像块之间都可以直接计算相关性,具备全局视场。
5.MLP Head 分类输出:Step 5。
经过多层 Encoder 交互后,提取出第一个位置(即
[class] Token)对应的输出特征,送入全连接层(MLP
Head),最终预测出图像所属的类别(如 Bird, Ball, Car)。
为什么使用编码器而不是解码器
在 Transformer 架构中,选择使用 Encoder(编码器) 还是 Decoder(解码器),本质上是由注意力机制的方向性(Attention Directionality)和任务的本质(Task Nature)决定的。
1. 双向注意力 vs. 单向因果注意力
这是最根本的技术差异:
- Encoder 采用“双向自注意力”(Bi-directional Attention):序列中的任意一个 Token 都可以看到其他所有位置的 Token。对于图像而言,左上角的“猫头”和右下角的“猫尾”在空间上是并存的,它们之间需要进行自由的相互双向感知。
- Decoder 采用“因果掩码自注意力”(Masked/Causal Attention):为了能够预测下一个词,Decoder 强制引入了掩码,使得第 i 个位置的 Token 只能看到它前面的 Token,绝对不能“偷看”后面的 Token。
如果在 ViT 中使用 Decoder 会发生什么?
图像块(Patches)是被强行拉成一维序列输入的。如果使用 Decoder,排在序列前面的图像块(如图像顶部)就无法感知排在后面的图像块(如图像底部)。因为图像是一个二维的、并行的整体,它不具备文本那种天然的、从左到右的时间先后顺序(因果律)。强制使用单向掩码会人为地割裂图像的全局空间联系。
2. 特征理解(Understanding) vs. 自回归生成(Generation)
两者的架构设计是为了服务完全不同的使命:
Encoder 的使命是“压缩与理解”:
它的目标是将输入的完整信息(如整张图片或整段话)进行深度的特征抽取与融合,最终在顶层沉淀出一个高质量的特征向量(例如 ViT 中的
[CLS]Token)。这个向量包含了全局的上下文信息,非常适合下游的分类、检测、分割等“理解型”任务。Decoder 的使命是“预测与生成”:
它的设计是为了自回归(Autoregressive)地输出一个序列——根据已有的信息,一个词一个词地往后“吐”(如 LLM 的文本生成)。它不需要一次性理解全部输入来做单次分类,而是需要维持“前因后果”的生成闭环。
3. 图像的高冗余性需要全局视野
文本是高度人工抽象化的符号,信息密度极高;而图像是高维、高冗余的信号(比如连续好几个图像块可能都是同一片蓝天)。
处理图像时,模型迫切需要大刀阔斧地进行全局对比和信息凝练。Encoder 的全局无死角注意力机制,能够用最短的路径(只需一层 Attention)建立起全图任意两点之间的关联,从而高效地剔除冗余,把整张图的能量集中到核心目标特征上。
多模态大模型的来时路
原生多模态 vs 拼接多模态
❶ 拼接流派(代表:LLaVA、Qwen-VL、InternLM-XComposer)
1 | [图片] ┐ |
1.图片经过一个独立的“Vision Encoder”(视觉编码器,通常用 CLIP,参数量约 3B 左右)提取出视觉特征。
2.这些特征穿过中间那个黄色的“Connector”(连接器/投影层,通常就是一个简单的 MLP 线性层),被强行翻译成文本大模型能听懂的“视觉代号(Visual Tokens)”。
3.随后,这些视觉代号和你的文字提示词(Text Tokens)拼在同一排,一起送进最后那个巨大的“Large Language Model”(大语言模型,如 Llama,参数量通常为 7B、13B 或更大)。
为什么这种架构天生容易产生“物体幻觉”?
- 地位不对等: 在这个架构里,最后的 LLM 是绝对的主宰,它拥有 90% 以上的参数量和绝对的“话语权”。
- 信息的深层稀释: 视觉信号只在最开始输入时露了个脸。当模型自回归地一个字一个字往下生成时,随着文本越写越长,自注意力机制(Self-Attention)的焦点会不可避免地向左移——也就是疯狂关注自己前面刚说过的文字(Over-Trust 偏置),而最左边的视觉代号在层层传递中被严重稀释。最终,模型体内的语言先验(肌肉记忆)战胜了视觉,导致闭眼瞎编。
❷ 原生流派(代表:GPT-4o、Google Gemini、Chameleon)
1 | [图片] ┐ |
注意看输入端,它没有相互独立的“视觉视觉编码器”和“文本编码器”,而是图片和文本在最底层就一起进了一个“Unified Tokenizer(统一分词器)”。
在这里,图片不再是被提取特征后“嫁接”过来的外来物。像素信号和文字信号在出生(预训练)的第一天起,就被切成了同等地位的代号,手拉手一起送进底部的“Unified Backbone(统一主干网络)”。
qwen3vl与qwenvl
Qwen-VL 更像是 CLIP式视觉编码器 + 一个浅桥接层 + 文本LLM; Qwen3-VL 已经变成了 原生长上下文/视频友好的统一多模态架构,视觉侧和语言侧耦合得更深。
Qwen3-VL 属于“组合式架构”(Compositional Architecture),而非通过单一 Transformer 从零训练的“原生”模型;但从能力表现和训练深度上看,它实现了“原生级”的融合体验。Qwen3-VL 采用了经典的三模块架构:
• 视觉编码器 (Vision Encoder):基于 SigLIP-2。 ▪ We utilize the SigLIP-2 architecture ▪ NaViT: native resolution
• 视觉-语言融合层 (Merger):基于 MLP(多层感知机)。 ▪ As in Qwen2.5-VL, we use a two-layer MLP to compress 2 × 2 visual features from the vision encoder into a single visual token, aligned with the LLM’s hidden dimension. ▪ 16 * 16 => 32 * 32
• 大语言模型 (LLM):基于 Qwen3。
虽然架构是组合的,但报告中提到它“原生支持交错上下文(natively supports interleaved contexts)”。这里的“原生”更多是指功能层面——它能够像处理文本一样自然地处理图文混排、视频流,并支持 256K 超长上下文)。
Qwen3-VL 的团队明确提出了一种“分而治之 (divide-and-conquer)” 的策略。
• 先分别开发最强的视觉感知能力(SigLIP-2)和语言推理能力(Qwen3)。 • 然后再通过协同的方式将它们集成。这与“从零开始就在一起训练”的原生路径在理念上有本质区别。
Qwen3-VL 意识到了“组合式架构”的潜在弱点:如果只把视觉编码器的最终输出给 LLM,可能会丢失细节。(不同于以往将所有视觉 token 仅输入到 LLM 输入层的做法,Qwen3-VL 的 DeepStack 抽取视觉编码器(ViT)的中间层特征,并将其注入到 LLM 的特定层中。)
• 解决方案(DeepStack):它不只是“看”一眼(only input),而是把视觉编码器不同层级(从浅层纹理到深层语义)的特征都提取出来,注入到 LLM 的不同层中。 ▪ DeepStack 采用的是残差连接(Residual Connections)的方式。 ▪ 它将视觉特征直接“加”到 LLM 内部隐藏状态(Hidden States)上,而不是拼接到序列的开头或结尾。因此,对于 LLM 来说,处理的 Seq Length 保持不变。
视觉编码器
Qwen-VL:
- 视觉编码器直接用的是 OpenCLIP ViT-bigG 初始化,属于比较典型的“拿一个现成强视觉塔接到 LLM 上”的路线。
- 论文写得很明确:图像先被 resize 到固定分辨率,ViT 以 stride 14 切 patch,再输出视觉特征;随后通过一个单层、随机初始化的 cross-attention adapter,把整张图的视觉序列压到固定 256 个 token,再送进 LLM。
Qwen3-VL:
- Qwen3-VL 的视觉编码器,不只是“把图变成 token”的普通 ViT,而是一个原生支持 image + video、动态分辨率、并且能导出多层视觉特征的视觉前端。
- 重点有 4 个。
- 它原生支持视频,不只是图片。 官方配置里有 temporal_patch_size=2,实现里整个视觉网格都按 grid_thw 处理,也就是 time / height / width 三维,而不是传统单图的二维网格。 这说明它的视觉编码器从一开始就是按“时空输入”设计的。
- 它支持动态分辨率,不走“固定 256 视觉 token”那种老路。 官方 README 直接写了:Qwen3-VL 的单图视觉 token 预算可以在 256-1280 之间,并提到 compression ratio is 32。 配置里还有 spatial_merge_size=2,说明它会在视觉侧做空间合并来控制 token 数量。 这和 Qwen-VL 那种“adapter 固定压成 256 个 token”差别很大。
- 它不是只用最后一层视觉特征,而是显式保留多层特征。 配置里有 deepstack_visual_indexes = [8, 16, 24];实现里会在这些层取特征,再经过额外的 deepstack_merger 输出。 这意味着视觉编码器不是“最后吐一层 hidden state 就完事”,而是把中层、深层信息都保留下来,供后面 DeepStack 融合。
- 它的视觉位置建模也更复杂,适合变分辨率输入。
从实现看,视觉编码器里同时用了:
- 基于网格的可插值 pos_embed
- 基于 position_ids 的视觉 rotary embedding 这不是简单“固定尺寸图片 + 固定位置表”的做法,而是为了适配不同 T/H/W 网格。
- README 里还写了 DeepStack 会融合多层 ViT 特征;视觉 token 也不是固定 256,而是按分辨率动态分配,单图 token 预算可在 256-1280 之间,视频还会有额外时间压缩。
多模态架构
Qwen-VL 的多模态架构特点:
- 结构是三段式:LLM + Visual Encoder + Position-aware Adapter。
- 视觉信息先被单独编码,再被 adapter 压成固定长度,最后以
… 形式插到语言序列里。
- 它支持多图交错输入,但从架构本质上看,还是“先视觉编码,再注入语言模型”的老式桥接范式。
- 位置建模主要是 adapter 里加了 2D absolute positional encoding,重点是别在压缩时把位置信息丢太多。
Qwen3-VL 的多模态架构特点:
- 它把“交错多模态上下文”当成一等公民,原生支持 text + image + video 的统一长上下文,论文里给的是 256K。
kimivl
Kimi-VL 的 MLP(看新图中的
Vision Encoder -> MLP -> LLM 链路):
它是位于大语言模型(LLM)之外的。它扮演的是跨模态适配器(Connector)*的角色。
视觉编码器(Vision Encoder)提取出的图像特征维度(例如 1024
维),大语言模型根本无法直接识别。这个 MLP
的物理位置处于视觉模块与语言模块的交界处,其作用是进行*模态间的对齐与维度转换(将视觉空间几何映射到文本
Token 嵌入空间)。
gemini
▪ 没有分阶段:Gemini不是先训练一个纯文本的LLM,再用多模态数据进行第二阶段的微调。而是从预训练的第一天开始,就在同时学习所有模态。
▪ 统一的Transformer核心:如图2所示,所有模态的输入(文本token、图像帧、音频特征)都被转换成一个统一的向量序列,然后被送入同一个Transformer解码器进行处理。
▪ 联合训练带来的深远影响 ○ 统一的内部表示空间 (Unified Representation Space):由于从头开始联合训练,Gemini的神经网络权重被迫去学习不同模态之间的深层关联。它不是为图像信息在已有的文本“世界观”里“找个位”,而是构建了一个统一的、可以同时容纳和关联视觉、听觉、语言概念的内部世界。 ○ 实现真正的跨模态推理 (Deep Cross-modal Reasoning):因为底层表示是统一的,Gemini可以进行更复杂的推理。