【论文阅读】A Closer Look at Parameter-Efficient Tuning in Diffusion Models

news2025/1/10 13:41:14

Abstract

大规模扩散模型功能强大,但微调定制这些模型,内存和时间效率都很低。
本文通过向大规模扩散模型中插入小的学习器(称为adapters),实现有效的参数微调。

特别地,将适配器的设计空间分解为输入位置、输出位置、函数形式的正交因子,执行方差分析(ANOVA),是一种分析离散和连续变量之间相关性的经典统计方法。

分析表明,适配器的输入位置是影响下游任务性能的关键因素,将适配器放到cross-attention块之后可以获得最好的性能。

1 Introduction

借助从海量数据中学习到的知识,大规模扩散模型作为下游任务的强先验。其中,DreamBooth对大规模扩散模型中的所有参数进行调优,生成用户想要的特定对象。但微调整个模型在计算、内存和存储成本方面是低效的。
另一种可选方法是源于NLP领域的参数高效迁移学习方法(parameter-efficient transfer learning methods),向模型中插入小型可训练模块(称为adapters),并冻结原始模型。这个方法在扩散模型领域未得到深入的研究。扩散模型中广泛使用U-Net结构,包含了更多的组件,如带有下/上采样算子的残差快、自注意力和交叉注意力等。这导致这个方法比基于Transformer的语言模型有更大的设计空间。

本文首次系统研究了大规模扩散模型中参数有效调节的设计空间。
将Stable Diffusion作为具体案例(唯一开源大规模扩散模型)。特别地,将适配器的设计空间分解为正交因子——输入位置、输出位置和函数形式。通过使用Analysis of Variance(ANOVA)对这些因素进行分析,发现输入位置是影响下游任务表现的关键因素。然后仔细研究了输入位置的选择,发现将输入位置放在交叉注意力块之后可以最大限度地鼓励网格感知输入prompt的变化,从而导致最好的性能。

根据本文的研究,在Dreambooth中介绍的个性化任务和在一组小的文本-图像对上进行微调的任务上,本文的最佳设置可以在0.75%额外参数内达到与微调方法相当甚至更好的结果。

2 Background

2.1 Diffusion Models

扩散模型通过逆转下式表示的加噪过程学习 q ( x 0 ) q(x_0) q(x0)的数据分布:
q ( x 1 : T ∣ x 0 ) = ∏ t = 0 T q ( x t ∣ x t − 1 ) q(x_{1:T}|x_0)=\prod_{t=0}^T q(x_t|x_{t-1}) q(x1:Tx0)=t=0Tq(xtxt1)
其中 q ( x t ∣ x t − 1 ) = N ( x t ∣ α t x t − 1 , β t I ) q(x_t|x_{t-1})=\mathcal{N}(x_t|\sqrt{\alpha_t}x_{t-1},\beta_t I) q(xtxt1)=N(xtαt xt1,βtI)对应一步加噪过程。反向的转变用一个高斯模型 p ( x t − 1 ∣ x t ) = N ( x t − 1 ∣ μ ( x t ) , σ t 2 I ) p(x_{t-1}|x_t)=\mathcal{N}(x_{t-1}|\mu(x_t),\sigma_t^2 I) p(xt1xt)=N(xt1μ(xt),σt2I)来近似,其中极大似然估计下的最优均值为
μ t ∗ ( x t ) = 1 α t ( x t − β t 1 − α ˉ t E [ ϵ ∣ x t ] ) \mu_t^*(x_t)=\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{1-\bar{\alpha}_t}\mathbb{E}[\epsilon|x_t]) μt(xt)=αt 1(xt1αˉtβtE[ϵxt])
其中 α t ˉ = ∏ i = 1 t α i \bar{\alpha_t}=\prod_{i=1}^t \alpha_i αtˉ=i=1tαi ϵ \epsilon ϵ是向 x t x_t xt注入的标准高斯噪声。为了获得最优均值,只需通过下式的噪声预测目标来估计条件期望 E [ ϵ ∣ x t ] \mathbb{E}[\epsilon|x_t] E[ϵxt]
min ⁡ θ E t , x 0 ∣ ∣ ϵ θ ( x t , t ) − ϵ ∣ ∣ 2 2 \min_\theta\mathbb{E}_{t,x_0}||\epsilon_\theta(x_t,t)-\epsilon||_2^2 θminEt,x0∣∣ϵθ(xt,t)ϵ22
其中 ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t)是噪声预测网络,根据 ℓ 2 \ell_2 2损失的惩罚项找到最优解,满足 ϵ θ ∗ ( x t , t ) = E [ ϵ ∣ x t ] \epsilon_{\theta*}(x_t,t)=\mathbb{E}[\epsilon|x_t] ϵθ(xt,t)=E[ϵxt]
实践中,常常关心条件生成,为了使用扩散模型,只需要在训练时将条件信息 c c c引入到噪声预测网络中:
min ⁡ θ E t , x 0 , c ∣ ∣ ϵ θ ( x t , t , c ) − ϵ ∣ ∣ 2 2 \min_\theta\mathbb{E}_{t,x_0,c}||\epsilon_\theta(x_t,t,c)-\epsilon||_2^2 θminEt,x0,c∣∣ϵθ(xt,t,c)ϵ22

