SPIN-Diffusion:自我博弈微调提升文本到图像扩散模型性能

news2025/6/9 17:36:27

扩散模型作为生成AI的关键实体,已经在多个领域展现出了卓越的能力。然而,现有的扩散模型,如Stable Diffusion和SDXL,通常在预训练阶段后需要进行微调以更好地符合人类偏好。最近,研究者们开始尝试使用强化学习(RL)来微调扩散模型,但这通常需要每个文本提示至少有两个图像(“胜者”和“败者”)。为了解决这一问题,来自加州大学洛杉矶分校的研究团队提出了一种扩散模型自我博弈微调(SPIN-Diffusion),允许扩散模型与其早期版本进行竞争,从而实现自我迭代改进。

SPIN-Diffusion算法生成的图像示例

方法

自我博弈微调(SPIN)的概念源自于强化学习中的自我对抗策略,其中模型通过与自身先前版本的对抗来实现性能的提升。在文本到图像的扩散模型中,SPIN 允许模型在没有外部人类偏好数据的情况下进行自我迭代改进,通过模拟一个主模型与对手模型之间的竞争。

研究者提出的用于微调扩散模型的新方法采用了自我博弈机制(Self-Play)。这种方法考虑了一个高质量的数据集,其中包含文本提示c 和图像 x0​ 对,目标是将预训练的扩散模型 pθ​ 微调至与数据分布 对齐。不同于直接最小化去噪分数匹配目标函数 LDSM,研究者将自我博弈微调(SPIN)适应到扩散模型中。然而,将 SPIN 应用于扩散模型的微调面临独特挑战,特别是在获取边缘概率 pθ​(x0​∣c) 时,这在大型语言模型(LLMs)中是直接的,但在扩散模型中则需要对所有可能的轨迹进行积分,这在计算上是不可行的。为了解决这个问题,研究者提出了 SPIN-Diffusion 方法,该方法通过使用 DDIM 公式,将目标函数分解,仅需要估计分数函数 ϵθ​。这种方法侧重于整个扩散过程的联合分布,而不是边缘分布,从而有效地解决了计算上的难题。

研究者的目标是训练一个能够区分真实图像和模型生成图像的测试函数。这个测试函数的目的是评估给定文本提示下,一系列扩散步骤生成的图像是否看起来像是从目标数据分布中抽取的。为了实现这一点,测试函数会学习识别图像中的特定特征,这些特征在真实图像中普遍存在,但在模型生成的图像中可能缺失或不同。这个过程涉及到对扩散过程的深入理解,以及如何通过模型生成的图像来模拟这一过程。

一旦有了能够区分真实和合成图像的测试函数,下一步就是通过自对弈来“欺骗”这个测试函数。在这个过程中,扩散模型被训练为对手模型,其目标是生成能够误导测试函数的图像,即使这些图像在质量上与真实图像相媲美。这需要对手模型不断地提高其生成图像的质量和逼真度,从而在测试函数的评估下获得高分。通过这种方式,模型在每一轮自对弈中都会变得更加精细,生成的图像也会更加接近真实数据的分布。

在这一步骤中,研究者面对的是如何优化模型以生成与真实数据分布一致的图像。由于直接计算模型生成图像的边缘概率非常复杂,研究者采用了一种分解策略。这种方法不是一次性考虑整个图像生成过程,而是将其分解为多个小步骤,每个步骤只依赖于当前状态和前一状态。这样,优化目标就被分解为一系列更简单的子问题,每个子问题只涉及到两个连续的状态。这种方法显著降低了计算的复杂性,同时保持了对模型性能的有效优化。

 尽管分解训练目标已经简化了优化过程,但在实际操作中,存储和计算所有中间状态的图像仍然需要大量的计算资源。为了进一步提高效率,研究者提出了一个近似的训练目标。这个近似目标利用了损失函数的凸性质,通过Jensen不等式将期望操作移到损失函数的外面,从而避免了对所有中间状态的显式计算。这样,只需要考虑两个连续的步骤,就可以更新模型的参数。这种方法不仅减少了内存的使用,还加快了训练过程,使得模型能够在有限的计算资源下更快地收敛到更好的解。

实验

实验的配置使用了Stable Diffusion v1.5(SD-1.5)作为基础模型,并在LAION-5B数据集上进行了预训练。Pick-a-Pic数据集被选为微调数据集,它包含了由Dreamlike2和SDXL-beta生成的图像对,以及对应的人类偏好标签。研究者还训练了SD-1.5的监督微调(SFT)和Diffusion-DPO模型作为基线。

评估中使用的三个基准数据集的大小,包括Pick-a-Pic、PartiPrompts和HPSv2
在Pick-a-Pic训练集的一个样本中,获胜图像与失败图像相比在四个评估指标上的胜率

