基于Flow-matching的扩散模型原理解读
作为一种新的商品表现形态,内容几乎存在于手淘用户动线全流程,例如信息流种草内容、搜索消费决策内容、详情页种草内容等。过去一年,我们通过在视频生成、图文联合生成等核心技术上的持续攻关,AIGC内容生成在手淘多个场景取得了规模化落地价值。本专题《淘宝的AIGC内容生成技术总结》是我们摸索出的一部分实践经验,我们将开启一段时间的内容AI专题连载,欢迎大家一起交流进步。
第三篇《OpenAI o1模型的前世今生》
第四篇《多模态人物视频驱动技术回顾与业务应用》
第十二篇《音频生成技术探索与淘宝域实践》
随着生成式人工智能的快速发展,扩散模型逐渐成为领域内的焦点技术之一。从稳定扩散(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
本文分享自微信公众号 - 大淘宝技术(AlibabaMTT)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OpenAI 发布 Evals API:AI 模型测试进入程序化新时代
OpenAI 宣布推出 Evals API。根据介绍,Evals API支持用户通过编程方式定义测试、自动化运行评估流程,并实现对提示(Prompt)的快速迭代优化。这一功能的发布,不仅将模型评估从手动操作推向了高度自动化的新阶段,也为开发者提供了更灵活、高效的工具,以加速AI应用的开发与优化。 Evals API的核心在于其程序化特性。过去,开发者在测试和评估AI模型时,往往依赖OpenAI提供的仪表板(Dashboard)界面,手动输入测试用例并记录结果。而现在,通过Evals API,开发者能够直接在代码中定义测试逻辑,利用脚本自动化运行评估任务,并实时获取结果反馈。 这种方式不仅大幅提升了效率,还允许将评估流程无缝嵌入到现有的开发工作流中。例如,一个团队可以在持续集成/持续部署(CI/CD)管道中加入Evals API,自动验证模型更新后的性能表现,确保每次迭代都达到预期标准。 此外,Evals API的推出还为提示工程(Prompt Engineering)带来了新的可能性。开发者可以通过快速迭代提示,测试不同输入对模型输出的影响,从而找到最优的指令组合。这一功能特别适合需要...
- 下一篇
TinyPro 中后台管理系统使用指南——让页面搭建变得如此简单!
本文由体验技术团队Kagol原创。 TinyPro是一个基于TinyVue打造的前后端分离的后台管理系统,支持在线配置菜单、路由、国际化,支持页签模式、多级菜单,支持丰富的模板类型,支持多种构建工具,功能强大、开箱即用。 源码:github.com/opentiny/ti… 官网:opentiny.design/vue-pro 1 项目优势 如果将开发 Web 应用比作建造房子,那么 TinyVue 组件库中的组件就是建造房子的砖、瓦、沙石等材料,你可以用 TinyVue 组件快速搭建前端项目。 而 TinyPro 则是用 TinyVue 组件库搭建起来的“样板房”,这是一个已经搭建好的完整的后台管理系统,包含前后端。 市面上有很多后台管理模板,为什么要选择 TinyPro 呢? 我总结了下,TinyPro 主要有以下优势: 上手成本低:一行命令即可创建一个后台管理系统 支持前后端:前端基于Vue3+TypeScript+TinyVue,后端基于NestJS 强大的功能:支持组件粒度的权限管理、页签模式、多级菜单、多种布局方式、个性化主题、国际化、Mock 数据等丰富的特性,开箱即用 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池