2.2 The Architecture in Stable Diffusion

U-Net架构是目前扩散模型最热门的架构,架构图见图3。
![[Pasted image 20240821222147.png]]

图3:顶部左侧展示了基于UNet的扩散模型的框架,顶部右侧展示了扩散模型是如何从第 T − 1 T-1 T1步从噪声数据去除噪声的。底部图展示了架构中残差快和Transformer块。适配器(图中红色块)是参数高效迁移学习方法中插入模型中的带有少量参数的模块。

U-Net由堆叠的基本块组成,每个基本块包含一个Transformer块和一个残差块。

Transformer块中,由三种子层:一个自注意力层(self-attention layer),一个交叉注意力层(cross attention layer),一个全连接前馈网络(fully connected feed-forward network)。
注意力层在queries Q ∈ R n × d k Q\in\mathbb{R}^{n\times d_k} QRn×dk、key-value pairs K ∈ R m × d k , V ∈ R m × d v K\in\mathbf{R}^{m\times d_k},V\in\mathbf{R}^{m\times d_v} KRm×dk,VRm×dv上进行操作:
Attn ( Q , K , V ) ∈ R n × d v = softmax ( Q K T d k ) V (1) \text{Attn}(Q,K,V)\in\mathbb{R}^{n\times d_v}=\text{softmax}(\frac{QK^T}{\sqrt{d_k}})V\tag{1} Attn(Q,K,V)Rn×dv=softmax(dk QKT)V(1)
其中 n n n是queries的数量, m m m是key-value pairs的数量, d k d_k dk是key的维度, d v d_v dv是value的维度。
在自注意力层中, x ∈ R n × d x x\in\mathbb{R}^{n\times d_x} xRn×dx是唯一的输入。
在扩散模型的交叉注意力层中,有两个输入,分别是 x ∈ R n × d x x\in\mathbb{R}^{n\times d_x} xRn×dx c ∈ R m × d c c\in\mathbb{R}^{m\times d_c} cRm×dc x x x是前面层的输出, c c c是条件信息。
全连接前馈网络包含两层线性变换的ReLU激活函数:
FFN ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 (2) \text{FFN}(x)=\text{ReLU}(xW_1+b_1)W_2+b_2\tag{2} FFN(x)=ReLU(xW1+b1)W2+b2(2)
其中 W 1 ∈ R d × d m , W 2 ∈ R d m × d W_1\in\mathbb{R}^{d\times d_m},W_2\in\mathbb{R}^{d_m\times d} W1Rd×dm,W2Rdm×d是可学习的权重, b 1 ∈ R d m , b 2 ∈ R d b_1\in\mathbb{R}^{d_m},b_2\in\mathbb{R}^d b1Rdm,b2Rd是可学习的偏差。

残差块中包含一系列的卷积层和激活函数,其中时间嵌入(time embedding)通过假发操作注入倒残差块中。

2.3 Parameter-Efficient Transfer Learning

迁移学习(Transfer Learning)是一种利用从一个任务中学习到的知识来提高相关任务性能的技术。对下游任务进行预训练然后进行迁移学习的方法被广泛使用。
传统的迁移方法需要大量参数,计算代价高,占用内存大。

参数有效的迁移学习(Parameter-Efficient Transfer Learning)最早在NLP领域中提出,核心思想是减少需要更新的参数数量。这是通过更新模型的一部分参数,或添加额外的小模块实现的。

3 Design Space of Parameter-Efficient Transfer Learning in Diffusion Models

本文将适配器的设计空间分解为三个正交因子:输入位置、输出位置、函数形式。

3.1 Input Position and Output Position

