这篇博客介绍我们在2024年的一篇工作,K-Flow - Flow Along the K-Amplitude for Generative Modeling。
这两年,针对生成模型的”多尺度”,很容易想到一些朴素的概念:“低频负责轮廓,高频负责纹理”、“先出形状,再补细节”,类似于人类画家创造作品的过程。这个直觉没错,但我们的K-Flow不仅仅是一个 “懂频率和尺度的flow matching模型”。
K-Flow真正的创新点,不止是把数据放入Fourier、Wavelet或者PCA空间来观察不同频段,而是提出了一套更本质的生成视角:用尺度参数k来组织不同的band,构建amplitude这个物理量来描述这些band上的系数范数,最后让生成的过程沿着这条K-amplitude的轴来流动(区别于传统diffusion、flow matching的时间变量t)。

TL;DR:
K-Flow基于K-amplitude transform,有六个核心特点:
- 基于 scaling 的 flow 插值机制
- 在 K-amplitude 空间中的多尺度建模能力
- 基于能量的尺度组织
- 将尺度解释为时间变量
- 统一的 intra-scale 与 inter-scale 建模
- 显式的可控生成能力
传统的视角下,为什么在生成模型中要引入时间t?
Flow matching和Diffusion这一类针对连续数据(如图像)的生成模型,本质上解决的数学问题是:如何将一个简单的已知先验的分布(比如高斯分布)映射到一个复杂的高维数据分布(如真实图像分布)。在这个过程中,引入时间变量t的作用是把比较困难的一步非线性映射,切分成连续的空间中的无穷(或者大量)个简单、局部的变换(可以是线性或者非线性,但需要足够简单)。
这里的t,就是描述上述连续过程(轨迹)的坐标轴。

但在这里,我们重新思考flow的”时间”概念。
传统模型学的是如何把简单分布沿着一个连续的时间轴”运输”到数据分布,但这条时间轴不一定能够显式对应于数据的真正结构和层次。首先,用图像举例。从观感上,我们能够理解一个图的全局构图、局部纹理是不同的,并且能够大概进行相关区域的划分,但模型并不明确地了解。另外值得注意的是,对于科学数据而言(如小分子、蛋白质结构等等),不同尺度上的结构更不应该被同一种噪声调度器平等处理。
因此,我们认为现有的生成模型缺乏一种从生成路径的本质出发的多尺度控制方式,尤其缺乏”保留某些频率的结构,只修改另一些频率结构”的能力。K-Flow能够把flow的”时间维度”重新解释为”尺度空间中的遍历顺序”,让生成过程真正从理论上和数据本身的层次结构完全对齐。
注意,我们的这一步并不只是简单给时间维度t更换formulation。我们的建模对象从”某个时刻的噪声有多大”变成了”模型在当前阶段正在处理哪一层尺度的信息”。一旦把传统的由”时间轴”定义的生成过程,和存在明确物理意义的”尺度”概念对齐,生成路径就不再是难以解释和控制的黑箱。

频率只是一个起点,能量才是本质。
我们在K-Flow论文中提出,此处的amplitude不仅是一个数学上的范数,也可以被看作数据每个尺度下的能量的表征。在物理中,能量和amplitude的平方成正比。也正因为如此,K-Flow强调,不同尺度携带的信息量和能量分布是不均匀的,所以生成路径也应该遵循这个规律。
频率只是说明信息被分成了哪几个band;能量在告诉我们哪些band值得更多建模资源、哪些band本身决定了骨架、哪些band决定了细节等等。从这里可以引出后续非常多值得探索的科研项目,包括但不限于生成模型训练效率、推理效率、可控生成、多模态控制等等多个重要方向。
论文里我们做了一个隐空间里频率和尺度的小实验。在 wavelet 分解下,低尺度分量的平均范数明显高于高尺度分量,甚至接近后者的两倍,这意味着低尺度部分往往承载了更多主导性的结构信息。这一点和自然图像的客观规律(1/f)很符合:随着k(amplitude)(这里可以理解为频率)的增加,振幅和能量会迅速衰减。这意味着低频分量包含了一个信号中绝大部分的信息内容和能量。也就是说,即使图像数据被高度压缩到了隐空间,这种类似于 1/f 的”低频能量大、高频能量小”的缩放不均匀性依然存在。(这也启发了我们未来可以尝试从频率和尺度出发,指导生成模型的资源分配和更高效率的生成。)

