MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)
摘要
预训练的VLMs,对于跨任务的迁移学习至关重要,然而,在few-shot数据集上微调会导致过拟合,降低在新任务上的性能。为解决这个问题,提出一种新的多模态表征学习框架(MMRL),该框架引入了一个共享、可学习且与模态无关的表示空间,MMRL将空间标记(tokens)投影到文本和图像表征标记(tokens)上,从而促进多模态交互。与之前仅有话类token特征的方法不同,MMRL在encoders的最高层集成了表示tokens——在encoders中,数据集特定的特征更为突出,同时在较低层保留了广义知识。在训练过程中,表征特征和类特征都被优化,其中对表征tokens应用了一个可训练的投影层,而类别token投影层则保持冻结,以保留预训练知识,此外,还引入了一正则化项,以使类别特征和文本特征与来自冻结VLM的零样本特征对齐,从而保证模型的泛化能力,在推理阶段,采用了解耦策略,即对与基础类别,同时利用表征特征和类别特征;而对于新任务,则仅使用保留了更多通用知识的类别特征,在15个数据集上进行的大量实验表明,MMRL优于现有最先进的方法,在任务特定适配与泛化之间实现了平衡的权衡。Code is available at
https://github.com/yunncheng/MMRL
1、介绍
介绍了视觉语言模型(VLMs),如CLIP,因其能利用文本和视觉模态的互补信息而受到关注,但在适应新任务时存在局限性,因为微调大规模架构需要大量计算资源。
为促进VLMs的高效适应,提出了提示工程和集成等策略,但手动设计提示耗时且需要专业知识,无法保证找到最优提示。CoOp引入了提示学习,通过优化连续可学习的向量来实现高效的数据集适应。MaPLe发现仅在文本模态内进行提示学习可能并非最优,提出了一种多模态提示学习方法,通过耦合函数将深度提示嵌入到VLM编码器的较低层中,以增强视觉和文本表征之间的对齐。
除了提示学习外,还介绍了适配器风格学习方法,通过在VLMs中集成轻量级模块来调整为下游数据集提取的特征。CLIP-Adapter和MMA是这种方法的例子,它们通过不同的方式优化文本和视觉表征之间的对齐。
当前的多模态深度提示学习方法在浅层应用提示拼接可能会损害通用知识,且主要更新都集中在文本提示上。此外,提示学习和适配器风格方法都容易过拟合到特定的数据分布或任务类别,导致VLMs的泛化能力和零样本学习能力下降。
为应对这些挑战,我们提出了一种新颖的多模态表征学习框架,该框架有别于传统的提示学习和适配器风格方法。具体而言,我们在编码器的较高层引入了一个共享、可学习且与任何模态都无关的表征空间。这个空间作为多模态交互的桥梁,将该空间中的标记映射到图像和文本表征标记上,然后与原始编码器标记拼接,以实现有效的多模态交互。我们的表征标记旨在从下游任务中学习数据集特定的知识,同时对原始分类标记进行正则化处理,以保留大量可泛化的知识。MMRL具有三个关键优势:(1)一个无偏的共享表征空间,促进了平衡的多模态学习;(2)通过避免在编码器的浅层集成提示,保留了原始VLM的泛化能力;(3)与仅通过可学习的提示或适配器来优化类别标记特征的提示学习或适配器风格方法不同,我们的方法支持跨类别的解耦推理。在训练过程中,我们优先优化表征标记特征,其投影层是可训练的,而原始类别标记的投影层则保持固定。为进一步保留类别标记的泛化能力,我们使用一个正则化项,将其特征与来自冻结VLM的零样本特征对齐。在推理阶段,对于基础类别,我们同时利用表征标记和类别标记特征;而对于未见类别或新数据集,则仅使用类别标记特征。我们的主要贡献总结如下:
• 我们引入了多模态表征学习(MMRL)框架,该框架包含一个共享、无偏且可学习的空间,该空间桥接了图像和文本模态,在原始编码器的较高层促进了多模态交互。
• 采用解耦策略,通过为下游任务适配表征标记,同时对新任务中的原始类别标记进行正则化处理,保留了VLM的泛化能力。
• 大量实验表明,MMRL显著提高了下游任务的适应性和泛化能力,相较于基线方法取得了更优的性能。
2、相关工作
2.1 Vision-Language Models
2.2 Efficient Transfer Learning
提示学习方法已被证明在适配视觉语言模型(VLMs)方面是有效的。CoOp 通过将固定模板替换为可学习的连续向量,开创了提示学习的先河,提高了灵活性,但牺牲了CLIP的零样本和泛化能力。为解决这一问题,CoCoOp融入了视觉线索来生成针对特定实例的提示,从而提高了对类别分布变化的泛化能力,而ProDA 则通过学习提示分布来增强适应性。PLOT 利用最优传输方法来对齐视觉和文本模态。KgCoOp 通过最小化学习到的提示与精心设计的提示之间的差异,保留了通用的文本知识。ProGrad 选择性地更新与通用知识对齐的梯度,而RPO 则利用掩码注意力机制来缓解内部表征的偏移。除了以文本为中心的方法外,MaPLe 通过耦合函数将文本提示映射为视觉提示并加以整合,促进了跨模态的协同作用。ProVP 采用单模态视觉提示,并通过对比特征重构来使提示的视觉特征与CLIP的分布对齐。PromptSRC 采用自正则化策略来缓解过拟合问题,而MetaPrompt 则应用了一种基于元学习的提示调整算法,鼓励针对特定任务的提示能够在不同领域或类别之间进行泛化。TCP 将文本知识适配为类别感知的标记,从而增强了泛化能力。
适配器风格学习方法代表了VLM适配的另一条高效途径。CLIP-Adapter 使用轻量级适配器(以两层多层感知机(MLP)的形式实现)来通过交叉熵优化改进CLIP的特征表示。在此基础上,Tip-Adapter 缓存了训练特征,以便在测试特征和训练特征之间进行高效的相似度计算。然而,这两种方法在预测之前都是独立处理图像和文本表示的。为了解决这种分离问题,MMA 将不同分支的特征整合到一个共享空间中,允许跨分支的梯度流动,并增强了模态之间的连贯性。
除了上述方法外,还有几种方法利用大型语言模型(LLMs),如GPT-3,进行文本增强或在整个数据集上应用蒸馏技术来提高性能。然而,这些方法所带来的计算需求增加可能会使它们超出高效迁移学习的预期范围。
3、方法
本方法与之前方法一致,建立在预训练的VLM, CLIP的基础上,
3.1. Preliminary
首先定义方法中的符号,在CLIP包含两个编码器:图像编码器和文本编码器
。
Image Encoding: 图像编码器,由L个transformer 层组成,定义为
.输入图像
,它被划分为M个固定大小的patchs,每个补丁都被投影到一个patch embedding中,结果为
其中M表示patch的个数,
为embedding (嵌入)维度。初始嵌入向量
与一个可学习的类别标记(token)
和位置编码相结合,形成transformer的输入序列,每一层都处理这个序列:
经过所有的transformer层之后,一个patch投影层将类别token
的输出映射到共享的V-L潜在空间中
其中
Text encoding:对于输入文本,例如“A photo of a [CLASS].”它被tokenized 和转化为embeddings,其中N是token的长度,
是embedding的维度,开始文本(BOT)和结束文本(EOT)标记,分别表示为
和
标记序列边界,这些 token embeddings和位置编码,通过文本编码器的L个Transformer层
,如下所示:
在最后一层之后,EOT标记的输出通过
投影到共享的V-L空间中。
其中
Classification with CLIP: 通过图像特征和文本特征
,对于C个类别,CLIP计算
与每个
之间的余弦相似度。
其中
表示
norm,类别概率使用sotftmax函数计算
其中是温度参数,最终预测类别是概率得分最高的那个。
3.2 Multi-Modal Representation Learning (MMRL)
我们提出的MMRL旨在解决使用少量数据调整预训练VLM的挑战,同时保持对新任务的泛化能力。MMRL的训练和推理框架分别如图2和图3所示。下面,我们将详细介绍方法论。
3.2.1 Learnable Representation Space
MMRL 建立了一个共享的、可学习的表征空间 ,以促进多模态交互,通过从高斯分布中采样进行初始化。使用一个可学习的映射函数
,实现为一个线性层,我们将该空间中的标记
—其中 K 是tokens的数量,dr 是表征空间的维度——投影到视觉和文本模态中。
其中和
分别表示在第 (i+1) 层transformer中的视觉和文本模态的表征tokens。索引 J 表示这些表征token开始整合到编码器的起始层。
3.2.2. Integration into Higher Encoder Layers
为了在预训练的CLIP模型的较低层中保留广义知识,从第J层开始,将表征token 和
集成到图像编码器
和文本编码器
的较高层中
对于图像编码器
对于文本编码器,虽然之前的提示学习涉及替换
的部分以融入深度提示,我们保留了整个
并在其之前插入
,旨在保留原始文本信息,
由于文本编码器的自回归特性,我们调整了注意力掩码矩阵以适应嵌入长度的增加。
3.2.3. Representation Learning
表征学习旨在利用表征token进行特定数据集的适应,而类标记则保留了原始CLIP的预训练知识。通过一系列旨在在训练和推理过程中保持泛化的策略,MMRL能够为不同的任务提供灵活的推理,详情如下。
训练阶段:同时优化表征标记(representation tokens)和原始类别标记(original class token)的特征,但主要侧重于表征特征,以保留预训练知识。具体而言,表征标记的投影层是可训练的,而类别标记的投影层则保持固定。对于图像编码器,在经过L层Transformer层后,得到类别标记的输出
,以及K个表征标记的输出
。表征标记的最终输出
,是通过计算这K个标记的平均值得到的,
其中,。随后,我们应用补丁投影层(patch projection layers),将类别标记和表征标记的输出都映射到通用的视觉-语言(V-L)潜在空间中,从而得到类别特征
和表征特征
。
其中,是CLIP中用于类别特征的原始,即冻结的补丁投影层,而用于表征特征的
是可训练的。
对于文本编码器W,考虑到文本的序列特性,在经过L层Transformer层处理后,将与原始CLIP模型中相同的EOT标记映射到通用的视觉-语言(V-L)空间中,从而得到文本特征。
利用图像特征、
,以及针对C个类别的文本分类器{
,采用交叉熵损失函数来分别优化类别特征和表征特征。
其中,如果图像属于类别
,则
,否则
。为了进一步保留类别特征的泛化能力,我们最大化
与冻结的CLIP特征
之间的余弦相似度,从而显式地引导训练过程。
最终MMRL的损失函数为
其中控制特征之间的平衡,
是惩罚系数
Testing on Base Classes:对于在训练过程中见过的分布内类别,我们将数据集特定的表征特征与保留泛化能力的类别特征相结合。一个属于分布内测试样本属于第
类的概率是
其中和
分别是从类标记和表示标记中提取的特征。
Testing on Novel Classes:对于在训练过程中未见过的类别或新的数据集,我们完全依赖于类标记,这些标记保留了通用知识。
相关文章:

MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)
摘要 预训练的VLMs,对于跨任务的迁移学习至关重要,然而,在few-shot数据集上微调会导致过拟合,降低在新任务上的性能。为解决这个问题,提出一种新的多模态表征学习框架(MMRL),该框架引入了一个共享、可学习…...
贪心算法求解汽车加油问题
一、问题描述 一辆汽车加满油后可以行驶 n km。在前往目的地的途中,有多个加油站。我们的目标是设计一个有效的算法,确定汽车应该在哪些加油站停靠加油,以使得沿途的加油次数最少。 二、输入输出形式 算法的输入包括两部分:第一…...
JVM Full GC 频繁问题排查、优化及解决方案
引言 在Java应用程序中,JVM(Java虚拟机)通过垃圾回收机制自动管理内存,确保不再使用的对象能够被及时清理和释放。虽然垃圾回收在大多数情况下运行顺利,但当Full GC频繁发生时,它会严重影响应用性能&#x…...

