ChartLlama: A Multimodal LLM for Chart Understanding and Generation论文阅读

原文链接:https://arxiv.org/abs/2311.16483

代码与数据集:https://tingxueronghua.github.io/ChartLlama/

本文启发:文章提出利用GPT-4合成大量图表数据,这些数据包含各种图表类型,包含丰富的instruction data。然后使用合成数据集对Llama进行微调,得到ChartLlama,完全属于数据驱动型方法。但是,合成数据集与真实数据集相比是否存在弊端?目前还没有研究明确证明这一点,但是能看到不少研究者都专注于真实数据集。

 Abstract

        多模态大型语言模型在大多数视觉语言任务中表现出令人印象深刻的表现。但是,该模型通常缺乏对特定域数据的理解能力,尤其是在解释图表图片时。这主要是由于缺乏相关的多模态指令微调数据集。在本文中,我们利用 GPT-4 创建了一个高质量的指令微调数据集。我们开发了一个多步骤的数据生成流程,包括生成表格数据,创建图表图形,并分别设计指微调数据。我们方法能够高效地生成多样化、高质量的指令调整数据,同时保持较低的资源支出,此外,它还允许我们整合现有数据集中尚未包含的更广泛的图表和任务类型。

        接下来,我们介绍 ChartLlama,这是一个多模态大型语言模型,我们使用创建的数据集对其进行了训练。ChartLlama 在 ChartQA、Chart-to-text 和 Chart-extraction 评估基准中优于所有以前的方法。此外,ChartLlama 显著改进了我们专门编译的图表数据集中的基线,其中包括新的图表和任务类型。ChartLlama 的结果表明我们提出的数据生成方法在增强图表理解方面的巨大潜力。

1.Introduction

        随着LLM快速发展,尽管 GPT-4V 等模型取得了成就和潜力,但 GPT-4V 架构背后的细节仍然是个谜。这种不透明性在学术界引发了关于设计多模态 LLM 的最佳实践的问题。值得注意的是,开创性的研究计划,如 LLaVA和 MiniGPT ,在这方面提供了有见地的方向。他们的研究结果表明,通过将视觉编码器整合到现有的 LLM 中,然后使用多模态指令调整数据集对其进行微调,LLM 可以有效地转变为多模态 LLM。值得注意的是,这些多模态数据集通常来自已建立的基准,为积累指令调整所需的数据提供了一种经济高效的方法。

        基于既定基准的数据集,如 COCO数据集,显著增强了多模态 LLM 解释日常照片的能力。然而,当面对专门的视觉表示,如图表时,这些数据集显示出明显的局限性。图表是将复杂的数据集转化为易于理解的视觉叙述的重要视觉工具,在促进理解、形成见解和有效传达信息方面发挥着至关重要的作用。从学术出版物到企业演示,他们的普遍存在强调了增强多模态 LLM 解释图表能力的重要性。事实上,专门收集数据以改进理解图表的指令会带来一些挑战。这些通常源于两个领域:理解和生成。一个有效的图表理解模型应该能够从各种类型的图表中提取和总结数据,并根据这些信息进行预测

        但是,现存的绝大多数数据集仅仅提供简单的问答和描述说明,这主要由于缺少详细的图表信息和注释,无法提供对原始数据的高级理解。高度依赖Web 爬虫收集的手动注释图表会对这些数据集的质量产生负面影响。因此,以前的注释方法只能导致图表数据集质量较低且注释不太全面。与图表理解相比,生成图表图形对模型来说是一项更具挑战性的任务,因为现有的基于深度学习的生成方法难以根据指令准确创建图像。使用 Python 代码生成图表似乎很有前途,这需要相应的注释来监督模型。从 Web 获取的大多数图表都没有详细的注释,因此很难对生成代码进行注释。缺少代码注释使得在代码生成中监督模型变得具有挑战性。这些问题结合在一起,阻碍了模型理解图表和生成图表的能力。

        为了解决这个问题,我们引入了一种专为图表理解和生成量身定制的自适应和创新数据收集方法。我们方法的核心是利用 GPT-4 强大的语言和编码能力,这有助于创建丰富的多模态数据集。这种思路不仅优化了数据的准确性,还确保了其广泛的多样性。具体来说,我们的方法包括三个主要阶段:

(1)Chart Data Generation(生成数据点):我们不是将数据收集局限于 Web 或现有数据集等传统数据源,而是利用 GPT-4 的强大功能来生成合成数据。通过提供topic、distribution、trend等特定特征,我们指导 GPT-4 生成既多样化又精确的数据。

(2)Chart Figure Generation(绘图):GPT-4 的编码技能被用于使用开源库(如 Matplotlib)编写图表图,给定数据和函数文档,输出精心渲染的图表,这些图表跨越各种形式,每个图表都准确地表示其基础数据。

(3)Instruction data generation(生成描述性文本、QA):GPT-4 进一步用于解释和叙述图表内容,确保整体理解。系统会提示它构建与图表相关的问答对。通过合并叙述文本、问答对以及图表的源代码,从而得到一个全面的 instructiontuning 语料库。

通过上述方式,我们构建了一个开源数据集,它与其他数据集对比如下:

我们的贡献总结如下:

  • 引入了一种新颖的多模态数据收集方法,专门设计用于图表理解和生成。所提出的数据收集方法具有出色的灵活性和可扩展性,能够轻松迁移到不同类型的图表和各种任务中。
  • 通过我们创新的数据收集方法,我们创建了一个在质量和多样性方面脱颖而出的基准数据集。
  • 开发了ChartLlama,一个多模态大型语言模型(LLM),不仅在各种现有基准测试中超越了现有模型,而且具有多样化的独特图表理解和生成能力。

2. Related work

2.1. Large Language Model

2.2. Multi-modal Large Language Model

2.3. Chart Understanding

        已经有一些数据集可用于评估模型的图表理解能力,主要分为两类,一类通过简单的问答任务进行衡量,例如 ChartQA,它具有由人工注释的高质量问题和答案,以及 PlotQA,它通过模板生成了质量较低的问题和答案,这些数据集的优势在于它们的大比例尺以及通过模板生成它们的能力,局限性在于难以确保问题和答案的质量,以及倾向于关注图表中数据的简单问题。

        另一个类别将图表转换为文本描述,例如Chart-to-text ,这些数据集中的图表和注释来自现实世界,确保了更高的质量,并鼓励模型更深入地研究图表背后的趋势和含义,缺点是文本注释中存在更多的噪音和对 BLEU-4 的过度依赖。

        早先关于图表理解任务的工作可以分为两种主要方法。一种方法是使用单个模型来理解图表并用自然语言回答问题。另一种方法,首先利用模型将图表转换为结构化数据,然后使用现有的大型模型根据结构化数据分析和回答问题,例如Deplot: One-shot visual language reasoning by plot-to-table translationStructchart: Perception, structuring, reasoning for visual chart understanding

        在我们的工作中,我们主要探索前一种类型,旨在利用单个模型来完成图表理解的整个过程。

3. Method