研究者根据人类偏好对齐和视觉吸引力两个维度进行了评估。结果显示,SPIN-Diffusion在第一次迭代后就在多个指标上超越了SFT和Diffusion-DPO方法。特别是在第二次迭代后,SPIN-Diffusion在视觉质量上的表现尤为突出,其在所有评估指标上都优于其他微调方法。

这组图表比较了不同迭代次数的SPIN-Diffusion与SD-1.5、SFT和Diffusion-DPO在Aesthetic得分、PickScore、HPS和ImageReward四个指标上的表现。图表展示了随着迭代次数的增加,SPIN-Diffusion性能的提升
在Pick-a-Pic测试集上,不同模型在PickScore、HPS、ImageReward和Aesthetic四个指标上的平均得分
雷达图综合展示了SPIN-Diffusion在不同迭代次数下与基线方法相比在HPS、Aesthetic、PickScore和Image Reward四个指标上的表现

研究者进一步通过定性分析来展示SPIN-Diffusion生成图像的质量。他们选择了Pick-a-Pic测试数据集中的三个提示,并通过SD-1.5、SFT、Diffusion-DPO和不同迭代次数的SPIN-Diffusion模型生成图像。通过视觉比较,SPIN-Diffusion生成的图像在对齐、阴影、视觉吸引力和细节精细度等方面都有显著提升。

SPIN-Diffusion在不同迭代次数下相对于SD-1.5和Diffusion-DPO (ours)的胜率
不同模型基于Pick-a-Pic测试集的三个提示生成的图像。模型包括SD-1.5、SFT、Diffusion-DPO (ours)以及三个迭代次数的SPIN-Diffusion

研究者还分析了SPIN-Diffusion与SFT和Diffusion-DPO的训练动态。他们观察到SFT在训练了大约50k数据后性能停止提升,而SPIN-Diffusion即使在训练了超过800k数据后仍然在提升。这表明自对弈微调在SPIN-Diffusion的性能提升中起到了关键作用。

SFT、Diffusion-DPO和SPIN-Diffusion在训练过程中Aesthetic得分、PickScore、HPS和平均得分的变化

SPIN-Diffusion作为一种创新的扩散模型微调方法,特别适用于每个文本提示仅提供单一图像的场景。通过自对弈机制,SPIN-Diffusion能够迭代地改进模型性能,最终收敛到目标数据分布。理论证据支持了SPIN-Diffusion的优越性,证明了传统监督微调无法超越其静止点。实证评估突出了SPIN-Diffusion在文本到图像生成任务中的显著成功,甚至在不需要额外数据的情况下也超越了现有的最先进微调方法。

论文链接:https://arxiv.org/abs/2402.10210

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1902124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思MindSpore学习笔记4-03生成式--Diffusion扩散模型

摘要: 记录昇思MindSpore AI框架使用DDPM模型给图像数据正向逐步添加噪声,反向逐步去除噪声的工作原理和实际使用方法、步骤。 一、概念 1. 扩散模型Diffusion Models DDPM(denoising diffusion probabilistic model) (无)条件…

06-6.4.4 拓扑排序

👋 Hi, I’m Beast Cheng 👀 I’m interested in photography, hiking, landscape… 🌱 I’m currently learning python, javascript, kotlin… 📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

计算机网络浅谈—什么是 OSI 模型?

开放系统通信(OSI)模型是一个代表网络通信工作方式的概念模型。 思维导图 什么是 OSI 模型? 开放系统互连 (OSI) 模型是由国际标准化组织创建的概念模型,支持各种通信系统使用标准协议进行通信。简单而言,OSI 为保证…

C++左值右值

在C中,左值(lvalue)和右值(rvalue)是表达式分类的关键概念,它们主要影响表达式的赋值、函数调用以及操作符的使用方式。这些概念在C11及以后的版本中变得更加重要,因为引入了移动语义和右值引用…

蓄势高飞逐“新”空,卓翼飞思助力打造低空经济产业领域人才智库

2024年,“低空经济”首次写入政府工作报告,掀开新兴产业的崭新一页,而后迅速在全国各地呈现如火如荼的发展态势。这片蕴藏着巨大潜力和产业的蓝海,正蓄势聚能、乘势而起,站在发展的新风口上,面对新前景和新…

MongoDB集群搭建-最简单

目录 前言 一、分片概念 二、搭建集群的步骤 总结 前言 MongoDB分片(Sharding)是一种水平扩展数据库的方法,它允许将数据分散存储在多个服务器上,从而提高数据库的存储容量和处理能力。分片是MongoDB为了应对大数据量和高吞吐量需…

ONLYOFFICE最新8.1版本——桌面编辑器简单测评

