本讲主题:视觉与语言,以及基础模型(Foundation Models)范式。核心内容: - 从”一个任务一个模型”到”一个基础模型服务多任务” - CLIP:分类基础模型(对比学习 + 零样本分类) - Vision-Language Models:LLaVA、Flamingo、Qwen3-VL、Molmo - Chaining:CuPL、VisProg(组合式推理) - Omni Models:超越视觉+语言


$\large\star$ 一、基础模型(Foundation Models)范式

1.1 两种范式对比

过去(本课之前的所有模型):为每个任务训练一个专用模型

1
2
3
4
Data Domain 1 → Model 1 → Task 1
Data Domain 2 → Model 2 → Task 2
Data Domain 3 → Model 3 → Task 3
Data Domain 4 → Model 4 → Task 4

新范式:基础模型(Foundation Models)

1
2
3
4
5
6
                       ┌→ Task 1
Large Scale ├→ Task 2
Diverse Dataset → Foundation Model
├→ Task 3
└→ Task 4
Pre-training → Fine-tuning / zero-shot / few-shot

预训练一个模型作为许多不同任务的基础。

1.2 什么算基础模型?

总是具备 常常具备
通用 / 对许多不同任务鲁棒 大参数量
大量数据
自监督预训练目标

1.3 基础模型的家族谱系

类别 代表模型
Language(语言) ELMo、BERT、GPT、T5
Classification(分类) CLIP、CoCa
LM + Vision(语言模型+视觉) LLaVA、Flamingo、GPT、Gemini、Qwen
Chaining(链式组合) LMs + CLIP、Visual Programming
And More! Segment Anything、Whisper、DALL-E、Stable Diffusion、Imagen

📌 本讲重点:Classification(CLIP)、LM+Vision(LLaVA/Flamingo)、Chaining(CuPL/VisProg)。


$\large\star$ 二、CLIP:分类基础模型

Radford et al., “Learning Transferable Visual Models from Natural Language Supervision”

2.1 动机:从自监督到视觉-语言联合嵌入

回顾 SimCLR 的自监督目标: - 用自监督学习学到好的图像特征 - 可在这些特征上训练小分类器用于下游任务 - 核心思想:拉近(Pull Together)/ 推远(Push Apart)——无需标签学概念 - 希望学到的表示能泛化到新实例

新的问题: > 如果这个表示空间也能嵌入句子/短语呢? > “A cute fluffy cat” 和 “My favorite dog is a golden retriever” > → 如何构造一个联合的视觉-语言嵌入空间?

2.2 Step 1:收集大量数据(~400M 图文对)

CLIP 的训练数据是从互联网大规模抓取的图像及其关联的 alt-text(图片替代文本)。

📚 Xu et al., “Demystifying CLIP Data”, ICLR 2024 —— 原始工作已被复现。

2.3 Step 2:训练模型(对比目标)

用什么损失函数?

作者描述先前工作(如图像描述)时说: > 与其从图像中预测确切的单词,我们只需要学习一个能把正确描述与图像匹配的模型。

SimCLR vs CLIP 的架构对比:

SimCLR CLIP
图像编码器 ×2(两个视图) 图像编码器 + 文本编码器
只在图像间对比 在图像与文本间对比
1
2
3
图像编码器 ──┐                    ┌── "A cute fluffy cat"
├─ 对比学习(InfoNCE) ─┤
文本编码器 ──┘ └── "My favorite dog is a golden retriever"

CLIP 用与 SimCLR 相同的对比目标(InfoNCE):

  • 通过最小化双向 InfoNCE 损失,最大化对角线上的图文相似度
  • 训练结束后得到一个能嵌入图像和文本、并给出图文相似度分数的模型
  • ⚠️ 细节未在幻灯片中展示:温度参数、向量做 L2 归一化

2.4 零样本分类:用文本编码器造一个分类器!

与语言模型的重要区别:LLM 可以对新的下游任务零样本使用。

问题:如何不做微调、开箱即用做分类?

巧妙的技巧:用文本编码器创建分类器!

  1. 为每个类别创建向量表示:"plane"、"dog"、"bird" → Plane/Dog/Bird 向量
  2. 把新图像匹配到最相似的向量:相似度 0.13 / 0.27 / 0.09 → 预测 dog

💡 这类似于 1-NN 算法,只不过”训练数据”是文本向量!

提示工程(Prompt Engineering):

技巧 效果
用短语 "A photo of a [category]"(因为 CLIP 是用短语训练的) ImageNet +1.3%
单个短语可能太偏 → 用多个短语(A photo of a ...、A drawing of a ...…) ImageNet +5%
取所有短语的平均向量作为类别表示 ✅

结论:现在你可以把 CLIP 当作任意数据集图像分类的基础模型!

2.5 结果与泛化能力

惊人的结果:在 400M 图文对上训练后,CLIP 匹配了在 ImageNet 上训练的 ResNet-101 的准确率——而 CLIP 完全没有用人工标签!

