[论文阅读] ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning
原文链接: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 自动提取的许多新类型的任务。我们的模型在各种自动测量下为四个不同的下游任务设定了最先进的性能,而人工评估进一步证实了我们的方法在许多新任务上的有效性。我们相信我们的模型和指令调整数据集将成为未来研究的宝贵资源,并鼓励进一步探索图表理解和推理的独特问题领域。
相关文章:

[论文阅读] ChartInstruct: Instruction Tuning for Chart Comprehension and Reasoning
原文链接:http://arxiv.org/abs/2403.09028 源码链接:https://github.com/vis-nlp/ChartInstruct 启发:本文构建的instruction-tuning数据集以及使用该数据集对模型进行微调的过程都值得学习。 Abstract 研究对象:图表 研究…...

基于springboot+vue学生宿舍管理系统设计与实现
博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…...
【Android】模糊搜索与数据处理
【Android】模糊搜索与数据处理 本篇博客主要以根据输入内容动态获取城市为例进行讲解。 获取城市 这一部分主要是根据输入的信息去动态获取城市信息 首先定义了一个名为 NetUtil 的类,主要用于通过 HTTP 请求获取城市信息。 public class NetUtil {private stat…...

机器学习-KNN
KNN:K最邻近算法(K-Nearest Neighbor,KNN) 用特征空间中距离待分类对象的最近的K个样例点的类别来预测。 投票法:K 个样例的对数类别。 k1:最近邻分类 k 通常是奇数(因为我们根据这个K数据判断类别,如果…...
python 安装包 site-packages
1. site-packages 文件夹的位置 当我们通过 pip 或其他方式安装一个 Python 包时,这些包的文件就会被复制到 site-packages 文件夹下。 site-packages 文件夹通常位于 Python 的安装目录下的 Lib 文件夹内。具体的路径会根据你使用的操作系统和 Python 版本的不同而…...

大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

CentOS8.5.2111(3)实验之DHCP服务器架设
一、实验目标 1.掌握DHCP服务器的主配置文件各项申明参数及操作及其含义 2. 具备DHCP 服务器、中继服务器的配置能力 3. 具备测试客户端正常获取服务器分配地址的能力 4. 具备DHCP服务器故障排除能力 二、实训原理/流程 (一)项目背景 …...

机器学习(4):机器学习项目步骤(一)——定义问题
1. 机器学习项目的五大步骤 定义问题 收集数据和预处理 选择算法和确定模型 训练拟合模型 评估优化模型性能 2. 定义问题的主要任务 刨析业务场景,设定清晰目标,同时还要确定当前问题属于哪一种机器学习类型。 3. “易速鲜花”项目案例 项目任务&a…...
C#中Socket通信常用的方法
创建Socket 在C#中创建一个Socket对象的基本步骤如下: 引入命名空间: 首先,确保你的文件顶部包含了以下命名空间的引用: using System.Net; using System.Net.Sockets; 创建Socket实例: 你可以创建一个Socket实例&am…...

【JavaEE】——单例模式引起的多线程安全问题:“饿汉/懒汉”模式,及解决思路和方法(面试高频)
阿华代码,不是逆风,就是我疯,你们的点赞收藏是我前进最大的动力!!希望本文内容能够帮助到你! 目录 一:单例模式(singleton) 1:概念 二:“饿汉模…...
huggingface实现中文文本分类
目录 1 自定义数据集 2 分词 2.1 重写collate_fn方法 3 用BertModel加载预训练模型 4 模型试算 5 定义下游任务 6 训练 7 测试 #导包 import torch from datasets import load_from_disk #用于加载本地磁盘的datasets文件 1 自定义数据集 #自定义数据集 #…...

基于python+控制台+txt文档实现学生成绩管理系统(含课程实训报告)
目录 第一章 需求分析 第二章 系统设计 2.1 系统功能结构 2.1.1 学生信息管理系统的七大模块 2.1.2 系统业务流程 2.2 系统开发必备环境 第三章 主函数设计 3.1 主函数界面运行效果图 3.2 主函数的业务流程 3.3 函数设计 第四章 详细设计及实现 4.1 学生信息录入模块的设计与实…...

Spring Boot 整合MyBatis-Plus 实现多层次树结构的异步加载功能
文章目录 1,前言2,什么是多层次树结构?3,异步加载的意义4,技术选型与实现思路5,具体案例5.1,项目结构5.2,项目配置(pom.xml)5.3,配置文件…...

网络工程师指南:防火墙配置与管理命令大全,零基础入门到精通,收藏这一篇就够了
本指南详细介绍了防火墙的配置与管理命令,涵盖了防火墙的工作原理、常见配置命令、安全策略与访问控制、日志管理与故障排查,并通过实战案例展示了如何有效防御网络攻击。通过学习本指南,网络工程师能够系统掌握防火墙的配置与管理技能&#…...

英特尔终于找到了Raptor Lake处理器崩溃与不稳定问题的根源
技术背景 在过去的几个月里,一些用户报告称他们的第13代和第14代Intel Core“Raptor Lake”处理器遇到了系统崩溃和不稳定的情况。这些问题最初在2024年7月底被英特尔识别出来,并且初步的诊断显示,这些问题与微码有关,该微码使CP…...
Shp2pb:Shapefile转Protocol Buffers的高效工具
Shp2pb是一个实用工具,专门用于将Shapefile(shp)格式转换为Protocol Buffers(protobuf)文件。这对于以更高效、更紧凑的方式处理地理数据特别有用。以下是关于如何安装和使用Shp2pb工具的详细说明,以及一个…...

Elasticsearch使用Easy-Es + RestHighLevelClient实现深度分页跳页
注意!!!博主只在测试环境试了一下,没有发到生产环境跑。因为代码还没写完客户说不用弄了( •̩̩̩̩_•̩̩̩̩ ) 也好,少个功能少点BUG 使用from size的时候发现存在max_result_window10000的限制&…...
基于ASRPRO的语音应答
做这个的起因是为了送女朋友,而且这东西本身很简单,所以在闲暇之余尝试了一下。 这个工程很简单,只通过对ASRPRO进行编程即可。 先看效果。(没有展示所有效果,后续会列出来所有对话触发) 语音助手示例1 语音助手示例2 代码部分使用天文Block编辑,找了一圈好像只…...

3D看车汽车案例,车模一键换皮肤,开关车门,轴距,电池功能
3D 汽车案例 网址: http://car.douchuanwei.com/...

数据结构-4.栈与队列
本篇博客给大家带来的是栈和队列的知识点, 其中包括两道面试OJ题 用队列实现栈 和 用栈实现队列. 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条, 如果分享不成功, 那我就会回你一下,那样你就分享成功啦. 你们的…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...