作为一种新的商品表现形态,内容几乎存在于手淘用户动线全流程,例如信息流种草内容、搜索消费决策内容、详情页种草内容等。过去一年,我们通过在视频生成、图文联合生成等核心技术上的持续攻关,AIGC内容生成在手淘多个场景取得了规模化落地价值。本专题《淘宝的AIGC内容生成技术总结》是我们摸索出的一部分实践经验,我们将开启一段时间的内容AI专题连载,欢迎大家一起交流进步。
随着生成式人工智能的快速发展,扩散模型逐渐成为领域内的焦点技术之一。从稳定扩散(Stable Diffusion)到 MidJourney,再到近期的 Flux 和 DALLE3等,各种扩散模型在生成图像的表现上日趋完善。扩散模型不仅在生成艺术画作和创意设计中展示了强大的能力,也在内容创作、电商营销等场景发挥重要价值。
扩散模型的理论框架主要包括 DDPM、score matching 和 flow matching 等。flow matching 作为一种更灵活简洁的训练范式,被当前最前沿的开源文生图、文生视频模型所采用,如 SD3 和 Flux等。它不仅显著提升了训练的收敛效率,同时也更易于从理论层面进行理解。
在本文中,我们将以 Flow Matching 为切入点,深入探讨扩散模型的基础原理。网络上关于扩散模型原理的解读文章中,通常有着大量复杂的公式推导,而扩散模型训练算法本身却非常简洁。本文将尽量避开冗长的公式推导,力求以清晰直观的方式揭示这些简洁的算法形式背后的核心原理。
扩散模型
生成模型简介
对于一些简单的分布,例如均匀分布和高斯分布,我们可以通过简单的算法轻松实现采样。
然而,对于自然图像这样的高维复杂分布,由于缺乏解析解,采样变得异常困难。尽管我们可以收集大量自然图像的样本,但要从中生成新的样本却并非易事。生成模型的目标是基于训练集中的已有样本,学习并从其背后的分布中进行采样。
图像生成模型
对于自然图像这样的复杂分布,我们可以通过某种方法构建其与简单分布(通常是高斯分布)之间的映射关系。通过这种映射关系,可以先从简单分布中采样,再映射到复杂分布,从而实现对复杂分布的采样目标。而如何构建这一映射过程,正是各类生成算法的核心。
Flow Matching
▐ Continuous Normalizing Flow
Continuous Normalizing Flow是一种能够将简单分布映射为任意复杂分布的方式,我们先通过一个简单的例子来理解一下。
记数据点为表示d-维样本数据空间中的一个点。(对应例子中湖面空间)
3.样本随时间演化
这一方程表明,样本点(小黄鸭)的位置随时间变化,完全受当前所处位置的向量场(湖面水流方向和速度)决定。
4.样本概率分布的随时间变化
对于定义在数据空间中的某个初始概率分布,如果所有样本都按照上面的常微分方程运动,可以证明对应的概率分布
随时间的变化规律满足以下公式:
简单来说,与
在变换前的初始点的概率
成正比。而
描述了变换过程中空间伸缩的程度。可以将其理解为变换前后某点邻域的空间体积比值(例如下图中蓝色小正方形和红色小正方形的面积比)。所以上面的公式实际上是变换前后某个点邻域概率守恒的表现。
不过,在后续推导中我们并不直接使用这一公式,关键在于当时,初始分布
映射为目标
,并且这个过程是可逆的。由此,我们得到了一个理论上将任意两个分布相互映射的方法。
采样初始点
迭代更新
最终,
满足分布
▐ Flow Matching求解
a.简单高斯分布的映射
首先考虑一个非常简单的情形:和
为标准差σ 相同,均值点分别为
和
的多维高斯分布,这种情况下一个可能的解为类似匀速直线运动的
的常数向量场的解,如下面的视频所示。
标准差相同的高斯分布之间的映射
对应的向量场表达式为常数
标准差相同的高斯分布之间的映射
这表明两个标准差相同的高斯分布可以通过简单的“匀速直线运动向量场”进行映射。如果考虑的极限,上面的情形退化为两个delta分布之间映射。delta 分布可以简单理解为所有概率分布集中于一点的分布。
b.复杂分布的映射
前面我们介绍了简单高斯分布和delta分布的映射方法。对于任意分布和
,它们表达为delta分布的线性叠加:
根据上一节的推导,上面线性叠加中的两个delta分布之间的映射的条件概率随时间演化可以表达为
对应的条件向量场为 将上面的条件概率演化路径
进行线性叠加得到的边缘概率随时间演化表达为
不难发现,上面的边缘概率分布随时间演化能够从映射到
那么上面的边缘概率随时间演化对应的flow
是什么呢?
是简单的delta函数映射条件概率
的线性叠加,而
对应的条件向量场flow为简单的“匀速直线运动向量场”
,那么
对应的flow
是否就是这些“匀速直线运动向量场”的线性叠加呢?答案是肯定的,具体由下式得到。
上式表明,如上图所示,为了计算,随机采样
和
,在
条件下计算
的期望值。
c.对
神经网络参数化
上一节的讨论实际上提供了一个计算
理论可行的算法,具体如下:
Algorithm:计算t时刻任意处的向量场
初始化空列表
While
:
随机采样
计算
If
Return
实际上,我们不可能对所有可能的和
去通过上面这种非常低效的方式去计算统计平均。因此,我们引入神经网络对
进行神经网络参数化,定义为
,并通过优化网络参数使其收敛到:
这样,我们通过一次网络的前向推理就可以得到和
处的
。
那么接下来的问题是:如何构造网络的损失函数,通过训练使网络输出能够接近上述的期望形式?一个巧妙的解决方案是,可以证明,对于下面的L2 形式的损失函数,其最优解正是上述期望值形式:
背后的原因在于对于L2的loss,最优解就是对应的期望均值形式。
对此可以利用一个更简单的例子进行理解。如果向量是
的一个函数,对于L2 的 loss,
很容易证明这个loss的最优解为(回忆一下最小二乘法)
这两个case的区别仅仅在于,下面这个case只是一个向量的优化。而上面的case中,我们做的是定义在和
的整个数据空间和时间上的向量场的优化。
顺便提一句,通常我们再讨论扩散模型的优化目标时,会提到“预测原图”、“预测噪音”,“预测噪音和原图的差值”等等,这些说法有一定的误导性。因为实际上我们并不是希望网络能够预测“原图”或者“噪音”,而是以它们为目标构造L2的loss,最终期望网络收敛到对应的以为条件的“原图”或者“噪音”的统计期望值。所以扩散模型的训练即使在完全收敛的情况下,它的loss也不为0,而是以
为条件的“原图”或者“噪音”的统计方差。
d.Flow matching的训练和采样算法
对应于上面的loss形式,将设为高斯分布,
设为图像训练集对应的分布,我们得到Flow Matching的训练算法如下:
初始化网络参数 While training:
采样图像样本 ,高斯噪音
计算 计算条件向量场 计算损失函数并更新网络
Return 优化后的网络
初始化噪音 ,设定步长
For Return
e.Flow Matching 的其他形式
在生成模型的研究中,构建简单分布与复杂分布之间的映射是核心挑战,而 Flow Matching 提供了一种高效解决方案。从 Continuous Normalizing Flow 的理论基础,到基于神经网络的高效实现,再到具体的训练和采样流程,Flow Matching 展现了极大的灵活性和实用性。此外,相较于传统的扩散模型,如 DDPM,Flow Matching 在框架简洁性和实际性能上均表现出优势。
本文以 Flow Matching 为核心,从理论和算法的角度系统地探讨了扩散模型的基本原理,并通过多个直观的示例和公式推导展示了其内在逻辑。
Flow Matching for Generative Modeling https://arxiv.org/abs/2210.02747
Improving and Generalizing Flow-Based Generative Models with Minibatch Optimal Transport
Scaling Rectified Flow Transformers for High-Resolution Image Synthesis
