本文聊聊多模态大模型(MLLM)里那个最关键的”眼睛”——视觉编码器——是怎么一步步从 ViT 走到 SigLIP 的。我们会讲清楚每个技术为什么出现、解决了什么问题、又留下了什么遗憾。关于”为什么 LLaVA 不直接用 ResNet”或者”CLIP 和 SigLIP 到底差在哪”,这篇文章应该能给一个完整脉络。
2020:ViT 证明了一件事——图像不需要卷积
2020 年 10 月,Google Research 发布了一篇标题极具挑衅性的论文:An Image is Worth 16×16 Words(Dosovitskiy et al., 2020)。这篇论文做的事情很简单粗暴:把一张图片切成 16×16 的小块(Patch),每块当作一个 Token,扔进标准的 Transformer Encoder,就完了。
在此之前,视觉领域是 CNN 的天下。从 AlexNet 到 ResNet,卷积神经网络统治了将近十年。CNN 有两个根深蒂固的归纳偏置:局部性(相邻像素关系更紧密)和平移不变性(猫在左上角和右下角是同一个猫)。这些偏置让 CNN 在小数据集上表现很好,但也像一副有色眼镜——模型永远在用”局部窗口”看世界。
值得一提的是,CNN 时代有一个著名的发现:微软研究院在 2015 年训练 56 层的网络时,发现它的训练误差和测试误差都比 20 层的网络更差——不是过拟合,而是更深层的网络反而更难训练。这催生了残差连接(Residual Connection):让信息可以通过一条”捷径”直接跳过中间层传到后面,解决了深层网络的退化问题。ViT 的 Transformer Encoder 每一层内部都内置了残差连接,这使得堆叠几十甚至上百层成为可能。可以说,没有残差连接,就没有后来 ViT-Base(12层)、ViT-Large(24层)、ViT-Huge(32层)的递进式扩展。
ViT 把 CNN 的有色眼镜摘了。它用全局自注意力取代了卷积,每个 Patch 都能直接”看到”图片里的所有其他 Patch。代价是什么?计算量是序列长度的平方 $O(N^2)$,而且缺乏归纳偏置,在数据量不够大的时候反而不如 CNN。原论文的结论很诚实:只有在 JFT-300M 这样的超大数据集上预训练后,ViT 才能全面碾压 CNN。
打个比方:CNN 像一个用放大镜逐块检查壁画的考古学家,每看一小块就记录一次;ViT 则像退后三步、一览全局的鉴赏家——但前提是他面前的壁画得足够多、足够丰富,不然他反而不知道该看哪里。
ViT 的意义远不止一个新模型
ViT 的真正价值不在于”比 ResNet 高了几个点”,而在于它证明了 Transformer 架构可以成为视觉的通用语言。在 ViT 之前,NLP 和 CV 用的是两套完全不同的架构。ViT 之后,大家开始意识到:也许我们可以用同一种架构同时处理图像和文本。
需要澄清一个常见的混淆:ViT 是一种架构(怎么把图像变成向量),而后面要讲的 SigLIP 是一种训练范式(怎么训练这个架构让它跟语言对齐)。SigLIP 的视觉编码器就是 ViT——架构没变,变的是训练方法。就像同一辆车,装了不同的镜头,看到的世界就完全不同。理解这一点,才能理解为什么”从 ViT 到 SigLIP”并不是一条替代链,而是一条从”怎么看”到”看什么”的进化线。而正是 ViT 证明了 Transformer 可以成为视觉的通用语言,才直接催生了后面全部的故事。
论文: An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale,Dosovitskiy et al., ICLR 2021。arXiv: 2010.11929(2020.10.22)
2021 年初:两条路线几乎同时出发
2021 年 2 月到 3 月,在不到两个月的时间里,两篇论文先后出现在 arXiv 上,分别代表了”视觉 Transformer + 语言”的两种截然不同的思路:
- 2021.02.05:ViLT(Kim et al.)—— 把图像和文本的 Token 拼在一起,用一个 Transformer 统一处理
- 2021.02.26:CLIP(Radford et al., OpenAI)—— 图像和文本各用一个 Transformer,通过对比学习把它们拉到同一个语义空间
它们几乎同时出现并非巧合。2020 年底,ViT 已经证明 Transformer 能处理图像,GPT-3 证明了大规模预训练的威力,接下来自然而然的问题就是:怎么把视觉和语言结合起来?
ViLT:最朴素的融合尝试
ViLT 的全称是 Vision-and-Language Transformer(Kim et al., ICML 2021)。它的思路直觉上非常自然:既然 Transformer 既能处理图像 Token 又能处理文本 Token,那为什么不直接把它们拼在一起?
在 ViLT 之前,多模态模型(比如 VilBERT、LXRT)的做法是用一个预训练好的目标检测器(Faster R-CNN)从图片里提取出”区域特征”——先识别出”这里有一只猫””那里有一张桌子”,然后把这些区域特征和文本一起送进 Transformer。这个方案有个致命问题:Faster R-CNN 本身就很大、很慢,而且它需要预先在目标检测数据集上训练,整个流程极其笨重。
ViLT 砍掉了这个检测器。它用 ViT 的 Patch Embedding(一个简单的线性层)直接从原始图像中提取视觉 Token,然后把视觉 Token 和文本 Token 拼接成一个长序列,送入单个 Transformer。训练目标也很直白:掩码语言建模(MLM)和图文匹配(ITM)。
效果呢?推理速度比基于区域特征的模型快了 60 倍以上。这个数字在当时相当惊人。
但 ViLT 遇到了一个结构性的瓶颈。图像被切成 14×14 = 196 个 Patch,加上一段文本的 Token,整个序列长度轻松突破 200。Transformer 的 $O(N^2)$ 复杂度意味着注意力计算量随序列长度急剧膨胀。更麻烦的是,196 个 Patch 只能覆盖 224×224 的分辨率——稍微复杂一点的图表、带有小字的文档图片,对 ViLT 来说就是一片模糊。
打个比方:ViLT 就像让一个人同时阅读一本书的文字和盯着一幅画,然后试图在脑子里把它们”对齐”。这在信息量不大的时候能行,但一旦文字变长、图片变复杂,脑子就不够用了。
ViLT 今天已不再是主流 MLLM 的选择,但它提出了一个正确的问题:我们能不能用统一的架构处理多模态信息? 这个问题后来被 LLM 用另一种方式回答了。
论文: ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision,Kim et al., ICML 2021。arXiv: 2102.03334(2021.02.05)
CLIP:先对齐,再理解
CLIP 的全称是 Contrastive Language-Image Pre-training(Radford et al., OpenAI, 2021)。如果说 ViLT 的思路是”把图文塞进一个模型硬融”,那 CLIP 的思路就是”别急着融合,先让图像和文本学会说同一种语言”。
CLIP 的架构是经典的双塔结构:一个 Image Encoder(通常是 ViT)负责把图片编码成一个向量,一个 Text Encoder(Transformer)负责把文本编码成一个向量。训练目标极其简洁——在一个 Batch 里,让匹配的图文对的余弦相似度尽量高,不匹配的尽量低。这就是所谓的对比学习(Contrastive Learning)。
$$ \mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \log \frac{\exp(sim(I_i, T_i)/\tau)}{\sum_{j=1}^{N} \exp(sim(I_i, T_j)/\tau)} $$
CLIP 真正让人震惊的不是架构,而是数据和能力。OpenAI 从互联网上收集了 4 亿个图文对(WebImageText),用这个数据集训练出来的模型展现出了前所未有的 Zero-shot 能力:你只需要给它一个文本描述,它就能判断图片里有没有对应内容——完全不需要任何微调。
想象一下:你是一个从未见过猫的人,但有人告诉你”这种毛茸茸的四条腿动物叫猫”。下次你再看到类似的东西,你就能认出来——尽管从来没有人手把手教过你。这就是 Zero-shot 的魔力,而 CLIP 之所以能做到这一点,是因为它在 4 亿个图文对上学到了一个通用的”视觉-语言联合词典”。
CLIP 的软肋
但 CLIP 有一个根本性的局限:它只学到了”全局语义对齐”。它知道”这张图里有猫”,但不知道”猫在桌子左边”或”猫是黑色的、正在睡觉”。这是因为双塔架构在预训练阶段只做了向量级别的匹配,没有做 Token 级别的细粒度交互。
另外,CLIP 的损失函数用的是 Softmax(InfoNCE),计算依赖一个 $N \times N$ 的相似度矩阵。在多机分布式训练时,必须做 All-Gather 通信来聚合整个 Batch 的负样本。Batch Size 越大,通信开销越大,扩展性越来越差。CLIP 原论文用了 32,768 的 Batch Size——这已经是工程上的极限了。
尽管如此,CLIP 开创了一个范式:先对齐,再融合。具体来说,先用对比学习把视觉特征和语言特征映射到同一个语义空间(对齐),然后再通过一个轻量级的投影层送进 LLM 做更精细的理解(融合)。现代多模态大模型几乎全部沿用了这个思路。
论文: Learning Transferable Visual Models From Natural Language Supervision,Radford et al., ICML 2021。arXiv: 2103.00020(2021.02.26)
2023:SigLIP 换了一根引线
2023 年 3 月,Google Research 的 Zhai、Beyer 等人发表了 Sigmoid Loss for Language-Image Pre-training(简称 SigLIP)。这篇论文做的事情用一句话概括就是:保留 CLIP 的全部架构,只换掉损失函数。
把 Softmax 换成了 Sigmoid。
就这么简单?就这么简单。但效果是颠覆性的。
为什么换一个损失函数就能有这么大区别?
CLIP 的 Softmax 损失是一个多分类问题:对于每张图片,要从整个 Batch 的所有文本中找到唯一匹配的那一个。这意味着分母必须遍历所有负样本,也就是必须知道整个 Batch 的全局信息。
SigLIP 把它变成了 $N \times N$ 个独立的二分类问题:对于每一对(图片, 文本),只需要判断”它们配不配”。配就标 1,不配就标 0,用 Sigmoid 函数(本质上是二分类的交叉熵损失):
$$ \mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{N} \left[ y_{ij} \log(\sigma(z_{ij})) + (1-y_{ij}) \log(1-\sigma(-z_{ij})) \right] $$
关键区别在于:每个”配不配”的判断是局部独立的。不需要等所有卡上的数据汇总在一起才能算出分母。这意味着在分布式训练中,各卡可以各算各的,最后只需要同步梯度——通信开销大幅降低。
继续用考试的比喻:CLIP 像是一场全校统考,每道题的答案必须跟全年级所有人的答案做比较才能打分,年级越大(班级越多)打分越慢。SigLIP 像是每个班的老师只负责判断自己班的卷子配不配对,互不干扰,最后汇总。后者天然适合并行,班级数量可以轻松扩大。
实际效果是什么?在同等算力下,SigLIP 的 Zero-shot ImageNet Top-1 准确率比 CLIP 高约 2-3 个百分点。换一种说法:达到同等性能,SigLIP 所需的训练计算量大约只有 CLIP 的一半到六成。
不只是效率,还有质量
SigLIP 的 Sigmoid 损失还有一个容易被忽视的优势:它对”难负样本”的梯度更稳定。什么是难负样本?就是那些看起来很像正例但实际上是负例的样本——比如一张金毛猎犬的图片配文本”拉布拉多”。在 Softmax 框架下,这类样本的梯度信号容易被其他”简单负样本”淹没(因为 Softmax 的分母要照顾所有负样本的贡献)。而在 Sigmoid 框架下,每一对样本的损失是独立计算的,难负样本能得到更充分的梯度信号。
这直接导致 SigLIP 学到的视觉特征与文本空间对齐得更精细。对于多模态大模型来说,这意味着视觉编码器输出的特征质量更高,后续 LLM 处理起来更轻松。
SigLIP 的具体实践
Google 开源的 SigLIP 权重中,最广泛使用的是 SigLIP-SO400M/14-384——一个 4 亿参数、Patch 大小为 14、输入分辨率为 384 的 ViT 模型。它在 WebLI 数据集(约 100 亿图文对,多语言)上训练,质量远超同规模的原版 CLIP。
论文: Sigmoid Loss for Language-Image Pre-training,Zhai et al., ICCV 2023 Oral。arXiv: 2303.15343(2023.03.27)
为什么 SigLIP 能成为事实标准?
到 2024 年,几乎所有新发布的顶级多模态大模型都转向了 SigLIP 作为视觉编码器。这不是跟风,而是工程上的理性选择。
公开使用 SigLIP 的多模态大模型
以下是我们目前能找到的公开文档中明确标注使用 SigLIP 作为视觉编码器的代表性模型:
| 模型 | 机构 | SigLIP 变体 | 备注 |
|---|---|---|---|
| PaliGemma / PaliGemma 2 | Google DeepMind | SigLIP-So400M/14 | Google 自家模型,自然首选 SigLIP |
| Idefics2 / Idefics3 | HuggingFace | SigLIP-SO400M/14 | 经过系统性对比后选择了 SigLIP |
| LLaVA-NeXT(部分配置) | UW-Madison / ByteDance | SigLIP-SO400M/14 | 提供 CLIP-ViT-L 和 SigLIP 两种配置 |
| Phi-3-Vision | Microsoft | SigLIP-SO400M/14 | 微软的小型多模态模型 |
| Moondream2 | 开源社区 | SigLIP-SO400M/14 | 轻量级多模态模型 |
| Qwen2-VL / Qwen2.5-VL | 阿里巴巴 | SigLIP 相关变体 | Qwen 系列的视觉底座 |
另外值得注意的是,Google 的 Gemini 系列虽然闭源,但考虑到开发 SigLIP 的就是同一个团队(Zhai、Beyer、Kolesnikov 等人),业内普遍推测 Gemini 使用了 SigLIP 或其内部变体作为视觉编码器。
SigLIP 胜出的三个核心原因
第一,特征质量更好。 前面提到 Sigmoid 损失对难负样本的梯度更稳定,这让 SigLIP 的视觉特征空间与语言空间对齐得更精细。对于多模态大模型来说,视觉编码器输出的特征就像是”原材料”——原材料质量越高,LLM 这个”加工厂”做出来的理解就越准确。
第二,高分辨率成为可能。 训练效率的提升使得 384px 甚至 512px 分辨率上的预训练变得可行。原版 CLIP 的默认分辨率是 224px,在这个分辨率下,图表上的小字、文档里的细节、远处的物体都看不清。SigLIP 的 384px 版本直接提升了 MLLM 对这些细节的理解能力。
第三,生态已经成熟。 Google 开源了高质量的预训练权重,HuggingFace 生态全面支持,社区经过大量验证。对于一个新的 MLLM 项目来说,选用 SigLIP 基本上不需要额外的验证成本——直接拿来用就行。
SigLIP 并不完美:已知的短板
尽管 SigLIP 已经成为事实标准,但它并非没有缺陷。这些问题在实际使用中已经暴露出来。
缺乏空间定位能力
SigLIP 继承了 CLIP 的全局对比学习范式,本质上是在做”这张图整体上配不配这段文本”的判断。这意味着它学到的视觉特征缺乏精细的空间信息。具体来说:
- 它知道”图里有一只猫”,但不知道”猫在桌子左边”
- 它擅长识别”这是什么”,但难以回答”在哪里有几个”
在需要空间推理的任务上(比如”图中左边第三个物体是什么”),SigLIP 的表现远不如 DINOv2——后者通过自监督学习获得了更丰富的空间特征。实际上,已有研究表明,自监督方法(DINO/DINOv2/MAE)学到的 ViT 特征在语义分割、深度估计等密集预测任务上显著优于对比学习方法。
多语言和公平性问题
SigLIP 主要在 WebLI 数据集上训练,这个数据集虽然号称多语言,但实际上以英语为主。对于中文、日文、阿拉伯文等非拉丁语系语言,SigLIP 的图文对齐质量明显下降。这在处理多语言文档、非英语网页截图等场景时会成为瓶颈。
分辨率仍然受限于 Patch 网格
虽然 SigLIP 的主流版本是 384px(比 CLIP 的 224px 高了不少),但它本质上仍然是固定分辨率、固定宽高比的。一张 1920×1080 的截图被压缩到 384×384 后,细节丢失是不可避免的。更根本的问题是,ViT 的 Patch 数量由分辨率决定——384px / 14 = 27,即 27×27 = 729 个 Token。如果要支持更高分辨率,Token 数量会迅速膨胀。
Sigmoid 损失的理论局限
Sigmoid 损失的一个微妙缺陷在于:每一对样本的判断是独立的,缺乏全局归一化。Softmax 损失天然提供了全局的竞争性归一化——一张图片的所有负样本文本互相竞争。而 Sigmoid 损失中,每个”配不配”的判断是孤立的,这在极端情况下可能导致特征空间的聚类质量不如 Softmax 版本。不过,SigLIP 2 的论文指出,这个问题可以通过其他辅助损失来弥补。
之后呢:SigLIP 2 和更远的方向
2025 年 2 月,Google DeepMind 发布了 SigLIP 2(arXiv: 2502.14786),直接回应了上述大部分短板。SigLIP 2 在保留 Sigmoid 损失的基础上,引入了三大改进:
- 多目标训练:除了图文对比损失,还加入了图像描述生成(captioning)损失和自监督损失(自蒸馏 + 掩码预测),这让模型同时学到了细粒度的空间特征和全局语义
- 原生支持多分辨率和可变宽高比:不再把所有图片强行压缩到正方形
- 多语言和去偏:通过更平衡的多语言训练和去偏策略,改善了非英语场景的表现
从更大的视角来看,图像 Transformer 作为多模态大模型的视觉底座,正在朝几个方向演进:
- 对比学习 + 自监督融合:SigLIP 2 已经开始把 CLIP/SigLIP 的对比损失和 DINO/MAE 的自监督损失合并训练。未来可能不再有”对比学习”和”自监督”的明确分界,而是统一在一个多目标框架下
- 动态分辨率:Qwen2-VL 等模型已经在探索原生支持任意分辨率的视觉编码器,让”看不清小字”不再是瓶颈
- 更高效的注意力机制:线性注意力、Flash Attention 等技术正在缓解 $O(N^2)$ 的计算瓶颈,让高分辨率输入变得实际可行
- 数据质量的回归:Meta 的 MetaCLIP 研究表明,数据筛选策略可能比损失函数的选择更重要。Apple 的 DFN(Data Filtering Networks)在 2024 年达到了 84.4% 的 ImageNet Zero-shot 准确率,Meta 的 Perception Encoder 在 2025 年更是达到了 85.4%,主要靠的就是更精细的数据策划
全景回顾
让我们拉远镜头,看看这条进化链:
2020.10 ViT — 证明 Transformer 能看图
↓
2021.02 ViLT — 试图把图文硬融进一个 Transformer(快但受限)
2021.02 CLIP — 另一条路:先对齐再融合(强但慢)
↓
2023.03 SigLIP — 换掉损失函数,CLIP 全面升级
↓
2025.02 SigLIP 2 — 加入自监督和生成目标,弥补空间定位短板
在今天,当我们使用 LLaVA、Qwen-VL、PaliGemma 这些多模态大模型”看图说话”的时候,图像首先经过的那双”眼睛”,大概率就是 SigLIP 的 ViT。这双眼睛看到的世界不是一个一个孤立的像素,而是一个与语言共享的语义空间——猫不再只是一团像素,而是同时是”cat””猫””feline”以及所有与猫相关的概念。
从 2020 年 ViT 证明”Transformer 能看图”,到 2023 年 SigLIP 证明”一个好的损失函数能让 Transformer 看得更好”,再到 2025 年 SigLIP 2 试图让 Transformer “看得更细”——这条路还在继续。下一步,也许是完全统一的多模态 Transformer,不再需要独立的视觉编码器;也许是某种我们还没想到的新范式。但不管怎样,ViT 打开的那扇门,SigLIP 让它开得更大了。
发表回复