前言 大家好,我是小雨,看到最近ONLYOFFICE更新了最新的版本,更新了一下当前版本来具体的测评一下,先来看看官网提供的各类更新信息,下面是我找到的三个主页,包括功能演示链接,官网连接以及专门…

Ros2中goal_handle状态SUCCEED及ACCEPTED及CANCLED在rclpy中的死循环(彻底解决版本)

承接上文,遇到了在动作通信开发中,使用rclpy编写代码进行feedback等操作,但所有逻辑均编写完后,却无法将goal_handle提交为succeed状态,之前的解决方案是更改自己重写的execute()函数名为my_execute()并且在提交SUCCEE…

开始尝试从0写一个项目--后端(二)

实现学生管理 新增学生 接口设计 请求路径:/admin/student 请求方法:POST 请求参数:请求头:Headers:"Content-Type": "application/json" 请求体:Body: id 学生id …

N5 使用Gensim库训练Word2Vec模型

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊# 前言 前言 这周学习训练一个Word2Vec模型,并进行一些基本的词向量操作。 Word2Vec 模型 Word2Vec 是一种基于神经网络的词向量表示方法&#x…

零基础STM32单片机编程入门(八)定时器PWM输入实战含源码视频

文章目录 一.概要二.PWM输入框架图三.CubeMX配置一个PWM输入例程1.硬件准备2.创建工程3.调试 四.CubeMX工程源代码下载五.讲解视频链接地址六.小结 一.概要 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用单…

数学建模算法目标规划

在人们的生产实践中,经常会遇到如何利用现有资源来安排生产,以取得最大经济 效益的问题。此类问题构成了运筹学的一个重要分支—数学规划,而线性规划(Linear Programming 简记 LP)则是数学规划的一个重要分支。特别是在计算机能处理成千上万个…

在电子表格中对多列数据去重

一、数据展示 二、代码 Sub 选中区域数据去重()Dim arr()Dim c, d, id Selection.Counti 0For Each c In SelectionIf c.Value <> "" ThenReDim Preserve arr(0 To i)arr(i) c.Valuei i 1End IfNextarr 一维去重(arr)i 0For Each c In Range("O2&…

35.哀家要长脑子了!--二分

模板 int check() {...} // 检查这个数是否符合相应的要求// 把区间[l, r] 划分成[l, mid] 和 [mid1, r] 时使用 // 找到数组中第一个大于等于某一值得元素或满足特定条件的第一个位置 int bsearch_1(int l, int r){int mid l r >> 1;while(l < r) {if(check(mi…

C++(Qt)-GIS开发-简易瓦片地图下载器

Qt-GIS开发-简易瓦片地图下载器 文章目录 Qt-GIS开发-简易瓦片地图下载器1、概述2、安装openssl3、实现效果4、主要代码4.1 算法函数4.2 瓦片地图下载url拼接4.3 多线程下载 5、源码地址6、参考 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;GIS开发 …

智慧景区解决方案PPT(89页)

智慧景区解决方案摘要 解决方案概述智慧景区解决方案旨在利用现代信息技术解决景区管理机构面临的保护与发展矛盾&#xff0c;推动服务职能转变&#xff0c;促进旅游产业跨越式发展&#xff0c;实现旅游经营增长和管理成本优化。 宏观政策背景国家旅游局发布的《“十三五”全国…

c++:struct和class的区别

C和C中struct的区别 (1)C中不支持成员函数&#xff08;只能通过函数指针成员变量间接支持&#xff09;&#xff0c;而C源生支持。 (2)C中不支持static成员&#xff0c;而C中支持。后面会详细讲&#xff0c;C static class是一个大知识点 (3)访问权限&#xff0c;C中默认public…

CS61B Data Structure-Jonathan Lecture2 using objects - OBJECTS METHODS

Recall String s1; // Step 1: declare a String variable s1 new String(); // Step 2: assign it a value, a new empty string objectString s2 new String(); // 1&2 combined今日知识点 situation: pointing to the same object s1 "Yow!";s2 s1; //…

电量监测与电量计基础知识

硬件之路学习笔记 ​-----前文导读----- ①、公众号主页点击发消息 ②、点击下方菜单获取系列文章 -----本文简介----- 主要内容包括&#xff1a; ①&#xff1a;简介 ②&#xff1a;省成本方式-电阻分压 ③&#xff1a;精确方式-电量计与阻抗跟踪技术 ----- 正文 ----…

线程同步66666

1. 概述 当有多个线程访问同一个共享资源&#xff08;临界资源&#xff09;时&#xff0c;且不允许同时访问&#xff0c;那么就需要线程同步。常见的线程同步方式&#xff1a;互斥锁、读写锁、条件变量、信号量。 2. 互斥锁 互斥锁的方式可以简单概括为&#xff1a;锁定操作…