输入位置(Input position)是指适配器从哪里输入,输出位置(Output position)是指适配器向哪里输出。规定记号如图4所示,位置根据其相邻层命名。

![[Pasted image 20240822000212.png]]

图4:通常,激活位置的主要名称是模型中特定块的别名,激活位置的下标解释了激活与块之间的关系。

本文的框架中,输入位置可能是图4中描述的任意一个激活位置,因此一共有10个可选位置。
由于加法可交换,对于输出位置,有些位置是等价的,如 SA out \text{SA}_\text{out} SAout CA in \text{CA}_\text{in} CAin是等价的。因此有7种可选位置。

3.2 Function Form

函数形式描述了适配器如何将输入转换成输出。本文分别给出Transformer块和残差块的函数形式,见图5,二者都包含下采样操作、激活函数、上采样操作和放缩因子。
![[Pasted image 20240822000652.png]]
图5:Transformer块和残差块中适配器的函数形式。

下采样操作减少输入的维度,上采样操作增加输入的维度,以保证其具有和输入相同的维度。进一步将输出乘一个放缩因子 s s s,控制其对原网络的影响强度。’

具体地,Transformer块适配器用低秩矩阵 W d o w n W_{down} Wdown W u p W_{up} Wup作为下采样和上采样操作;残差块适配器用 3 × 3 3\times 3 3×3卷积层 Conv d o w n \text{Conv}_{down} Convdown Conv u p \text{Conv}_{up} Convup作为下采样和上采样操作。卷积核只改变通道数,不改变空间大小。
此外,残差块适配器还使用组归一化(group normalization)处理输入。

本文在设计选择中包含了不同的激活函数和缩放因子。
激活函数包括ReLU、Sigmoid、SiLU。
放缩因子包括0.5、1.0、2.0、4.0。

4 Discover the Key Factor with Analysis of Variance

本文采用单因素方差分析(one-way analysis of variance, ANOVA)方法量化模型性能与因素之间的相关性。
ANOVA的核心思想是将总方差分为两个部分:组内方差(variation within groups, MSE)和组间方差(variation between groups, MSB)。
MSB衡量不同组均值之间的差异,MSE衡量个体观测值和其对应组均值之间的差异。

ANOVA中使用的统计检验是基于F分布,即比较组间变异与组内变异的比值(F统计量,F-statistic)。
如果F统计量足够大,则表明组间均值存在显著性差异,表明具有较强的相关性。

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

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

相关文章

什么是ConcurrentHashMap?实现原理是什么?

什么是ConcurrentHashMap?实现原理是什么? 在多线程环境下,使用HashMap进行put操作时存在丢失数据的情况,为了避免这种bug的隐患,强烈建议使用ConcurrentHashMap代替HashMap。 HashTable是一个线程安全的类&#xff…

HashMap是线程安全的吗?为什么呢?

HashMap是线程安全的吗?为什么呢? HashMap是线程不安全的! 线程不安全体现在JDK.1.7时在多线程的情况下扩容可能会出现死循环或数据丢失的情况,主要是在于扩容的transfer方法采用的头插法,头插法会把链表的顺序给颠倒…

【亲测有效】JS Uncaught TypeError: [function] is not a constructor

【亲测有效】JS Uncaught TypeError: [function] is not a constructor 在JavaScript编程中,Uncaught TypeError: [function] is not a constructor 是一个相对常见的错误,通常发生在尝试使用某个值作为构造函数,但实际上它不是构造函数的情况…

鸿蒙卡片服务开发

