图像上下文学习|多模态基础模型中的多镜头情境学习

【原文】众所周知,大型语言模型在小样本上下文学习(ICL)方面非常有效。多模态基础模型的最新进展实现了前所未有的长上下文窗口,为探索其执行 ICL 的能力提供了机会,并提供了更多演示示例。在这项工作中,我们评估了从少镜头到多镜头 ICL 的多模态基础模型的性能。我们在跨越多个领域(自然图像、医学图像、遥感和分子图像)和任务(多类、多标签和细粒度分类)的 10 个数据集上对 GPT-4o 和 Gemini 1.5 Pro 进行基准测试。我们观察到,在所有数据集中,与少样本(<100 个样本)ICL 相比,多样本 ICL(包括多达近 2,000 个多模态演示示例)带来了显着改进。此外,Gemini 1.5 Pro 的性能继续以对数线性方式提高,直至许多数据集上测试示例的最大数量。考虑到与多次 ICL 所需的长提示相关的高推理成本,我们还探讨了在单个 API 调用中批处理多个查询的影响。我们表明,批处理最多 50 个查询可以在零样本和多次 ICL 下提高性能,在多个数据集上的零样本设置中获得显着收益,同时大幅降低每个查询的成本和延迟。最后,我们测量模型的 ICL 数据效率,或者模型从更多演示示例中学习的速率。我们发现,虽然 GPT-4o 和 Gemini 1.5 Pro 在整个数据集上实现了相似的零样本性能,但 Gemini 1.5 Pro 在大多数数据集上表现出比 GPT-4o 更高的 ICL 数据效率。我们的结果表明,多次 ICL 可以使用户有效地将多模态基础模型适应新的应用程序和领域。

原文:Many-Shot In-Context Learning in Multimodal Foundation Models
地址:https://arxiv.org/abs/2405.09798v1
代码:https://github.com/stanfordmlgroup/ManyICL
出版:未知
机构: Stanford University \

1 研究问题

本文研究的核心问题是: 随着多模态基础模型使用的上下文长度大幅提升,如何探究在图像分类任务中使用大量演示样本进行上下文学习(in-context learning, ICL)的性能表现。

假设我们正在开发一个医疗影像分析系统,目标是根据胸部X光片诊断不同类型的肺部疾病。我们有一个预训练的多模态基础模型,它可以处理图像和文本。现在的问题是,我们应该在模型推理时提供多少相关的演示样本(比如一些带标注的X光片样例),才能最大程度地发挥模型的few-shot学习能力,以较低的成本获得较好的分类性能。

本文研究问题的特点和现有方法面临的挑战主要体现在以下几个方面:

  • 现有的ICL研究大多局限于少样本(few-shot)场景,即在模型推理时只提供少量(通常<100个)演示样本。这主要是因为模型可以处理的上下文长度有限。然而,随着最新的多模态基础模型可用上下文长度大幅提升(如GPT-4o达到128,000 tokens,Gemini 1.5 Pro达到一百万tokens),研究多样本(many-shot)ICL的可能性和必要性凸显。

  • 图像数据通常需要大量tokens来表示,这进一步限制了在给定上下文长度下可包含的演示样本数量。因此,研究many-shot ICL需要精心设计实验,在样本多样性和个体信息量之间平衡。

  • 尚不清楚增加ICL演示样本在多大程度上、以何种模式提升模型性能。比如性能是否会在样本数达到一定规模后趋于饱和?不同数据集和任务之间表现是否一致?

  • 加入大量演示样本势必导致输入序列急剧加长,大幅提高inference成本。如何在保证性能的同时控制计算开销,是many-shot ICL研究必须考虑的现实问题。

针对这些挑战,本文提出了一种全面评估many-shot ICL的实验范式:

本文选取了10个覆盖多个领域(自然图像、医学影像、遥感影像、分子影像)和任务(多分类、多标签、细粒度分类)的数据集,在每个数据集上都构建了一个较大规模(最多近2000个)的演示样本集。然后,分别使用GPT-4o和Gemini 1.5 Pro两个具有超长上下文的多模态基础模型,测试在不同演示样本规模下的few-shot到many-shot的性能变化曲线,由此系统地考察样本数量、数据集、任务、模型等因素的影响。针对计算成本问题,本文还巧妙地利用query batching技术,在每次API调用中打包多个query,从而在几乎不损失性能的情况下大幅降低了平均时延和费用。此外,本文还定义了一种ICL数据效率指标,用以衡量模型从增加演示样本中学习的能力。基于以上实验设计,本文系统地研究了多模态模型在many-shot场景下的行为特性,为相关研究提供了重要参考。

