[论文阅读] ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning

news2024/11/17 21:56:37

原文链接:http://arxiv.org/abs/2403.09028

源码链接:https://github.com/vis-nlp/ChartInstruct

启发:本文构建的instruction-tuning数据集以及使用该数据集对模型进行微调的过程都值得学习。 

Abstract

研究对象:图表

研究问题:微调视觉语言模型以更好的解决图表问答和摘要任务

研究方法:引入了 ChartInstruct:一种新颖的图表特定视觉语言教学跟踪数据集,由 191K 条指令和 71K 图表生成。然后,我们提出了两个不同的系统,用于对此类数据集进行指令调整:(1) 一个端到端模型,将用于图表理解的视觉编码器与 LLM 连接起来;(2) 采用两步方法提取图表数据表并将其输入到 LLM 中的管道模型。

优势:在四个下游任务的实验中,我们的模型获得最先进的结果。进一步的评估表明,我们的指令调优方法支持各种真实世界的图表理解和推理场景,从而将模型的范围和适用性扩展到新的任务类型。

1 Introduction

        早期工作试图通过微调最初在语言和视觉任务上训练的模型来解决图表相关任务。但是,此类模型可能不是特定于图表的任务的最佳选择,因为它们忽略了图表结构的显式建模,例如图表元素(如条形、图例和轴)之间的关系。最近的模型,如 UniChart(Masry 等人,2023 年)、Chart-T5(周 等人,2023 年)和 MatCha(Liu 等人,2022b)是专门为图表设计的,考虑了图表元素和值的视觉和数学推理。但是,他们通常局限于有限来源的图表,并专注于少数特定的任务,这限制了它们在现实世界中的适用性。事实上,在现实世界广泛的应用中,我们无法确定这些模型能适应哪些应用。

不少论文都说MatCha等模型局限于有限来源的图表数据集,但是论文真的解决了这个问题吗?难不成真有无限的数据集?另外,这些论文提到泛用性问题,可是论文本身依旧局限于QA和摘要生成,并没能解决更多的问题,这篇论文有改进吗?

        一个有效解决方案是指令调优(instruction tuning),相关文章有:

  • Training language models to follow instructions with human feedback
  • Scaling instruction-finetuned language models
  • Alpaca: A Strong, Replicable Instruction-Following Model
  • Vicuna: An opensource chatbot impressing gpt-4 with 90%* chatgpt quality
  • Llama: Open and efficient foundation language models

        这些论文表明在instruction-following数据集(包含图表图像以及问答对,不过标注的答案会包含推理过程,从而让模型在训练时能学习正确的推理步骤)上训练LLM能够更好的理解用户意图。然而,图表理解和推理的指令调整仍未得到充分探索,现有方法的instruction-tuning任务缺乏多样性,限制了它们在实际图表理解场景的有效性。

        在本文中,我们介绍了图表指令调优 (Chart Instruction Tuning),为构建基于 VLM 的通用图表理解和推理助手铺平了道路。为此,我们开发了一个新的图表指令调整数据集,其中包含从 157 个在线平台收集的真实世界图表,涵盖了广泛多样的视觉风格。利用 GPT-3.5(OpenAI-Blog,2022 年)、GPT-4(OpenAI,2023 年)和 Gemini(Team et al.,2023 年)等高级 LLM,我们生成了 191K 条指令,涵盖反映真实世界应用的广泛任务(图 1)。

或许从157个渠道收集的图表可以称作unlimited range of sources,但是下图所示的9种任务类型实在难以称作“涵盖广泛任务”,因为其中部分任务本质并没有区别,这些问题在作者之前的文章UniChart中已经有体现,ChartLlama涵盖范围更广

         我们设计了两种系统:(1)端到端系统,修改Llava架构,使用Unichart的视觉编码器替换Llava本身的CLIP编码器。(2)两步式方法,先图表结构分析,从图表中提取原始数据表,然后将表格和question作为LLM的输入,得到answer。

        通过四个基准进行综合评估:ChartQA、Chart2Text、OpenCQA、ChartFC。并且进一步采取了人工评估。

        我们的主要贡献包括:(i) 利用 LLM 构建了一个新的带有真实世界图表和广泛任务的指令跟踪语料库,(ii) 两个专门为图表理解任务量身定制的不同系统;(iii) 广泛的评估,展示了 ChartInstruct 在现有图表相关基准任务中的最新性能,同时也将其适用性扩展到新任务。

2 Related Work

2.1 Chart Modeling

2.2 Visual Instruction Tuning

2.3 Chart Domain Downstream Tasks

3 Chart Instruction Data Generation

3.1 Chart Corpora Collection

        图表图像来源有两个:已有的公共数据集和Web爬取图表。公共数据集选择了UniChart论文数据集,该数据集包含611K图表,不过这个数据集的数据来源较为受限。所以我们构建了WebCharts,包含41K图表,这个数据集从各个网站根据关键词检索图表图像并抓取,然后进行筛选,由于这些图标缺少原始表格,所以我们使用Gemini Pro Vision自动提取表格与标题