首先先创建一个项目 在该项目下创建一个卡片服务 在module.json5文件下配置 {"module": {..."extensionAbilities": [{"name": "EntryFormAbility","srcEntry": "./ets/entryformability/EntryFormAbility.ets",…

Linux文件操作:文件描述符fd

文章目录 前言:回顾一下文件提炼一下关于文件的理解: 理解文件:通过系统调用操作文件:理解标志位传参:打开文件 open写入信息 write 理解文件描述符:对于open的返回值:文件描述fd的本质是什么呢…

设计模式之Decorator装饰者、Facade外观、Adapter适配器(Java)

装饰者模式 设计模式的基本原则,对内关闭修改。 Decorator Pattern,装饰者模式,也叫包装器模式(Wrapper Pattern):将一个对象包装起来,增加新的行为和责任。一定是从外部传入,并且可以没有顺序&#xff0…

Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)

【写在前面】 经常接触前端的朋友应该经常见到下面的控件: 在前端中一般称它为 Notification 或 Message,但本质是一种东西,即:悬浮弹出式的消息提醒框。 这种组件一般具有以下特点: 1、全局/局部显示:它不…

基于单片机的信号发生器设计

本设计采用了STM32F103C8T6单片机作为控制核心,通过控制DDS模块产生不同频率且高稳定和低失真的信号,再通过放大电路对信号的幅值进行放大。此外通过按键可以使用户对频率进行调节以及对输出波形进行切换,由于AD9833输出的幅值是固定的&#…

启动docker镜像

1、运行容器 2、当前运行的进程 3、当前位置和启动时间 4、cat/etc/redhat-release查看版本 5.镜像是模版,容器是实例 6.容器中没有命令运 7.容器总是能轻易获取 8.配置yum 9.安装http 10.修改index⽂件 11.httpd -k start 12.访问 13.退出就没有服务了 14…

细谈LCM驱动电压VGHVGL电路原理

前言: ***在液晶显示屏驱动电路中,VGH电压负责对TFT栅极电容进行充电开启,并使电容电压保持一个场周期,VGL电压负责TFT栅极的关闭。 如果VGH和VGL电压出现不稳或者幅度变化,都会引起图像显示故障,例如花屏…

委托发布 | 进迭时空联合移动云能力中心实现业界首个RISC-V IO虚拟化方案

仟江水商业电讯(8月22日 北京 委托发布)虚拟化是云计算技术基石,是RISC-V走进云计算等高性能计算场景的必然要求。RISC-V国际基金会2021年制定了Hypervisor 1.0规范,2023年制定了AIA 1.0规范和IOMMU 1.0规范,这3个规范…

CentOS 7使用RPM安装MySQL5.7

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言1:下载MySQL5.7的rpm安装包2:卸载已安装的MySQL(没安装过则跳过)3:MySQL安装环境准备4:安…

网络竞赛可视化:打造线上赛事

通过图扑网络竞赛可视化,可以实时跟踪和分析参赛者的表现,直观展示比赛进程和结果。这不仅提高了观赛体验,还帮助组织者更有效地管理和优化赛事。

STM32——SPI通信协议以及软件读写

1、SPI协议 SPI相对于I2C传输速度更快;设计简单,通信协议使用硬件线比较多,有些资源浪费 以下设备需要进行共地,如果从机没有独立的供电源,主机需要给供电 SS线低电平有效,主机只能选择一个从机 推挽输出…

Spring + Boot + Cloud + JDK8 + Elasticsearch 单节点 模式下实现全文检索高亮-分页显示 快速入门案例

1. 安装elasticsearchik分词器插件 sudo wget https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.13.4.zip sudo mkdir -p ./es_plugins/analysis-ik sudo mkdir ./es_data sudo unzip elasticsearch-analysis-ik-8.13.4.zip -d ./es_plugins/a…

SpringCloudAlibaba Seata分布式事务

分布式事务 事务是数据库的概念,数据库事务(ACID:原子性、一致性、隔离性和持久性); 分布式事务的产生,是由于数据库的拆分和分布式架构(微服务)带来的,在常规情况下,我们在一个进…

自己动手写CPU_step4_逻辑运算|移位指令

序 上一篇中我们解决了流水线的数据相关问题,本篇将添加多条逻辑运算和移位运算指令,这些指令的格式严格按照MIPS的指令格式设计。 MIPS指令格式 由于本人也是处于学习的一个过程,如有不对之处,还请大牛指正。 就逻辑运算和移位运…

【软件逆向】第11课,软件逆向安全工程师之windows API函数,每天5分钟学习逆向吧!

资料获取 关注作者,备注课程编号,获取本课配套课件和工具程序。 干货开始-windows API函数。 微软官方提供的应用程序接口,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件提供的能力。 地址:h…

java基础 之 了解final

文章目录 定义使用及规则修饰类修饰方法修饰变量修饰成员变量修饰局部变量final与static共同修饰变量final修饰的变量和普通变量的区别 本篇文章代码就不附上了,建议大家实际敲一敲,更能加快理解 定义 final表示”最后的,最终的“含义&#…

精益思维赋能机器人行业的三大维度

在日新月异的科技浪潮中,机器人行业正以前所未有的速度蓬勃发展,成为推动产业升级与转型的关键力量。然而,如何在激烈的市场竞争中脱颖而出,实现高效、灵活与可持续的发展?精益思维,这一源自制造业的管理哲…