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

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.mzph.cn/diannao/52254.shtml

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

相关文章

探索Python的自动化魔法:AutoIt库揭秘

文章目录 探索Python的自动化魔法:AutoIt库揭秘第一部分:背景介绍第二部分:AutoIt是什么?第三部分:如何安装AutoIt库?第四部分:AutoIt的五个简单函数第五部分:场景应用第六部分&…

Pod基础使用

POD基本操作 1.Pod生命周期 在Kubernetes中,Pod的生命周期经历了几个重要的阶段。下面是Pod生命周期的详细介绍: Pending(待处理): 调度: Pod被创建后,首先进入“Pending”状态。此时,Kubernetes的调度器…

云计算产业链图谱_产业链全景图_云计算行业市场分析

在产业数字化转型的背景下,云计算作为信息技术的重要组成部分,正逐渐成为各行业数字化、智能化转型的关键支撑。受益于5G、大数据、物联网、人工智能等技术的快速发展,云计算产业规模持续扩大,市场需求不断增长。云计算作为一种新…

C语言 | Leetcode C语言题解之第367题有效的完全平方数

题目&#xff1a; 题解&#xff1a; bool isPerfectSquare(int num) {long long left0;long long rightnum;while(left<right){long long mid(leftright)/2;long long ansmid*mid;if(ans<num){leftmid1;}else if(ans>num){rightmid-1;}else{return true;}}return…

书生模型实战L1---OpenCompass 评测

书生模型实战系列文章目录 第一章 入门岛L0&#xff08;Linux&#xff09; 第二章 入门岛L0&#xff08;python&#xff09; 第三章 入门岛L0&#xff08;Git&#xff09; 第四章 基础岛L1&#xff08;书生全链路开源介绍&#xff09; 第五章 基础岛L1&#xff08;Demo&#x…

打卡学习Python爬虫第五天|使用Xpath爬取豆瓣电影评分

思路&#xff1a;使用Xpath爬取豆瓣即将上映的电影评分&#xff0c;首先获取要爬取页面的url&#xff0c;查看页面源代码是否有我们想要的数据&#xff0c;如果有&#xff0c;直接获取HTML文件后解析HTML内容就能提取出我们想要的数据。如果没有则需要用到浏览器抓包工具&#…

网络初识部分

1.网络 单机时代-局域网时代-广域网时代-移动互联网时代 局域网时代&#xff1a;通过路由器把几个电脑连接起来。 广域网时代&#xff1a;把更多的局域网连接到一起&#xff0c;构成的网络更庞大&#xff0c;可能已经覆盖了一个城市/国家/全世界。 2.什么是路由器&#xff…

洛谷官方精选题单解析(持续更新~)

首页 - 洛谷 | 计算机科学教育新生态 https://www.luogu.com.cn/ 真题解析-CCF-GESP编程能力等级认证 https://gesp.ccf.org.cn/101/1010/index.html 我会陆续针对每一道题目发独立博客&#xff0c;剖析解题思路、知识点及代码。 目录 1、【入门1】顺序结构&#xff08;1…

三维模型单体化软件:地理信息与遥感领域的精细化革命

在地理信息与遥感科学日新月异的发展浪潮中&#xff0c;单体化软件作为一股强大的驱动力&#xff0c;正引领着我们迈向空间信息处理与应用的新纪元。本文旨在深度解析单体化软件的核心价值、技术前沿、实践应用及面临的挑战&#xff0c;共同探讨这一技术如何塑造行业的未来。 …

client网络模块的开发和client与server端的部分联动调试

客户端网络模块的开发 我们需要先了解socket通信的流程 socket通信 server端的流程 client端的流程 对于closesocket()函数来说 closesocket()是用来关闭套接字的,将套接字的描述符从内存清除,并不是删除了那个套接字,只是切断了联系,所以我们如果重复调用,不closesocket()…

安卓主板_MTK联发科主板定制开发|PCBA定制开发

MTK联发科安卓主板&#xff0c;采用MT6762八核平台方案&#xff0c;支持谷歌Android 11.0系统&#xff0c;MT6762采用ARM八核A53内核芯片、主频高达2.0GHz&#xff0c;GPU采用ARM PowerVR GE8329650MHZ&#xff0c;支持主流19201080分辨率&#xff0c;支持硬解H.264&#xff0c…

Win10安装ChatTTS-2024-cuda10.1

0x00 前言 ChatTTS是专门为对话场景设计的文本转语音模型&#xff0c;例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。目前在huggingface中的开源版本为4万小时训练且未SFT的版本。 0x01 准备环境 版本操作系统Win1…

鸿蒙内核源码分析(忍者ninja篇) | 都忍者了能不快吗

ninja | 忍者 ninja是一个叫 Evan Martin的谷歌工程师开源的一个自定义的构建系统,最早是用于 chrome的构建,Martin给它取名 ninja(忍者)的原因是因为它strikes quickly(快速出击).这是忍者的特点,可惜Martin不了解中国文化,不然叫小李飞刀更合适些.究竟有多块呢? 用Martin自…

本地Docker部署Navidrome音乐服务器与远程访问听歌详细教程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

StarRocks 存算分离数据回收原理

前言 StarRocks存算分离表中&#xff0c;垃圾回收是为了删除那些无用的历史版本数据&#xff0c;从而节约存储空间。考虑到对象存储按照存储容量收费&#xff0c;因此&#xff0c;节约存储空间对于降本增效尤为必要。 在系统运行过程中&#xff0c;有以下几种情况可能会需要删…

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 07数据中心的边缘

本章将帮助你回答以下问题 可以用哪些方式将 Clos 拓扑连接到外部网终?边缘部署路由协议的最佳实践是什么?企业应如何处理混合云中的连接? 连接模型 为什么要连接到外部世界? 数据中心连接到外部世界的原因很多。如果你要对外提供某种服务(例如搜索服务广告推荐系统或内…

35岁程序员转行大模型:如何把握行业机遇与个人发展

对于一位35岁的程序员想要转行到大模型领域&#xff0c;这是一个很好的时机&#xff0c;因为人工智能和大模型技术正在快速发展&#xff0c;并且有着广泛的应用前景。以下是一些具体的步骤和建议&#xff0c;可以帮助您顺利地完成这一转变&#xff1a; 基础知识学习 数学基础&a…

科技在日常生活中的革新

在科技日新月异的今天&#xff0c;‌我们的生活正经历着前所未有的变革。‌从智能家居到可穿戴设备&#xff0c;‌科技已经渗透到我们生活的每一个角落&#xff0c;‌深刻地影响着我们的生活方式和社会经济的发展。‌ 智能家居系统的出现&#xff0c;‌无疑是科技改变生活的典…

[鹏城杯 2022]简单的php

题目源代码 <?phpshow_source(__FILE__); $code $_GET[code]; if(strlen($code) > 80 or preg_match(/[A-Za-z0-9]|\|"||\ |,|\.|-|\||\/|\\|<|>|\$|\?|\^|&|\|/is,$code)){die( Hello); }else if(; preg_replace(/[^\s\(\)]?\((?R)?\)/, , $code…

深度剖析C++string(上篇)

目录 前言 1.C string类 2.string类中的常见构造 3.string类对象的容量操作 4.. string类对象的访问及遍历操作 5. auto和范围for(补充&#xff09; auto关键字 范围for 结束语 前言 C语言我们学习了字符串和字符串的相关函数&#xff0c;在C语言中&#xff0c;字符串是…