生成模型 (3.1):Flow-based Method

引言

最近看到Qwen-Edit,感觉效果特别帅。借此机会想系统学习一下Flow Matching的数学原理,这里记录一下。

后面内容完全是在翻译这篇论文:Flow Matching Guide and Code。感谢FAIR的大佬们,这种从1+1开始教的self-contained教程对我这种外行人真的非常重要。

PS:学物理的放过咱们cs吧,是真难懂啊。。。

一开始以为Flow Matching的作者 Ricky Tian Qi Chen 就是xgBoost的陈天奇,但发现似乎不是哈哈

一、大白话理解 (也没那么白。。。)

Flow Matching (FM) 在干什么?

  • Flow Matching的终极任务是学习一个向量场 (vector field);
  • 这个向量场通过ODE的形式,定义了一个流 (flow) ;
  • 一个流是定义在上的一系列可逆变换,这些变换是在时间上连续的;
  • Flow Matching就是在学习一个流,将初始分布(一般是简单分布如)中的某个样本映射到目标分布上,即。

二、FM的形式化定义

给定一个定义在上的目标分布,以及从中采样得到的训练集,我们的任务是学习一个模型,用来生成上的一些新样本。

为了完成这个任务,Flow Matching搭建了一条概率路径,其中为某个已知的初始分布,为目标分布。

更加具体地说,我们训练的是一个能够描述样本瞬时速度的神经网络。这个网络后面被用于沿着概率路径将初始分布转为目标分布。

在训练完成后,我们 (1) 从中采样新样本 (2) 求解向量场所描述的ODE,来得到分布中的一个新样本。

在形式上,向量场是一个依赖于时间的函数。这个向量场用公式中的ODE来定义一个流:

(1)

其中。

我们称向量场能够产生一条概率路径,当且仅当对应的流满足:

(2)

其中。

三、FM的步骤

  1. 第一步:从目标分布中收集一些样本作为训练集。
  2. 第二步:设计一条连续时间的概率路径,满足且。
  3. 第三步:使用回归 (Regression) 的方式,训练一个参数为的向量场。
  4. 第四步:从中采样一个新样本,根据向量场所定义的概率路径,得到上的一个样本。

四、实际场景下

假设初始分布为,则概率路径由公式定义:

(3)

这个路径也被称为条件最优运输 (conditional optimal transport)。

我们可以通过线性插值,定义从到的变换过程中任意时刻下的样本:

(4)

在训练时,我们的目标是去最小化当前的向量场与目标向量场之间的距离,即:

(5)

其中。

然而这个loss非常难实现,因为目标向量场是定义在两个随机向量的联合分布上。 但当我们只关注某一个目标样本时,问题就从联合概率变为一个边缘概率,也就变得可解了。

具体来说,我们需要求解下面这个ODE:

(6)

其中,

(7)

这个ODE的解为如下的条件向量场(证明见附录):

(8)

我们定义如下的条件FM损失:

(9)

将ODE的解代入公式,就得到了FM一个最简单的实现:

(10)

其中。

附录

公式(8)的证明

从公式出发:

(11)

由公式做等价变形,我们有

(12)

代入上式得:

(13)

Q.E.D.