VAE 与世界模型学习总结

1. VAE 是什么

VAE(Variational Autoencoder,变分自编码器)是一种概率生成模型。
它的核心目标有两个:

  1. 把高维输入压缩成低维潜在表示
  2. 从潜在表示中重建原始数据,并且让潜在空间具有良好的分布结构

可以把它理解为:

  • 编码器负责“压缩”
  • 解码器负责“还原”
  • 概率建模负责让潜在空间可采样、可生成

2. VAE 的整体结构

VAE 的基本流程可以写成:

[
x \rightarrow Encoder \rightarrow (\mu, \log \sigma^2) \rightarrow z \rightarrow Decoder \rightarrow \hat{x}
]

其中:

  • (x):输入数据,例如一张图像
  • (\mu):潜变量分布的均值
  • (\log \sigma^2):潜变量分布的对数方差
  • (z):从该分布采样得到的潜变量
  • (\hat{x}):解码器重建出来的数据

3. VAE 的核心思想

普通自编码器是:

[
x \rightarrow z \rightarrow \hat{x}
]

这里的 (z) 是一个确定值。

而 VAE 不直接输出一个固定的 (z),而是输出一个分布:

[
q_\phi(z|x)=\mathcal{N}(\mu(x),\sigma^2(x))
]

这表示:

  • 对于每个输入 (x)
  • 编码器会预测一个高斯分布
  • 再从这个高斯分布中采样出潜变量 (z)

因此,VAE 学到的不是单个点,而是一个“潜在空间中的区域”。


4. 高斯分布可以有维度吗

可以。

4.1 一维高斯

[
z \sim \mathcal{N}(\mu,\sigma^2)
]

表示一个数在数轴上随机。

4.2 多维高斯

[
\mathbf{z} \sim \mathcal{N}(\boldsymbol{\mu}, \boldsymbol{\Sigma})
]

表示一个向量在高维空间中随机。

如果 latent dim = 32,那么:

[
z \in \mathbb{R}^{32}
]

这时用到的是 32 维高斯分布
也就是说,VAE 会输出:

  • 32 个均值
  • 32 个方差

每个维度对应潜变量中的一个分量。


5. 均值和方差是怎么来的

这是一个特别关键的问题。

5.1 不是手工计算出来的

(\mu) 和 (\sigma) 不是手工算的,也不是固定写死的参数。

5.2 它们是编码器网络的输出

编码器本质上是一个函数:

[
Encoder(x) \rightarrow (\mu(x), \log \sigma^2(x))
]

也就是说:

  • 输入一张图像 (x)
  • 经过卷积层、全连接层等网络结构
  • 输出一个均值向量和一个方差向量

如果潜变量维度是 32,那么:

[
\mu(x) \in \mathbb{R}^{32}, \quad \log \sigma^2(x) \in \mathbb{R}^{32}
]

所以:

  • 网络参数是可学习的权重 (W,b)
  • (\mu(x))、(\sigma(x)) 是网络对当前输入的计算结果

这两者不要混淆。


6. 重参数化技巧

由于 VAE 需要从高斯分布中采样,但随机采样本身不方便反向传播,所以使用重参数化技巧:

[
z = \mu + \sigma \odot \epsilon,\quad \epsilon \sim \mathcal{N}(0,I)
]

这一步的含义是:

  1. 先从标准正态分布中采样一个噪声 (\epsilon)
  2. 再根据 (\mu) 和 (\sigma) 对它进行平移和缩放
  3. 得到目标分布中的样本 (z)

这样模型就仍然可以进行梯度反传。


7. z 的形状是什么

如果输入图像是:

[
x \in \mathbb{R}^{64 \times 64 \times 3}
]

那么它一共有:

[
64 \times 64 \times 3 = 12288
]

个像素值。

假设潜变量维度设为 32,那么:

[
z \in \mathbb{R}^{32}
]

所以:

  • 原图像是 12288 维
  • 潜变量是 32 维

因此,(z) 通常不是图像大小的张量,而是一个低维向量。

有些更现代的模型会使用空间潜变量,例如:

[
z \in \mathbb{R}^{8 \times 8 \times 16}
]

但即使这样,它也通常仍然远小于原图像尺寸。


8. 解码器怎么把 z 还原成图像

解码器做的事情可以写成:

[
\hat{x} = Decoder(z)
]

如果:

[
z \in \mathbb{R}^{32}
]

目标图像大小是:

[
\hat{x} \in \mathbb{R}^{64 \times 64 \times 3}
]

那么解码器通常会这样处理:

  1. 先通过全连接层把 32 维向量映射成更大的隐藏表示
  2. reshape 成一个小的特征图
  3. 通过上采样或反卷积逐步放大
  4. 最终输出完整图像

例如:

z (32)
→ FC
→ 4×4×64
→ 8×8×64
→ 16×16×32
→ 32×32×16
→ 64×64×3

因此,VAE 不是通过“公式反求”来还原图像,而是通过一个神经网络来学习生成图像。


