Github Repo

快速理解

按照物理的运动学理解加噪去噪的过程.

假设原始的状态是, 加噪之后完全噪声为. 假设加噪的过程是一个直线运动的过程: , 则在加噪过程中的速度为.

如果已知完全噪声, 同时知道每时每刻的速度, 那么可以通过物理学的运动方程反向推算. 此为去噪过程. 但是注意, 这个去噪过程是一个非直线的过程.

为了取求速度, 使用神经网络去拟合, 使用MSE loss进行监督: . 如此可以得到最终的结果.

小问题:

  1. 这里使用的是从的过程, 能否代表分布的过程?

    回答: 可以. 最终证明使用连续性方程进行证明, 可以从点到点的去噪拓展到分布到分布的过程

  2. 这里的实际上是基于的过程, 需要写成, 也就是说需要已知起点和终点才能计算速度. 在推理的时候无法得知终点, 还能这么用吗?

    回答: 可以. 仍然是根据连续性方程和loss的公式, 最终数学形式上证明loss没有问题.

基于Conditional Normalizing Flows进行改进.

这个仍然属于Diffusion模型中的一种, 加噪和去噪的过程.

PRELIMINARIES: CONTINUOUS NORMALIZING FLOWS

连续归一化流

注意此处的CNF并不是最终FM的形式. 这个只是CNF的表达

  • 此处的 “流” 指的是加噪的过程:
  • 速度即为加噪的速度, 将噪声减去加噪的速度来达成去噪的效果. 速度即为flow的微分:
  • 概率路径: 表示最终的一个分布. 其中可以认为是一个加噪的终点(去噪的起点), 可以是一个简单的高斯噪声:

使用CNF的去噪可以表示为:

定义push-forward算子:

Let denote a random variable distributed according to some unknown data distribution . We assume we only have access to data samples from but have no access to the density function itself.

假设ground truth的数据分布为. 我们无法得知分布的真实数学公式, 只能从这个分布中进行采样, 得到原始的数据.

The Flow Matching objective is then designed to match this target probability path, which will allow us to flow from to .

假设一个非常简单的分布, 如高斯分布, 作为最初的噪声分布: , 那么Flow Matching的目的为, 尝试通过找到一个flow, 将转换为分布, 让分布尽可能和分布尽可能相似. 这样就能使用flow从一个简单的高斯噪声分布转换成我们的目标概率密度分布.

Flow Matching (FM) objective

在训练的过程中, Flow Matching并不需要直接使用各种散度(如, KL散度, JS散度等)去对两个分布之间进行loss计算. Flow Matching仍然针对速度进行loss建模, 只需要保证速度尽可能精确, 那么最终的分布一定是接近的.

于是最终的loss为:

其中是神经网络学习到的速度, 是真实的速度.

it is intractable to use in practice

但是实际上, 由于在真实环境中没有一个合适的先验知识去给定, 此时有无数多种概率路径令.

同时, 由于无法获取速度的闭式解, 这个loss function无法在真实环境中使用

simple way

考虑更简单的情况: 采样一个点, 先只考虑从噪声的一个点到原始分布的一个点的去噪过程.

那么给定原始分布的一个采样, 使用表示在作为条件下的概率分布. 在时间步时有噪声, 最终的去噪结果被设计为(一个均值为且标准差足够小的正态分布, 至于为什么这么设计, 可以看下面的marginal probability的计算)

计算边缘概率路径:

当时间步的时候, 计算结果为:

是原始的概率分布

相似的, 可以使用条件概率去定义速度:

其中用于生成

intractable to naively compute an unbiased estimator of the original Flow Matching objective.

但是使用这个边缘概率路径仍然无法计算loss, 因为积分在此处是无法计算的(因为路径太多).

Conditional Flow Matching (CFM) objective

因此, 提出了Conditional Flow Matching的目标loss:

使用conditional的速度来代替marginal的速度.

依照定理2, 优化CFM(Conditional Flow Matching)在期望上等同于优化FM(Flow Matching)

由于最终的分布和初始的分布都是高斯分布, 因此讨论中介的条件概率密度为一般高斯分布的过程:

Namely, we consider conditional probability paths of the form

其中都是与时间相关的函数.

当t=0的时候, 令, 成为一个标准的正态分布; 当t=1的时候, 令

There is an infinite number of vector fields that generate any particular probability path (e.g., by adding a divergence free component to the continuity equation, see equation 26), but the vast majority of these is due to the presence of components that leave the underlying distribution invariant—for instance, rotational components when the distribution is rotation-invariant—leading to unnecessary extra compute. We decide to use the simplest vector field corresponding to a canonical transformation for Gaussian distributions. Specifically, consider the flow (conditioned on )

实际上, 有非常多种不同的路径从高斯分布到原始数据分布. 为了防止不必要的计算, 在此处Flow Matching 选择了最简单的一种: 使用高斯分布的正则变换对应的速度(向量场):

如果输入的也服从正态分布(高斯分布), 那么就是一个仿射变换, 将其映射到一个均值为, 标准差为的正态分布中, 即:

同时, 其速度向量场为

代入CFM objective function中, 有

由于是一个简单的仿射变换, 因此求比较简单, 因此可以求解闭式解

Theorem 3

根据这个定理, 我们可以将转换成与高斯分布的参数相关的函数:

现在已经有了最终的loss函数, 并且将速度进行了拆分, 只和高斯噪声参数的时间函数有关. 接下来尝试对参数时间函数进行建模.

有两种思路进行建模:

Diffusion conditional VFs.

使用Diffusion的思路对向量场建模.

根据Diffusion的相关推导, 最终获取向量场的函数为:

Optimal Transport conditional VFs

OT路径(最优传输条件向量场)

直接假设

因此最终的速度场为:

根据实验可知, OT路径有更高的速度, 并且能避免Diffusion路径的一些问题(如overshoot). 因此直接无脑使用OT即可.

速度更快的原因的猜测

可能是因为OT路径学习的是多个直线的去噪, diffusion本身去尝试拟合一条曲线. 因此OT的ODE更加平滑, 使用NFE(Number of Function Evaluation)次数更少

同时OT的向量场更加简单, 因此有更加快的训练速度

最终使用OT的flow:

CFM objective function:

因此, 对于概率分布的概率路径可以写成:

其中:

  • 表示一个恒等变换
  • 是OT映射, 将 push-forward 到