VAE 与世界模型学习总结
VAE 与世界模型学习总结
1. VAE 是什么
VAE(Variational Autoencoder,变分自编码器)是一种概率生成模型。
它的核心目标有两个:
- 把高维输入压缩成低维潜在表示
- 从潜在表示中重建原始数据,并且让潜在空间具有良好的分布结构
可以把它理解为:
- 编码器负责“压缩”
- 解码器负责“还原”
- 概率建模负责让潜在空间可采样、可生成
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)
]
这一步的含义是:
- 先从标准正态分布中采样一个噪声 (\epsilon)
- 再根据 (\mu) 和 (\sigma) 对它进行平移和缩放
- 得到目标分布中的样本 (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}
]
那么解码器通常会这样处理:
- 先通过全连接层把 32 维向量映射成更大的隐藏表示
- reshape 成一个小的特征图
- 通过上采样或反卷积逐步放大
- 最终输出完整图像
例如:
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. 建议继续学习的下一步
如果你接下来想继续深入,建议按这个顺序:
- KL 散度为什么能约束潜空间接近标准正态
- 为什么 VAE 往往比普通 AE 更适合生成
- RNN、RSSM、Dreamer 这些世界模型的时序部分到底怎么工作
- 空间 latent 和向量 latent 的区别
- 世界模型中的 reward model 和 policy/controller 如何训练
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)