FSQ(有限标量量化)

将中间表示投影到低维空间后对每个维度独立做有界舍入取整,替代向量量化(VQ),实现码本 100% 利用率且无需学习码本。

是什么

FSQ(Finite Scalar Quantization,有限标量量化)来自 Mentzer et al. (ICLR 2024),核心思想是”VQ-VAE 做简单就好”。它将输入投影到 D 维低维空间后,对每个维度独立量化到 [-K, K] 范围内的整数,然后投影回原维度。与 VQ 不同,FSQ 不需要维护和更新码本(codebook)。

为什么重要

  1. 100% 码本利用率:VQ 常出现码本崩塌(codebook collapse),大量码字从未被使用(CosyVoice 1 中 VQ 利用率仅 23%)。FSQ 天然利用所有可能的组合。
  2. 更丰富的信息保持:FSQ token 在 ASR 任务上的 WER 显著低于 VQ token(英文 CommonVoice: 10.67% vs 18.26%),说明保留了更多语义信息。
  3. 简化训练:无需 EMA 更新码本、无需处理死码字(dead codes),straight-through estimator 直接近似梯度。
  4. 下游 TTS 收益:更好的语义保持 → LM 对齐更容易 → 内容一致性更高。

工作原理

H = Encoder1(X)                              # 中间表示
H̄ = ROUND(Proj_down(H))                      # 低维投影 + 逐维取整
Ĥ = Proj_up(H̄)                               # 投影回原维度
μ_i = Σ_j h̄_{i,j} · (2K+1)^j                # 低维向量转为标量索引
  • Proj_down: d → D 维(D << d)
  • ROUND: 将每维值舍入到 [-K, K]
  • 有效 token 数: (2K+1)
  • CosyVoice 2/3 中使用 K=2, D=4 → 625 个有效 token
  • 训练时使用 straight-through estimator 近似量化梯度

与 VQ 的对比

维度VQFSQ
量化方式找码本最近邻逐维舍入取整
码本利用率低(常<50%)100%
码本学习需要(EMA/梯度)不需要
死码字问题
信息瓶颈由码本大小由 D 和 K 控制
梯度近似Straight-throughStraight-through

常见误解

  • “FSQ 码本大小 (2K+1)^D 随 D 指数增长,会太大”:实际上 D 和 K 都很小(如 D=4, K=2 仅有 625),比 VQ 的 4096 还小,但利用率 100% 意味着有效信息更多。

相关