泛化能力: - 在 ImageNet 上训练不能泛化到其他数据集 - ObjectNet:包含相同类别,但是奇怪的视角 - ✅ CLIP 零样本表现非常好! - CLIP 在图形图像、草图、对抗数据集上表现也很好

Linear Probe vs Zero-shot 的差异:在部分数据集上 zero-shot 最好,在另一些上”CLIP 特征 + 线性分类器”最好。

2.6 为什么 CLIP 这么强?(“无标签”如何打败有标签?)

可能的原因:

原因 说明
1. “无标签”有点误导 文本就是某种监督信号
2. 大规模预训练 CLIP 307M 参数 vs ImageNet ResNet 44.5M;CLIP 400M 训练图像 vs ImageNet 1.28M
3. 测试集泄漏? 可能不是:约 2% 数据集泄漏(“Does CLIP’s Generalization Performance Mainly Stem from High Train-Test Similarity?” TLDR:并非如此)

🔑 CLIP 用 Transformer 架构放大了模型参数,并用网络抓取的图文对放大了训练数据。

2.7 常见变体

变体 改进
SigLIP 用 Sigmoid 代替 Softmax!非常有用:不需要物化整个 batch 来计算每个样本的损失(节省内存)
CoCa 通过添加生成目标改进 CLIP(“Contrastive Captioners”,2022):在 CLIP 基础上加了带 captioning loss 的 decoder(图像特征作为 keys/values)

📌 分类基础模型现在在 ImageNet 上主导其他所有模型。

2.8 CLIP 风格模型的优缺点

✅ 优点: 1. 点积非常高效 - 容易训练(支持扩展) - 推理快,例如在 50 亿张图像上做检索 2. 开放词汇(Open-vocabulary):零样本泛化 3. 可与其他模型链式组合(CuPL,见后文)

❌ 缺点:

缺点1:过度依赖 batch size 来学概念

Batch size 学到的粒度
4 “animal”
100 “dog”
32000 “Welsh Corgi”(威尔士柯基)

⚠️ 但这种方式能得到的细粒度有上限:即使在 32K 的 batch 里,也不太可能同时看到 “a mug in some grass” 和 “some grass in a mug”。

组合性(Compositionality)基准:Winoground、CREPE、ARO > CLIP 无法区分:there is a mug in some grass vs there is some grass in a mug(Tristan Thrush et al., 2022)

  • 解决方案:硬负例微调(Hard Negative Fine-Tuning)——用 horse eating grass 作为 grass eating horse 的负例
  • ⚠️ 但硬负例训练也有自己的问题:hard positives
    • A black cat and a brown dog ✓
    • A brown cat and a black dog ✗(语义等价但被判负)
    • A brown dog and a black cat ✗

缺点2:图像级 caption 监督不足 → 可改用区域 caption + 边界框坐标训练。

缺点3:单一 5B 数据集无法知道一切 → 有意识地做数据收集与过滤极其重要。


$\large\star$ 三、视觉-语言模型(Vision-Language Models)

3.1 LLaVA

动机:做 next token prediction 的语言模型可以在推理时应用于大量任务(数学、情感分析、符号推理…)。

能否构建一个接受图像和文本作为输入、输出文本的模型?→ Vision-Language Models

历史背景:VLM 并非始于 LLaVA!可追溯到 2019 年的 ViLBERT。 > ⚠️ 但那时的模型必须为每个任务单独微调,还需非平凡的特定任务方法(如 RefCOCO 要用 Mask-RCNN 做边界框重排序)——这正是本讲开头批评的”极其任务特定”范式。

LLaVA 的核心思想:利用 LLM 的自回归性质,给 LLM 添加视觉信息。

关键问题:用什么图像 token? → CLIP 编码器是个好选择!

应该用 CLIP 的哪些特征?

选项 问题/结论
CLS token(用于对比学习) ❌ 这些 token 没有被监督!可能是随机的,loss 也不会变
倒数第二层(Penultimate Layer) ✅ 实践中这些 token 最能保留空间和语言信息;可以去掉 CLS 获得轻微提升

LLaVA 整体架构 + 训练配方:

1
2
3
4
5
6
7
图像 → Vision Encoder (CLIP) → 图像 token V1 V2 … VN
│
文本 "Cats are so" ────────────────────┼→ Transformer blocks → "Cute"
↑
Linear Layer(桥接)
↓
LLM Decoder
  1. 用预训练语言模型(如 LLaMA)初始化 LLM Decoder,用预训练图像编码器(如 CLIP)
  2. 训练一个新的线性层把 CLIP 特征桥接到 LLM 输入空间
  3. 联合微调 LLM + 线性层

💡 只需约 178,000 个样本(输入图像 + 输入指令 + 输出文本)就能得到合理性能!

3.2 Flamingo

Alayrac et al., “Flamingo: a Visual Language Model for Few-Shot Learning”, NeurIPS 2022

Flamingo 提出了另一种融合信息的方式:

  • 预训练部分:视觉编码器 + 语言模型
  • 2 个可学习部分(新训练)
  • Perceiver Sampler:把可变大小的图像 token 转换为固定大小
  • 训练数据组织:类似语言建模,用特殊标签 <image>、<eos> 指示新图像出现或文本结束

