(2024,MixLoRA,任务干扰,独立因子选择,条件因子选择)使用 LoRA 的条件混合进行多模态指令调优

Multimodal Instruction Tuning with Conditional Mixture of LoRA

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

3. 任务干扰在多模态指令调优中的 LoRA 应用

3.1 背景:LoRA

3.2 调查多模态指导调优中的任务干扰

4. 条件 LoRA 混合

4.1 动态因子选择

4.1.1 独立因子选择

4.1.2 条件因子选择

4.1.3 动态自适应矩阵的重建

5. 实验


0. 摘要

多模态大型语言模型(MLLMs)在不同领域的各种任务中展现了出色的熟练性,越来越关注提高它们在看不见的多模态任务上的 zero-shot 泛化能力。多模态指令调优已成为通过指令在各种多模态任务上对预训练模型进行微调以实现 zero-shot 泛化的成功策略。随着 MLLMs 的复杂性和规模的增加,对于像低秩适应(Low-Rank Adaption,LoRA)这样的参数高效的微调方法的需求变得至关重要,该方法通过使用最小的参数集进行微调。

然而,在多模态指令调优中应用 LoRA 面临任务干扰的挑战,这导致性能下降,尤其是在处理广泛的多模态任务时。为了解决这个问题,本文介绍了一种新方法,将多模态指令调优与条件 LoRA 混合(Mixture-of-LoRA,MixLoRA)相结合。它通过动态构建适应于每个输入实例独特需求的低秩适应矩阵,来减轻任务干扰。对各种多模态评估数据集的实验证明,MixLoRA 不仅在相同或更高秩的情况下胜过传统的 LoRA,展示了其在各种多模态任务中的功效和适应性。

3. 任务干扰在多模态指令调优中的 LoRA 应用

3.1 背景:LoRA

3.2 调查多模态指导调优中的任务干扰

我们的研究深入探讨了在参数高效的多模态指令调优中分析任务对之间梯度方向冲突的任务干扰。对于每一对任务 i 和 j,我们首先估计在根据任务 j 的损失 Lj 优化共享参数 θ 时,任务 i 的损失 Li 的变化,遵循(Zhu等,2022):

其中,xi 和 xj 是任务 i 和 j 的采样训练 batch,λ 是学习率。然后,任务 j 对任务 i 的干扰被量化如下:

在这里,正的 I_(i,j)​ 表明任务 i 和 j 之间的梯度方向是对齐的,而负值意味着梯度方向是分离的,表明任务 j 对任务 i 产生不利影响。

我们在使用 LoRA 和秩为 4 进行微调的 LLaVa(Liu等,2023)模型上进行实验,计算来自 Vision-Flan(Xu等,2023a)的六个不同任务之间的任务干扰,包括 “ScienceQA”(Lu等,2022)(用于“复杂推理”),“COCO”(Lin等,2014)(用于“粗粒度感知”),“Fair-Face”(Karkkainen和Joo,2021)(用于“细粒度感知”),“iNaturalist”(Van Horn等,2018)(用于“知识密集型”),“STVQA”(Biten等,2019)(用于“OCR”),以及 “PACS”(Li等,2017)(用于“领域特定”)。

我们基于涉及 LoRA A 和 B 的梯度计算任务干扰矩阵 I 的平均值,跨越各个层次。图 2 显示了 MLP(图 2a) 和 Self-Attention(图 2b) 在第 5 层和第 25 层 Transformer 层的 LoRA A 和 B 的任务干扰分数。

我们的结果显示,对于 LoRA A 和 B,无论在浅层还是深层 Transformer 层,都存在显著的任务干扰。例如,如图 2b 所示,在第 5 层的 LoRA A 中,领域特定的分类任务 “PACS” 对粗粒度感知任务 “COCO” 产生负面影响,负干扰分数为 -7.3。与此同时,还观察到了正面的影响。例如,图 2a 显示,在 LoRA B 的第 5 层,“PACS” 对 OCR 任务 “ST-VQA” 产生积极影响。正面和负面干扰的存在表明指导任务之间存在复杂的动态:正分数(红色)表明一个任务的学习可以增强另一个任务的性能,而负分数(蓝色)则意味着一个任务的学习可能会妨碍另一个任务。这些发现突显了在参数高效的多模态指导调优中存在显著的任务干扰,并强调了需要有效的适应方法来确保在各种多模态任务中具有强大和多功能的性能。

4. 条件 LoRA 混合

受到 “专家混合” 概念的启发(Shazeer等,2016),我们提出了条件 LoRA 混合(MixLoRA),它利用低秩分解因子(low-rank decomposition factors)作为动态选择的专家,构建针对特定输入实例的定制分解矩阵 A 和 B。MixLoRA 促进了对不同输入实例的动态处理路径,从而增强了处理各种复杂多模态指导任务的效力。

条件LoRA混合的核心在于通过张量分解表示权重调整矩阵 ΔW:

其中 {ai, bi} 是 ΔW 的秩 r 分解因子,ai ∈ R^(d_in × 1),bi ∈ R^(d_out × 1)。

