Flow Matching for Generative Models-从generalized的角度来理解diffusion模型
生成模型中一般存在一个源分布例如高斯分布但可以是任何分布source distribution p(x)目的是找到某种映射Map 把源分布映射到未知分布q(x)数据分布一般来说是更复杂的分布从概率的角度是我们从原分布或者说是噪声分布提取一个样本x0~p, 然后把这个推到Map上进而得到一个样本的数据分布U(x) qU(x)~qU(x)q。实际情况我们无法获得数据分布但是能得到一些样本数据训练集一个通用的选择是Flows这是一个Map输入时间time和位置location在一个点上能参数速度矢量从时间0到时间1进行转换一般是常微分方程这个转换过程一般是积分过程。时间1 的形状是我们所需要的。时间t在[0,1]之间时就是一个动态的概率图这个是概率密度可视化从原分布到数据分布 during the time ,这里存在一个问题是 速度和概率的耦合问题。耦合我们需要使用 生成流的基本方程也叫做连续方程这是个偏微分方程这是一种量化了概率在一个固定点的变化。 我们确定了空间中的一个点这个点的概率变化是电流的发散。也就是概率✖速度量化了进出incoming and going 概率的通量flux。这个方程促进了很多方程包括flow matching。我们训练生成模型一个重要的方法是 速度场的表示。但是需要计算loss需要是可微分的以及trackable。1一个方法是使用标准的散度来比较输出和数据集的经验分布。上图的公式中描述路径的对数概率变化但是需要使用仿真simulation xt导致了拓展性问题大数据2Flow Matching因为p1 很难训练我们采用归一化流的思想进行转换比较速度而不是比较概率。要做到这个转换需要增加一些监督没有免费的午餐我们想着耦合概率路径和速度场共同求解连续性方程进而回归向量场。可以看做一个新的divergence在p1和q1 之间的我们想到了这个监督可以在训练过程中计算梯度的无偏估计。这就是我们提出的流匹配监督。也就是说我们想出一个概率路径从源噪声开始基于数据分布和耦合达到这一个目标速度场。我们采用了构造边缘分布 p_t(x)这是常用的。看公式我们需要进行积分。这个是p(x|x1)条件概率路径,q(x1)是数据使其满足边界条件。我们常说边缘分布合法说的是在0~1之间的概率p_t(x)是一个有效的概率密度函数不能是负数、积分质量1100%、连续可微分平滑的向量场。要满足边界条件是说在t0和t1时候能够精准定义原分布和数据分布。p(x|x1)条件概率路径是代表我们知道x1的情况下x在空间中的分布。pt(x)∫pt(x∣x1)q(x1)dx1 p_t(x) \int p_t(x|x_1) q(x_1) dx_1pt​(x)∫pt​(x∣x1​)q(x1​)dx1​对 x1 进行积分Integrationpt(x∣x1)q(x1)p_t(x|x_1) q(x_1)pt​(x∣x1​)q(x1​)是联合概率密度粒子在x对应点是x1的联合密度。对x1全空间进行积分实现边缘化marginalization如果对x进行积分结果就是1了。在概率论中如果你知道联合分布 P(A,B)你想求 A 的边缘分布你需要把 B “积掉”积分掉。在标准的流匹配设定中我们希望从一个源分布ppp流转到目标分布qqq。我们定义了一个随时间变化的概率密度函数pt(x)p_t(x)pt​(x)。对于这个条件概率路径什么是充分条件可以使得上面的边界概率路径很好的满足边界条件什么样的条件概率路径设计能保证在t0t0t0时收敛到源分布ppp在t1t1t1时收敛到目标分布qqq边界条件是p0(x)p(x)p_0(x) p(x)p0​(x)p(x)p1(x)q(x)p_1(x) q(x)p1​(x)q(x)图片中是两条路径分别是边缘路径和条件路径。在边缘路径中紫色图是概率密度图是时刻t数据点x的概率分布p(x)。存在无数个x1每个x1在时刻t都撑起来一个属于自己的条件概率分布p(x|x1)。通过积分得到无条件的全局边缘分布p(x)。醉着时间变化p(x) 变成了一个复制的分布。右侧白色网络是全局速度矢量场。每个箭头都是每一个点的方向。积分代表是所有轨迹的加权平均。ut(x∣x1)u_t(x|x_1)ut​(x∣x1​)条件速度是如果x知道自己是x1那么x应该在走哪个轨迹pt(x∣x1)q(x1)pt(x)\frac{p_t(x|x_1)q(x_1)}{p_t(x)}pt​(x)pt​(x∣x1​)q(x1​)​代表的是在x的情况下是x1的概率。贝叶斯公式虽然x是无数个实际计算模拟时候会采样N个x0最后生成N个具体的x1。在条件路径中紫色图是条件概率密度图这里的分布不再是混合的而是围绕着 x1​ 展开的右侧白色网络是条件速度矢量场。当我们锁定目标x1时概率密度图就是条件密度p(x|x1),是一个高斯分布均值x1靠拢方差收缩。右侧条件速度场就是u(x|x1)在数学上如果我们将xtx_txt​定义为从x0x_0x0​到x1x_1x1​的线性插值xt(1−t)x0tx1x_t (1-t)x_0 t x_1xt​(1−t)x0​tx1​xtΨt(x0∣x1)σtx0αtx1x_t \Psi_t(x_0 | x_1) \sigma_t x_0 \alpha_t x_1xt​Ψt​(x0​∣x1​)σt​x0​αt​x1​x0∼p⇒xt∝p(x−αtx1σt)x_0 \sim p \Rightarrow x_t \propto p\left(\frac{x-\alpha_t x_1}{\sigma_t}\right)x0​∼p⇒xt​∝p(σt​x−αt​x1​​)这里定义了一个直线的流Linear Interpolation。xtx_txt​是x0x_0x0​噪声和x1x_1x1​目标的线性组合。x0∼px_0 \sim px0​∼p表示x0x_0x0​是服从某个分布ppp通常是高斯噪声的。FM 是一个全局的期望最小。CFM 是一个微观的期望在q(x1)真实数据分布中采样的点p(x|x1)是锁定x1时候的条件密度u(x|x1) 是锁定x1时候的每一个点 x 都有一个指向 x1​ 的目标速度条件流匹配的核心是不去要求一个模糊的全局平均值而是强制模型去拟合特定的微观路径。两个等价因为v(x) 是神经网络预测的“无条件”速度它的输入只有当前位置 x 和时间t。但是神经网络vtv_tvt​的输入 只有当前位置的坐标xtx_txt​和时间ttt。它的输入列表里没有x1x_1x1​。它的处境 当你把一个具体的数值xtx_txt​喂给网络时作为“上帝”的你知道这个xtx_txt​是从锁定的x1x_1x1​路径上采出来的。但是网络自己完全不知道这个xtx_txt​的“前世今生”它不知道终点去哪。它的输出 因此vt(xt)v_t(x_t)vt​(xt​)只能根据当前这个孤立的坐标输出该位置在整个大盘全局中的平均速度。u(x|x1)是在时间t锁定x1的x的速度。第二个公式其实是第一个公式的等价蒙特卡洛采样形式。它把两个量放在一起做减法x˙t\dot{x}_tx˙t​真值标签 它是真正锁定x1x_1x1​的瞬时速度由蓝框中的条件速度公式计算得出。vt(xt)v_t(x_t)vt​(xt​)网络预测 它是网络在不知道终点的情况下仅仅根据当前位置xtx_txt​盲猜的速度。损失函数干了什么它在用“真正锁定的速度x˙t\dot{x}_tx˙t​”作为标准答案去惩罚和修正那个“不知道终点、只凭位置瞎猜的vt(xt)v_t(x_t)vt​(xt​)”。通过海量不同路径的xtx_txt​冲刷训练最终逼迫vt(xt)v_t(x_t)vt​(xt​)自动学会输出全大盘的平均速度。这张幻灯片比较了两种不同的从噪声到数据样本的路径选择方式Diffusion (VP - Variance Preserving) - 传统的扩散模型Cond-OT - 条件最优传输传统的扩散过程 (Diffusion)在 t 时刻给定最终样本 x₁中间状态 p_t(x|x₁) 服从正态分布 N(tx₁, (1-t)²I)这意味着在扩散过程中每一步都添加了随机噪声路径是概率性的 - 每次采样可能产生不同的中间路径Cond-OT 的选择Ψ_t(x₀|x₁) (1-t)x₀ tx₁这是一个确定性的线性插值路径给定起点 x₀ 和终点 x₁路径是唯一确定的没有随机噪声路径是直线的这表明 Cond-OT 在高维稀疏数据中是动力学最优的条件n/d^{1/2} → 0样本数 n 相对于维度d(1/2)d^{(1/2)}d(1/2)趋于0即高维稀疏数据参考https://www.youtube.com/watch?v5ZSwYogAxYg

相关新闻