3.2 Instruction Data Generation

        图表指令数据集生成,包含190774条指令,对应70882张图表,涵盖图表理解和推理的各个方面。

(1)Tasks Selection

  • Summarization and QA:
  • Fact Checking:输入关于图表的一段描述文本,需要模型判断这段描述是否准确,并给出accept或者refute反馈以及解释。该任务可以让模型减少事实性错误,提高图表解释准确性。
  • Chain-of-thought (CoT) Reasoning:旨在增强模型执行复杂数学和视觉推理的能力,这也是目前许多模型有待改进的地方,本文设计了两种类型的问题:变量相关问题,涉及统计量计算等数学运算问题;变量无关问题,侧重数值检索、比较和逻辑分析。
  • Code Generation:生成可执行的 Python 脚本来回答用户问题。
  • Novel Tasks:让LLM生成新的图表相关任务,需要注意不能与上述任务重复,这在增强指令集的多样性方面起着至关重要的作用。

(2) Prompt Design

        要为不同的任务提供一定的指示,我们首先创建了一组提示符模板,每个模板包含:

  • 任务描述
  • 输入图表数据表,以及图表标题等元数据
  • 输出约束(如果有)
  • 输出格式。

(3) Input and Output Generation

        设计好prompt模板之后,利用GPT3.5 Turbo 和 GPT4为每个模板创建input-output实例,由于图表数量有限,我们为每个图表都会生成多种类型的任务实例。

3.3 Dataset Analysis

4 Modeling 

4.1 End-to-End System

        利用LLaVa架构,将其中的CLIP编码器替换成UniChart视觉编码器。对于语言解码器,本文研究了decoder-only(Llama2)和encoder-decoder(Flan-T5)两种类型的架构。在 Llama2 设置中,提取的视觉特征直接注入到语言解码器中,而在 Flan-T5 模型中,这些特征和指令首先由语言编码器处理,然后解码器生成文本

        在微调时,先冻结视觉编码器和LLM部分,对adaptor进行微调。这是一个对齐阶段,将UniChart视觉编码器的视觉特征与LLM的输入嵌入空间对齐,从而使LLM能够准确解释图表图像,此阶段的两个特定任务是:从图表生成表格和汇总图表内容。对齐后,下一阶段是冻结视觉编码器,训练adaptor和LLM

4.2 Pipeline System 

        在第一阶段,也就是图表转换成表格阶段,使用UniChart模型,该模型已被证明能够从图表图像生成高质量的数据表。第二阶段,使用Llama2和Flan-T5模型进行实验。

        与端到端方法不同的是,端到端方法传到LLM的是视觉特征,而此处传入LLM的是表格文本,所以不需要进行对齐,可以直接对LLM进行微调。

5 Experiments and Results

5.1 Experimental Setup 

5.2 Results and Findings

5.3 Human Evaluation on Chart Tasks

5.4 Error Analysis and Challenges 

Value Estimation and Comparison

当图表中的细节过于复杂或者过于简单时,会导致视觉元素与其相关值匹配、数值估算、基于视觉属性的比较遭遇困难。

Factual Errors

尽管我们的模型显示出改进的文本生成质量和更好的可用信息利用率,但它们仍然会产生图表未提及或事实不正确的陈述。

Numerical Reasoning

模型在某些数值推理任务上依旧不够可靠

模型在指标上面有改进,但原本存在的问题依旧存在,只是有所优化,但并没有对问题作出根源性解决

6 Conclusion 

        我们推出了 ChartInstruct,这是一个自动生成的图表相关指令数据集和两个指令系统,专为广泛的图表相关任务而设计。据我们所知,这是第一个指令调整数据集,它不仅包括预定义的任务,还包括 LLM 自动提取的许多新类型的任务。我们的模型在各种自动测量下为四个不同的下游任务设定了最先进的性能,而人工评估进一步证实了我们的方法在许多新任务上的有效性。我们相信我们的模型和指令调整数据集将成为未来研究的宝贵资源,并鼓励进一步探索图表理解和推理的独特问题领域。

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

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

相关文章

yakit使用教程(一,下载并进行基础配置)

一,yakit简介 YAKIT(Yet Another Knife for IT Security)是一款网络安全单兵工具,专为个人渗透测试员和安全研究人员设计。它整合了一系列实用的安全工具,例如密码破解工具、网络扫描器、漏洞利用工具等,帮…

空间复杂度动态顺序表

目录 1>>闲话 2>>空间复杂度 3>>顺序表!!(有点难度) 3.1>>静态顺序表 3.2>>动态顺序表 3.2.1>>初始化动态顺序表 3.2.2>>实现尾插 4>>结语 1>>闲话 感谢大家对小…

【YOLO目标检测反光衣数据集】共2388张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式:YOLO格式 图片数量:2388 标注数量(txt文件个数):2388 标注类别数:2 标注类别名称:reflective_clothes、other_clothes 数据集下载:反光衣数据集 图片示例 数据…

HJ50-四则运算:栈的运用、中缀表达式转后缀表达式并计算结果