✅ Flamingo 支持上下文学习(in-context learning)——少样本即可适应新任务。

3.3 2026 年的 SOTA 格局

  • Gemini 被广泛认为是最好的专有 VLM
  • 开放程度的光谱:
层级 含义
API Only 只能通过 API 使用
Open Weights 可下载 + 本地运行
Distilled Open 开源但大多是从 GPT 蒸馏的
Completely Open 开放权重 + 数据 + 代码 + 评测

📚 Deitke et al., “Molmo and PixMo”, CVPR 2025

3.4 Qwen3-VL(2025年12月)

与 LLaVA 的不同点:

  1. 原生图像分辨率 → 更大图像给更多 token(用 2D-RoPE 位置编码处理变化的图像尺寸)
  2. 用 SigLIP-2 视觉编码器(代替 CLIP)
  3. 对视频,帧时间写在文本中:<0.0 seconds>
  4. 使用 SigLIP-2 第 8、16、24 层的 embedding
  5. 四个训练阶段:(1) 桥接视觉编码器 → … → (3) 增加上下文长度

3.5 Molmo / PixMo:质量 vs 数量的权衡

模型 数据量
LLaMA 3.1V 60 亿图文对
Molmo(用 PixMo) 仅 70 万图文对

洞察: - 互联网数据往往是附带的(incidental):pink, japan, aesthetic image、love this winter picture by person - 人工标注数据更有意图(intentional),且 PixMo 数据非常详细(长段落级描述)

如何收集密集 caption? ⚠️ 这非常难! - 人们不喜欢打字……但喜欢说话 🎤 - 方案:让标注者就一张图像口述 60–90 秒,作者自动把语音转成文本用于预训练


$\large\star$ 四、链式组合(Chaining)

4.1 问题:分类从未见过的概念

当模型被要求分类一个从未见过的概念时怎么办? - A photo of a marimba(马林巴琴) - A photo of a viaduct(高架桥) - A photo of a papillon(蝴蝶犬) - A photo of a lorikeet(吸蜜鹦鹉)

4.2 解决方案:Chaining(链式调用)

  1. 让 LLM 生成一段描述
  2. 用这段描述来做分类

4.3 CuPL(CUstomized Prompts via Language models)

Pratt et al., “What does a platypus look like? Generating customized prompts for zero-shot image classification”, 2023

用 LLM 为每个类别生成定制化的提示词(而非单一模板 A photo of a ...),再交给 CLIP 做零样本分类。

4.4 VisProg(视觉编程)

Gupta et al., “Visual Programming: Compositional visual reasoning without training”, 2023

问题:能把 chaining 的思想推广到所有视觉任务吗?(如 “Are there 3 people in the boat?”)

两种路线对比:

传统路线 VisProg 路线
为你的任务训练一个新模型(多图 VQA 模型) 用现有模型写一个 Python 脚本
泛化到 2 张图可以,再往上就不行 可任意组合
1
2
3
4
5
class MyMultiImageVQA():
def process_ims():
ans1 = VQA(Image1)
ans2 = VQA(Image2)
return ans1 + ans2

💡 由 GPT 生成程序,调用现成的视觉模块(VQA、分割、检测…)完成组合式视觉推理,无需训练。


$\large\star$ 五、Omni 模型(超越视觉 + 语言)

最终注记:Omni Models

  • 始于 2024 年的 GPT-4o
  • 近期 Thinking Machines + Gemini 也推出了各自的 Omni 模型
  • 训练一个模型以文本、音频和视频作为输入和输出
1
2
3
              ┌→ 文本
Transformer ──┼→ 音频
└→ 视频

$\large\star$ 六、总结

主题 核心要点
基础模型范式 从”一任务一模型”→“预训练一个模型服务多任务”(fine-tune / zero-shot / few-shot)
CLIP 400M 图文对 + 双向 InfoNCE;图像/文本编码器共享嵌入空间;点积算相似度
零样本分类 用文本编码器为类别造向量 → 图像匹配最近向量(类似 1-NN)
Prompt 技巧 A photo of a [cat] +1.3%;多模板平均 +5%
CLIP 为什么强 大规模数据(400M vs 1.28M)+ 大模型(307M vs 44.5M);“无标签”其实有文本监督
CLIP 缺点 依赖大 batch、组合性差(Winoground/ARO)、图像级 caption 监督不足
SigLIP / CoCa SigLIP:Sigmoid 替代 Softmax(省内存);CoCa:加 captioning 生成目标
LLaVA CLIP 视觉编码器 + 线性层 + LLM Decoder;用倒数第二层特征;17.8 万样本即可
Flamingo Perceiver Sampler 固定 token 数;<image>/<eos> 标签;支持上下文学习
Chaining CuPL:LLM 生成定制提示;VisProg:GPT 写程序调用现成视觉模块(无需训练)
Omni 模型 GPT-4o 起,输入输出扩展到文本/音频/视频

下一讲:World Models(世界模型)