从这个角度来看,K-Flow比很多停留在把”频域”的概念作为正则化的形式进行生成模型改良的工作更进了一步。
K-Flow 到底做了什么?
K-Flow 的核心其实可以概括成一句话:先把数据搬到 K-amplitude 空间里,再沿着尺度流动,最后回到原空间做匹配。
论文里用了三种例子:Fourier、Wavelet 和 PCA。Fourier 提供经典频率空间,Wavelet 给出同时具备尺度局部性和空间局部性的表示,PCA 则是一种数据依赖的分解方式。换句话说,K-Flow 的本质不是”wavelet flow”或”Fourier flow”,而是一个更一般的框架。只要我们能把数据拆成一组有序的尺度成分,并且这个变换是可逆的,K-Flow 就能工作。这赋予了K-Flow极大的灵活性,可被认为是在范式层面的本质创新。
需要强调的是,K-Flow 在当前尺度 k上学习到的向量场是局部化的。也就是说,在某个生成阶段,模型主要关心的是当前这一小段 band,而不是同时处理整个空间里的所有信息。这种”局部更新、逐段推进”的方式,一方面给了模型更清晰的层级感,另一方面也给可控生成创造了条件。在生成过程中,我们可以谈”这一段在改什么内容”,而不只是笼统地说”模型在继续去噪”。
这也是 K-Flow 和一些已有多尺度生成工作的区别所在。虽然和 WaveDiff、VAR 这些工作相关,但K-Flow 并不限制在 wavelet latent 或 next-scale prediction 这种具体范式里。我们的终极目标是把”跨尺度的流动”变成生成建模的第一性原理。

可控性存在于生成路径中。
很多生成模型都能做到”多尺度”生成,如cascaded diffusion、VAR等工作,但K-Flow的亮点是把可控性变成了路径自身的属性,而不是事后增加的工程技巧。
我们做了一个实验,在类条件生成中只保留前段尺度的类别条件,把后段尺度的条件去除。结果是,K-Flow 在后 70% 的尺度步骤中去除类条件之后,仍然能较好保住高频细节;相比之下,普通 latent flow matching 更容易使整张图出现模糊。这说明在 K-Flow 里,不同阶段确实承担不同层级的信息加工,而不是所有语义和细节都混在一起。

更直观的是尺度可控生成实验的结果。固定高尺度噪声时,模型生成的人脸会保留相似的眼睛、鼻子、眉毛等局部细节,但背景、年龄、发型这类低尺度上下文会发生变化;反过来,固定低尺度噪声时,背景和整体属性更稳定,高分辨率表情与外观细节则可以被编辑。也就是说,K-Flow 不是在抽象意义上”支持控制”,而是在视觉上的确能够区分展示”低尺度”和”高尺度”。


这对文生图尤其重要,因为文本条件未必需要在整个生成过程中以完全相同的方式、相同的强度起作用。论文在类条件实验里已经给出一个很值得继续放大的信号:类别标签更接近低尺度信息,而不同尺度成分未来有希望被不同 caption 信息所影响。在这个方向下,K-Flow 对文生图最吸引人的地方,并不是”把一个 scheduler 换成另一个 scheduler”,而是提供了一个重新组织文本语义、图像结构和纹理细节关系的机会。
实验结果说明了什么?
从结果上看,K-Flow 不只是一个”概念上很美”的故事。论文在 CelebA-HQ 256 上,wavelet 版本的 K-Flow 做到了 4.99 的 FID,优于同 backbone 的 latent flow matching(5.28)和 WaveDiff(5.94);在 LSUN Church 256 上,三尺度 wavelet K-Flow 达到 5.19 FID / 0.49 Recall,也优于对应的 LFM 基线(5.54 / 0.48)。在 ImageNet 类条件生成里,Fourier 版本加 CFG 后的 FID 是 2.77,和 LFM 的 2.78 基本持平,但 CDR 更低(1.49 vs. 3.25),说明它在”条件该不该贯穿全程”这件事上更有尺度感。科学任务上,在 COD-Cluster17 的 molecular assembly 上,K-Flow 也在三个数据规模下稳定超过了 AssembleFlow 等基线,full set 上 PM-center 做到 6.07,而 AssembleFlow 是 6.21。
以下是部分实验结果展示:


当前版本的 K-Flow 还不是终极答案,但至少说明:把生成过程放到 K-amplitude 空间里,确实能带来更自然的多尺度建模、更清晰的可控性,以及向图像之外的科学场景迁移的潜力。
如果你认为这项工作对你有所启发或帮助,欢迎引用我们的论文!
@inproceedings{du2026flow,
title={Flow Along the \$K\$-Amplitude for Generative Modeling},
author={Weitao Du and Jiasheng Tang and Shuning Chang and Yu Rong and Fan Wang and Shengchao Liu},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026},
url={<https://openreview.net/forum?id=O224NIizhz>}
}