深度拆解 CLIP:连接文本与视觉的语义桥带
CLIP (Contrastive Language-Image Pre-training) 是现代生成式 AI(如 Stable Diffusion, DALL-E 3, Flux)的灵魂。它通过将图片和文字映射到同一个数学空间,解决了机器“如何理解人类语言并对应到视觉形象”的终极难题。
1. 核心架构:双塔式结构 (Dual-Stream Architecture)
CLIP 本质上是一个“双塔”模型,由两个独立的特征提取器组成,它们各司其职,最后在同一个“语义会客厅”汇合。
A. 图像编码器 (Image Encoder) —— Vision Transformer (ViT)
- 工作逻辑:像读文章一样读图片。
- 步骤:
- 切片:将图片切成固定大小的方块(Patches,如 )。
- 投影:将方块拉平并转化为向量。
- 自注意力:让每个方块观察其他方块,理解全局构图(例如:猫耳在猫头的上方)。
- 层数规格:从基础的 12 层 (ViT-B) 到顶尖的 32 层 (ViT-H)。
B. 文本编码器 (Text Encoder) —— Transformer
- 工作逻辑:理解人类语言的上下文语义。
- 限制:由于历史和算力平衡原因,经典 CLIP 被限制在 77 个 Token(约 60-70 个单词)。
- 层数规格:通常为固定的 12 层。
2. 核心灵魂:绝对位置编码 (Absolute Positional Encoding)
Transformer 本身是“无序”的,它不知道谁在前谁在后。CLIP 引入了位置编码来解决这个问题。
- 实现方式:可学习的绝对位置编码。
- 为什么是“绝对”? 模型为 1 到 77 每个位置准备了一个固定的“工位向量”。模型在训练中死记硬背下:“0 号工位通常是句首,7 轴 7 步的图片块通常是中心”。
- 为什么不用公式计算? 学习而来的编码能捕捉到不均匀的特征(例如图片中心比边缘更重要),表达能力更强。
- 副作用:这导致了 CLIP 非常“死板”。超过 77 个词会被截断,分辨率变了模型就会“迷路”。
3. 维度对齐模块 (Projection Head)
图像编码器输出的维度(如 1024)和文本编码器输出的维度(如 512)通常不一致。为了让它们能计算相似度,CLIP 引入了投影层。
- 属性:一个可学习的线性映射矩阵。
- 功能:
- 统一维度:将不同长度的向量映射到相同的长度(如 768)。
- 空间对齐:通过 L2 归一化,将向量投射到单位超球面上。
- 训练逻辑:这个模块是和两个编码器联合训练的。它决定了“猫”这个词的向量和“猫”这张图的向量在数学上靠得有多近。
4. 训练与推理流程
训练阶段:对比学习 (Contrastive Learning)
- 数据:4 亿对互联网图文对。
- 目标:在一个 Batch 内,让正样本(匹配的图文)相似度趋近 1,让负样本(不匹配的图文)趋近 0。
- 损失函数:对称交叉熵损失(Symmetric Cross-Entropy Loss)。
推理阶段:零样本预测 (Zero-Shot)
- 逻辑:模型不再进行分类预测,而是进行“匹配预测”。
- 步骤:
- 将图片变成向量 。
- 将候选词(如“猫”、“狗”)填入模板“一张[X]的照片”并变成向量 。
- 计算 与各个 的余弦相似度,得分最高者即为答案。
5. 在生成模型(如 DiT)中的角色
在文生图流程中,CLIP 充当了语义导航员:
- 输入:你的 Prompt。
- 输出:一组包含位置信息的语义向量。
- 作用:这些向量作为“条件注入(Conditioning)”喂给 DiT。DiT 在降噪过程中会不断对照这些向量,确保洗出来的“噪声”符合 CLIP 定义的语义坐标。
📘 技术规格小记
| 特性 | 技术选择 | 备注 |
|---|---|---|
| 位置编码 | 可学习绝对位置编码 | 限制了 77 Token 和固定分辨率 |
| 对齐模块 | 线性投影层 | 联合训练,决定语义空间的质量 |
| 图像架构 | ViT (Vision Transformer) | 12-32 层,基于 Patch 处理图片 |
| 相似度度量 | 余弦相似度 | 计算向量在超球面上的夹角 |