3.1. Chart Data Generation

        我们在图表数据收集方面的主要目标是收集多样化和高质量的数据。为此,我们采用两种主要策略:1) 使用 GPT4 从头开始生成数据:为了收集多样化和高质量的数据集,使用 GPT-4 从头开始生成表格数据。我们指示 GPT-4 根据特定主题、分布和其他特征(例如数据集的行和列大小)创建数据表。此过程可确保创建具有已知和受控特征的数据,这对于生成可靠的 instruction-answer 对至关重要。此外,通过管理这些特征,我们可以有意识地减少偏差,从而获得更加平衡的数据集。2) 从现有图表数据集合成数据:通过引用现有的图表数据集来合成数据。这些数据集已经包含一系列主题和特征,为数据生成提供了坚实的基础。通过使用这些数据集提示 GPT-4,我们指导它生成合理的数据,以补充其现有的知识库。这种方法为我们的数据集增加了多样性,并提高了其整体质量。

        指导生成数据的具体方案如下:

        图表主题Chart theme:我们首先生成数百个可能的主题,这些主题都是短语。当我们生成数据时,我们会从所有这些主题中随机选择一个,这使得数据有意义且多样化。这也使得生成用于指令优化的问题和响应变得更加容易。

        数据趋势Data trends:数据的另一个重要特征是趋势。我们首先生成几个典型的趋势描述,比如稳步上升和突然下降,然后随机选择一些趋势,并要求模型根据它们生成数据。如果缺乏这些特征,模型将倾向于生成几组具有无意义分布的数据。

        列和行长度Column and row lengths:行和列的长度对于数据生成也是必需的。如果没有特定的约束,LLM 往往会生成过长甚至重复的数据,这很难通过图表以有意义的方式呈现。

        图表类型Chart types:不同类型的图表通常具有不同的特征。例如,饼图中值的总和应为 100%。如果不指定图表类型,我们最终可能会生成不符合相应图表标准的数据。

3.2. Chart Figure Generation

        下一步是使用 GPT-4 的编码功能将我们的数据集转换为可视化图表,使用 Matplotlib作为主要工具。在提示 GPT-4 时,我们会提供收集的数据、相关函数文档和上下文示例。我们还对颜色方案和线条类型等多样化方面提供了详细说明,以增强图表的视觉吸引力。为了提高图表生成的多样性和成功率,我们在提示中随机抽样成功生成的代码作为上下文中的示例。与以前依赖模板的自动图表生成工作相比,我们的方法提供了更多的多样性和更好的视觉吸引力。它还使我们能够有效地泛化不同的图表类型。结果是一系列精心制作的图表,每张图表都准确地表示其数据并在视觉上吸引人,展示了我们方法的有效性。下面列出了此阶段中提示的必要输入。

        图表数据:这是任务最重要的输入,图表数据是将在图表中可视化的信息。

        相关函数文档Related function documentation:这是生成 Python 代码的重要参考。它提供有关可用于创建图表的可用函数和特性的信息。通过该文档,该模型甚至可以创建上下文中没有的新样式的图表。

例如:

  1. 函数名称:bar()
  2. 参数:
    • x:X轴的数据点
    • y:Y轴的数据点
    • color:柱状图的颜色
  3. 返回值:图像

        上下文示例:这些上下文示例是从预先选择的高质量代码中采样的。这有助于促进 Python 代码的构建。当有高质量的新生成代码时,我们可以保存并对其进行采样,作为之后的上下文示例。

        其他要求:为了保证最终生成的代码适合批量处理和执行,我们还需要在 prompt 中包含几个要求。例如,需要在代码中列出数据,以使生成的代码自包含且可执行,而无需外部文件。我们还设置了标题、轴标签、图例和文本注释的要求。它们提供有关图表所代表内容的上下文,并使其更易于理解数据。没有它们,图表可能会令人困惑且难以解释。

3.3. Instruction data generation

        在 GPT-4 的帮助下,利用前两阶段的信息继续生成大量的 instruction-answer 数据。除了基本的图表理解功能(如问答和摘要)外,我们还为更复杂的任务构建说明和答案,例如准确的数据提取、详细的图表描述、图表代码生成,甚至图表编辑。与以前依赖人工注释的指令数据生成方式相比,我们的方法可以节省大量时间,同时提高结果数据集的多样性和质量。以下是需要填写到提示中的数据的更多详细信息:

图表描述和原始数据:提供这些描述有助于模型更好地理解上下文。图表描述有助于模型理解数据的性质,原始数据有助于理解数据的可视化表示。原始数据为模型提供实际值作为其响应的基础。所有描述和原始数据都在第一阶段和第二阶段生成。

被要求询问的特征Characteristics to be asked about:这个要求确保模型提出关于图表的多样化和相关的问题,它能提示模型检测数据及其表示的不同特征。

4. Experiment

4.1. Implementation details and dataset statistics

