深度拆解 CLIP:连接文本与视觉的语义桥梁

6 阅读4分钟

深度拆解 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)
  • 工作逻辑:像读文章一样读图片。
  • 步骤
    1. 切片:将图片切成固定大小的方块(Patches,如 16×1616 \times 16)。
    2. 投影:将方块拉平并转化为向量。
    3. 自注意力:让每个方块观察其他方块,理解全局构图(例如:猫耳在猫头的上方)。
  • 层数规格:从基础的 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 引入了投影层

  • 属性:一个可学习的线性映射矩阵
  • 功能
    1. 统一维度:将不同长度的向量映射到相同的长度(如 768)。
    2. 空间对齐:通过 L2 归一化,将向量投射到单位超球面上。
  • 训练逻辑:这个模块是和两个编码器联合训练的。它决定了“猫”这个词的向量和“猫”这张图的向量在数学上靠得有多近。

4. 训练与推理流程

训练阶段:对比学习 (Contrastive Learning)
  • 数据:4 亿对互联网图文对。
  • 目标:在一个 Batch 内,让正样本(匹配的图文)相似度趋近 1,让负样本(不匹配的图文)趋近 0。
  • 损失函数:对称交叉熵损失(Symmetric Cross-Entropy Loss)。
推理阶段:零样本预测 (Zero-Shot)
  • 逻辑:模型不再进行分类预测,而是进行“匹配预测”。
  • 步骤
    1. 将图片变成向量 II
    2. 将候选词(如“猫”、“狗”)填入模板“一张[X]的照片”并变成向量 T1,T2T_1, T_2
    3. 计算 II 与各个 TT 的余弦相似度,得分最高者即为答案。

5. 在生成模型(如 DiT)中的角色

在文生图流程中,CLIP 充当了语义导航员

  1. 输入:你的 Prompt。
  2. 输出:一组包含位置信息的语义向量。
  3. 作用:这些向量作为“条件注入(Conditioning)”喂给 DiT。DiT 在降噪过程中会不断对照这些向量,确保洗出来的“噪声”符合 CLIP 定义的语义坐标。

📘 技术规格小记

特性技术选择备注
位置编码可学习绝对位置编码限制了 77 Token 和固定分辨率
对齐模块线性投影层联合训练,决定语义空间的质量
图像架构ViT (Vision Transformer)12-32 层,基于 Patch 处理图片
相似度度量余弦相似度计算向量在超球面上的夹角