05 多模态基础
学习理念:多模态就是"让 AI 不只看得懂文字,还能理解图像、生成图像"。你不需要知道 ViT 的注意力头怎么算,但要知道"图片怎么喂给 Transformer"、"文生图大概是什么思路"。用一个比方记住全部:ViT = 把图片当拼图喂给 AI,CLIP = 让 AI 学会看图说话,扩散模型 = 从一团噪点里慢慢拼出一张图。
📖 阅读优先级
| 等级 | 章节 | 说明 |
|---|---|---|
| 🟢 了解即可 | 全部 | 知道有什么技术、能干什么就行 |
一、ViT——"把图片当拼图"
🟢 【了解即可】 在 ViT 出现之前,处理图像靠 CNN(卷积神经网络)。ViT 干了一件很暴力的事:把图片切成小方块,然后像处理文本一样送进 Transformer。
比方:拼图
你有一张 1000×1000 的图片(相当于 100 万像素)
ViT 把它切成 16×16 的小方块,每块 16×16 像素
总共切出 (1000/16)² ≈ 3906 块"小拼图"
把这些"拼图"按顺序排成一串 → 送进 Transformer
↑ 就和处理文本一模一样!关键要点:
- 图片被切成固定大小的 patch(类似文字被切成 token)
- 每个 patch 展平成一个向量(类似 token embedding)
- 加上位置编码告诉模型这些 patch 的原始位置
- 剩下的就和 Transformer 处理文本完全一样了
🟢 【了解即可】 你只需要知道 ViT = "切图+Transformer" 就够了。
二、CLIP——"让 AI 学会看图说话"
🟢 【了解即可】 CLIP 解决了一个很实际的问题:怎么让机器知道"一张猫的图片"和文字"猫"是同一个东西?
比方:匹配游戏
你手上有一堆图片和一堆文字标签,打乱了。
游戏规则:把匹配的图片和文字配对。
训练方式:
一张"猫"的图片和文字"猫" → 放在向量空间里的同一位置 ✅
一张"猫"的图片和文字"狗" → 拉开距离 ❌
训练完的效果:
图片编码器和文字编码器把"猫"和猫图片映射到同一个向量空间
→ 距离越近,说明越匹配
→ 距离越远,说明越不相关CLIP 能干的事(零样本分类):
问:"下图是什么动物?"
图片 → CLIP 图像编码器 → 向量 A
文本候选:"猫"、"狗"、"鸟"
分别编码 → 向量 B1, B2, B3
计算相似度:A vs B1 = 0.85, A vs B2 = 0.43, A vs B3 = 0.21
答案:猫(相似度最高)
↑ 这是零样本,没专门训练过猫的分类!🟢 【了解即可】 CLIP 是很多多模态系统的基石。DALL-E2 用了 CLIP,Stable Diffusion 也受 CLIP 启发。
三、扩散模型——"从噪点里长出一张图"
🟢 【了解即可】 这是目前文生图的主流技术。训练过程像倒放一场雪崩。
比方:雪崩倒放
想象你拍了张完美的雪景照片(原始图像)。
然后开始下雪(加噪点):
第一秒:照片上有一层薄雪,还看得清
第十秒:雪越来越厚,只能看到大概轮廓
第一百秒:完全被雪覆盖,一片白(纯噪声)
↓
**生成过程就是倒放这个视频**
从一片纯白开始:
第负一秒:去一点点雪 → 出现模糊影子
第负十秒:再去一些雪 → 轮廓越来越清晰
第负一百秒:回到原始图像关键:模型每一步只学一件事——"如何去除当前这一层雪(噪声)",不要求一步到位。
条件扩散——"告诉它想要什么"
"一只猫坐在沙发上"
文本 → 文本编码器 → 文本向量
↓
纯噪声 → [去噪 UNet + 文本引导] → 去一点 → [去噪 UNet + 文本引导] → 再去一点 → ... → 猫在沙发上的图片
↑
每一步都参考文本向量,确保生成的图片符合要求🟢 【了解即可】 Stable Diffusion、DALL-E 2/3、Midjourney 都是扩散模型。你不需要知道 UNet 的结构,调用它们的 API 就行。
四、各技术的关系图
文字 → CLIP 文本编码器 → 文本向量 ──┐
图片 → ViT 图像编码器 → 图像向量 ──┤
↓
CLIP 对比学习
(让匹配的图文靠近)
↓
┌─── 先验模型(CLIP)──── 文本向量 ──┐
DALL-E2: │ │
文本 → 文本编码器 ─┤ ├→ 扩散模型 → 图片
└─── 条件编码 ──────────────────────┘五、对 Agent 开发的实际意义
| 技术 | 你能用它做什么 | 怎么用 |
|---|---|---|
| ViT | 图片分类、特征提取 | 不重要,模型封装好了 |
| CLIP | 图文匹配、图片搜索 | 调 API(几行代码) |
| 扩散模型 | 文生图、图生图 | 调 API(DALL-E / Stable Diffusion) |
| DALL-E2 | 文生图 | openai.Image.create(prompt=...) |
🟢 【了解即可】 如果你以后做多模态 Agent(比如"用户发一张图,AI 理解后回答"),你需要知道的就是:
- 理解图片 → 用 CLIP 把图片编码成向量
- 生成图片 → 调 Stable Diffusion / DALL-E 的 API
- 底层用什么 ViT、扩散模型什么结构 → 不用管,框架帮你做了