Core Thesis
VAE 重建质量越高,下游 Diffusion 的生成质量不一定更好——甚至可能更差。
因为过度优化重建 = 让 latent space 去记住噪声,扭曲了语义结构,让 Diffusion 更难学到真正的视觉概念。
实证:Yao et al. (2025) 将 VAE 的 rFID 从 0.49 提升到 0.18(重建更好),但下游 Diffusion 的 gFID 从 20.3 暴跌到 45.8(生成更差)。
01
为什么需要 VAE
先建直觉——VAE 解决什么问题?
当前最好的图像/视频生成模型都依赖 Diffusion Transformer。Transformer 的注意力机制是 O(n²)——序列越长,计算量越离谱。
量级感
一段 720p、5 秒、24fps 的视频 =
1.1 亿个 token。
在像素空间直接算注意力?完全不可能。
VAE 的职责只有一个:把视频压缩到一个紧凑的 latent space,让 Diffusion Transformer 在小得多的空间里工作。
原始视频 x
Encoder
latent z
Decoder
重建 x̂
认知锚点
VAE 不是目的,是管道。它的价值不在于"重建得多完美",而在于"压缩后的 latent space 对下游学习是否友好"。这个认知将贯穿全文。
02
VAE 工作原理
用 2 分钟建立足够的技术模型
普通 Autoencoder:输入 → Encoder 压缩成小表示 → Decoder 重建。瓶颈结构迫使模型学到"什么是真正重要的"。
Variational Autoencoder 加了一层:Encoder 不输出一个固定的点,而是输出一个概率分布的参数(均值 μ 和标准差 σ),从中采样 z 再送进 Decoder。
x
Encoder → μ, σ
采样 z ~ N(μ, σ²)
Decoder
x̂
训练目标:四项 Loss 协同
LKL 正则化
让 latent 分布接近标准正态,保证 latent space 平滑。权重极低 ~1e-6,几乎不在乎采样能力,只要平滑。
Lrecon 基本功
L1 风格重建损失。输出应该像输入。带一个可学习的置信度参数。
Lperceptual 语义层
过预训练 VGG 提特征、比中间层。"看起来像"比"像素一样"重要。
Ladversarial 锐化
借鉴 GAN:训判别器区分真假,VAE 要骗过它。逼出高频细节,防模糊。
为什么要同时训练图像和视频?
训练 text-to-video 模型时,需要先在图像上预训练——模型得先理解"名词"(人、地点、物体),再理解"动词"(动作、运动、镜头)。所以 VAE 必须同时处理图像和视频,总 loss = Limage + Lvideo。
阶段一 1 周
构建纯视频 VAE 基线
先解决最简单的子问题
2024 年秋天,没有好用的开源 Video VAE。他们从纯视频开始,用传统 CNN 架构将 Conv2D 替换为 Conv3D。
FLUX-1 用 8x 空间下采样,但视频的最优压缩率未知。保守起步:4x 空间 + 4x 时间。开箱即用,重建几乎完美——但压缩率太低,360p 1 秒视频就 OOM(80GB H100)。
瓶颈定位
超线性内存增长来自 Encoder/Decoder 中的
AttentionBlock。解法:在 attention 之前多降采样。
压缩率实验
| 空间 | 时间 | 等效压缩率 | 结果 |
| 4x | 4x | 12x |
不可用 压缩不够,高分辨率 OOM |
| 8x | 8x | 96x |
不可用 重建质量崩坏 |
| 16x | 4x | 192x |
不可用 重建质量崩坏 |
| 8x | 4x | 48x |
可用 偶有伪影(180p 高运动场景) |
等效压缩率怎么算?
等效压缩率 = H 下采样 × W 下采样 × T 下采样 × (3 RGB 通道 / 16 latent 通道)
例如 8x 空间、4x 时间:8 × 8 × 4 × (3/16) = 48x
前瞻
自适应 tokenization 是未来。当前 latent 大小机械地绑定输入分辨率,而非内容复杂度。一个平静湖面和一场拳击赛信息量完全不同,但 latent 大小一样——这并不合理。
阶段二 3 个月
图像-视频联合训练
整个项目最艰难的阶段——三个环环相扣的子问题
为了让 VAE 同时处理图像,他们将每张图像 pad 成 4 帧"静态视频"(temporal downsample 压回 1 帧 latent)。视频重建正常,但图像重建一塌糊涂——细节模糊、面部不可辨。单独训图像完全没问题,所以问题出在联合训练的 loss 设计。
子问题 1:Loss 归一化
-
问题
Loss 按维度求和再除以 batch size。视频 tensor 比图像大 ~10x → 视频对 loss 贡献 ~10x → 优化器对图像信号"失明"。
-
尝试:改用 mean per sample
归一化了 loss 量级,但副作用:每像素梯度反比于 tensor 大小。小图像中一个坏像素的梯度是大视频的 ~10x → 过度强调图像完美重建。
-
解法:参考形状归一化
保留 sum-based loss,但相对一个固定参考形状做归一化。既保持 loss 量级一致,又不扭曲每像素梯度,还能手动调节图像/视频权重。
子问题 2:NaN 地狱
即使解决了 loss 归一化,加权后仍然频繁 NaN。
-
症状
激活值和梯度的 L2 Norm 明显爆炸。
-
尝试 1:到处加 GroupNorm
早期稳定了,深入训练后仍然爆炸。
-
尝试 2:FiLM 条件层
让网络区分图像/视频模态。但 scale 参数一从 0 变非零,就触发梯度爆炸 → 放弃。
-
解法:自适应梯度裁剪 (AGC)
跟踪每个参数的梯度/权重范数比率的 EMA,超阈值则裁剪。训练终于稳定了——但带来了新问题 ↓
子问题 3:色斑问题
AGC 稳定了训练,但重建图像上出现了彩色斑点(绿色、黑色色块随机出现)。
根因
GroupNorm 是罪魁祸首。组内归一化时,如果某个通道的激活值特别大,GroupNorm 会让它"独占话语权",压制同组其他通道信号——表现在像素层面就是局部色斑。
Meta MovieGen 的替代方案
Meta 在 MovieGen 论文中描述了同样的色斑问题,但解法不同:在 VAE loss 中添加一项惩罚激活值异常值的损失。由于 Meta 没有发布模型,无法验证效果。但这说明色斑问题有多种解法。
阶段三 2 周
多分辨率训练
灾难性遗忘
顺序训练 180p → 360p → 720p 后,最终 checkpoint 完全忘记了低分辨率的重建能力。而 Diffusion 模型需要跨分辨率训练,VAE 必须全分辨率可用。
解法
改课程策略:引入高分辨率时
保留低分辨率训练。通过超参搜索确定各分辨率 loss 权重:
180p → ~1.1(主力) ·
360p → 0.1 ·
720p → 0.01
06
为什么最终切换到 Wan 2.1 VAE
训练 Diffusion 时,数据集只需用 VAE 嵌入一次(离线)。2025 年 2 月 Wan 2.1 VAE 发布时,Linum 只嵌入了一小部分数据集,于是做了对比:
| Linum VAE | Wan 2.1 VAE |
| 生成质量 | ✓ | ✓ 持平 |
| 模型大小 | 较大 | 更小 |
| 速度 | 全时空注意力 | 更快(无全时空注意力) |
| 嵌入成本 | 高 | 低 |
务实选择:质量持平,Wan 更便宜 → 切换,省钱嵌入大数据集。
元启示
VAE 是基础设施,不是护城河。没有差异化优势时,用社区最优解是理性选择。
核心
Better Reconstruction ≠ Better Generation
全文最重要的部分——回到开头的反直觉命题
Linum 在构建 VAE 时执着于"完美重建",花了数周优化那 ~10% 的困难样本。回头看,他们应该直接把这些样本过滤掉。
那 10% 的困难样本是什么?
几乎都是低质量数据:严重像素化的人脸、JPEG 压缩伪影遍布的图像、完全没有细节的树枝和纹理——都是激进 JPEG 压缩的产物。
关键因果链
- 压缩伪影比真实细节更难重建——因为它们本质上是噪声
- 逼 VAE 完美重建噪声 → latent space 被扭曲去"记住"噪声模式
- Diffusion 通过这个 latent space "看世界" → 学到的是噪声模式,不是视觉概念
- 生成质量反而更差
这也解释了为什么跨分辨率联合训练那么不稳定:模型在 180p 时把噪声理解烙进了表示空间,引入高分辨率数据时不得不彻底重塑 latent space。
直觉
更清晰的镜头 → Diffusion 更容易学到模式 → 生成更好
VS
现实
rFID 0.49→0.18(重建更好),gFID 20.3→45.8(生成更差)。你在优化镜头清晰度,但那个镜头同时放大了噪声。
展望
未来方向
如何创造一个"对下游学习友好"的 latent space?
路线 A · 正则化 VAE
让 latent space 对齐语义表征
保留 VAE,但增加对齐损失——让 latent 表征与预训练视觉编码器(如 DINO)对齐。"压缩"的同时保留语义结构。
可以端到端训练(不实际),也可以用对齐损失单独重训 VAE,或直接让更大 VAE 学习自监督表征。
路线 B · 去掉 VAE
让 Diffusion 自己学压缩
JIT:对 flow-matching 目标做少量修改,让 Diffusion 模型自己学压缩,根本不需要 VAE。
目前效果还不如最好的对齐 VAE 方案。但 Linum 团队直觉认为:JIT 也在过拟合噪声(程度更轻),如果让它显式学习 DINO 式语义表征,可能会超越现有方法。
Takeaway
VAE 的目标是"有意义的有损压缩"——丢掉噪声,保留语义结构,让下游模型能学到东西。