2 研究方法

2.1 模型选择与数据集介绍

本论文选择了两个最先进的多模态基础模型GPT-4o和Gemini 1.5 Pro进行实验。它们都具有公开的API接口,并且都支持超长的上下文窗口,为探索增加演示样本数量对性能的影响提供了机会。

论文在10个数据集上对模型进行了评估,这些数据集涵盖了多个领域(自然图像、医学图像、遥感、分子图像)和任务(多类别分类、多标签分类、细粒度分类)。表1总结了所使用的数据集的基本信息。

对于所有数据集,论文从原始的训练集和验证集中构建了一个演示样本集用于上下文学习,从原始的测试集(如果存在)中构建了一个测试集用于评估模型性能。构建过程是在原始数据集上进行无放回随机采样。对于多类别和细粒度分类任务,进行了按类别分层的采样,确保演示集和测试集中每个类别的样本数量相等。对于多标签分类任务(CheXpert),在演示集和测试集中对每个类别采样相等数量的正负样本。表1展示了每个数据集的完整演示集和测试集的大小。

2.2 Many-shot ICL方法

Many-shot ICL是指在查询前提供大量演示样本作为上下文信息,与zero-shot(无演示样本)和few-shot(少量演示样本)形成对比。图1直观地总结了它们之间的区别。本论文旨在通过many-shot ICL来探索增加演示样本数量能在多大程度上提升模型性能。

实验中所使用的prompt设计如下所示:

<<IMG>>Given the image above, answer the following question using the specified format.
Question: What is in the image above? 
Choices: {str(class_desp)}
Answer Choice: {demo.answer}

其中<<IMG>>表示图像的占位符,{str(class_desp)}是类别的描述,{demo.answer}是演示样本的答案。测试阶段的prompt会让模型给出置信度:

Please respond with the following format:
---BEGIN FORMAT TEMPLATE---
Answer Choice: [Your Answer Choice Here]
Confidence Score: [Your Numerical Prediction Confidence Score Here From 0 To 1] 
---END FORMAT TEMPLATE---
Do not deviate from the above format. Repeat the format template for the answer.

为了验证many-shot ICL对prompt设计的鲁棒性,论文在HAM10000和EuroSAT两个数据集上尝试了不同的prompt。结果表明虽然性能有轻微波动,但整体的对数线性提升趋势是一致的。

2.3 批量查询与消融实验

由于在prompt中包含大量演示样本会导致输入序列非常长,推理成本很高。为了降低单次查询的延迟和成本,论文探索了在一次请求中批量查询多个样本的方法。

具体而言,在many-shot ICL设置下,实验发现适度的批量大小(最多50个查询)基本不会损害性能,而大幅降低了单个样本的延迟和成本。更令人惊讶的是,在zero-shot设置下,批量查询不仅没有损害性能,在一些数据集上反而大幅提升了性能。

为了分析zero-shot批量查询提升性能的原因,论文设计了一系列消融实验:

  1. 为了测试领域校准(domain calibration)的作用,在prompt中包含来自同一类别的49张无标签图像

  2. 为了测试类别校准(class calibration)的作用,在prompt中包含来自所有类别的49张无标签图像

  3. 为了测试自生成演示样本的作用,使用zero-shot模型对随机采样的49张图像进行预测,并将预测标签加入prompt

结果表明,领域校准、类别校准和自生成演示样本都有助于提升zero-shot批量查询的性能,三者的组合与直接批量查询50个样本的性能相当。这说明它们是性能提升的主要原因。

2.4 评估指标

论文使用一些标准指标来评估模型在每个数据集上的性能。对于所有的多类别分类数据集,由于采样确保了类别平衡,因此使用准确率(accuracy)作为指标。对于多标签分类数据集CheXpert,使用宏平均F1值。为了估计评估指标的变化性,使用Bootstrap方法进行1000次重采样计算标准差。

除了标准指标,论文还定义了一个ICL数据效率指标来衡量模型从演示样本中学习的效率。具体地,在log(N+1) (N为样本数量)和模型性能之间进行线性回归,并强制回归线经过zero-shot性能点。这个指标近似了每增加10倍演示样本可以期望的性能提升。 第四步、实验部分详细撰写:

3 实验

3.1 实验场景介绍

该论文探究了在增加大量演示样例的情况下,多模态基础模型进行上下文内学习(in-context learning, ICL)的能力。主要研究many-shot ICL在不同任务和领域的数据集上的性能表现,以及批量查询对性能、推理延迟和成本的影响。

3.2 实验设置

  • Datasets: 10个跨领域的图像分类数据集,包括自然图像、医学图像、遥感和分子图像等,涵盖多分类、多标签和细粒度分类任务。

  • Models: GPT-4o、Gemini 1.5 Pro和GPT4(V)-Turbo

  • Implementation details:
    • 对多分类和细粒度分类数据集进行分层采样,保证每个类别样本数相同

    • 使用markdown格式进行编码

  • metric:
    • 多分类数据集使用准确率(accuracy)

    • 多标签分类数据集(CheXpert)使用宏平均F1值

    • ICL数据效率:log10(N+1)和性能之间的线性回归,估计演示样本数增加一个数量级带来的性能提升

3.3 实验结果

3.3.1 实验一、增加演示样例数对模型性能的影响

目的: 评估增加演示样例数对GPT-4o和Gemini 1.5 Pro性能的影响

涉及图表: 图2、表2

实验细节概述:在10个数据集上,通过增加演示样例数(从零样本到上千样本)来评估GPT-4o和Gemini 1.5 Pro的性能变化。同时测量了它们的ICL数据效率。

结果:

  • Gemini 1.5 Pro在除DrugOOD Assay外的所有数据集上,随着演示样例数的增加表现出稳定且显著的性能提升。在多数数据集上,性能随样本数对数线性提升。

  • GPT-4o在除FIVES和DrugOOD Assay外的所有数据集上也有性能提升,但不如Gemini 1.5 Pro稳定。

  • Gemini 1.5 Pro在多数数据集上比GPT-4o有更高的ICL数据效率。

  • 在最优演示样本集规模下,两个模型相比zero-shot平均提升17%。

3.3.2 实验二、批量查询对性能的影响

目的: 研究在many-shot和zero-shot设置下,批量查询对Gemini 1.5 Pro性能的影响

涉及图表: 图3

实验细节概述:固定最优演示样本数,改变每个请求中包含的查询数量,比较many-shot ICL性能。同时在zero-shot下进行类似实验。

结果:

  • 在合适的批大小下,many-shot ICL的批量查询相比单个查询没有性能下降,有时还有提升。

  • 在zero-shot下,仅包含一个查询是次优的。在一些数据集上,最大批量的zero-shot性能大幅提升。

3.3.3 实验三、零样本下批量查询导致性能提升的原因探究

目的: 探究在zero-shot设置下批量查询导致性能提升的潜在原因

涉及图表: 图4

实验细节概述:设计消融实验,研究领域校准、类别校准和自生成演示三个因素对性能提升的贡献。

结果:

  • 在TerraIncognita上,领域校准有3%的性能提升,而在UCMerced上会导致2.6%的性能下降。

  • 类别校准使TerraIncognita提升6.5%,UCMerced提升4.5%,表明即使没有标签,类别平衡的图像也有帮助。

  • 使用模型预测的标签进一步提升了性能,与直接批量查询的性能相近,说明这三个因素可以解释大部分性能提升。

3.3.4 实验四、推理延迟和成本分析

目的: 分析many-shot ICL的推理延迟和成本,以及批量查询的影响

涉及图表: 表3

实验细节概述:在HAM10000和TerraIncognita上,比较有无批量查询时的推理延迟和成本。批大小为50。

结果:

  • 在zero-shot下,批量查询可以大幅降低单样本延迟,但单样本成本几乎不变。

  • 在many-shot下,批量查询可以显著降低单样本延迟和成本。在HAM10000上,延迟降低35倍,成本降低10倍;在TerraIncognita上,延迟降低20倍,成本降低45倍。

4 总结后记

本论文针对多模态大语言模型(LMMs)的上下文学习问题,提出了一种"多样本上下文学习"(many-shot ICL)的方法。通过大幅增加输入给模型的演示样本数量(从几个到数千个),在多个涵盖不同领域和任务的数据集上取得了显著的性能提升。此外,通过对查询进行批处理,在保持性能的同时大大降低了每次查询的延迟和成本。实验结果表明,采用many-shot ICL可以显著提高LMMs在新领域和任务上的适应能力,为实现LMMs的快速定制化应用提供了新的思路。

