Normalizing Flows
探索规范化流(normalizing flows)、可逆神经网络如何实现精确似然估计,以及它们在生成式 AI、异常检测、医学影像和不确定性建模中的应用。
Normalizing flows 是一类生成式 AI模型,用于学习简单概率分布(通常为高斯噪声)与复杂数据分布之间的可逆映射。与许多生成式模型不同,它们既能高效创建样本,又能计算精确的数据似然度。正如基础性normalizing flows 综述中所解释的,这使得它们在密度估计、不确定性建模以及学习结构化潜在空间方面非常有用。(arxiv.org)
归一化流的工作原理#
流 (Flow) 应用了一系列可逆的神经网络变换:
- 从简单的基础分布中采样一个点。
- 通过若干可逆层对其进行变换。
- 使用雅可比行列式 (Jacobian determinant) 跟踪每一层如何扩展或收缩概率密度。
- 在计算观测数据的概率时,逆转这些变换。
Pyro normalizing flow 教程提供了采样和密度评估的实际示例。尽管名字听起来相似,但 normalizing flows 与特征归一化或批归一化并不相同。在这里,“normalizing”指的是将复杂分布转换为标准分布的过程。
传统设计需要精心结构化的可逆层。近期的自由形式 Flows 研究放宽了这一限制,而 2024 年的一项基于耦合的 flows 的通用性分析解释了为什么仿射耦合层依然有效。(proceedings.mlr.press)
实际应用#
- 工业异常检测: Flow 可以对无缺陷产品的嵌入进行建模,并在目视检查期间标记出不太可能出现的样本。然而,正如关于 flow 似然失败的 NeurIPS 研究所表明的那样,仅凭似然度并不总是一个可靠的分布外评分。请使用任务特定指标和具有代表性的异常数据来验证结果。(proceedings.neurips.cc)
- 医学影像: 2024 年的经颅超声 flow 模型使用 normalizing flows 来实现更快的重建和不确定性估计。类似的技术可以支持需要置信区间的医学图像分析。(proceedings.mlr.press)
- 合成数据与校准: Flows 可以生成结构化的合成数据或对预测误差进行建模。2024 年关于用于保形回归的 normalizing flows 的研究展示了更具自适应性的不确定性区间。生成的视觉数据可以通过 Ultralytics Platform 进行标注、训练和部署。(proceedings.mlr.press)
归一化流与相关方法对比#
正如 Meta 的Flow Matching 指南中所详细介绍的,Flow matching 通常使用回归目标来训练连续速度场。传统的 normalizing flows 则强调可逆变换和直接似然优化。Rectified flow 追求更平直的传输路径,而扩散模型通过迭代去噪生成数据。Normalizing flows 还不同于生成式 Flow 网络(后者学习构建离散对象的策略)以及通常不提供精确似然度的GAN。(ai.meta.com)
最新进展与最佳实践#
基于 Transformer 的架构重新引发了人们对 flows 的兴趣。2025 年的 TarFlow 研究报道了可媲美扩散方法的图像生成效果,而 Jet 则通过 Vision Transformers 对耦合 flows 进行了现代化改造。在 2026 年,基于回归的 flow 训练将 normalizing flows 与 flow-matching 风格的目标联系起来,并且 SESaMo 纳入了精确的物理对称性。(proceedings.mlr.press)
对于视觉应用,一种实用的方法是建模高层嵌入而非原始像素:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
embeddings = model.embed("https://ultralytics.com/images/bus.jpg")
print(embeddings[0].shape)这些 Ultralytics YOLO26 嵌入可以作为输入输送给单独训练的 flow,用于密度估计或异常评分。请使用仔细的数据预处理,并将似然度与下游性能结合进行评估,而不是将其视为完整的质量度量。






