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(x1−x0))将数据分布转换为噪声分布,强调轨迹的“直线性”以简化采样。
- 关键点:
- 强制轨迹为直线,减少曲率,从而允许更少的时间步采样。
- 通过迭代优化(如Reflow技术)进一步拉直轨迹,提升生成质量。
公式对比
Flow Matching
- 目标向量场:
假设条件路径 p t ( x ∣ x 1 ) p_t(x | x_1) pt(x∣x1) 由插值定义(如 x t = ( 1 − t ) x 0 + t x 1 x_t = (1-t)x_0 + t x_1 xt=(1−t)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,x1∼p(x0,x1)[dtdxt∣xt=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(x1−x0),目标速度为常数:
u t ( x ) = x 1 − x 0 u_t(x) = x_1 - x_0 ut(x)=x1−x0 - 损失函数:
强制模型预测的速度与目标速度一致:
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)−(x1−x0)∥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 x1−x0,而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 函数计算平方根,然后判断平方根的整数部分是否与原数相等。 #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 类似,我同样花了一周左右的时间根据 csview 对计算机网络部分的八股文进行了整理,主要的内容包括:概述、TCP 与 UDP、IP、HTTP,其中我个人认为最重要的是 TCP 这部分的内容。 在此做一篇目录索引…...
nodejs学习——nodejs和npm安装与系统环境变量配置及国内加速
nodejs和npm安装与系统环境变量配置及国内加速 下载node-v22.14.0-x64.msi 建议修改为非C盘文件夹 其它步骤,下一步,下一步,完成。 打开CMD窗口查看安装详情 $ node -v v22.14.0 $ npm -v 10.9.2$ npm config list创建node_global和node_c…...
《打造视频同步字幕播放网页:从0到1的技术指南》
《打造视频同步字幕播放网页:从0到1的技术指南》 为什么要制作视频同步字幕播放网页 在数字化信息飞速传播的当下,视频已然成为内容输出与获取的核心载体,其在教育、娱乐、宣传推广等诸多领域发挥着举足轻重的作用 。制作一个视频同步字幕播…...
清华大学第八弹:《DeepSeek赋能家庭教育》
大家好,我是吾鳴。 之前吾鳴给大家分享过清华大学出版的七份报告,它们分别是: 《DeepSeek从入门到精通》 《DeepSeek如何赋能职场应用》 《普通人如何抓住DeepSeek红利》 《DeepSeekDeepResearch:让科研像聊天一样简单》 《D…...
自我训练模型:通往未来的必经之路?
摘要 在探讨是否唯有通过自我训练模型才能掌握未来的问题时,文章强调了底层技术的重要性。当前,许多人倾向于关注应用层的便捷性,却忽视了支撑这一切的根本——底层技术。将模型简单视为产品是一种短视行为,长远来看,理…...
C++ Primer 交换操作
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
深度学习模型组件之优化器--自适应学习率优化方法(Adadelta、Adam、AdamW)
深度学习模型组件之优化器–自适应学习率优化方法(Adadelta、Adam、AdamW) 文章目录 深度学习模型组件之优化器--自适应学习率优化方法(Adadelta、Adam、AdamW)1. Adadelta1.1 公式1.2 优点1.3 缺点1.4 应用场景 2. Adam (Adaptiv…...
使用jcodec库,访问网络视频提取封面图片上传至oss
注释部分为FFmpeg(确实方便但依赖太大,不想用) 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;…...
新品速递 | 多通道可编程衰减器+矩阵系统,如何破解复杂通信测试难题?
在无线通信技术快速迭代的今天,多通道可编程数字射频衰减器和衰减矩阵已成为测试领域不可或缺的核心工具。它们凭借高精度、灵活配置和强大的多通道协同能力,为5G、物联网、卫星通信等前沿技术的研发与验证提供了关键支持。从基站性能测试到终端设备校准…...
扩展------项目中集成阿里云短信服务
引言 在当今数字化时代,短信服务在各种项目中扮演着重要角色,如用户注册验证、订单通知、营销推广等。阿里云短信服务凭借其稳定、高效和丰富的功能,成为众多开发者和企业的首选。本文将详细介绍如何在项目中集成阿里云短信服务,帮…...
MySQL面试篇——性能优化
MySQL性能优化 在MySQL中,如何定位慢查询 慢查询表象:页面加载过慢、接口压测响应时间过长(超过1s)。造成慢查询的原因通常有:聚合查询、多表查询、表数据量过大查询、深度分页查询 方案一:开源工具 调试工…...
Java EE 进阶:Spring MVC(2)
cookie和session的关系 两者都是在客户端和服务器中进行存储数据和传递信息的工具 cookie和session的区别 Cookie是客⼾端保存⽤⼾信息的⼀种机制. Session是服务器端保存⽤⼾信息的⼀种机制. Cookie和Session之间主要是通过SessionId关联起来的,SessionId是Co…...
ShardingSphere 和 Spring 的动态数据源切换机制的对比以及原理
ShardingSphere 与 Spring 动态数据源切换机制的对比及原理 一、核心定位对比 维度ShardingSphereSpring动态数据源(如 AbstractRoutingDataSource)定位分布式数据库中间件轻量级多数据源路由工具核心目标分库分表、读写分离、分布式事务多数据源动态切…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