rsync服务的搭建
目录 一、rsync介绍 rsync的安装 二、rsync的语法 三、rsync命令使用 1. 本机同步 2. 远程同步 四、rsync作为服务使用 1、尝试启动rsync程序 2、rsync的配置文件介绍 注意事项: 3. rsyncinotify实时同步 3.依赖服务托管xinetd(CentOS 6中rs…...
JDK21深度解密 Day 8:Spring Boot 3与虚拟线程整合
【JDK21深度解密 Day 8】Spring Boot 3与虚拟线程整合 引言:Spring Boot 3遇上JDK21虚拟线程 在本系列的第8天,我们将聚焦于Spring Boot 3与JDK21虚拟线程的整合实践。作为全网首套完整的JDK21特性解析,我们不仅会探讨虚拟线程如何颠覆传统Java并发模型,还会通过完整的Sp…...

vscode 配置 QtCreat Cmake项目
1.vscode安装CmakeTool插件并配置QT中cmake的路径,不止这一处 2.cmake生成器使用Ninja(Ninja在安装QT时需要勾选),可以解决[build] cc1plus.exe: error: too many filenames given; type ‘cc1plus.exe --help’ for usage 编译时…...
排序算法-归并排序与快速排序
归并排序与快速排序 快速排序是利用的递归思想:选取一个基准数,把小于基准数的放左边 大于的放右边直到整个序列有序 。快排分割函数 O(lognn), 空间 :没有额外开辟新的数组但是递归树调用函数会占用栈内存 O(logn) 。 归并排序:在递归返回的…...

HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。
名人说:龙舟争渡,助威呐喊,凭吊祭江诵君赋。——苏轼《六幺令天中节》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、项目概览:传统与现代的技术碰撞1. 核心特…...

uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能
(3) 使用云对象sendEmailCode 发送邮箱验证码,报错送邮箱验证码失败 Error: 已启动测试模式,直接使用:123456作为邮箱验证码即可。 如果是正式项目,需自行实现发送邮件的相关功能 - DCloud问答 uni-id 没有实现邮箱验证码逻辑&am…...
Spring boot 策略模式
public abstract class Node {/*** 执行** param a* param b* return*/public abstract Integer execute(int a, int b); }package my.node;import org.springframework.stereotype.Component;Component("exec") public class ExecNode extends Node {Overridepublic…...
websocket在vue中的使用步骤,以及实现聊天
一、WebSocket集成步骤 连接初始化 在Vue组件中创建WebSocket实例,建议在mounted生命周期中执行: data() {return {socket: null,messages: []} }, mounted() {this.socket new WebSocket(wss://your-server-endpoint); }事件监听配置 连接成…...

C++学习-入门到精通【12】文件处理
C学习-入门到精通【12】文件处理 目录 C学习-入门到精通【12】文件处理一、文件和流二、创建顺序文件三、从顺序文件读取数据文件定位指针对之前的程序进行修改:贷款查询程序 四、更新顺序文件五、随机存取文件1.创建随机存取文件2.修改程序:贷款处理程序…...
第十一篇:MySQL 在分布式系统中的一致性保障与中间件实践
随着微服务和分布式架构的发展,单点数据库早已无法满足系统的横向扩展需求。本篇聚焦 MySQL 在分布式系统中的一致性保障机制,以及相关中间件的使用策略与实战经验。 一、一致性问题的由来 在 单机 MySQL 环境 中,事务具有原子性、隔离性&am…...
Java中如何枚举正则表达式捕获组的名字
在使用正则表达式在匹配文本时,除了可以通过表达式捕获命中的文本串外,还可以对捕获的文本串进行命名。尤其是在解析日志的场景中,经常会被用到。表达式如下: \<(?<pri>\d)\>(?<time>.*) (?<host>\S)…...
matlab实现图像压缩编码
一、基于DCT的JPEG压缩(有损) 1. 核心步骤 图像分块:将图像划分为88的小块。离散余弦变换(DCT):对每个块进行DCT变换。量化:对DCT系数进行量化以减少高频信息。熵编码:使用哈夫曼或…...
如何排查Redis单个Key命中率骤降?
问题现象 Redis整体命中率98%,但监控发现特定Key(如user:1000:profile)的命中率从99%骤降至40%,引发服务延迟上升。 排查步骤 1. 确认现象与定位Key // 通过Redis监控工具获取Key指标 public void monitorKey(String key) {Je…...

记一次 Starrocks be 内存异常宕机
突发性 be 内存飙高,直至被系统 kill 掉,be 内存如下:其中 starrocks_be_update_mem_bytes 指标打满,重启也是如此 [rootlocalhost bin]# curl -XGET -s http://192.168.1.49:8040/metrics | grep "^starrocks_be_.*_mem_b…...
Spring Boot 读取.env文件获取配置
Spring Boot 读取.env文件获取配置 在Resouce 目录下创建.env文件 # DEEP SEEK TOKEN DEEP_SEEK_TOKENyour_deep_seek_key # 阿里云百炼 TOKEN ALI_BAILIAN_TOKENyour_ali_bailian_keyyml引入.env文件 spring:config:import: optional:classpath:.env[.properties]使用.env文…...

LangChain-结合GLM+SQL+函数调用实现数据库查询(一)
业务流程 实现步骤 1. 加载数据库配置 在项目的根目录下创建.env 文件,设置文件内容: DB_HOSTxxx DB_PORT3306 DB_USERxxx DB_PASSWORDxxx DB_NAMExxx DB_CHARSETutf8mb4 加载环境变量,从 .env 文件中读取数据库配置信息 使用 os.getenv…...
python训练营打卡第41天
简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch…...
1.3HarmonyOS NEXT统一开发范式与跨端适配:开启高效跨设备应用开发新时代
HarmonyOS NEXT统一开发范式与跨端适配:开启高效跨设备应用开发新时代 在HarmonyOS NEXT的技术体系中,统一开发范式与跨端适配是两大关键特性,它们为开发者打破了设备边界,极大地提升了开发效率与应用体验。本章节将深入探讨方舟…...
麒麟v10,arm64架构,编译安装Qt5.12.8
Window和麒麟x86_64架构,官网提供安装包,麒麟arm64架构的,只能自己用编码编译安装。 注意,“桌面”路径是中文,所以不要把源码放在桌面上编译。 1. 下载源码 从官网下载源码:https://download.qt.io/arc…...
ArcGIS Pro 3.4 二次开发 - 布局
环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 布局1 布局工程项1.1 引用布局工程项及其关联的布局1.2 在新视图中打开布局工程项1.3 激活已打开的布局视图1.4 引用活动布局视图1.5 将 pagx 导入工程1.6 移除布局工程项1.7 创建并打开一个新的基本布局1.8 使用修改后的CIM创建新…...
基于随机函数链接神经网络(RVFL)的锂电池健康状态(SOH)预测
基于随机函数链接神经网络(RVFL)的锂电池健康状态(SOH)预测 一、RVFL网络的基本原理与结构 随机向量功能链接(Random Vector Functional Link, RVFL)网络是一种单隐藏层前馈神经网络的随机化版本,其核心特征在于输入层到隐藏层的权重随机生成且固定,输出层权重通过最…...
爱其实很简单
初春时,元元买来两只芙蓉鸟。一只白色的,是雄鸟;另一只黄色的,是雌鸟。 每天清晨日出之前,雄鸟便开始“啁啾——啁啾”地啼鸣,鸣声清脆婉转,充满喜悦,仿佛在迎接日出,又…...

2025年渗透测试面试题总结-匿名[校招]安全工程师(甲方)(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]安全工程师(甲方) 1. 介绍自己熟悉的渗透领域 2. 编程语言与开发能力 3. 实习工作内容与流程 …...

PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)
文章目录 地址类QUrl主要功能URL 格式介绍常见 scheme(协议)类型QUrl 类常用方法常用方法示例典型应用场景 地址类QUrl QUrl 是 PySide6.QtCore 模块中的一个类,用于处理和操作 URL(统一资源定位符)。它可以解析、构建…...

任务23:创建天气信息大屏Django项目
任务描述 知识点: Django 重 点: Django创建项目Django视图函数Django路由Django静态文件Django渲染模板 内 容: 使用PyCharm创建大屏项目渲染大屏主页 任务指导 1. 使用PyCharm创建大屏项目。 创建weather项目配置虚拟环境创建ch…...
数学分析——一致性(均匀性)和收敛
目录 1. 连续函数 1.1 连续函数的定义 1.2 连续函数的性质 1.2.1 性质一 1.2.2 性质二 1.2.3 性质三 1.2.4 性质四 2. 一致连续函数 2.1 一致连续函数的定义 2.2 一致连续性定理(小间距定理)(一致连续函数的另一种定义) 2.3 一致连续性判定法 2.4 连…...

Flutter GridView网格组件
目录 常用属性 GridView使用配置 GridView.count使用 GridView.extent使用 GridView.count Container 实现列表 GridView.extent Container 实现列表 GridView.builder使用 GridView网格布局在实际项目中用的也是非常多的,当我们想让可以滚动的元素使用矩阵…...