利用 ΔW 可以表示为低秩分解因子 ai 和 bi 外积之和的概念,MixLoRA 引入了一个动态因子选择(Dynamic Factor Selection)模块。该模块通过从扩展的分解因子池

中选择 r 个适当的因子,动态构建特定输入的唯一 ΔW,如图 1(b)所示。

4.1 动态因子选择

动态因子选择模块使用两个主要组件来动态构建 LoRA A 和 B。首先,两个独立因子选择(Independent Factor Selection,IFS)路由器(第 4.1.1 节)分别选择 r 个相关因子,形成适应矩阵 LoRA A 和 B,确保精确、针对实例的自适应。其次,一个条件因子选择(Conditional Factor Selection,CFS)路由器(第 4.1.2 节)通过在选择 LoRA B 时将选择 B 的因子以选择 LoRA A 的因子为条件,推动了一致的自适应过程。

4.1.1 独立因子选择

MixLoRA 采用两个独立因子选择(IFS)路由器,

分别选择 LoRA A 和 B 的 r 个相关因子,如图 3 所示。

IFS 路由器采用基于实例的路由方法,相对于基于传统输入 token 的路由,这更具内存效率,用于选择 r 个分解因子。路由策略可以表示为:

其中 Avg(·) 对前一层的隐藏状态 h ∈ R^(seq × d_in) 在序列维度上进行平均。

因子选择过程涉及计算向量 gA∈R^E 和 gB∈R^E,以选择从集合 {a_e​}^E_(e=1​) 和 {a_e​}^E_(e=1​)​ 中的特定子集,分别用于 LoRA A 和 B。为了计算 gA,输入

通过具有权重 W_A ∈ R_(E × d_in) 的稠密层(dense layer)进行处理,然后进行 softmax 归一化和 top-r 选择:

该过程确保选择 LoRA A 的 r 个因子,其中 g_A[i] = 1 表示选择因子 i。相同的过程应用于确定 LoRA B 的 gB。

4.1.2 条件因子选择

尽管到目前为止 LoRA A 和 B 的因子是独立选择的,但我们假设 LoRA A 和 B 的选择之间存在相互依赖关系,可以利用这种关系提高模型的整体适应性和性能。为了利用这种关系,我们提出了一种条件因子选择(Conditional Factor Selection,CFS)策略,其中 LoRA B 投影上权重的因子选择也受到了为 LoRA A 投影下权重选择的因子的影响。

通过 IFS 路由器,LoRA A 从选择的分解因子中组装而成,表示为 A = [a1, · · · , ar]ᵀ,其中 A ∈ ℝ^(r x d_in)。在这之后,CFS 路由器采用权重张量 W_AB ∈ ℝ^(r x d_in x E),将 A 中的每个因子 A[i] ∈ ℝ^(r x d_in) 映射到专家维度 𝔼。对于每个因子 A[i],通过 softmax 归一化并在 r 个因子上聚合的映射过程如下:

其中 W_AB[i] ∈ ℝ^(d_in x E) 是与 A[i] 相关的映射矩阵。

LoRA B 的因子选择集成了 IFS RB IFS(·) 和 CFS RB CFS(·) 路由器的输出,通过后融合(late fusion)策略形成选择向量 gB,具体如下:

最终选择向量 gB 由来自 IFS 和 CFS 路由器的概率分布 p^B_IFS 和 p^B_CFS 组合而成。这种 CFS 策略使得 LoRA B 的选择能够受到为 LoRA A 选择的因子的启发,促使一个更具连贯性的选择过程。

4.1.3 动态自适应矩阵的重建

最后,MixLoRA 通过利用因子选择向量 gA 和 gB,收集已选因子 aₖ、bₖ ∈ 𝕂,|𝕂| = r,以组装 LoRA A 和 B 的最终矩阵,从而构建动态自适应矩阵。因此,在每次前向传递中,基于这些已选择的因子动态计算权重调整矩阵 ΔW ∈ ℝᵈₒᵤₜ×ᵈᵢₙ,表示为:

5. 实验

 

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

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

相关文章

小甲鱼Python07 函数初级

一、创建和调用函数 pass语句表示一个空的代码块,我们经常先写好函数,pass占一个坑,等规划好之后再来填坑。 函数也是可以指定参数的,我们会把参数传进去用来替代形参。 在Python里如果想要返回值,不需要指定函数的返…

仿牛客网项目---显示评论和添加评论功能的实现

这篇文章,我来介绍一下我的项目中的另外一个功能:显示评论和添加评论。 其实这两个功能都不怎么重要,我感觉最重要的应该是用户注册登录功能,这个也了解一下,知道这么一回事儿就好。 首先设计DAO层。 Mapper public …

python实现AES加密解密

1. 前言 AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个。 之前写过一片关于python AES加密解密的文章,但是这里面细节实在很多,这次我从 参数类型、加密模式、编码模式、补全模式、等等方面 系统的说明如何使用AES加密解密…

直观理解卷积

卷积直观理解 原文来自最容易理解的对卷积(convolution)的解释 🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:计算机杂记 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致…