疑惑和想法:

  1. 除了图像分类任务,many-shot ICL在其他多模态任务(如视觉问答、图像字幕等)上的效果如何?不同任务的最优演示样本数量是否存在差异?

  2. 在进行many-shot ICL时,演示样本的选择和排序方式是否会影响性能?是否可以设计一些策略来优化演示样本的构建?

  3. Many-shot ICL的数据效率与传统的微调方法相比如何?是否可以将二者结合起来进一步提升性能和效率?

可借鉴的方法点:

  1. Many-shot ICL的思想可以推广到其他需要快速适应新领域和任务的场景,如单模态的语言模型、强化学习等。

  2. 批处理查询的方法可以应用于其他需要大量调用LMMs的应用中,以提高效率和降低成本。

  3. 通过精心设计的上下文学习方式来提升模型性能,避免从头训练的思路值得借鉴,可以加速LMMs在实际应用中的部署。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go mod模式下,import gitlab中的项目

背景 为了go项目能够尽可能复用代码&#xff0c;把一些公用的工具类&#xff0c;公用的方法等放到共用包里统一管理。把共用包放到gitlab的私有仓库中。 遇到的问题 通过https方式&#xff0c;执行go get报了错误。 通过ssh方式&#xff0c;执行go get报了错误。 修改配置&am…

Android:使用Kotlin搭建MVC架构模式

一、简介Android MVC架构模式 M 层 model &#xff0c;负责处理数据&#xff0c;例如网络请求、数据变化 V 层 对应的是布局 C 层 Controller&#xff0c; 对应的是Activity&#xff0c;处理业务逻辑&#xff0c;包含V层的事情&#xff0c;还会做其他的事情&#xff0c;导致 ac…

WebRTC-SFU服务器-Janus部署【保姆级部署教程】

一、SFU WebRTC SFU(Selective Forwarding Unit)构架是一种通过服务器来路由和转发WebRTC客户端音视频数据流的方法。这种构架的核心特点是将服务器模拟成一个WebRTC的Peer客户端,从而实现了音视频流的直接转发。 在SFU构架中,服务器作为中心节点,但并不负责音视频流的混…

TG5032CGN TCXO 超高稳定10pin端子型适用于汽车动力转向控制器

TG5032CGN TCXO / VC-TCXO是一款应用广泛的晶振&#xff0c;具有超高稳定性&#xff0c;CMOS输出和使用晶体基振的削波正弦波输出形式。且有低相位噪声优势&#xff0c;是温补晶体振荡器(TCXO)和压控晶体振荡器(VCXO)结合的产物&#xff0c;具有TCXO和VCXO的共同优点&#xff0…

海山数据库(He3DB)代理ProxySQL使用详解:(一)架构说明与安装

一、ProxySQL介绍 1.1 简介 业界比较知名的MySQL代理&#xff0c;由ProxySQL LLC公司开发并提供专业的服务支持&#xff0c;基于GPLv3开源协议进行发布,大部分配置项可动态变更。后端的MySQL实例可根据用途配置到不同的hostgroup中&#xff0c;由ProxySQL基于7层网络协议,将来…

Python 实现Word (DOC或DOCX)与TXT文本格式互转

目录 引言 安装Python库 使用Python将Word转换为TXT文本格式 使用Python将TXT文本格式转换为Word 引言 Word文档和TXT文本文件是日常工作和生活中两种常见的文件格式&#xff0c;各有其特点和优势。Word文档能够保留丰富的格式设置&#xff0c;如字体、段落、表格、图片等…

格雷母线与卸料小车的非接触式定位技术

在现代化的工业生产中&#xff0c;自动化与智能化已成为提高生产效率、降低成本的关键手段。特别是在钢铁、矿山等重工业领域&#xff0c;卸料小车作为物料搬运的重要设备&#xff0c;其定位精度和工作效率直接影响了整个生产线的运行状况。格雷母线高精度位移测量系统的引入&a…

worklist配置调试日志记录

工作记录用,不拘小节&#xff01; 设备请求日志 2024-05-23 09:03:14,503 [WorkListServer: 10.87.232.253 [18]] INFO - LISTMWL Request from [gehc]: (0008,0005) CS [ISO_IR 100] # 10 Specific Character Set 1-N (0008,0020) DA [] …

