这项由香港科技大学数学系主导的研究发表于2026年ICLR博客论文赛道(arXiv编号:2604.10465),对目前最前沿的图像生成技术——扩散模型——给出了一套全新的、从朗之万动力学视角出发的统一理解框架。有兴趣深入阅读的读者可以通过arXiv编号2604.10465查阅完整论文。
**一条贯穿始终的故事线:魔镜与倒影**
假设你手边有一面神奇的镜子,它具备这样一种性质:你把一张照片放进去,镜子会把它"折腾"一番,经过一系列随机扰动,最终还给你一张看起来和原照片属于同一个"风格世界"的全新照片。这面镜子不复制原图,但输出的结果和输入的结果属于同一个"照片宇宙"——专业语境下说,它们服从同一个概率分布。
这面镜子,就是"朗之万动力学"(Langevin Dynamics)。而整篇论文要做的事情,就是告诉你:我们耳熟能详的那些图像生成模型——无论是DDPM、VE模型,还是最近大热的Flow Matching——其实都是把这面镜子"拆成两半"来用的。一半叫"加噪",一半叫"去噪",合在一起,就还原了那面神奇的镜子。
这个视角不只是比喻,它背后有严格的数学。更重要的是,它能以极其简洁的方式回答那些困扰了许多学习者的根本性问题:去噪过程是怎么把噪声"变回"图片的?为什么扩散模型比普通VAE理论上更强?Flow Matching为什么不比去噪匹配更本质上简单?带着这些问题,我们沿着这面镜子的故事一路走下去。
一、朗之万动力学:那面"不改变世界、只换一张脸"的镜子
要理解扩散模型,得先认识这面镜子的工作原理。朗之万动力学是物理学家朗之万在1908年提出的一个描述布朗运动的方程,后来被统计学家和机器学习研究者借用来做"从复杂分布中抽样"这件事。
它的核心公式写出来是这个样子:每一小步的位移,等于"得分函数乘以一个正数"加上"一个微小的随机扰动"。得分函数(Score Function)是目标分布的对数密度关于位置的梯度,直观理解就是"沿着概率更高的方向走"。随机扰动项就像你在走路时地面微微颤动,让你不会被卡在某一个局部高点。
这个过程有一个漂亮的性质:无论你从哪里出发,只要走得足够久,你最终所在的位置的概率分布,就会收敛到目标分布。更精妙的是,如果你一开始就已经站在目标分布中的某个点,那么经过朗之万动力学的一步或多步之后,你仍然处于同一个分布中——只不过换了一个具体的位置。
这就是"恒等操作"的含义:朗之万动力学不改变分布,只是在分布内部重新采样。用镜子的比喻来说,你放进去一张照片,它折腾完出来的还是属于"同一个照片宇宙"的照片。
这个简单的性质,是整个论文的逻辑支点。
然而,朗之万动力学在实际使用中有一个致命的弱点:它只在靠近真实数据的地方工作得好。得分函数是从真实数据中学出来的,在真实数据附近估计得准确,但在远离数据的地方(比如纯随机噪声那里)估计得很差。而图像生成恰恰需要从一片纯噪声出发,所以直接用朗之万动力学来生成图片,效果会很糟糕——因为起点离真实数据太远,得分函数根本不可靠。
二、把镜子拆成两半:加噪与去噪的诞生
既然朗之万动力学不能直接从纯噪声生成图片,人们就想了一个迂回的办法。
首先出现的是一个叫"退火朗之万动力学"的方案。它的思路是:不要只用一个朗之万采样器,而是训练一整套采样器,每个对应不同的噪声程度。先从纯噪声开始,用对应高噪声的采样器运行几步,然后切换到低噪声的采样器,再运行几步……像下楼梯一样,一步步从噪声走向数据。这个思路的关键在于:在每个噪声程度下,采样器都工作在它最擅长的区域,因此每一步都靠谱。
扩散模型把这个思路推向了极致:把训练和生成完全分开,用一个连续的过程描述从数据到噪声的加噪轨迹(前向过程),以及从噪声到数据的去噪轨迹(逆向过程)。
论文的核心洞察在这里变得清晰:前向过程和逆向过程,正是一步朗之万动力学被拆成了两半。
以最经典的VP(方差保持)模型为例,朗之万动力学的完整公式可以被拆分为两个部分。第一部分,是对当前位置施加一个向原点拉拽的力,同时注入一些随机噪声——这正是VP模型的前向加噪过程,它会把数据逐渐推向一个标准高斯分布。第二部分,是一个反向的校正力加上另一些随机噪声——这就是逆向去噪过程,它负责把噪声一步步拉回数据分布。
论文里的一张核心示意图清晰地呈现了这个结构:朗之万动力学像一个顶点,前向过程是从数据分布走向噪声分布的斜坡,逆向过程是从噪声分布走回数据分布的斜坡,两段斜坡合在一起,正好构成了那面"恒等"的魔镜。
这个拆分方式直接回答了很多初学者最困惑的问题:**逆向过程是怎么知道如何"反转"前向过程的?**答案非常直接——逆向过程之所以能反转前向过程,是因为两者合在一起构成了一个朗之万动力学步骤,而朗之万动力学本身就是分布的恒等操作。前向走一步,逆向走一步,净效果是零——分布没有变化。
这里还有一个微妙但重要的技术细节:前向过程里的随机噪声项,实际上被拆成了两个独立的高斯随机增量,一份给了前向过程,一份给了逆向过程。这在数学上是允许的,因为两个方差各为1的独立高斯变量相加,结果是一个方差为2的高斯变量,正好对应朗之万动力学中的噪声强度。
三、同一个世界里的三种语言:VP、VE与Flow Matching的互译手册
在实际的深度学习研究中,不同团队用了不同的方式来描述这个前向加噪过程,于是诞生了看起来完全不同的三类模型。
第一种是VP模型(方差保持),在著名的DDPM中使用。它的前向过程像一个弹簧振子:随着时间推进,样本会被"拉向原点",同时注入噪声,最终样本的均值趋向零、方差趋向一,收敛到标准高斯分布。数学上,这对应Ornstein-Uhlenbeck过程,t时刻的样本等于原始数据乘以一个衰减因子,加上噪声乘以一个增长因子。
第二种是VE模型(方差爆炸),由Karras等人的工作推广使用。它的前向过程没有向原点拉拽的力,只是不断往数据上叠加越来越大的噪声,样本的均值保持不变,但方差越来越大,像一个气球被越吹越大。Karras记法下,σ时刻的样本直接等于原始数据加上标准差为σ的高斯噪声。
第三种是Rectified Flow(修正流),近年来在Flow Matching领域大受欢迎。它的前向过程看起来最简洁:s时刻的样本等于原始数据乘以(1-s)加上纯噪声乘以s,也就是数据和噪声之间的线性插值。当s从0走到1,样本从原始数据线性过渡到纯噪声,轨迹在单点情况下是一条直线。
表面上,这三种模型看起来完全不同。但论文给出了一张清晰的转换表,告诉你如何从任意一种参数化转换到另一种。例如,VP模型中的(x_t, α_t),可以通过简单的代数运算转换为VE模型中的(z_σ, σ),也可以转换为Rectified Flow中的(r_s, s)。
这张转换表的存在意味着:这三种模型描述的其实是同一个物理过程,只不过用了不同的坐标系来度量时间和状态。就像同一段音乐,用简谱、五线谱或吉他六线谱来表示,记法不同,但音乐本身是一样的。
既然前向过程可以互译,逆向过程自然也可以互译。论文同样给出了各模型逆向过程的完整公式,以及它们与得分函数之间的关系。VP-SDE的逆向过程是带随机项的随机微分方程,VP-ODE的逆向过程是不带随机项的常微分方程,VE-Karras的逆向过程用噪声预测来表示,Rectified Flow的逆向过程用速度场来表示。但本质上,这些"噪声预测"、"速度场"、"得分函数"都是同一个数学对象的不同写法,彼此之间有精确的代数转换关系。
这里值得专门说一说Rectified Flow引发的一个常见误解。很多人看到"数据和噪声之间的线性插值",会觉得它比其他方法简单——毕竟直线比曲线简单。但论文指出,这个直线的特性只在单点设置下成立。对于真实的、复杂的数据分布,每个位置的速度场都不同,逆向轨迹实际上是弯曲的。而且,Flow Matching预测的速度场,和得分匹配预测的噪声,在数学上是完全等价的——它们只是同一个量的不同表达。Rectified Flow可能在实践中有"轨迹曲率相对较小"的优势,但这是一个程度上的差异,而不是本质上的简化。
四、前向与逆向的深层对称:为什么扩散模型比普通VAE更强
理解了前向和逆向过程如何互为"镜像"之后,我们可以揭开扩散模型一个更深刻的性质:它在理论上保证了完美的生成质量。
论文从"前向-逆向对偶性"的角度来解释这一点。用前面建立的框架来说,前向过程把数据分布p_0逐渐演化为噪声分布p_T。逆向过程从p_T出发,一步步倒回去。如果我们把逆向过程的初始分布设为q_0 = p_T(即从真正的噪声分布出发),那么逆向过程在任意时刻t'的分布,正好等于前向过程在对称时刻(T - t')的分布。换句话说,逆向过程走完全程T步之后,得到的分布恰好就是原始数据分布p_0。
这不是近似,而是精确等式——在理论完美的情况下。
这个性质为什么重要?对比一下普通的VAE(变分自编码器)。VAE的编码器负责把数据压缩成隐变量,解码器负责从隐变量恢复数据。但VAE的编码器和解码器之间没有这种"精确对偶"关系——解码器只是被训练成"尽可能接近"编码器的反操作,而不是精确的反操作。即使ELBO(证据下界)被优化到极致,VAE生成的数据分布也未必等于真实数据分布,因为ELBO本身就包含一些近似。
扩散模型通过朗之万动力学的恒等性质,从根本上保证了前向和逆向过程的完美对称。当然,实际训练中用神经网络来近似得分函数会引入误差,但理论上的目标是完美的——这比VAE的理论目标更强。
这就是为什么扩散模型在理论上优于普通VAE:不是因为网络更大或训练技巧更好,而是因为它的数学架构建立在一个更精确的对称性之上。
五、用最大似然统一所有训练目标:得分匹配、去噪匹配与Flow Matching的共同根源
现在我们知道了扩散模型的前向和逆向过程是什么,但还有一个问题:怎么训练?用什么损失函数?
论文从最大似然估计出发,推导出一个统一的训练目标,并说明不同模型类型的训练损失只是这个目标的不同写法。
出发点是KL散度(一种衡量两个概率分布差异的指标)。训练的目标是让模型生成的分布q_0尽可能接近真实数据分布p_0,也就是最小化KL(p_0 || q_0)。但在扩散模型中,直接优化这个量很困难,因为p_0和q_0都很复杂。
论文的关键一步是把这个时刻0处的KL散度,改写成对所有时刻t的"瞬时贡献"的积分。具体来说,KL(p_0 || q_0)等于负的"KL散度对时间的导数"在0到无穷大上的积分。这是因为当t趋向无穷时,p_t和q_t都收敛到同一个高斯噪声分布,KL散度趋向零。
接下来,论文利用Fokker-Planck方程(描述随机过程中概率密度如何随时间演化的方程)来计算KL散度对时间的导数。计算结果非常优美:在Fokker-Planck方程的漂移项(确定性部分)中,KL散度的变化率为零——也就是说,漂移项不改变KL散度。只有扩散项(随机噪声部分)会降低KL散度,而且降低的速率恰好等于"真实得分函数与模型得分函数之差的平方在p_t下的期望"乘以一个系数。
这个结果的意义非常深刻:最大化似然等价于在每个时刻t,最小化模型得分函数与真实得分函数之差的加权平方误差。这就是得分匹配(Score Matching)损失的来源。
但等等,真实得分函数?log p_t(x_t)我们不知道啊?这就是去噪得分匹配(Denoising Score Matching)的用武之地。论文在附录中证明了一个关键定理:在前向过程产生的条件分布p_t(x_t|x_0)下,用条件得分函数?log p_t(x_t|x_0)来代替边际得分函数?log p_t(x_t),两者的最小化点是完全相同的。换句话说,我们只需要最小化"模型得分"与"条件得分"之差的平方期望——而条件得分是已知的,因为p_t(x_t|x_0)是一个高斯分布,其得分有解析表达式。
这个结论打通了理论与实践的障碍:我们可以从训练数据中随机抽取一个干净样本x_0,然后按照前向过程加一点噪声得到x_t,然后计算条件得分(也就是x_t和x_0之间关系的一个函数),然后让神经网络去拟合这个条件得分。这就是扩散模型训练的本质。
对应到不同的参数化,这个训练目标有不同的"外形"。VP模型直接训练得分函数;VE-Karras模型训练噪声预测网络,让网络预测加入到数据中的高斯噪声;Rectified Flow训练速度场,让网络预测从x_0到噪声ε的差值。但论文的表6清楚地列出了这三种参数化下的损失函数,并指明了各自的"网络输出"与"得分函数"之间的精确代数转换关系。
至此,Flow Matching的本质被彻底揭示:它预测的速度场,在代数上等价于噪声预测,也等价于得分函数。在最大似然框架下,它和得分匹配、去噪匹配是同一个目标的不同写法,没有任何一个在数学本质上更简单。Rectified Flow的"优雅"来自于它的几何直觉和实践中可能更小的曲率,而不是来自于本质上更简单的数学。
六、训练时的小技巧:损失权重为什么可以随意调
读到这里,你可能注意到不同模型的损失函数前面有不同的系数,比如1/2、1/σ、(1-s)/s。这些系数有必要严格遵守吗?
论文指出,这些系数来自于最大似然框架,它们决定了不同噪声程度对总损失的相对贡献。但在实践中,研究者经常把这些系数替换成自定义的时间权重函数,以改善训练效果。这是完全合理的,因为改变权重系数只是改变了"在哪个噪声级别上投入更多学习资源",而不改变每个噪声级别上"学习目标是什么"。换句话说,最优解(即真实的得分函数)在任何权重下都是一样的,改变权重只是改变了收敛的速度和方向,不影响理论上能达到的最佳结果。
这个观察解释了为什么不同论文里的扩散模型虽然损失函数看起来不同,但本质上是在优化同一件事。
七、逆向过程的可视化:四种模型的轨迹长什么样
论文还提供了一个直觉上非常有帮助的可视化分析,展示了在单个数据点(一维情况下)的条件下,四种模型(VP-SDE、VP-ODE、VE-Karras、Rectified Flow)的逆向轨迹是什么形状。
VP-SDE和VP-ODE的轨迹是弯曲的:因为VP的前向过程同时有"向原点拉拽"和"注入噪声"两种效果,逆向过程需要同时撤销这两种效果,路径必然是弯曲的。
VE-Karras和Rectified Flow的轨迹在单点情况下接近直线:因为这两者的前向过程只是在数据上叠加噪声(或线性插值到噪声),逆向过程是从噪声出发沿较短路径回到数据。
但论文明确警告:这种近似直线的特性只在单点(只有一个训练数据点)的特殊情况下成立。对于真实的多模态数据分布,逆向速度场在不同位置是不同的,轨迹会弯曲。不过,人们合理地预期VE-Karras和Rectified Flow的轨迹曲率会小于VP,这意味着用较少的步数也能得到较好的结果——这就是Rectified Flow在实践中受欢迎的真正原因。
说到底,这篇论文做的事情是把一个本来散乱的知识体系,用朗之万动力学这根"主线"串联了起来。前向加噪、逆向去噪、SDE版本、ODE版本、得分匹配、去噪匹配、Flow Matching——这些听起来像是互相独立的不同技术,其实都是同一头"魔镜"的不同侧面。
对于学习者来说,这意味着你不需要把每种方法都当成一个全新的东西去学:理解了朗之万动力学是什么,理解了前向过程如何加噪、逆向过程如何与前向过程构成一对,理解了最大似然如何自然地导出得分匹配损失,你就掌握了这个领域的骨架。其余的,都是在这副骨架上换不同的皮肤。
对于研究者来说,这个视角也提供了实际价值:任何新的扩散模型变体,都可以在这个朗之万框架内找到自己的位置,不同模型之间的转换也有了清晰的代数路径。遇到一个陌生的扩散模型,先问它的"朗之万动力学是什么"、"前向和逆向分别对应哪个拆分",往往就能迅速看清它的本质。
这项研究本身并不声称自己提出了全新的算法或取得了更好的性能数字,它的贡献是概念性的——给出了一套更清晰的语言来描述已有的工作,并把分散的知识点纳入一个统一的故事中。有时候,最有用的研究不是开辟新大陆,而是绘制一张清晰的地图,让后来者知道自己站在哪里。
读到这里,你可能想进一步思考:如果所有这些模型都等价,那未来扩散模型的突破会来自哪里——是更好的网络架构、更聪明的采样策略,还是完全不同的概率框架?这是一个开放的问题,也是这个领域最吸引人的地方。如果你对完整的数学推导感兴趣,可以通过arXiv编号2604.10465找到原文,里面的附录详细给出了Fokker-Planck方程推导、KL散度衰减证明、以及去噪得分匹配与得分匹配等价性的完整论证。
Q&A
Q1:朗之万动力学为什么能把扩散模型的前向过程和逆向过程统一起来?
A:朗之万动力学本质上是一个"对概率分布的恒等操作"——输入和输出服从同一个分布,只是换了一个具体样本。扩散模型的前向加噪过程和逆向去噪过程,正好是一步朗之万动力学被拆成了两个互补的部分。前向部分让分布向噪声方向演化,逆向部分让分布向数据方向演化,两者合在一起等于朗之万动力学这个恒等操作。这就是为什么逆向过程能精确"撤销"前向过程,而不只是近似。
Q2:Flow Matching和扩散模型的得分匹配到底有没有本质区别?
A:没有本质区别。Flow Matching预测的速度场,和得分匹配预测的得分函数,以及去噪匹配预测的噪声,在代数上是完全等价的,可以通过精确公式互相转换。Flow Matching在实践中的优势,主要来自于特定参数化下逆向轨迹曲率相对较小,使得采样步数可以更少,而不是因为它的数学本质更简单。在最大似然框架下,它们优化的是同一个目标,只是用了不同的参数化来写损失函数。
Q3:扩散模型为什么在理论上比VAE更强,扩散模型的训练目标是什么?
A:普通VAE的编码器和解码器之间没有精确的对称性保证,即使ELBO被优化到最佳,生成分布也未必等于真实数据分布。扩散模型通过朗之万动力学的恒等性质,保证了前向和逆向过程在理论上是完美的互逆对——逆向过程走完全程后,生成分布精确等于原始数据分布。训练目标来自最大似然:最小化模型得分函数与真实得分函数之差的加权平方期望,具体实现为让神经网络拟合前向加噪过程中的条件得分函数,即让网络学会预测加入了多少噪声,或者以什么速度从噪声走向数据。
热门跟贴