AVL 树

AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年 发明了一种解决…

k8s笔记26--快速实现prometheus监控harbor

k8s笔记26--快速实现prometheus监控harbor 简介采集指标&配置grafana面板采集指标配置grafana面板 说明 简介 harbor是当前最流行的开源容器镜像仓库项目,被大量IT团队广泛应用于生产、测试环境的项目中。本文基于Harbor、Prometheus、Grafana介绍快速实现监控…

FPGA之带有进位逻辑的加法运算

module ADDER( input [5:0]A, input [5:0]B,output[6:0]Q ); assign Q AB; endmodule 综合结果如下图所示: 使用了6个Lut,,6个LUT分布…

详细介绍如何用windows11自带Hyper-V安装虚拟机

通过系统自带的hyper-v安装windows11,舒服又惬意,相比用第三方虚拟机软件速度快很多。 硬件准备 1、对于电脑自带的虚拟机Hyper-V,不是每种电脑系统版本都带着的。我们先要确定您的系统符合 Hyper-V 的最低要求。我们跟着下面的步骤来执行&…

《2023年勒索软件攻击态势报告》

获取方式: 链接:https://pan.baidu.com/s/1zd-yVsuGwJADyyGNFR_TIQ?pwd2lo0 提取码:2lo0

探索数据结构:解锁计算世界的密码

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty‘s blog 前言 随着应用程序变得越来越复杂和数据越来越丰富,几百万、…

600万订单每秒Disruptor +SpringBoot,如何解决消息不丢失?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、百度、网易的面试资格,遇到很多很重要的面试题: Disruptor 官方说能达到每秒600w OPS订单处理能力&…

【C语言】指针初阶2.0版本

这篇博文我们来继续学习指针的其他内容 指针2.0 传值调用与传址调用传值调用传址调用 一维数组与指针理解数组名使用指针深入理解一维数组 二级指针指针数组二维数组与指针 传值调用与传址调用 在开始之前,我们需要先了解这个概念,后面才能够正常的学习…

利用 Python 抓取数据探索汽车市场趋势

一、引言 随着全球对环境保护意识的增强和技术的进步,新能源汽车作为一种环保、高效的交通工具,正逐渐受到人们的关注和青睐。在这个背景下,对汽车市场的数据进行分析和研究显得尤为重要。 本文将介绍如何利用 Python 编程语言,结…

VSCode上搭建C/C++开发环境(vscode配置c/c++环境)Windows系统---保姆级教程

引言劝退 VSCode,全称为Visual Studio Code,是由微软开发的一款轻量级,跨平台的代码编辑器。大家能来搜用VSCode配置c/c,想必也知道VSCode的强大,可以手握一个VSCode同时编写如C,C,C#&#xff…

微服务day02-Ribbon负载均衡与Nacos安装与入门

一.Ribbon负载均衡 在上一节中,我们通过在RestTemplte实例中加上了注解 LoadBalanced,表示将来由RestTemplate发起的请求会被Ribbon拦截和处理,实现了访问服务时的负载均衡,那么他是如何实现的呢? 1.1 Ribbon负载均衡的原理 Rib…

LabVIEW非接触式电阻抗层析成像系统

LabVIEW非接触式电阻抗层析成像系统 非接触式电阻抗层析成像(NEIT)技术以其无辐射、非接触、响应速度快的特点,为实时监测提供了新的解决方案。基于LabVIEW的电阻抗层析成像系统,实现了数据的在线采集及实时成像,提高…

Java SE:多线程(Thread)

1. 线程两个基本概念 并发:即线程交替运行多个指令并行:即多个线程同时运行指令 并发并行不矛盾,两者可同时发生,即多个线程交替运行指令 2. 多线程3种实现方式 2.1 直接创建线程对象 /*** 方式1:* 1. 创建thread类的…

【Linux系统化学习】信号的保存

目录 阻塞信号 信号处理常见方式概览 信号的其他相关概念 在内核中的表示 sigset_t 信号集操作函数 sigprocmask函数 sigpending函数 信号的捕捉 内核如何实现信号的捕捉 sigaction函数 可重入函数 volatile 阻塞信号 信号处理常见方式概览 当信号来临时&#x…

GEE:使用Sigmoid激活函数对单波段图像进行变换(以NDVI为例)

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine (GEE)平台上,对任意单波段影像进行 Sigmoid 变换的代码。并以对 NDVI 影像像素值的变换为例。 文章目录 一、Sigmoid激活函数1.1 什么是 Sigmoid 激活函数1.2 用到遥感图像上有什么用?二、代码链接三、完整代码一…

MYSQL02高级_目录结构、默认数据库、表文件、系统独立表空间

文章目录 ①. MySQL目录结构②. 查看默认数据库③. MYSQL5.7和8表文件③. 系统、独立表空间 ①. MySQL目录结构 ①. 如何查看关联mysql目录 [rootmysql8 ~]# find / -name mysql /var/lib/mysql /var/lib/mysql/mysql /etc/selinux/targeted/tmp/modules/100/mysql /etc/seli…