当前位置: 首页 > news >正文

Flow Matching 和 Rectified Flow的区别

Flow Matching是通过匹配目标向量场来训练CNF,比如通过最小化目标向量场和模型预测之间的差异。
Rectified Flow的核心思想是学习一个确定性轨迹,将数据分布转换为噪声分布,比如通过线性插值或者更复杂的路径。

推荐阅读:
SD3的采样上篇——Flow Matching
SD3的采样下篇——Rectified Flow
FLUX.1 原理与源码解析


Rectified Flow和Flow Matching的区别

Rectified Flow和Flow Matching是生成模型中基于连续归一化流(CNF)的两种方法,它们既有联系又有区别。以下从原理、公式和代码实现三个方面进行解释。


原理对比

Flow Matching

  • 核心思想:通过直接匹配目标向量场(Target Vector Field)来训练CNF模型,最小化目标向量场和模型预测之间的差异,绕过了传统基于最大似然估计的复杂优化问题。
  • 关键点
    • 定义条件概率路径 p t ( x ) p_t(x) pt(x)(如将数据点 x 0 x_0 x0 和噪声 x 1 x_1 x1 插值),并推导对应的目标向量场 u t ( x ) u_t(x) ut(x)
    • 训练模型 v θ ( x , t ) v_\theta(x, t) vθ(x,t) 直接拟合 u t ( x ) u_t(x) ut(x),无需显式计算概率密度。

Rectified Flow

  • 核心思想:通过构造直线路径(如 x t = x 0 + t ( x 1 − x 0 ) x_t = x_0 + t(x_1 - x_0) xt=x0+t(x1x0))将数据分布转换为噪声分布,强调轨迹的“直线性”以简化采样。
  • 关键点
    • 强制轨迹为直线,减少曲率,从而允许更少的时间步采样。
    • 通过迭代优化(如Reflow技术)进一步拉直轨迹,提升生成质量。

公式对比

Flow Matching

  • 目标向量场
    假设条件路径 p t ( x ∣ x 1 ) p_t(x | x_1) pt(xx1) 由插值定义(如 x t = ( 1 − t ) x 0 + t x 1 x_t = (1-t)x_0 + t x_1 xt=(1t)x0+tx1),目标向量场为:
    u t ( x ) = E x 0 , x 1 ∼ p ( x 0 , x 1 ) [ d x t d t ∣ x t = x ] u_t(x) = \mathbb{E}_{x_0, x_1 \sim p(x_0, x_1)} \left[ \frac{dx_t}{dt} \mid x_t = x \right] ut(x)=Ex0,x1p(x0,x1)[dtdxtxt=x]
  • 损失函数
    最小化模型预测 v θ ( x , t ) v_\theta(x, t) vθ(x,t) 与目标场的差异:
    L FM = E t , x t [ ∥ v θ ( x t , t ) − u t ( x t ) ∥ 2 ] \mathcal{L}_{\text{FM}} = \mathbb{E}_{t, x_t} \left[ \| v_\theta(x_t, t) - u_t(x_t) \|^2 \right] LFM=Et,xt[vθ(xt,t)ut(xt)2]

Rectified Flow

  • 目标向量场
    直接定义直线路径 x t = x 0 + t ( x 1 − x 0 ) x_t = x_0 + t(x_1 - x_0) xt=x0+t(x1x0),目标速度为常数:
    u t ( x ) = x 1 − x 0 u_t(x) = x_1 - x_0 ut(x)=x1x0
  • 损失函数
    强制模型预测的速度与目标速度一致:
    L RF = E t , x 0 , x 1 [ ∥ v θ ( x t , t ) − ( x 1 − x 0 ) ∥ 2 ] \mathcal{L}_{\text{RF}} = \mathbb{E}_{t, x_0, x_1} \left[ \| v_\theta(x_t, t) - (x_1 - x_0) \|^2 \right] LRF=Et,x0,x1[vθ(xt,t)(x1x0)2]
  • Reflow技术
    迭代训练多个Rectified Flow模型,逐步拉直轨迹。

代码实现对比

Flow Matching示例(简化版)

