SigLIP
CLIP 用 softmax-based InfoNCE 损失做对比学习。这个损失函数有一个隐含的前提:batch size 必须足够大。因为 softmax 需要在 batch 内做全局归一化——batch 中的每个负样本都参与分母的计算。batch 越大,负样本越多,对比学习的信号越强。
OpenAI 报告 CLIP 训练需要 32,768 的 batch size。这对大多数研究机构来说是一个巨大的硬件门槛。
但这引发了一个自然的问题:对比学习的性能是否必然与 batch size 绑定?有没有一种损失函数,不需要大的 batch size 也能学到好的表征?
SigLIP 的回答是:有。把 softmax 换成 sigmoid。
SigLIP 本身只改变了损失函数——模型架构仍然是双塔(图像塔 + 文本塔)。但作者进一步将 SigLIP 与 Locked-image Tuning (LiT) 结合,得到 SigLiT。
LiT 的核心思路:冻结一个预训练好的图像塔(如一个已经在大规模数据上做 supervised training 的 ViT),只用对比学习微调文本塔。这样只需要更新一半的参数,训练效率大幅提升。
结合方式:
- SigLIP:用 sigmoid pairwise loss 替代 softmax InfoNCE,解耦 batch size
- LiT:冻结图像塔,只微调文本塔,减少可训练参数量
两者结合的结果:仅用 4 颗 TPUv4 芯片,在 两天内训练出一个 SigLiT 模型,零样本 ImageNet top-1 准确率达到 84.5%。
CLIP 的 InfoNCE 损失对每个图文对做的是多分类:从 batch 的 N 个文本中找到与当前图像匹配的那一个:
\(\mathcal{L}_{i2t} = -\frac{1}{N} \sum_{i=1}^N \log \frac{\exp(S_{ii}/\tau)}{\sum_{j=1}^N \exp(S_{ij}/\tau)}\)
问题在于分母:\(\sum_{j=1}^N \exp(S_{ij}/\tau)\) 需要遍历 batch 内所有 N 个样本。当 N 很大时,内存开销随 batch size 平方增长。
SigLIP 的改进极其简单——把多分类变成独立的二元分类:每个图文对独立判断"是否匹配",不依赖 batch 内其他样本:
\(\mathcal{L} = -\frac{1}{n} \sum_{i=1}^{n} \log \frac{1}{1 + e^{z_{ij} \cdot (-t) + b}}\)
其中 \(z_{ij}\) 是图文对的相似度,\(t\) 是可学习温度参数,\(b\) 是可学习偏置。正样本对的标签为 -1,负样本对为 +1。
Softmax 的问题
Softmax-based 损失有一个隐含假设:batch 中的负样本代表了"所有可能的负样本"。当 batch 小的时候,这个假设不成立——模型看到的负样本太少,学到的表征不够robust。
Sigmoid 的优势
SigLIP loss 不做全局归一化,每个图文对的梯度独立计算。这意味着:
- 小 batch 也能有效训练:不需要大量负样本"衬托"正样本
- 内存友好:可以拿省下的显存来增大模型或增加数据量
- 训练更稳定:不受 batch 内样本分布变化的影响
消融实验
SigLIP 的消融实验系统性地对比了 sigmoid 和 softmax 在不同 batch size 下的表现:
- Batch size = 512:sigmoid 和 softmax 差距不大
- Batch size = 16K-32K:sigmoid 开始超越 softmax
- Batch size = 64K+:sigmoid 优势更明显
更关键的发现:sigmoid loss 在小 batch size 下的性能远好于 softmax 在小 batch size 下的性能。这意味着资源有限的研究者也能训练出有竞争力的模型。
Batch size 的极限实验
论文还做了一个反直觉的实验:把 batch size 推到极限,一直到 100 万。结果发现,增大 batch size 的收益迅速递减——32K 的 batch size 已经足够。
这个发现很重要:它说明 sigmoid loss 不需要极端的 batch size 就能达到好的效果,这也进一步降低了训练门槛。
正负样本比例的影响
Sigmoid loss 的 pairwise 特性还允许作者独立研究 examples vs pairs 以及 负样本与正样本的比例对训练效果的影响。这是 softmax loss 难以做到的——因为 softmax 的归一化天然把所有样本绑在一起。
SigLIP 在 WebLI(Web Language Image)数据集上训练,规模达到 10B 图文对,覆盖 100+ 语言。这个数据规模远超 CLIP 的 400M 和 ALIGN 的 1.8B。
论文 v4(2023 年 9 月)进一步报告了更多模型变体的结果:SigLIP Base、SigLIP Large 和 SigLIP SO400M(Shape-Optimized 400M),扩展了不同计算预算下的选择。
SigLIP 的贡献是正交于架构创新的训练效率优化。它不改变模型架构(仍然是双塔对比学习),只改变损失函数。这意味着它的改进可以叠加到任何基于对比学习的 VLP 方法上。
后续影响:
- PaliGemma 等模型直接采用了 SigLIP 作为视觉编码器的训练方式
- SigLiT(SigLIP + Locked-image Tuning)证明了冻结图像塔 + sigmoid loss 的高效组合
- sigmoid loss 在需要大规模训练的场景中逐渐替代 softmax
- 论文代码和模型已开源:google-research/big_vision
- "损失函数本身可以更高效"这个观点启发了后续对对比学习本质的重新思考
如果从更高的视角看 VLP 的发展:CLIP 证明了"对比学习 + 大规模数据"的可行性,SigLIP 证明了"对比学习的损失函数还有很大的优化空间"。一个是证明题,一个是优化题。
CLIP 的 InfoNCE 把每张图像和 batch 内所有文本做 softmax 归一化。这种做法让 batch size 变成训练质量的一部分:batch 越大,负样本越多,对比信号越强。但代价是显存和通信压力巨大,也让小规模实验很难接近大模型训练效果。SigLIP 的核心是把“从 N 个文本中找正确答案”的多分类问题,改写为“这个图文 pair 是否匹配”的二分类问题。每个 pair 独立计算 sigmoid loss,不再依赖 batch 全局归一化。这个改动看似小,却把训练瓶颈从 batch 全局竞争改成独立 pair 判断。
graph LR A[输入] --> B[核心模块] B --> C[对齐 / 压缩 / 训练] C --> D[下游能力] D --> E[实验验证]
SigLIP 不像 BLIP-2 或 LLaVA 那样改变模型交互方式,它改变的是底层训练信号。正因为改动底层,它的影响反而更容易扩散:任何需要图文对比预训练的视觉塔,都可以考虑从 softmax InfoNCE 换成 sigmoid pairwise loss。
softmax 的问题在于把所有负样本放进同一个归一化竞争中。这个机制在大 batch 下很强,但也把训练质量绑定到硬件规模。sigmoid loss 则把每个 pair 的匹配判断局部化,弱化 batch size 依赖。对工业训练来说,这意味着更灵活的并行策略;对研究者来说,这意味着较小 batch 下也有可用性能。
把 SigLIP 放进 VLP 时间线,它对应的是“训练效率”这条支线。CLIP 证明对比学习有效,ALIGN 证明噪声数据可规模化,SigLIP 则证明损失函数仍有优化空间。后续 PaliGemma 等模型使用 SigLIP 视觉编码器,说明这种优化已经从论文点子变成基础组件。


按新版协议,SigLIP 已尝试 arXiv HTML,但未提取到真实 figure URL;arXiv e-print 返回内容无法按 tar 解包,因此退回 CVF Open Access PDF 高 DPI 渲染。这里明确标注 fallback 原因,避免把代码绘制图冒充论文原图。SigLIP 的核心解释仍以正文公式和实验表格为准。
参考来源
- Zhai, X., Mustafa, B., Kolesnikov, A., Beyer, L. "Sigmoid Loss for Language Image Pre-Training." ICCV 2023 Oral. arXiv:2303.15343 · Code: big_vision