← cd ../posts

多模态:图、音、视频是怎么挤进 token 空间的

2026-06-10

AI 系列第 20 篇。这一篇讲怎么让"只懂文字的 LLM"看见、听见、理解世界。

0. 一个根本困境

LLM 工作在 token 空间。每个 token 对应一个向量。Transformer 在这些向量上跑 attention。

但图像怎么变成 token?声音呢?视频呢?

天真的方案:把图像 base64 编码成字符串,让 LLM 读字符串。

不行。base64 字符串太长(一张图几十万字符),且模型完全没法从这种"伪文本"提取视觉信息。

真正的方案是 联合表示:把所有模态都映射到同一个 embedding 空间。这样 attention 才能跨模态工作。

text:  "一只猫" → text embedding → [v1, v2, ...]
image: 猫.jpg → image encoder → [u1, u2, ...]
                                      │
                          目标: v ≈ u
                          (描述同一件事的文本和图像,向量应该相似)

这一篇我们讲这件事怎么从 2021 走到 2026。


1. 2021 CLIP:让图像和文字"对齐"

2021 年,OpenAI 发了 CLIP(Contrastive Language-Image Pre-training)。这是多模态的奠基性工作。

训练目标:对齐图文对

收集 4 亿(图片, 描述)对,让模型学:

正样本: (猫.jpg, "一只在沙发上的橘猫")  → 距离近
负样本: (猫.jpg, "一辆红色跑车")      → 距离远

具体训练用 contrastive loss

对一个 batch 里的 N 个图文对:
   有 N 个正样本 (image_i, text_i)
   有 N² - N 个负样本 (image_i, text_j) i≠j

   loss: 让正样本相似度高,负样本相似度低

训练完,得到两个 encoder:

  • Image encoder:图 → 512 维向量
  • Text encoder:文 → 512 维向量

这俩向量在同一空间。可以直接比较。

CLIP 的神奇用法

用法 1:零样本图像分类

image = encode_image("猫.jpg")
labels = ["一只猫", "一只狗", "一辆车"]
text_embs = [encode_text(l) for l in labels]
predicted = labels[argmax(cosine_sim(image, text_embs))]
# → "一只猫"

不用训分类器,靠"和文本相似度"就能分类。当时震惊全场

用法 2:图像检索

query: "一张日落的照片"
→ 找数据库里和这个文本 embedding 最近的图片

Pinterest / Unsplash 的"搜图"基本都是这套。

用法 3:作为下游模型的视觉骨干

CLIP 的 image encoder 可以接到任何下游网络。Stable Diffusion、GPT-4V、LLaVA 全都用 CLIP(或其变种)当视觉前端。

一句你可以拿去吹的话: CLIP 不是"多模态模型",它是让所有后续多模态模型成为可能的基础设施**。**


2. 2022 Flamingo / 2023 GPT-4V:把视觉嫁接到 LLM

CLIP 解决了"图文对齐"。但还差一步——让 LLM 在对话中理解图像。

你: [发一张图] "这张图里有什么?"
LLM: ???

要让 LLM 真的"懂图",得把视觉信号接进 transformer 序列。

Flamingo(2022 DeepMind)

把 CLIP image encoder 接到一个冻结的 LLM

┌──────────────────────────────────────────────┐
│  prompt: <image1> 一只 <image2> 的            │
│                                              │
│  [image1] → CLIP encoder → 视觉 token            │
│  [image2] → CLIP encoder → 视觉 token            │
│  其他都是文本 token                            │
│                                              │
│  → 全部进入 transformer 一起处理              │
└──────────────────────────────────────────────┘

LLM 在原本的文本 token 序列里"插入"视觉 token。这种范式叫 early fusion

Flamingo 第一次让 LLM 能在对话中混用图文。它启发了所有后续多模态对话模型。

GPT-4V(2023)

OpenAI 在 GPT-4 基础上加入视觉能力。技术细节没公开,但推测是类似 Flamingo 的 early fusion + 视觉 encoder 微调到 LLM 兼容的 embedding 空间。

GPT-4V 能做的事比 Flamingo 强很多:

  • 读手写、表格、图表
  • 看代码截图找 bug
  • 理解 meme、UI 截图
  • 看几何题解题
  • 从图片推断地理位置(甚至能猜出大致经纬度)

这彻底打开了"看图说话"这个产品形态。

LLaVA / MiniGPT-4 / Qwen-VL(开源跟进)

CLIP + 开源 LLM,几个月就有了一堆开源多模态模型。今天主流的:

  • LLaVA-NeXT:开源经典
  • Qwen-VL 2.5:阿里,多语言强
  • InternVL 3:上海人工智能实验室
  • Llama 3.2 11B/90B Vision:Meta 官方

3. 音频:Whisper + 音频 token

Whisper(OpenAI 2022)

只做语音 → 文字的 ASR 模型。68 万小时多语言音频训出来。

audio.wav → Whisper → "今天天气真好"

不属于"多模态 LLM",但是后续多模态系统的标配前端:把音频转文字,再喂给 LLM。

Audio embedding 路线

把音频也变成 token 进 LLM:

audio.wav → audio encoder → audio tokens → 进 transformer

主流方案:

  • Whisper encoder:把语音抽成向量
  • Wav2vec 2.0 (Meta):自监督音频表示
  • AudioLM / VALL-E:把音频离散化成 token

GPT-4o / Gemini:原生音频输入