4.2. Evaluation Benchmark and Metrics

 在七个任务上进行评估:

  • ChartQA
  • Chart-to-text
  • Chart-extraction:图表提取旨在从给定的图表中提取表格数据。
  • Detailed description:这项任务需要以详细的方式对给定的图表图形进行全面描述,而不是简要总结它。
  • Chart-to-chart
  • Text-to-chart:根据说明文本和表格数据生成图表图形。
  • Chart-editing:输入条件是一个图表图和描述如何编辑图表的说明。预计会创建一个新图形,该图形已根据给定图表图形的说明进行了修改。

4.3. Results

4.4. Qualitative results

总之实验表明ChartLlama在所有任务上都取得SOTA效果,进一步证明了数据集的有效性。

5. Conclusion

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

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

相关文章

SpringBootWeb增删改查入门案例

前言 为了快速入门一个SpringBootWeb项目,这里就将基础的增删改查的案例进行总结,作为对SpringBootMybatis的基础用法的一个巩固。 准备工作 需求说明 对员工表进行增删改查操作环境搭建 准备数据表 -- 员工管理(带约束) create table emp (id int …

[产品管理-25]:NPDP新产品开发 - 23 - 产品创新中的市场调研 - 定量市场调研的常见工具

目录 前言: 一、问卷调查 二、消费者测评组 三、概念测试与概念分类 概念测试 概念分类 四、感官检验 1、定义与特点 2、基本方法 3、应用领域 4、优势与局限性 五、眼动追踪 1、技术原理 2、应用领域 3、技术优势 4、市场现状与发展趋势 5、结论 …

创建github的个人主页

创建同名仓库 展示 github star 等信息 https://github.com/anuraghazra/github-readme-stats 添加贪吃蛇 https://github.com/Platane/snk?tabreadme-ov-file 配置好了之后 run workflow 即可

总结拓展十:SAP开发计划(上)

第一节 功能开发说明书介绍 1、功能开发的基础分类 报表查询开发单据打印开发功能开发增强开发接口开发 2、屏幕元素介绍 ——程序屏幕是SAP系统与用户之间的桥梁,屏幕由各种不同元素布局组成 示例:选择屏幕界面 单选输入框 多选输入框 设定默认…

.Net Core 生成管理员权限的应用程序

创建一个ASP.NET Core Web API项目 给解决方案设置一个名称 选择一个目标框架,这里选择的是 .NET 8.0框架 在Porperties文件夹中添加一个app.manifest文件 设置app.manifest文件属性,生成操作设置为嵌入的资源 双击解决方案名称,编辑WebAppli…

FP6296XR-G1 10A电流模式非同步PWM升压转换器芯片IC

一般说明 F1 6296是目前最先进的直流一直流转换器。是一个带有内置15mΩ功率MOSFET使此稳压器具有高功率效率。误差放大器的非逆变输入端连接到1.2V的精密基准电压。电流模式控制和外部补偿网络使系统稳定容易灵活。FP6296采用SOP-8L(EP)封装,可用于应用领域…

使用rust自制操作系统内核

一、系统简介 本操作系统是一个使用rust语言实现,基于32位的x86CPU的分时操作系统。 项目地址(求star):GitHub - CaoGaorong/os-in-rust: 使用rust实现一个操作系统内核 详细文档:自制操作系统 语雀 1. 项目特性 …

【ArcGISPro】配置模块

ArcGIS Pro 配置类似于加载项,但提供了扩展应用程序的其他方法。它可以帮助您设计更贴近您组织品牌和工作流的 ArcGIS Pro 版本。 托管配置是比 Add-in 更高级别的自定义。 配置可以提高加载项安全级别并添加非管理员指定的已知文件夹。 配置可以提供比插件更广泛…

如何使用麦肯锡方法做软件需求分析?

使用麦肯锡方法进行软件需求分析,可以借鉴其结构化思维、逻辑严密、以结果为导向的特点,来确保需求分析过程的高效性、准确性和全面性。 一、定义问题与目标 明确项目背景: 了解软件开发的目的、业务场景、用户需求等背景信息。 分析市场趋势…

数据结构——二叉搜索树、Map和Set

对于不同的数据结构,他们的使用场景是不一样的,map和set这两种数据结构主要用在搜索相关的场景中。学习这些之前我们先来了解一下二叉搜索树, 一、搜索树 1.1概念 二叉搜索树 又称 二叉排序树 ,它或者是一棵空树,或者…

【Java】线程的同步——synchronized、ReentrantLock

对同一个线程,能否在获取到锁以后继续获取同一个锁? 答案是肯定可以获取同一个锁。因为JVM 允许同一个线程重复获取同一个锁,这种能被同一个线程反复获取的锁,就叫做可重入锁。 一、synchronized同步锁 在 Java中synchronized 同步锁…

开放的数据时代:Web3和个人隐私的未来

在数字化和信息化的时代,数据隐私成为了公众关注的焦点。随着Web3技术的兴起,个人隐私保护进入了一个新的阶段。Web3作为去中心化的互联网架构,提出了对数据控制和隐私保护的新方案。本文将探讨Web3如何影响个人隐私的未来,并分析…

Vue3中的Pinia——管理应用程序的全局状态

介绍Pinia Pinia 是 Vue.js 的状态管理库,主要用于管理应用程序的全局状态。它是 Vuex 的替代品,提供了更简单和更灵活的 API。Pinia 的主要作用包括: 1. 状态管理:Pinia 允许你在应用中集中管理状态,方便不同组件之…

leetcode:验证回文串

[题目链接] string func(string s)//先将大写转换成小写&#xff0c;并且去除空格等&#xff0c;只保留小写字母 {string tmp;string::iterator it s.begin();while (it ! s.end()){//大写字母if (*it < 90 && *it>65)//A-Z的ASCII码为65-90{tmp *it 32;//a-z…

Redis存储原理

前言 我们从redis服务谈起&#xff0c;redis是单reactor&#xff0c;命令在redis-server线程处理。还有若干读写IO线程负责IO操作&#xff08;redis6.0之后&#xff0c;Redis之pipeline与事务&#xff09;。此外还有一个内存池线程负责内存管理、一个后台文件线程负责大文件的关…

大数据Flink(一百一十八):Flink SQL水印操作(Watermark)

文章目录 Flink SQL水印操作&#xff08;Watermark&#xff09; 一、为什么要有WaterMark 二、​​​​​​​​​​​​​​Watermark解决的问题 三、​​​​​​​​​​​​​​代码演示 Flink SQL水印操作&#xff08;Watermark&#xff09; 一、​​​​​​​为什么…

《黑神话悟空》黄眉打法技巧图文攻略详解

​黄眉是黑神话悟空第三章的关底的boss&#xff0c;很多的玩家都非常的好奇这个boss到底要怎么打&#xff0c;这里小编就为大家带来了黄眉这个boss的打法&#xff0c;我们不要使用法术&#xff0c;只使用禁字诀就可以击败这个boss&#xff0c;详细的内容可以在这里进行了解和查…

DevEco Profiler调优工具(二)

一、Profiler调优模板 3、Snapshot Insight 4、CPU Insight 5、Frame Insight 6、Launch Insight

硬件(驱动开发)

一、OSC基本架构&#xff08;片上系统&#xff09; OSC&#xff08;On-chip System Control&#xff0c;片上系统控制&#xff09;基本架构通常涉及片上系统中的各个组件如何进行协调与控制&#xff0c;以实现高效的处理、通信和管理。OSC架构在现代微处理器和系统单芯片&…

WebApi开发中依赖注入和RESTful 详解

Web API 开发中的依赖注入和 RESTful 详解 在现代 Web API 开发中&#xff0c;依赖注入&#xff08;Dependency Injection, DI&#xff09;和 RESTful 架构 是两个极为重要的概念。本文将详细探讨它们的定义、应用场景及在 Web API 开发中的最佳实践。 一、依赖注入 (Depende…