跳到主要内容

DALL·E 1

一、引言:把图像当作“语言”

在传统机器学习中,文本与图像属于完全不同的数据模态:

  • 文本是离散序列(tokens)
  • 图像是连续像素(matrix)

DALL·E(2021) 的核心创新在于:

将图像离散化为“token序列”,从而用类似 GPT 的方式统一建模文本与图像。

这使得“生成图片”问题被转化为:

给定文本 → 预测一段图像 token 序列

🧩 二、整体架构:三层模型组合

DALL·E 1 的结构可以概括为:

Text → Transformer → Image Tokens → VQ-VAE → Image

具体由三部分组成:

  1. 文本编码(Text Tokens)
  2. 图像编码(Discrete VAE / VQ-VAE)
  3. 自回归 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

步骤:

  1. 编码(Encoder)

    • 输入图像 → 转为连续 latent 表示
  2. 向量量化(Quantization)

    • 每个位置映射到最近的 codebook 向量
    • 得到离散索引(token)
  3. 解码(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 1Transformer(自回归)
DALL·E 2/3Diffusion(扩散)

👉 关键转变:

从“语言建模图像” → “直接建模图像分布”


🧠 九、终极理解

可以用一句话总结:

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 的意义不在于“效果最好”,而在于:

第一次用统一的语言模型框架,同时建模文本与图像

它证明了一件事:

语言模型 ≈ 通用生成模型