def flow_matching_loss(model, x0, x1, t):# 线性插值生成样本xt = (1 - t) * x0 + t * x1# 目标向量场为 x1 - x0ut = x1 - x0# 模型预测当前速度vt = model(xt, t)# 计算均方误差loss = torch.mean((vt - ut) ** 2)return loss

Rectified Flow示例(简化版)

def rectified_flow_loss(model, x0, x1, t):# 直线路径生成样本xt = x0 + t * (x1 - x0)# 目标速度恒为 x1 - x0target_velocity = x1 - x0# 模型预测速度pred_velocity = model(xt, t)# 计算均方误差loss = torch.mean((pred_velocity - target_velocity) ** 2)return loss

关键区别

路径生成:
Flow Matching允许自由选择概率路径(如最优传输路径),而Rectified Flow强调直线路径和迭代优化(Reflow),牺牲部分灵活性以换取高效采样。
损失计算:
Rectified Flow的目标速度直接为 x 1 − x 0 x_1−x_0 x1x0,而Flow Matching可能根据不同的插值方式调整目标向量场。

相关文章:

Flow Matching 和 Rectified Flow的区别

Flow Matching是通过匹配目标向量场来训练CNF,比如通过最小化目标向量场和模型预测之间的差异。 Rectified Flow的核心思想是学习一个确定性轨迹,将数据分布转换为噪声分布,比如通过线性插值或者更复杂的路径。 推荐阅读: SD3的采…...

机器学习编译

一、机器学习概述 1.1 什么是机器学习编译 将机器学习算法从开发形态通过变换和优化算法使其变成部署形态。即将训练好的机器学习模型应用落地,部署在特定的系统环境之中的过程。 开发形态:开发机器学习模型时使用的形态。Pytorch,TensorFlow等通用框…...

什么是 BotGate 动态防护?

随着网络威胁日益复杂,传统的防护方法逐渐暴露出漏洞。BotGate 动态防护是一种结合机器人网络(Botnet)和动态防护技术的新兴网络安全模式。它利用大量分布式设备(即“僵尸网络”或 Botnet)的实时协作能力,快…...

Linux笔记---自定义shell

目录 前言 1. 程序框架 2. 打印命令行提示符 2.1 获取用户名(GetUserName) 2.2 获取主机名(GetHostName) 2.3 获取工作目录(GetPwd) 3. 获取命令行输入 4. 判断是否有重定向 5. 解析命令行 6. 内建命令 6.1 内建命令的特点 6.2 常见内建命令 6.3 内建命令 vs 外部命…...

大语言模型从理论到实践(第二版)-学习笔记(绪论)

大语言模型的基本概念 1.理解语言是人工智能算法获取知识的前提 2.语言模型的目标就是对自然语言的概率分布建模 3.词汇表 V 上的语言模型,由函数 P(w1w2 wm) 表示,可以形式化地构建为词序列 w1w2 wm 的概率分布,表示词序列 w1w2 wm…...

2025-03-08 学习记录--C/C++-C 语言 判断一个数是否是完全平方数

C 语言 判断一个数是否是完全平方数 使用 sqrt 函数计算平方根&#xff0c;然后判断平方根的整数部分是否与原数相等。 #include <stdio.h> #include <math.h>int isPerfectSquare(int num) {if (num < 0) {return 0; // 负数不是完全平方数}int sqrtNum (int)…...

八、排序算法

