生成模型评估度量
生成模型(GAN、扩散模型等)的输出质量长期依赖人工主观评分,成本高且不可复现,因此需要一种基于特征空间统计距离的自动化度量来替代人类评审。
Salimans et al. 在 "Improved Techniques for Training GANs" 中提出 Inception Score(IS)。核心思路:将生成图像送入预训练的 Inception-v3 分类网络,若生成质量高,则单张图像的类别后验 $p(y|x)$ 应尖锐(高置信度),同时所有生成图像的边缘分布 $p(y)$ 应均匀(高多样性)。IS 用两者的 KL 散度之期望来量化。IS 的根本缺陷在于它不与真实数据做任何比较,只衡量生成分布自身的性质,因此无法检测"生成的图像很清晰但与目标域完全无关"这类分布偏移。
Heusel et al. 在 "GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium" 中提出 Fréchet Inception Distance(FID)。关键突破:同时提取真实样本和生成样本在 Inception-v3 pool3 层(2048 维)的特征,分别拟合多元高斯分布,然后计算两个高斯之间的 Fréchet 距离(Wasserstein-2 距离)。FID 同时捕捉质量(均值偏移)和多样性(协方差差异),且与人类感知评分高度相关。FID 迅速取代 IS 成为图像生成领域的黄金标准,几乎所有 GAN、VAE、扩散模型论文都以 FID 为主要报告指标。
Bińkowski et al. 提出 Kernel Inception Distance(KID),用 Maximum Mean Discrepancy(MMD)替代 Fréchet 距离。KID 是无偏估计量——FID 在样本量不足时存在显著正偏差(系统性偏高),而 KID 没有这个问题。但 KID 的计算复杂度为 $O(n^2)$,且实践中与 FID 高度相关,因此 FID 仍占主导。
Kilgour et al. 提出 Fréchet Audio Distance(FAD),用 VGGish 网络替代 Inception-v3 提取音频特征,将 FID 范式推广到音频生成评估(后被 AudioLDM、MusicGen 等广泛采用)。同年 Unterthiner et al. 提出 Fréchet Video Distance(FVD),用 I3D 网络提取时空特征评估视频生成。Fréchet 距离框架由此成为跨模态生成评估的通用范式。
Parmar et al. (2022) 发布 Clean-FID,揭示图像预处理方式(PIL resize vs. TensorFlow resize)可导致 FID 差异高达 10 分,呼吁统一预处理流程。2026 年 "The FID Lottery" 进一步量化了随机种子、模型初始化等隐藏随机性对 FID 的影响——同一架构不同种子训练的模型 FID 标准差可达 2–5 分,而许多论文声称的改进也在此范围内。社区开始呼吁报告置信区间而非单一数值。
FID 的数学核心是两个多元高斯分布之间的 Fréchet 距离。设真实样本特征的均值和协方差为 $(\mu_r, \Sigma_r)$,生成样本的为 $(\mu_g, \Sigma_g)$,则 $\text{FID} = \|\mu_r - \mu_g\|_2^2 + \mathrm{Tr}\!\bigl(\Sigma_r + \Sigma_g - 2(\Sigma_r \Sigma_g)^{1/2}\bigr)$。第一项 $\|\mu_r - \mu_g\|_2^2$ 度量特征中心的偏移——生成样本是否落在正确的语义区域;第二项度量协方差结构差异——$\mathrm{Tr}(\Sigma_r + \Sigma_g)$ 是两个分布各自方差之和,$2\mathrm{Tr}((\Sigma_r\Sigma_g)^{1/2})$ 是几何交叉项,当且仅当 $\Sigma_r = \Sigma_g$ 时第二项为零。为什么选 Fréchet 距离而非 KL 散度?KL 散度在分布支撑不重叠时为无穷大且不对称,而 Fréchet 距离是真正的度量(对称、满足三角不等式),在高斯假设下有上述闭式解,计算高效。为什么假设高斯?Inception-v3 pool3 层输出 2048 维特征,根据中心极限定理,高维特征的聚合统计近似高斯,实证研究表明这在大样本下是合理近似。Inception Score 的定义为 $\text{IS} = \exp\!\bigl(\mathbb{E}_x[D_{\text{KL}}(p(y|x)\|p(y))]\bigr)$,其中 $p(y|x)$ 是单张图像的类别后验,$p(y)=\mathbb{E}_x[p(y|x)]$ 是边缘分布。IS 越高越好,但不与真实数据比较。KID 使用核函数 $k$ 计算 MMD:$\text{KID}=\mathbb{E}[k(r,r')]+\mathbb{E}[k(g,g')]-2\mathbb{E}[k(r,g)]$,常取多项式核 $k(x,y)=(\frac{1}{d}x^\top y+1)^3$,是无偏估计量,不需高斯假设。
FID 通过"特征提取→统计估计→距离计算→结果解读"的流水线,将主观的感知质量评估转化为客观的数值比较。
将真实样本集 $\{x_r^{(i)}\}$ 和生成样本集 $\{x_g^{(j)}\}$ 分别送入预训练特征网络(图像用 Inception-v3 pool3 层,音频用 VGGish 或 CLAP,视频用 I3D),得到固定维度的特征向量。为什么用预训练网络而非原始像素?因为像素空间的欧氏距离与人类感知严重不一致——图像平移一个像素在像素空间变化巨大但视觉上几乎无差异。预训练网络的中间层已学到语义相关的表示,能更好地对齐人类判断。选择哪一层至关重要:太浅捕捉纹理细节,太深只保留高层语义,pool3 层是经验上的最佳折中点。
对两组特征分别计算样本均值 $\hat{\mu} = \frac{1}{N}\sum_i f_i$ 和样本协方差 $\hat{\Sigma} = \frac{1}{N-1}\sum_i(f_i-\hat{\mu})(f_i-\hat{\mu})^\top$。这一步的核心陷阱是样本量:FID 对样本量极其敏感,经验法则要求至少 50,000 个样本才能得到稳定值。样本不足时协方差估计方差大,FID 出现正偏差。Clean-FID 还揭示了预处理的隐蔽影响:PIL 的 bilinear resize 与 TensorFlow 的 resize 实现不同,可导致 FID 差异达 10 分。因此必须严格统一预处理流程和样本量。
FID 公式中的 $(\Sigma_r\Sigma_g)^{1/2}$ 需要计算矩阵平方根。标准做法是对 $\Sigma_r\Sigma_g$ 做特征值分解,对特征值取平方根后重构。当协方差矩阵接近奇异时(高维、样本不足),会出现微小负特征值导致数值不稳定。实践中加正则项 $\epsilon I$($\epsilon \approx 10^{-6}$)确保正定性。SciPy 的 `sqrtm` 是常用实现:from scipy.linalg import sqrtm import numpy as np def compute_fid(mu_r, sig_r, mu_g, sig_g): diff = mu_r - mu_g covmean = sqrtm(sig_r @ sig_g) if np.iscomplexobj(covmean): covmean = covmean.real return diff @ diff + np.trace(sig_r + sig_g - 2*covmean) 2048×2048 矩阵,`sqrtm` 的计算开销约数秒,在大规模评估中不是瓶颈(特征提取才是)。
FID 值没有绝对意义(不像准确率有 0–100% 的范围),只有在相同数据集、相同预处理、相同样本量下的相对比较才有意义。"The FID Lottery" 的核心发现:同一模型不同随机种子训练后 FID 标准差可达 2–5 分。负责任的做法是:(1) 报告多次运行的均值±标准差;(2) 固定样本量为 50K;(3) 使用 Clean-FID 标准化预处理;(4) 补充 KID 作为无偏参考。在音频领域,FAD 的样本量要求通常更低(因 VGGish 特征仅 128 维),但仍建议至少 10,000 条。
将 F