CS231n-16
第16讲:多模态基础模型
一、基础模型概述
1.1 范式转变
-
传统方法:为每个任务训练专门的模型
1
2
3
4数据域1 → 模型1 → 任务1
数据域2 → 模型2 → 任务2
数据域3 → 模型3 → 任务3
数据域4 → 模型4 → 任务4 -
基础模型方法:预训练一个模型作为多个任务的基础
1
2
3大规模多样化数据集 → 基础模型 → 任务1/2/3/4
↓
预训练 + 微调/零样本/少样本
1.2 基础模型分类
| 语言模型 | 分类模型 | 语言模型+视觉 | 其他 | 链式调用 |
|---|---|---|---|---|
| ELMo | CLIP | LLaVA | Segment Anything | LMs + CLIP |
| BERT | CoCa | Flamingo | Whisper | Visual Programming |
| GPT | GPT-4V | Dalle | ||
| T5 | Gemini | Stable Diffusion | ||
| Molmo | Imagen |
二、分类基础模型:CLIP
2.1 从SimCLR到CLIP
- SimCLR:自监督对比学习,学习好的图像特征
- 目标:拉近相似图像,推远不相似图像
- CLIP扩展:将对比学习扩展到图像-文本对
2.2 CLIP架构与训练
- 双编码器架构:
- 图像编码器
- 文本编码器
- 训练数据:4亿个从互联网收集的图像-文本对
- 训练目标:对比学习损失函数
CLIP损失函数:
其中:
- 是第 个图像嵌入向量
- 是第 个文本嵌入向量
- 表示向量点积相似度
- 是批次大小
2.3 零样本分类技巧
-
创建类别向量:
1
2图像 → 图像编码器 → 图像向量
"plane"/"dog"/"bird" → 文本编码器 → 文本向量 -
相似度匹配:计算图像向量与每个类别向量的相似度
分类概率计算:
其中:
- 是图像编码器输出
- 是第 个类别提示词的文本编码
- 是温度参数
- 是类别数量
- 提示词优化:
- 基础版:
"category" - 优化版:
"A photo of a category"(+1.3% on ImageNet)
1
这边是因为训练的时候,图像和文本是对应的描述关系,运用phase短语会比较多一些
- 集成版:多提示词平均向量 (+5% on ImageNet)
- 基础版:
集成提示词表示:
2.4 CLIP性能与优势
- 零样本性能:在ImageNet上达到76.2%,匹配有监督ResNet101
- 泛化能力:在ObjectNet、ImageNet Sketch等数据集上表现优异
- 成功关键:规模效应
- 模型规模:3.07亿参数 vs ResNet的4450万
- 数据规模:4亿图像 vs ImageNet的128万
2.5 CLIP局限性
- 组合理解差:无法区分"a mug in some grass" vs “some grass in a mug” 图像之间的组合关系
- 依赖大批量:需要大batch size学习细粒度概念
- 监督信号粗糙:图像级标题无法学习局部对应关系
2.6 CoCa改进
- 架构改进:在CLIP基础上增加解码器和字幕损失

- 多任务学习:对比损失 + 字幕生成损失
CoCa总损失:
其中:
-
是对比损失(同CLIP)
-
是自回归字幕生成损失
-
是平衡超参数
-
性能提升:在多个基准测试中超越CLIP
三、视觉语言模型
3.1 LLaVA架构
1 | [图像] → [CLIP编码器] → [线性层] → [LLM解码器] → [文本输出] |
特征投影:
其中:
-
是输入图像
-
是可学习的投影矩阵
-
是偏置项
-
是投影后的视觉特征
-
关键设计:
- 使用CLIP的倒数第二层特征(保留更多空间和语义信息)
- 仅训练线性连接层,冻结视觉和语言编码器
- 使用10万+指令调优样本
3.2 Flamingo架构
- 核心组件:
- 预训练的视觉编码器(冻结)
- 预训练的语言模型块(冻结)
- Perceiver重采样器(训练)
- 门控交叉注意力层(训练)
门控交叉注意力:
其中:
-
是语言特征
-
是视觉特征
-
是可学习的门控参数
-
数据处理:支持图像和文本交错序列
-
关键能力:强大的少样本学习能力
3.3 开源模型进展:Molmo
- 完全开源:权重、数据、代码全部开放
- 数据质量优先:使用高质量的"有意"标注数据(PixMo数据集)
- 新能力:指向(Pointing)功能,实现视觉定位
指向表示:
- 性能:在人类偏好评估中超越Gemini 1.5 Pro和Claude-3.5
四、其他基础模型
4.1 Segment Anything Model (SAM)
- 范式转变:从固定类别分割 → 分割任何物体
- 提示式分割:支持点、框、文本等多种提示方式
- 处理歧义:当提示不明确时,输出多个可能的掩码
SAM架构:
- 训练数据:SA-1B数据集(10亿+掩码,1100万图像)
4.2 链式调用方法
CuPL (Customized Prompts)
1 | 未知概念 → LLM生成描述 → CLIP分类 |
CuPL流程:
VisProg (Visual Programming)
1 | 复杂问题 → LLM生成Python脚本 → 执行脚本调用基础模型API |
VisProg形式化:
五、关键洞见与总结
5.1 成功要素
- 规模效应:大数据 + 大模型 = 强泛化能力
- 多模态对齐:统一的表示空间是关键
- 提示工程:简单的提示词优化带来显著性能提升
- 链式组合:基础模型组合解决复杂任务
5.2 未来方向
- 开源vs闭源:开源模型正在快速追赶
- 数据质量:从"偶然"数据转向"有意"标注数据
- 具身AI:从感知到行动的完整智能系统
- 机器人学习:将基础模型应用于物理世界
六、核心模型对比
| 模型 | 类型 | 关键创新 | 优势 | 局限 |
|---|---|---|---|---|
| CLIP | 分类 | 图像-文本对比学习 | 零样本能力强,效率高 | 组合理解差 |
| CoCa | 分类 | 对比+生成多任务 | 性能全面提升 | 计算复杂 |
| LLaVA | VLM | 简单线性连接 | 训练高效,效果不错 | 融合方式简单 |
| Flamingo | VLM | 门控交叉注意力 | 少样本学习强 | 架构复杂 |
| Molmo | VLM | 高质量数据+指向 | 完全开源,定位能力强 | 相对较新 |
| SAM | 分割 | 提示式分割 | 分割任何物体 | 需要明确提示 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 10,000 Hours!