9. Decoder 是否需要输入 x

不需要。

正确流程是:

9.1 重建当前图像

[
x_t \rightarrow z_t \rightarrow \hat{x}_t
]

也就是:

[
\hat{x}_t = Decoder(z_t)
]

9.2 预测未来图像

[
z_{t+1} \rightarrow \hat{x}_{t+1}
]

也就是:

[
\hat{x}{t+1} = Decoder(z{t+1})
]

所以:

  • Decoder 的输入是潜变量 (z)
  • 它不需要再加原图 (x)
  • 原图只在训练时用来和重建结果做比较

10. VAE 的损失函数

VAE 的总损失由两部分组成:

[
\mathcal{L} = \mathcal{L}{rec} + \mathcal{L}{KL}
]

10.1 重建损失

用于约束重建图像和原图接近:

[
\mathcal{L}_{rec} = ||x - \hat{x}||^2
]

或在某些任务中使用 BCE。

10.2 KL 散度

用于约束编码器输出的分布接近标准正态分布:

[
D_{KL} = -\frac{1}{2} \sum_{i=1}^{d} \left(1 + \log \sigma_i^2 - \mu_i^2 - \sigma_i^2\right)
]

这表示:

  • 均值不要偏离 0 太远
  • 方差不要偏离 1 太远

这样潜在空间会更加平滑和规整,更适合采样生成。


11. 世界模型是什么

世界模型(World Model)的核心思想是:

不直接在像素空间做预测,而是在潜在空间中建模世界的动态变化。

通常包含三个模块:

模块 作用
VAE 把图像压缩为潜变量
时序模型(RNN / RSSM 等) 预测潜状态如何随时间变化
Controller 根据状态做动作决策

12. 世界模型中 VAE 的作用

在世界模型里,VAE 负责:

[
x_t \rightarrow z_t
]

也就是:

  • 输入当前时刻的图像观测 (x_t)
  • 输出当前时刻的潜变量表示 (z_t)

这里的 (z_t) 可以理解为:

当前图像的低维压缩语义表示

例如:

  • 场景结构
  • 物体位置
  • 视觉特征
  • 与决策相关的信息

13. 世界模型预测未来的完整流程

Step 1:获得当前观测

[
x_t
]

Step 2:用 VAE 编码

[
x_t \rightarrow z_t
]

Step 3:结合动作和历史记忆进行时序预测

[
(z_t, a_t, h_t) \rightarrow z_{t+1}, h_{t+1}
]

其中:

  • (a_t):当前动作
  • (h_t):时序模型的隐藏状态

Step 4:可选地解码成未来图像

[
z_{t+1} \rightarrow \hat{x}_{t+1}
]

Step 5:循环进行多步预测

[
z_t \rightarrow z_{t+1} \rightarrow z_{t+2} \rightarrow \cdots
]

因此,世界模型可以在潜在空间中“想象未来”。


14. 世界模型中的核心逻辑

可以用一句话概括:

  • VAE 负责看世界
  • RNN / RSSM 负责想未来
  • Decoder 负责把想象还原成画面

其完整链路可以写成:

[
x_t \rightarrow z_t \rightarrow z_{t+1} \rightarrow z_{t+2} \rightarrow \cdots \rightarrow \hat{x}_{未来}
]


15. 你前面几个关键问题的统一总结

15.1 图像输入给 VAE 的是什么

输入的是整张图像,不是单个像素。

15.2 VAE 是对像素建高斯吗

不是。
VAE 是对“整张图像对应的潜变量”建高斯分布。

15.3 如果 latent dim = 32

那么对应的是一个 32 维高斯分布,也就是 32 个均值和 32 个方差。

15.4 这些均值和方差怎么来

它们不是手算的,而是编码器网络对输入图像的输出。

15.5 z 还是不是图像大小

通常不是。
z 是低维潜变量,例如 (\mathbb{R}^{32})。

15.6 怎么从 z 还原图像

把 z 输入解码器,由解码器通过神经网络一步步生成图像。

15.7 Decoder 是否还需要原图

不需要。
Decoder 只需要 z。

15.8 世界模型怎么预测未来

先把当前图像编码成 z,再用时序模型预测未来 z,最后用解码器把未来 z 变成未来图像。


16. 最终一句话总结

VAE 的本质是:

把输入图像编码成一个潜在高斯分布,从中采样得到低维潜变量,再通过解码器重建图像。

世界模型的本质是:

先用 VAE 把图像变成潜状态,再在潜空间中预测未来,最后按需还原成图像。


17. 建议继续学习的下一步

如果你接下来想继续深入,建议按这个顺序:

  1. KL 散度为什么能约束潜空间接近标准正态
  2. 为什么 VAE 往往比普通 AE 更适合生成
  3. RNN、RSSM、Dreamer 这些世界模型的时序部分到底怎么工作
  4. 空间 latent 和向量 latent 的区别
  5. 世界模型中的 reward model 和 policy/controller 如何训练
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