原文链接: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 代码的重要参考。它提供有关可用于创建图表的可用函数和特性的信息。通过该文档,该模型甚至可以创建上下文中没有的新样式的图表。
例如:
- 函数名称:bar()
- 参数:
- x:X轴的数据点
- y:Y轴的数据点
- color:柱状图的颜色
- 返回值:图像
上下文示例:这些上下文示例是从预先选择的高质量代码中采样的。这有助于促进 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效果,进一步证明了数据集的有效性。