今天讲的是 训练策略(重点是损失函数),跟模型架构没有关系
导读:在AI领域,“大力出奇迹”似乎是永恒的真理。更大的模型、更大的显存、更大的Batch Size...但在谷歌最新的SigLIP论文中,研究人员用一个简单的数学变换证明:有时候,做得更少,反而能做得更好。本文将带你深入底层,看Sigmoid如何四两拨千斤,取代Softmax重塑多模态训练。
引言:打破“越大越好”的迷思
在多模态大模型(VLM)的训练中,OpenAI的CLIP曾是当之无愧的王者。为了提升性能,由于CLIP使用的是对比学习(Contrastive Learning),大家普遍认为必须无限扩大Batch Size(批次大小),因为只有负例池子够大,模型才能学得更好。
然而,谷歌的SigLIP (Sigmoid Loss for Language Image Pre-training)横空出世,抛出了一个反直觉的结论:只要方法对,4块TPU就能干翻数百块GPU,而且Batch Size根本不需要无限大。
这是怎么做到的?
⚔️ 第一回合:Softmax vs Sigmoid
从“大乱斗”到“独立团”
SigLIP与CLIP的核心区别,不在于模型架构(它们都是双塔ViT+Transformer),而在于损失函数(Loss Function)的设计。
1. CLIP (Softmax):一场残酷的“大乱斗”
CLIP的训练逻辑是全局竞争。 想象一下,为了让模型认出“猫”的图片和“猫”的文字是一对:
模型不仅要看它们俩配不配;
还要把这张图和同批次里所有的“狗”、“房子”、“汽车”文字去比较;
最后做一个多选题:在几万个选项中,谁是正确答案?
这需要进行全局归一化,意味着每算一个样本,都要牵扯到全班同学。这导致内存消耗巨大,且必须同步所有设备的数据。
2. SigLIP (Sigmoid):冷静的“独立判断”
SigLIP的逻辑是独立判断。 它把复杂的多选题变成了无数道判断题(Yes/No)。
模型只看“猫图”和“猫文”:是同类吗?👉是。
模型看“猫图”和“狗文”:是同类吗?👉否。
它根本不在乎批次里有没有其他东西。这种Pairwise(成对)的处理方式,让内存占用暴跌,计算效率飙升。
硬核解析:数学公式与数据推演
为了让大家彻底理解,我们不仅要看热闹,还要看门道。
1. 不同的数学“引擎”
🔴 CLIP 的 Softmax Loss(Image→Text方向):它要求分母包含全批次所有样本的相似度总和。
痛点:注意那个分母 ,它意味着你必须算出所有人的分数值才能知道自己的排名。
🟢 SigLIP 的 Sigmoid Loss:它没有分母,只有独立的二分类累加。
亮点: 是标签(匹配为1,不匹配为-1)。这里引入了一个关键的 **偏置项 **,用来抵消负例过多的影响,保证训练稳定。
2. 只有2个样本时的“实战演练”
假设我们有一个极小的Batch(大小=2):
Pair 1: 🐱 图1 () - "黑猫" () ✅
Pair 2: 🐶 图2 () - "黄狗" () ✅
负例: (猫配狗), (狗配猫)
假设模型算出的相似度矩阵如下():
| 图片 \ 文本 | (黑猫) | (黄狗) |
|---|---|---|
| (猫图) | 0.8(高) | 0.2 (低) |
| (狗图) | 0.3 (低) | 0.9(高) |
➤ CLIP 怎么算 (Softmax)?
它看的是相对概率。 对于猫图 ():
分子 =
分母 =
得分=
➤ SigLIP 怎么算 (Sigmoid)?
它看的是绝对概率(设 )。 它独立处理4种组合:
猫-猫 (正例): 输入 → Sigmoid(0.7) (做对了)
猫-狗 (负例): 输入 → Sigmoid(-0.1) (接近0.5,稍微有点困惑但还好)
...以此类推
本质区别:CLIP必须要对比 和 的关系才能算出 的分;而SigLIP算 时,根本不看 一眼。
🚀 为什么这很重要?
1. 性能饱和点:32k就够了
这就解释了论文中那个惊人的发现:Batch Size 到了 32,000 左右,性能就饱和了。以前大家以为要推到百万级Batch,其实那是Softmax带来的错觉。SigLIP告诉你,没必要为了这就去买几千张显卡。
2. 算力民主化
SigLIP最让个人开发者兴奋的是它的效率。
SigLiT模型:仅用4块 TPUv4,训练2天,ImageNet 零样本准确率达到 **84.5%**。
这意味以前只有Google、Meta能做的大规模多模态预训练,现在小型实验室甚至个人极客也有机会上手了。
3. 抗噪能力MAX
网络数据大多是脏乱差的。在CLIP的“大乱斗”模式下,一个错误的负例会污染整个Batch的归一化计算。而SigLIP是独立判断,一颗老鼠屎坏不了一锅粥,模型更鲁棒。
🧠 经典环节1 -- 人话总结:SigLIP 是什么?
如果说CLIP是在搞“比武招亲”,那SigLIP就是在搞“快速相亲”。
过去 (CLIP):全员大乱斗在一堆备胎(负例)里,必须通过全局对比选出唯一的真爱。这就像要把所有人拉到一个群里比输赢,牵一发而动全身,极度消耗显存,只有土豪才玩得起。
现在 (SigLIP):独立判断题不搞排名,不看别人,只看眼前这一对(图和文):“你俩配吗?”
配 ➝Yes
不配 ➝No互不干扰,极其省流。
** 核心结论** 谷歌证明:在这个游戏里,简单 > 复杂。SigLIP 换掉了费油的旧引擎(Softmax → Sigmoid),打破了“批次越大越好”的迷信,证明32k 大小就够了,让几块显卡也能跑出顶级效果,实现了极致的“降本增效”。
🧠 经典环节2 -- 课后大闯关:检验你的理解深度
读懂了吗?来做个测试吧!(答案在题目下方,建议先思考再看答案)
1. SigLIP 与 CLIP 在模型架构(Backbone)上的主要区别是什么?
A. SigLIP 使用了更深的 ResNet B. SigLIP 引入了 MoE 架构 C. 没有本质区别,架构基本相同 D. SigLIP 去掉了文本编码器答案:C解析:这是一个陷阱题。SigLIP 的创新主要在于损失函数(Loss Function),其底层的 Vision Transformer 和 Text Transformer 架构与 CLIP 几乎完全一致。就像换了引擎的赛车,外壳没变。
2. 为什么 SigLIP 在处理“噪声数据”(错误的图文对)时比 CLIP 更稳健?
A. 因为 Sigmoid 能够自动过滤数据 B. 因为 Softmax 的全局归一化会导致一个坏样本影响全批次计算 C. 因为 SigLIP 的 Batch Size 更小 D. 因为 SigLIP 训练时间更长答案:B解析:CLIP 的 Softmax 分母包含所有样本,一个异常值会“污染”分母,进而影响所有样本的梯度。SigLIP 是 Pairwise 独立计算,互不干扰,因此对噪声有天然的“防火墙”。
3. 关于 Batch Size 对性能的影响,SigLIP 的实验得出了什么反直觉的结论?
A. Batch Size 越大,性能总是越好 B. Batch Size 必须小于 4096 否则不收敛 C. 性能在 Batch Size 约为 32k 时达到饱和,再大也无明显收益 D. Batch Size 对性能完全没有影响答案:C解析:传统观点认为对比学习必须依赖超大 Batch(百万级)来提供足够的负例。SigLIP 证明了在使用 Sigmoid Loss 的情况下,32k 大小的 Batch 已经足以达到性能天花板,打破了“无限大批次”的神话。
4. 在 SigLIP 的公式 中,参数 的作用是什么?
A. 增加模型的非线性 B. 作为一个可学习的偏置,用于平衡正负例数量巨大的不对称性 C. 控制温度系数 D. 没什么用,可以设为0答案:B解析:在一个 Batch 中,正例只有对角线上的几个,负例有 个。正负例极度不平衡。偏置项 初始化为负值(如-10),就是为了在训练初期告诉模型:“大部分情况下都是不匹配的”,防止Loss爆炸,保证训练稳定启动。
5. 假如你只有有限的显存资源,想训练一个高性能VLM,为什么选 SigLIP 优于 CLIP?
A. SigLIP 必须要 TPU 才能跑 B. SigLIP 需要存储巨大的 $N \times N$ 相似度矩阵 C. SigLIP 支持分块计算(Chunking),无需存储全量矩阵,内存效率更高 D. SigLIP 的代码行数更少答案:C解析:这是工程上的核心优势。CLIP 因为要做全局 Softmax,必须把所有特征向量收集在一起算。SigLIP 可以把 Batch 切成小块,算完一块的 Loss 就丢掉,只需要累加标量 Loss 即可,极大降低了峰值显存需求。
原始论文地址:https://arxiv.org/abs/2303.15343
附上高清思维导图,可以自取:
恭喜你通关哦!多模态AI的进化速度惊人,我们正离真正的通用人工智能越来越近。
本期作者: JackLi,算法研究员,热爱paper解读,技术和工具分享。全网唯一账号:“心眸AI笔记”
*喜欢本文?持续关注!欢迎点赞、在看、转发,一起探索 AI的底层逻辑和拥抱AI。本文来自个人看法,如有见解,欢迎评论区留言。觉得有用?点个“在看” 👇,分享给身边的伙伴!喜欢这类硬核干货?👇关注我们,每期带你彻底读懂一篇顶会论文!