14 第十四章 The Fork 分水岭
我们已经知道了连续空间的自编码器与变分自编码器,以及离散空间的向量量化与残差量化。仔细观察这些模型,会发现它们的核心结构惊人的一致:
\[\text{输入} x \xrightarrow{\text{卷积编码器}} \text{潜变量} z \xrightarrow{\text{转置卷积解码器}} \text{还原输出} \hat{x}\]
一个很自然的问题是:解码器已然是一个单次前向传播的普通转置卷积网络,输出的就是声音了,那人们所讨论的各种不同的声音生成模型到底在这个系统的哪个位置?
本章将讨论整个现代音频生成领域的核心,即如何获得潜变量。
14.1 无中生有
要理解整个生成系统,必须把两套完全不同的任务区分开来:
音频压缩与回放是我们在前几章了解到的神经编解码器的本质工作:现实中已经存在一段声音 \(x\),编码器把它压缩成极小体积的潜变量 \(z\),解码器接收 \(z\) 并还原出声音 \(\hat{x}\)。在这个闭环中,完全不需要生成大模型的介入。
但是当我们使用像Suno那样的AI时情境彻底变了,用户输入的通常是一段提示文本,例如“宁静雨夜中的钢琴独奏”,此时世界上根本不存在这首钢琴曲的原音频 \(x\),那谁来凭空创作出这首曲子的潜变量 \(z\)?
这就是生成大模型的使命,它需要充当“作曲家”,根据提示词,在潜空间里无中生有地创造一份合法的潜变量 \(z\)。之后传递给解码器,由转置卷积还原出声音。
14.2 潜空间对齐
如果大模型随意生成一堆潜变量,掉进了潜空间未定义的区间,解码器就会输出刺耳的蜂鸣尖叫或混乱噪音。怎么保证大模型凭空生成的潜变量*落在有效范围内?
这是通过两阶段训练法来实现的:
第一阶段:训练并冻结编解码器
训练好编码器与解码器,然后将它们彻底冻结(参数固定)。潜空间的几何结构与有效范围自此被完全固定。
第二阶段:编码器充当参考答案
准备大量音频及对应的文字描述,将真实音频输入给冻结的编码器,得到真实的潜变量 \(z_{\text{real}}\),大模型以文本为输入,以 \(z_{\text{real}}\) 为目标进行训练。
14.3 The Fork
分水岭在于对于连续和离散这两种不同类型的潜变量(瓶颈层,Bottleneck),生成模型的架构有着本质的差别。
根据瓶颈的不同,整个领域撕裂为两大流派:
┌── 离散潜变量 ────▶ 语言模型 (LLM)
│ (离散整数符号 → 自回归预测下一个Token)
波形 ──▶ 卷积编码器 ──▶ 瓶颈 ──▶
│
└── 连续潜变量 ───▶ 扩散 / 流匹配 (DiT/Flow)
(连续平滑向量 → 速度场去噪)
| 核心维度 | 离散分支 | 连续分支 |
|---|---|---|
| 瓶颈层结构 | 残差向量量化 | VAE均值方差 |
| 约束 | 码本损失 + 承诺损失 | KL 散度损失(强制聚集成正态分布) |
| 潜变量形态 | 由离散整数编号组成的表格矩阵 | 由连续浮点数组成的高维特征图 |
| 大模型选择 | Transformer语言模型 | 扩散模型/流匹配 |
| 生成逻辑 | 类似GPT打字,一步步自回归预测下一个Token | 类似画画素描,从纯高斯白噪声逐步去噪演化 |
在离散分支中,每个时间步的潜向量都被映射为有限码表中多个整数索引的集合(RVQ中可以选择 \(Q_1\) 到 \(Q_N\) 每个最接近的码字的编号作为量化方法),音频本质上被“分词化”转换成了token。