文章目录 题目一、分析1.1表达式预处理1.2中缀表达式转后缀1.3 后缀表达式计算结果 二、答案 题目 一、分析 通过利用栈将中缀表达式转换为后缀表达式,在根据后缀表达式计算运算结果。由于包含负数操作数的情况,并且操作数位数不固定为1,因此…

【算法篇】二叉树类(3)(笔记)

目录 一、Leetcode 题目 1. 二叉树的最近公共祖先 2. 二叉搜索树的最近公共祖先 (1)递归法 (2)迭代法 3. 二叉搜索树中的插入操作 (1)递归法 (2)迭代法 4. 删除二叉搜索树中…

时间序列LSTM实现

这个代码参考了时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)_lstm预测模型-CSDN博客 结合我之前所学的lstm-seq2seq里所学习到的知识对其进行预测 import time import numpy as np import pandas as pd import torch import…

革命题材网络电影《突进夹金山》将于10月上线

“长征万里险,最忆夹金山”。这座雪山不仅见证了红军战士们的英勇与牺牲,也成为了中国革命历史上的一座重要里程碑。 革命题材网络电影《突进夹金山》,作为四川省2024年度重点影视剧项目以及纪念红军长征90周年献礼的红色作品,由谢…

死磕P7: JVM类加载那些事儿,一起探知类的前世今生(二)

这是「死磕P7」系列第 006 篇文章,欢迎大家来跟我一起 死磕 100 天,争取在 2025 年来临之际,给自己一个交代。 接上篇,上一篇介绍了 JVM 类加载过程及类的生命周期,回顾一下: 死磕P7: JVM类加载那些事儿&a…

周文强聚焦助学育人,爱心图书室项目圆满完成

日前,一场充满爱心与希望的公益活动在四川甘孜州乡城县尼斯寄宿制小学拉开帷幕。这次名为“520爱心图书室”的公益活动,旨在通过捐赠图书的方式,支持基层青少年的阅读成长。作为此次活动的积极参与者,周文强不仅向学校捐赠了价值1…

python 高效读取多个geojson 写入一个sq3(Sqlite) 、效率提高90%+

1.问题缘由: 由于工作需求,需要将多个(总量10G)geojson文件写入到sq3库,众所周知,sqlite 不支持多线程写入,那该怎么办呢,在网上也查了很多策略,都没有达到立竿见影的效果…

甄选范文“论分布式存储系统架构设计”,软考高级论文,系统架构设计师论文

论文真题 分布式存储系统(Distributed Storage System)通常将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的…

车辆重识别(去噪扩散概率模型)论文阅读2024/9/27

[2] Denoising Diffusion Probabilistic Models 作者:Jonathan Ho Ajay Jain Pieter Abbeel 单位:加州大学伯克利分校 摘要: 我们提出了高质量的图像合成结果使用扩散概率模型,一类潜变量模型从非平衡热力学的考虑启发。我们的最…

linux驱动设备程序(内核层、应用层)

一、linux驱动程序 1、分类 字符设备&#xff08;驱动&#xff09;、块设备&#xff08;驱动&#xff09;、网络设备&#xff08;驱动&#xff09;。 2、核心 应用程序运行在用户空间&#xff08;3G&#xff09;&#xff1b;<系统调用>——><陷入>——>&…

正则表达式在过滤交换机lldp信息的应用举例

#include <iostream> #include <string> #include <regex> #include <vector> #include <unordered_map> #include <sstream> #include <unistd.h> // For usleep// 假设存在的 LOG_INFO 和 LOG_WARNING 函数 #define LOG_INFO(...)…

17.第二阶段x86游戏实战2-线程发包和明文包

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

基于docker-compose部署openvas

目录 0.部署openvas 1.编辑docker-compose文件 2.运行compose 3.访问openvas 4.openvas扫描 5.创建任务 6.点击Task Wizard ​编辑 7.输入通讯的IP地址 8.下载报告 9.下载完成 0.部署openvas 1.编辑docker-compose文件 vim docker-compose.yaml version: 3service…

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024 前言简介任务定义模型架构Encoding Dialogue InformationCapturing Associated InformationPredicting Emotion and Generating Response损失函数问题前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦…

通信工程学习:什么是MAI多址干扰

MAI:多址干扰 MAI多址干扰(Multiple Access Interference)是无线通信领域,特别是在码分多址(CDMA)系统中,一个关键的干扰现象。以下是对MAI多址干扰的详细解释: 一、定义 多址干扰是指在CDMA系统中,由于多个用户的信号在时域和频域上是混叠的,从而导…

区块链可投会议CCF C--FC 2025 截止10.8 附录用率

Conference&#xff1a;Financial Cryptography and Data Security (FC) CCF level&#xff1a;CCF C Categories&#xff1a;network and information security Year&#xff1a;2025 Conference time&#xff1a;14–18 April 2025, Miyakojima, Japan 录用率&#xff1…

阿里云oss配置

阿里云oss配置 我们可以使用阿里云的对象存储服务来存储图片&#xff0c;首先我们要注册阿里云的账号登录后可以免费试用OSS服务。 之后我们打开控制台&#xff0c;选择对象存储服务&#xff0c;就看到我们下面的画面&#xff1a; 我们点击创建Bucket,之后就会出现如下图界面…