C++ | Leetcode C++题解之第108题将有序数组转换为二叉搜索树

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* sortedArrayToBST(vector<int>& nums) {return helper(nums, 0, nums.size() - 1);}TreeNode* helper(vector<int>& nums, int left, int right) {if (left > right) {return nu…

12V-24V转8.4V5A同步降压恒压WT6020

12V-24V转8.4V5A同步降压恒压WT6020 WT6020是一款高效率的DC/DC转换器&#xff0c;采用抖动频率和平均电流模式架构&#xff0c;是单片同步降压设计。具有优秀的线路和负载调节能力&#xff0c;最大输出电流可达10A。 工作电压范围为7V至30V&#xff0c;可调输出电压为1V至20…

php之web开发

目标 实现一款具有常用大部分功能的WEB应用&#xff0c;并初步了解WEB漏洞原理 登录功能&#xff1a; 1、基于前端的登录功能 <!DOCTYPE html> <html> <head> <title>简单登录功能</title> </head> <meta charset"UTF-8"…

拓展类型——枚举

枚举的作用 枚举通常用来约定某个变量的取值范围 使用字面量和联合类型也可以达到约束变量的作用&#xff0c;但是会有不方便的情况 使用字面量和联合类型约束变量的问题 逻辑含义和真实的值会产生混淆&#xff0c;如果修改了真实值&#xff0c;会造成大量代码需要修改 例&…

YOLOv8改进 | 图像去噪篇 | 单阶段盲真实图像去噪网络RIDNet辅助YOLOv8图像去噪(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是单阶段盲真实图像去噪网络RIDNet,RIDNet(Real Image Denoising with Feature Attention)是一个用于真实图像去噪的卷积神经网络(CNN),旨在解决现有去噪方法在处理真实噪声图像时性能受限的问题。通过单阶段结构和特征注意机制,…

ESP32基础应用之使用手机浏览器作为客户端与ESP32作为服务器进行通信

文章目录 1 准备2 移植2.1 softAP工程移植到simple工程中2.2 移植注意事项 3 验证 1 准备 参考工程 Espressif\frameworks\esp-idf-v5.2.1\examples\wifi\getting_started\softAP softAP工程演示将ESP32作为AP&#xff0c;即热点&#xff0c;使手机等终端可以连接参考工程 Esp…

1941springboot VUE 服务机构评估管理系统开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot VUE服务机构评估管理系统是一套完善的完整信息管理类型系统&#xff0c;结合springboot框架和VUE完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代…

夏天晚上热,早上凉怎么办?

温差太大容易引起感冒 1.定个大概3点的闹钟&#xff0c;起来盖被子。有些土豪可以开空调&#xff0c;我这个咸鱼没有空调。 2.空调调到合适的温度&#xff0c;比如20几度。

使用 Sonatype Nexus Repository Manager 如何安装npm.md

1. 安装与启动 Nexus2. 登录 Nexus Web UI3. 创建 npm 仓库4. &#xff08;可选&#xff09;配置 npm 代理仓库5. 创建 npm 仓库组6. 配置 npm 客户端7. 测试和使用 Sonatype Nexus Repository Manager (通常简称 Nexus) 是一个强大的二进制管理系统&#xff0c;用于存储和管理…

二分查找法

二分查找法 一、标准二分查找法二、改动版二分查找法三、平衡版二分查找法四、二分查找法查找最左元素五、二分查找法查找最右元素六、二分查找法之返会插入位置 一、标准二分查找法 /*** 标准二分查找*/public static int binarySearch(int[] arr, int target) {int i 0, j …

6.1 if语句

计算机语言和人类语言类似&#xff0c;人类语言是为了解决人与人之间交流的问题&#xff0c;而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令&#xff0c;控制计算机的运行。借助于编译工具&#xff0c;可以将各种不同的编程语言的…

2024 Google I/O 宣布正式支持 Kotlin Multiplatform ,那 KMP 是什么?它的未来在哪里?

基于最近一直有人和我提 KMP &#xff0c;那就简单聊聊。 2024 Google I/O 正式官宣了支持 KMP &#xff0c;而一般意义上的 KMP 指的就是 Kotlin Multiplatform &#xff0c;它是 Google Workspace 团队的一项长期「投资」项目&#xff0c;这里有个重点&#xff0c;那就是 Ko…