diffusion算法
搜索文档
直观理解Flow Matching生成式算法
自动驾驶之心· 2025-12-17 08:03
算法核心原理 - Flow Matching是一种生成式模型,旨在学习一个从随机噪声数据到目标数据分布的映射,其核心思想是学习一个速度场(或方向场),指导数据点从初始噪声状态向目标状态移动 [3][4][5] - 与直接学习端到端映射不同,Flow Matching通过构造从源点(噪声)到目标点的连线,并在连线上采样中间点,让模型学习这些中间点应该朝目标点移动的方向(即速度场),训练时,同一个中间点可能受到多条连线影响,其学习到的方向是多个目标方向的均值 [16][17] - 在推理(生成)阶段,模型从一个随机噪声点出发,依据学习到的速度场逐步移动,随着移动过程,状态的可能性会逐渐“坍缩”到目标分布中的某个特定样本附近,从而生成高质量结果,这避免了直接映射可能导致的输出为多个目标状态均值的问题 [7][17] 算法优势与对比 - 相比自回归生成模型(逐个像素/元素生成),Flow Matching在一次前向传播中生成整个样本,效率更高,避免了自回归模型需要多次调用模型的低效问题 [10] - 相比扩散模型(Diffusion Model),Flow Matching被视为一种更直接高效的替代方案,它通过学习确定性的移动方向来生成数据,而非多步迭代去噪,因此在Stable Diffusion 3、Meta MovieGen等先进模型中已开始应用 [12] - 该算法通过逐步“坍缩”状态来确保生成质量,在推理初期,移动方向可能是多个可能性的平均,但随着过程推进,方向会越来越确定,最终收敛到目标分布中的一点 [11][17] 算法实现与代码 - 基础实现包含几个关键步骤:为每个目标样本生成一个随机噪声源点;在源点与目标点连线上进行线性插值,采样得到中间点;用一个神经网络预测这些中间点的速度场;使用源点到目标点的真实方向向量作为监督信号进行训练 [18] - 代码示例以生成二维正弦曲线上的点为例,定义了向量场预测网络,在训练循环中计算预测速度场与目标速度场(`x1 - x0`)之间的均方误差损失,并通过数值求解常微分方程(ODE)的方式从噪声点出发生成最终样本 [19][20][21] - 算法可扩展为条件生成模型,通过简单修改网络结构,在输入中融入提示词(如标签、文本等)信息,即可控制生成样本的特定属性,例如控制生成正弦曲线上特定区间的点 [24][26][29] 高级应用实例 - 在手写数字生成(MNIST)任务中,采用了条件UNet作为预测速度场的骨干网络,因其具有多尺度特征融合能力,适合图像类生成任务 [32][33] - 在推理阶段,采用了自适应步长的ODE求解器(如`dopri5`方法),替代固定的欧拉法步进,可以在相同的迭代步数下获得更精细的生成结果,提升了生成效率和质量 [32][36] - 训练流程中,动态生成噪声样本和时间步长`t`,通过`xt = (1 - t) * noise + t * images`构造中间状态,并让模型预测从噪声到真实图像的向量场 [40]