DALL·E 1
一、引言:把图像当作“语言”
在传统机器学习中,文本与图像属于完全不同的数据模态:
- 文本是离散序列(tokens)
- 图像是连续像素(matrix)
而 DALL·E(2021) 的核心创新在于:
将图像离散化为“token序列”,从而用类似 GPT 的方式统一建模文本与图像。
这使得“生成图片”问题被转化为:
给定文本 → 预测一段图像 token 序列
🧩 二、整体架构:三层模型组合
DALL·E 1 的结构可以概括为:
Text → Transformer → Image Tokens → VQ-VAE → Image
具体由三部分组成:
- 文本编码(Text Tokens)
- 图像编码(Discrete VAE / VQ-VAE)
- 自回归 Transformer(类似 GPT)
其中 Transformer 规模约 120亿参数,直接对“文本 + 图像 token”联合建模 ([维基百科][1])
🔧 三、核心突破:VQ-VAE(离散图像表示)
3.1 什么是 VQ-VAE?
VQ-VAE(Vector Quantized Variational AutoEncoder) 是一种生成模型,其核心能力是:
👉 把连续图像压缩为“离散代码(tokens)”并可逆重建 ([Shadecoder][2])
3.2 工作机制(关键)
VQ-VAE 包含三部分:
Encoder → Codebook → Decoder
步骤:
-
编码(Encoder)
- 输入图像 → 转为连续 latent 表示
-
向量量化(Quantization)
- 每个位置映射到最近的 codebook 向量
- 得到离散索引(token)
-
解码(Decoder)
- 将 token 序列还原为图像
3.3 在 DALL·E 中的具体形式
一张图:
256 × 256 RGB
被转换为:
32 × 32 = 1024 个 token
每个 token 来自:
codebook(约 8192 种离散值)
([Entelecheia][3])
3.4 为什么要离散化?
因为 Transformer:
❗只能处理序列(tokens),不能直接处理像素矩阵
3.5 VQ-VAE 的优势
- 压缩能力强:降低计算复杂度
- 离散表示:适配语言模型
- 可组合性:更容易拼接视觉概念
([Shadecoder][2])
3.6 代价(很重要)
- 信息损失 → 图像偏模糊
- 高频细节缺失
- 空间结构表达有限
🤖 四、Transformer:像 GPT 一样“写图片”
4.1 输入结构
Transformer 的输入是:
[text tokens] + [image tokens]
例如:
“a red cube” + [图像token序列]
4.2 训练目标
模型学习:
P(image_tokens | text_tokens)
即:
👉 给定文本,逐步预测图像 token
4.3 生成方式(自回归)
类似 GPT:
t1 → t2 → t3 → ... → t1024
每一步预测下一个 token。
4.4 Attention 机制(关键)
DALL·E 1 使用混合注意力:
- text → text
- text → image
- image → image
统一在一个 Transformer 中 ([Entelecheia][3])
⚙️ 五、完整生成流程
给定输入:
“一只穿西装的狗”
生成过程:
1. 文本 → token 化
2. Transformer 开始生成 image tokens
3. 生成 1024 个 token
4. VQ-VAE 解码 → 图像
可以抽象为:
text → embedding → autoregressive generation → image tokens → decode → image
🧠 六、模型为何能“理解世界”
DALL·E 1 训练数据:
≈ 2.5 亿 图文对
([Entelecheia][3])
因此模型学到的是:
语言 ↔ 视觉模式 的统计关系
例如:
“dog” → 某种视觉结构
“suit” → 某种纹理
组合后:
dog + suit → 新图像
👉 这就是“组合泛化能力”
⚠️ 七、DALL·E 1 的局限
1. 图像质量有限
- VQ-VAE 有损压缩 → 模糊
2. 生成速度慢
- 自回归生成(1024步)
3. 空间结构弱
- Transformer 不擅长建模二维结构
🔄 八、与后续模型的本质区别
| 模型 | 核心方法 |
|---|---|
| DALL·E 1 | Transformer(自回归) |
| DALL·E 2/3 | Diffusion(扩散) |
👉 关键转变:
从“语言建模图像” → “直接建模图像分布”
🧠 九、终极理解
可以用一句话总结:
DALL·E 1 = 用 GPT 生成“图像token序列”,再解码成图片
🚀 十、从工程角度再看一眼
// 简化伪代码
tokens = encode(text)
for i in range(1024):
tokens.append(transformer.predict(tokens))
image = VQVAE.decode(tokens)
🧠 结语
DALL·E 1 的意义不在于“效果最好”,而在于:
❗第一次用统一的语言模型框架,同时建模文本与图像
它证明了一件事:
语言模型 ≈ 通用生成模型