2024 年 GPT-4o 是第一个原生多模态的大模型——文本、图像、音频在同一个 transformer 里。

GPT-4 (旧):
  audio → whisper → text → GPT-4 → text → TTS → audio
  延迟: 几秒
  
GPT-4o (新):
  audio → audio tokens → GPT-4o → audio tokens (流式)
  延迟: 320ms
  
  优势: 能保留情感、停顿、语调、笑声

这就是"原生多模态"——所有模态共享同一个模型,不通过文字桥接。


4. 视频:把时间维度也塞进去

视频 = 一连串图片 + 音频 + 字幕。挑战是 数据量太大

30 分钟视频 (1080p, 30fps):
  ~ 54000 帧
  每帧编码 ~ 256 token (CLIP 风格)
  总共 ~ 1400 万 token

直接全塞进 context window 显然不行。

主流解法

解法 1:稀疏采样

每秒抽 1 帧(甚至更少)。30 分钟视频变成 1800 帧 ≈ 50 万 token。配合 1M context 可以塞。

解法 2:层次化压缩

每秒先抽 30 帧 → 局部 attention 压成一帧 → 再喂给上层。

解法 3:时空 transformer

直接对 (T, H, W) 三维数据做 attention,而不是把每帧单独处理。

Gemini 1.5:长视频 understanding 的代表

Gemini 1.5 Pro 在论文里展示了"看完一整部 1 小时电影后回答问题"。这是稀疏采样 + ring attention + 高效编码的综合结果。

Sora / Veo / Kling:视频生成

反向问题——让模型生成视频。

prompt: "一只在月球上跳舞的猫,皮克斯风格"
→ 生成 10 秒视频

技术原理是 diffusion in latent space(潜空间扩散):

  1. 用 encoder 把视频压缩到低维潜空间
  2. 在潜空间训 diffusion model
  3. 用 decoder 把生成结果解码回视频

2024 OpenAI 的 Sora、Google 的 Veo、Kuaishou 的 Kling、字节的 Seedance 都是这条路。

下一篇会详细讲世界模型 / 视频生成。


5. 多模态的真实挑战

挑战 1:token 数量不平衡

1 张 1080p 图片:    ~ 1000 tokens
10 秒 1080p 视频:   ~ 30000 tokens
10 秒音频:          ~ 1500 tokens
1 千字文本:        ~ 1000 tokens

视频 token 占用是其他模态的几十倍。这是为什么视频理解一直是多模态最难的一环。

挑战 2:跨模态对齐数据稀缺

text-text 数据:     数万亿 token (整个互联网)
text-image 数据:    几十亿对 (CLIP 4 亿,LAION 50 亿)
text-audio 数据:    几亿对 (远少于图像)
text-video 数据:    几千万对 (更少,且质量差)

数据墙首先在视频和音频上撞到。

挑战 3:模态之间的"统治权"

LLM 训练时如果文字数据远多于图像/音频,模型默认会偏向用文字思考。需要专门设计训练课程让各模态平衡。

挑战 4:评估难

"这个回答是否准确?" - 文字回答好评
"这个图像描述是否准确?" - 难
"这个视频生成是否符合 prompt?" - 极难

视频生成 eval 还是开放问题。


6. 原生多模态 vs 拼接式

拼接式 (legacy):
  audio → whisper → text → LLM → text → TTS → audio
  
  特点: 模块化、容易实现、但损失信息

原生多模态 (modern):
  audio → audio tokens → 大模型 → 多模态 token (text + audio) → 多种输出
  
  特点: 信息保留完整、延迟低、训练复杂

2024-2026 是从拼接式向原生的转折。GPT-4o、Gemini 2、Claude 3.5+ 都在朝原生多模态走。


7. 多模态的几个杀手应用

应用 1:截图问答

"我看不懂这个表格,帮我解释一下。"
[上传截图]

GPT-4V / Claude 3.5 / Qwen-VL 都强。已经成为生产力工具标配。

应用 2:UI 理解 + 自动化

"打开这个 app 帮我订一杯咖啡。"
[截图当前界面]

Anthropic Claude Computer Use(2024.10)就是这套——多模态 + agent。

应用 3:内容生成

"画一张产品 demo 海报"
→ DALL-E / Midjourney / Stable Diffusion 3 / Flux

文字 → 图。文字 → 视频(Sora / Veo / Kling)。

应用 4:语音助手 2.0

GPT-4o Voice Mode:
  用户说话 → 实时打断 → 实时回答 → 带情感的语音输出

延迟降到 < 500ms,像和真人对话。

应用 5:视频字幕 / 总结

30 分钟会议录像 → 自动生成字幕 + 章节标题 + 行动项

Loom / Otter.ai / Fathom 都是这类。


8. 给你的小作业

  1. 解释 CLIP 是怎么训出"图文共享 embedding 空间"的。用 contrastive loss 描述。
  2. GPT-4o 比 GPT-4 + Whisper + TTS 的拼接版强在哪?至少三点。
  3. 如果你做一个 AI 漫画创作助手,需要哪些多模态能力?画一个 pipeline。

下一篇钩子:会看图、会听声、还不够。 下一个前沿——让 AI 理解物理世界:物体怎么运动、重力怎么作用、人怎么交互。 Sora 看似在"画视频",背后藏着一个野心:建立 world model(世界模型)。 下一篇我们看 Sora / Genie / V-JEPA 这些"世界模型"项目在赌一件什么大事。