一些简单的排序算法 8.1 冒泡排序 void Bubble_sort(int a[] , int len){int i,j,flag,tmp;for(i=0 ; i < len-1 ; i++){flag = 1;for(j=0 ; j < len-1-i ; j++){if(a[j] > a[j+1]){tmp = a[j];a[j] = a[j+1];a[j+1] = tmp;flag = 0;}}if(flag == 1){break;}}…...

计算机网络篇:基础知识总结与基于长期主义的内容更新

基础知识总结 和 MySQL 类似&#xff0c;我同样花了一周左右的时间根据 csview 对计算机网络部分的八股文进行了整理&#xff0c;主要的内容包括&#xff1a;概述、TCP 与 UDP、IP、HTTP&#xff0c;其中我个人认为最重要的是 TCP 这部分的内容。 在此做一篇目录索引&#xf…...

nodejs学习——nodejs和npm安装与系统环境变量配置及国内加速

nodejs和npm安装与系统环境变量配置及国内加速 下载node-v22.14.0-x64.msi 建议修改为非C盘文件夹 其它步骤&#xff0c;下一步&#xff0c;下一步&#xff0c;完成。 打开CMD窗口查看安装详情 $ node -v v22.14.0 $ npm -v 10.9.2$ npm config list创建node_global和node_c…...

《打造视频同步字幕播放网页:从0到1的技术指南》

《打造视频同步字幕播放网页&#xff1a;从0到1的技术指南》 为什么要制作视频同步字幕播放网页 在数字化信息飞速传播的当下&#xff0c;视频已然成为内容输出与获取的核心载体&#xff0c;其在教育、娱乐、宣传推广等诸多领域发挥着举足轻重的作用 。制作一个视频同步字幕播…...

清华大学第八弹:《DeepSeek赋能家庭教育》

大家好&#xff0c;我是吾鳴。 之前吾鳴给大家分享过清华大学出版的七份报告&#xff0c;它们分别是&#xff1a; 《DeepSeek从入门到精通》 《DeepSeek如何赋能职场应用》 《普通人如何抓住DeepSeek红利》 《DeepSeekDeepResearch&#xff1a;让科研像聊天一样简单》 《D…...

自我训练模型:通往未来的必经之路?

摘要 在探讨是否唯有通过自我训练模型才能掌握未来的问题时&#xff0c;文章强调了底层技术的重要性。当前&#xff0c;许多人倾向于关注应用层的便捷性&#xff0c;却忽视了支撑这一切的根本——底层技术。将模型简单视为产品是一种短视行为&#xff0c;长远来看&#xff0c;理…...

C++ Primer 交换操作

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

深度学习模型组件之优化器--自适应学习率优化方法(Adadelta、Adam、AdamW)

深度学习模型组件之优化器–自适应学习率优化方法&#xff08;Adadelta、Adam、AdamW&#xff09; 文章目录 深度学习模型组件之优化器--自适应学习率优化方法&#xff08;Adadelta、Adam、AdamW&#xff09;1. Adadelta1.1 公式1.2 优点1.3 缺点1.4 应用场景 2. Adam (Adaptiv…...

使用jcodec库,访问网络视频提取封面图片上传至oss

注释部分为FFmpeg&#xff08;确实方便但依赖太大&#xff0c;不想用&#xff09; package com.zuodou.upload;import com.aliyun.oss.OSS; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.zuodou.oss.OssProperties;…...

新品速递 | 多通道可编程衰减器+矩阵系统,如何破解复杂通信测试难题?

在无线通信技术快速迭代的今天&#xff0c;多通道可编程数字射频衰减器和衰减矩阵已成为测试领域不可或缺的核心工具。它们凭借高精度、灵活配置和强大的多通道协同能力&#xff0c;为5G、物联网、卫星通信等前沿技术的研发与验证提供了关键支持。从基站性能测试到终端设备校准…...

扩展------项目中集成阿里云短信服务

引言 在当今数字化时代&#xff0c;短信服务在各种项目中扮演着重要角色&#xff0c;如用户注册验证、订单通知、营销推广等。阿里云短信服务凭借其稳定、高效和丰富的功能&#xff0c;成为众多开发者和企业的首选。本文将详细介绍如何在项目中集成阿里云短信服务&#xff0c;帮…...

MySQL面试篇——性能优化

MySQL性能优化 在MySQL中&#xff0c;如何定位慢查询 慢查询表象&#xff1a;页面加载过慢、接口压测响应时间过长&#xff08;超过1s&#xff09;。造成慢查询的原因通常有&#xff1a;聚合查询、多表查询、表数据量过大查询、深度分页查询 方案一&#xff1a;开源工具 调试工…...

Java EE 进阶:Spring MVC(2)

cookie和session的关系 两者都是在客户端和服务器中进行存储数据和传递信息的工具 cookie和session的区别 Cookie是客⼾端保存⽤⼾信息的⼀种机制. Session是服务器端保存⽤⼾信息的⼀种机制. Cookie和Session之间主要是通过SessionId关联起来的&#xff0c;SessionId是Co…...

ShardingSphere 和 Spring 的动态数据源切换机制的对比以及原理

ShardingSphere 与 Spring 动态数据源切换机制的对比及原理 一、核心定位对比 维度ShardingSphereSpring动态数据源&#xff08;如 AbstractRoutingDataSource&#xff09;定位分布式数据库中间件轻量级多数据源路由工具核心目标分库分表、读写分离、分布式事务多数据源动态切…...

基于Django的协同过滤算法养老新闻推荐系统的设计与实现

基于Django的协同过滤算法养老新闻推荐系统&#xff08;可改成普通新闻推荐系统使用&#xff09; 开发工具和实现技术 Pycharm&#xff0c;Python&#xff0c;Django框架&#xff0c;mysql8&#xff0c;navicat数据库管理工具&#xff0c;vue&#xff0c;spider爬虫&#xff0…...

AI视频生成工具清单(附网址与免费说明)

以下是一份详细的AI视频制作网站总结清单&#xff0c;包含免费/付费信息及核心功能说明&#xff1a; AI视频生成工具清单&#xff08;附网址与免费说明&#xff09; 1. Synthesia 网址&#xff1a;https://www.synthesia.io是否免费&#xff1a;免费试用&#xff08;生成视频…...

JavaWeb学习——HTTP协议

HTTP 协议 什么是 HTTP 协议 HTTP&#xff08;超文本传输协议&#xff0c;HyperText Transfer Protocol&#xff09;是用于在客户端&#xff08;如浏览器&#xff09;和服务器之间传输超文本&#xff08;如网页、图片、视频等&#xff09;的应用层协议。它是现代互联网数据通…...

QP 问题(Quadratic Programming, 二次规划)

QP 问题&#xff08;Quadratic Programming, 二次规划&#xff09;是什么&#xff1f; QP&#xff08;Quadratic Programming&#xff0c;二次规划&#xff09;是一类优化问题&#xff0c;其中目标函数是二次型函数&#xff0c;约束条件可以是线性等式或不等式。 QP 问题是线…...

VSTO(C#)Excel开发2:Excel对象模型和基本操作

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

MySQL索引数据结构

目录 1 索引常用的数据结构 1.1 二叉树 1.2 平衡二叉树 1.3 红黑树 1.3 Hash表 1.4 B树 1.4 B树 2 MySQL索引的数据结构 2.1 MyISAM存储引擎索引 2.2 InnoDB存储引擎索引 2.2.1 聚集索引 2.2.2 非聚集索引 2.2.3 联合索引数 2.2.4 hash索引 1 索引常用的数据结构 1.1 二叉树 二…...

C 语 言 --- 数 组 (1)

C 语 言 --- 数 组1 数 组定义一维数组语 法 格 式初始化完 全 初 始 化不 完 全 初 始 化省 略 数 组 大 小不 初 始 化使 用 memset 初 始 化 类 型访 问 元 素一 维 数 组 在 内 存 中 的 存 储 总结 &#x1f4bb;作 者 简 介&#xff1a;曾 与 你 一 样 迷 茫&#xff0c;…...

[视频编码]rkmpp 实现硬件编码

mpi_enc_test的命令参数描述说明 命令参数的描述说明如下&#xff1a; 命令参数 描述说明 -i 输入的图像文件。 -o 输出的码流文件。 -w 图像宽度&#xff0c;单位为像素。 -h 图像高度&#xff0c;单位为像素。 -hstride 垂直方向相邻两行之间的距离&#xff0c;单…...

3D数字化:家居行业转型升级的关键驱动力

在科技日新月异的今天&#xff0c;家居行业正经历着一场前所未有的变革。从传统的线下实体店铺到线上电商平台的兴起&#xff0c;再到如今3D数字化营销的广泛应用&#xff0c;消费者的购物体验正在发生翻天覆地的变化。3D数字化营销不仅让购物变得更加智能和便捷&#xff0c;还…...

网安知识点

1.SQL注入漏洞产生的原因是&#xff1f; 前端传到后端的数据&#xff0c;没有经过任何处理&#xff0c;直接当作sql语句的一部分来执行 2.讲一下sql注入&#xff0c;写入webshell需要哪些前提条件 开启导入导出权限secure-file-priv 站点根目录位置/路径 mysql用户对站点根目…...