DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读
文章链接:https://arxiv.org/abs/2308.01979http://arxiv.org/abs/2212.10505https://arxiv.org/abs/2308.01979
源码链接:https://github.com/cse-ai-lab/RealCQA
启发:two-stage方法可能是未来主要研究方向,能够增强模型可解释性,并且能有效利用LLM的优点,更加适应真实数据集。
Abstract
理解图表需要很强的推理能力,之前的最先进 (SOTA) 模型至少需要数以万计的训练示例,然而推理能力仍然非常有限,尤其是在复杂的人工编写的查询中。这篇论文提出了第一个用于视觉语言推理的少样本(few-shot)解决方案,我们将视觉语言推理的挑战分解为两个步骤:(1)图表到文本的翻译,(2)对翻译后的文本进行推理。该方法的关键在于一个模态转换模块,称为DEPLOT,它将图表的图像转换为线性化的表格。DEPLOT的输出可以直接用于提示预训练的大型语言模型(LLM),利用LLM的少样本推理能力。为了获得DEPLOT,我们通过建立统一的任务格式和指标,规范了图表到表格的任务,并在这一任务上端到端地训练DEPLOT。DEPLOT然后可以与LLM以即插即用的方式一起使用。
1.Introduction
对视觉语言(如绘图和图表)进行多模态推理是一项极其复杂的任务。对于下游任务,例如在CQA,模型需要首先从图像中提取相关信息,以合理的方式组织它们,然后对提取的条目进行推理。早先的研究采取端到端的解决方案(输入图像与问题,输出答案,没有中间结果),但端到端方法需要在大量任务数据上进行微调,即使在微调之后,它们在需要复杂推理的查询仍然表现不佳。例如,当前的 SOTA 模型 MATCHA (Liu et al., 2023a) 在 ChartQA 数据集(Masry et al., 2022)上仅达到 38.2% 的准确率。
与此同时,GPT-3和 PaLM等大型语言模型 (LLM) 已经展示了卓越的小样本推理技能,而无需昂贵的人工注释。然而,如何将LLM应用到多模态推理任务中还是一个重要问题。在这项工作中,我们建议将多模态视觉语言推理问题分解为:(1) 将输入图表图像转换为表格,以及 (2) 将表格传递给 LLM 进行one-shot推理。
该方法的关键是一个名为 DEPLOT 的模态转换模块,该模块将图表映射到表格。 DEPLOT 是一个端到端的图像到文本 Transformer 模型,其任务是 plot-to-table 翻译。
在将绘图图像准确地转换为文本(作为线性化表)后,我们可以将 DEPLOT 的输出与查询一起传递给 LLM 来计算答案。我们利用新颖的提示技术,如思维链 (CoT) 、Self-Consistency (SC)和思维程序 (PoT)来得出更准确的答案。
综上所述,这项工作有以下贡献:(1) 我们标准化了 plot-to-table 任务,并提出了一个统一且能提供有用信息的表格评估指标。(2) 我们提出了一个高效的模态转换模型 DEPLOT,将多模态任务转换为纯语言任务,然后利用 LLM 一步解决。
2.Background
Plug-and-play of multimodal pretrained models:
Zero & few-shot reasoning over tables:
Information extraction from plots and charts:早先关于图表信息提取的工作通常基于OCR、对象检测\分割系统、人为定义规则等方式,这些方法一般局限于特定类型图表。ChartBERT (Akhtar et al., 2023) 采用基于 OCR 的方法从图表中提取文本,并使用另外两个阶段的神经方法来处理提取的文本。ChartOCR(Luo等人,2021 年)是一个混合系统,接受所有类型的图表输入,并已被下游任务模型采用,用于图表 QA(Masry等人,2022 年)和summarization(Kantharaj等人,2022 年)。DEPLOT在图表转表格方面能取得比ChartOCR更好的效果。
除了方法,衡量图表提取结果的评估指标也不完善。之前为不同图表设计不同的评估指标,但这些评估指标只是衡量数据提取的过程,而不是最终的提取结果。所以我们提出了一个统一的表格评估指标(因为数据提取的结果就是表格)。
3.Standardizing the Plot-to-table Task
视觉推理任务分为两个步骤:(1)使用 DEPLOT 将图表转换为文本(表格形式);(2)将表格输入到 LLM 进行推理。其中第一步是至关重要的,未来得到更精确的结果,我们将标准化 plot-to-table 转换任务,并提出一个用于评估 plot-to-table 转换的新指标。
3.1 Task Definition
早先有工作将表格的评估指标定义为相对数字集相似度(Relative Number Set Similarity,RNSS),该指标仅查看预测的无序数字条目集,并衡量预测集与目标数字集的匹配情况。原理如下
(1)Relative Number Set Similarity (RNSS)
设模型预测表格中的数据为 ,目标表格中的数据为
,计算每一对数据的相对距离公式(最后计算得到M*N个相对距离,组成距离矩阵):
接下来在距离矩阵中寻找一个最佳匹配来最小化整体距离,定义一个二值矩阵(个人理解这个二值矩阵应该是每一行、每一列都仅有一个元素为1,需要有多个X,每个X代表一种匹配),最终的score的计算公式为:
但是,RNSS有一些局限:无法定位数据在表格中的位置;完全忽略了非数字数据;在表格重建中没有区分准确率与回调率。而我们认为,好的评估指标应该满足:
(i)不涉及表格行列的排序,以及行列的转置。(预测的表格可能行标题变成列标题,或者标题顺序与target不一致,但这些并不是数据提取好坏的评判标准)
(ii)同时考虑数字型数据与非数字数据,允许有一定的误差,但要在阈值以内。
(iii)直观反映准确度和回调率的损失。
(2)Relative Mapping Similarity (RMS)
我们提出RMS,它将表视为从行和列标题(r, c)到单个值v的映射的无序集合,我们将每个条目写为和
,分别表示预测表P = {pi}1≤i≤N和目标表T = {tj}1≤j≤M中的每个条目。
文本型数据之间的距离可以使用Levenshtein距离()衡量,其中
是一个阈值,超过阈值就被设置为最大值1(评估键的相似程度)。
数字型数据的距离计算公式为(评估值的相似程度):
总的距离计算公式为:
RMS的计算公式如下:
3.2 Training Plot-to-table Conversion Models
我们使用最先进的视觉语言模型MATCHA (Liu等人,2023a)的架构和权重初始化了一个图像到文本的encoder-decoder架构Transformer模型。我们继续使用MATCHA的checkpoint进行微调,任务是将图表映射到其基础数据表。该表被线性化为一个文本序列(Markdown格式),其中|分隔单元格,\n分隔行。DEPLOT从左到右生成表格。
训练语料库是一系列的图表-表格对,有合成数据也有真实数据(主要来源是ChartOCR、ChartQA、PlotQA)。
3.3 Human Eval of Plot-to-table Metrics
经过人为评估,证明RMS的有效性
4.Prompting LLMs for Reasoning
DEPLOT可以将给定的图表/图形转换成其文本形式(作为线性化表格)。然后,我们可以通过连接表格和question来构建文本提示。我们遵循典型的上下文学习范式,在当前提示前添加一个one-shot例子。
完整的提示使用了链式思维(CoT)或思维程序(PoT),这些提示稍微修改了Chen(2023)和Chen 等(2022)用于评估表格数据推理的版本。除了CoT提示外,我们还探索了将DEPLOT与大语言模型(LLM)相结合并加上自一致性(SC)(Wang等,2023),SC会采样一组不同的推理路径,并选择多数投票的答案,而不是像CoT那样依赖于一个贪婪解码的答案。
(CoT:是指在解决复杂问题时,通过明确的、中间推理步骤逐步达到最终答案的思维过程。这种方式强调展示从问题到解决方案的详细推理路径,而不是直接给出结论。)
(PoT:是一种更结构化、更程序化的思维过程,与编程类似。PoT 通过定义明确的操作步骤、条件和循环,来系统处理复杂任务。它可以视为将编程逻辑应用于思维过程,以精确指示每一步操作。)
(CoT: 更关注推理过程本身,突出连贯性和逻辑性,但不一定严格程序化。PoT: 更关注具体的操作步骤,逻辑类似编程语言,强调明确的控制流和条件判断。在本文的情景下,CoT表现为用文字来表达推理过程的逻辑,PoT表现为用伪代码来表达逻辑,如下图所示)
为了简化对大数字的算术运算,我们还测试了提示模型生成可以通过解释器执行的Python代码。为此,我们将Chen等(2022)和Gao等(2022)的范式适应于表格的上下文。未来的工作可以选择利用微调后的表格问答模型,如Herzig等(2020),或使用生成SQL程序的LLM(Cheng等,2023),这可能需要多次调用LLM来执行不同的原子操作。
5.Experiment
数据集:
(1)ChartQA 包含两个集合:augmented (aug.) 和 human,其中 augmented set 是合成生成的,而 human set 是人类编写的。人类编写问题通常更加多样化和复杂,需要更多的推理,而合成问题通常是高度模板化的。
(2)PlotQA 是纯合成的。它包含v1和v2集合,其中v1主要是提取问题,v2更侧重于数字推理。
评估指标:RNSS 和 RMSF1 都用于评估图到表的翻译
实验结果:
DEPLOT在ChartQA human set上表现显著优于其他模型,原因可能是因为合成数据集是有固定模板的,其他模型在大量合成数据集上进行训练,在这些模板的数据上可以达到较高准确度。但是,真实数据集中有许多新的类型(分布外数据),面对分布外数据,其他模型的表现就明显下降,这时候DEPLOT的few-shot就体现出了优势,因为它只需要少量样本就能快速适应分布外数据。
6.Analyses and Discussions
6.1 Case Study and Error Analysis
通过实际案例展示了DEPLOT+LLM 的优缺点。第一个例子展示了DEPLOT+FlanPaLM(使用CoT或PoT)相对于MATCHA的优越性。第二个例子暴露出DEPLOT+LLM丢失了图表图像部分视觉特征的缺陷(LLM的输入只有表格和question,而没有颜色信息)。
6.2 Out-of-distribution Analysis
7.Conclusion
我们提出了 DEPLOT+LLM,这是一种通过将任务分解为两个步骤来进行视觉语言推理的方法。第一步是使用DEPLOT将图表转换为表格。第二步是将 plot-to-text 模型与现成的 LLM 相结合,只需one-shot监督即可在表格上进行推理。 我们通过提出一个新的表相似性比较指标来标准化 plot-to-table 转换任务,该指标考虑了表的结构和数值,但不受列/行排列的影响。借助新指标,我们将图像转文本模型 DEPLOT 的性能与基于 OCR 的基线和三个端到端基线进行比较,从而实现最佳改进。然后,转换模型用于 ChartQA 和 PlotQA 的下游任务。在 ChartQA 人工查询集上,与使用数千个示例微调的端到端 SOTA 相比,一次性 DEPLOT+LLM 模型实现了 +29.4% 的性能。我们还进行了全面的分析,以了解 DEPLOT+LLM 框架的得失,并强调编码视觉属性可以成为未来探索的有益方向。
相关文章:

DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读
文章链接:https://arxiv.org/abs/2308.01979http://arxiv.org/abs/2212.10505https://arxiv.org/abs/2308.01979 源码链接:https://github.com/cse-ai-lab/RealCQA 启发:two-stage方法可能是未来主要研究方向,能够增强模型可解释…...

从 HDFS 迁移到 MinIO 企业对象存储
云原生、面向 Kubernetes 、基于微服务的架构推动了对 MinIO 等网络存储的需求。在云原生环境中,对象存储的优势很多 - 它允许独立于存储硬件对计算硬件进行弹性扩展。它使应用程序无状态,因为状态是通过网络存储的,并且通过降低操作复杂性&a…...
Rust 常见问题汇总
问题1: cargo build 一直提示Blocking waiting for file lock on package cache。 在 cargo.toml 文件中添加了依赖之后,运行 cargo build 命令时,如果卡在 blocking waiting for file lock on package cache lock 这里, 后来发…...
java泛型类与泛型方法
Java泛型类和泛型方法是Java泛型编程中的重要组成部分。它们允许开发者编写类型安全且高度复用的代码。下面详细介绍泛型类和泛型方法的概念、用法和示例。 泛型类 泛型类是在类定义中使用类型参数的类,可以指定具体的类型实例化该类。这样可以确保类型安全&#…...
Android String资源文件中,空格、换行以及特殊字符如何表示
空格: 例:<string name"test">test test</string> 换行:\n 例:<string name"test">test \n test</string> tab:\t …...
CUDA及GPU学习资源汇总
CUDA C Programming Guide 的中文翻译版GPU中的SM和warp的关系推荐几个不错的CUDA入门教程CUDA编程入门极简教程...

uniapp vue3 梯形选项卡组件
实现的效果图: 切换选项卡显示不同的内容,把这个选项卡做成了一个组件,需要的自取。 // 组件名为 trapezoidalTab <template> <view class"pd24"><view class"nav"><!-- 左侧 --><view cla…...
如何在微信小程序中实现WebSocket连接
微信小程序作为一种全新的应用形态,凭借其便捷性、易用性受到了广大用户的喜爱。在实际开发过程中,实时通信功能是很多小程序必备的需求。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,能够实现客户端与服务器之间的实时通信。本文…...
二级等保测评中安全物理环境的重要性及高危项分析
当今数字化时代,信息安全至关重要。网络安全等级保护测评是确保信息系统安全稳定运行的重要手段之一,其中二级等保测评对于许多企业和组织来说是必须要达到的安全标准。 而安全物理环境作为等保测评的重要组成部分,其重要性不容忽视。 安全物…...

C++11——lambda
lambda lambda的介绍lambda的使用lambda的细节->捕捉列表 lambda的介绍 lambda是匿名函数,再适合的场景去使用可以提高代码的可读性。 场景: 假设有一个Goods类需要进行按照价格、数量排序 class Goods {string name;size_t _price;//价格int num;/…...
Dubbo3序列化安全问题
序列化安全 在 Dubbo 3.0 中,序列化协议的安全性得到了加强。 1. 序列化安全性升级 Triple 协议: 推荐使用 Triple 协议 的非 Wrapper 模式,该模式在安全性上更为严格。需要开发人员编写 IDL(接口描述语言)文件,这虽…...

秒懂Linux之共享内存
目录 共享内存概念 模拟实现共享内存 创建key阶段 编辑创建共享内存阶段 删除共享内存阶段 查看共享内存属性阶段 挂接共享内存到进程阶段 取消共享内存与进程挂接阶段 进程通信阶段 添加管道改进版 共享内存函数 shmget函数 shmat函数 shmdt函数 shmctl函数 共享内存概念 共…...

【计算机网络】网络层协议解析
网络层的两种服务IPv4分类编址划分子网无分类地址 IPv4地址应用IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报 IPv4数据报首部格式ICMP网际控制报文协议虚拟专用网VPN与网络地址转换NAT 网络层主要任务是实现网络互连,进而实现数据包在各网络之间的传…...
sqlist void reverse(SqList A)
#include <stdlib.h> #include <stdio.h> #include <iostream> using namespace std; #define INIT_SIZE 5 #define INCREMENT 10 # define OK 1 # define ERROR 0/* 定义ElemType为int类型 */ typedef int ElemType; void input(ElemType &s); void out…...

聊聊Thread Local Storage
聊聊ThreadLocal 为什么需要Thread Local StorageThread Local Storage的实现PThread库实现操作系统实现GCC __thread关键字实现C11 thread_local实现JAVA ThreadLocal实现 Thread Local Storage 线程局部存储,简称TLS。 为什么需要Thread Local Storage 变量分为全…...

WEB攻防-JS项目Node.js框架安全识别审计验证绕过
知识点: 1、原生JS&开发框架-安全条件 2、常见安全问题-前端验证&未授权 详细点: 1、什么是JS渗透测试? 在JavaScript中也存在变量和函数,当存在可控变量及函数调用即可参数漏洞 2、流行的Js框架有哪些? …...

STM32——SPI
1.SPI简介 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚…...

【云安全】云上资产发现与信息收集
一、云基础设施组件 1、定义 在云计算基础架构中,基础设施组件通常包括:计算、存储、网络和安全等方面的资源。例如,计算资源可以是虚拟机、容器或无服务器计算引擎;存储资源可以是对象存储或块存储;网络资源可以是虚拟…...

flask搭建微服务器并训练CNN水果识别模型应用于网页
一. 搭建flask环境 概念 flask:一个轻量级 Web 应用框架,被设计为简单、灵活,能够快速启动一个 Web 项目。CNN:深度学习模型,用于处理具有网格状拓扑结构的数据,如图像(2D网格)和视频(3D网格&a…...

数据篇| 关于Selenium反爬杂谈
友情提示:本章节只做相关技术讨论, 爬虫触犯法律责任与作者无关。 LLM虽然如火如荼进行着, 但是没有数据支撑, 都是纸上谈兵, 人工智能的三辆马车:算法-数据-算力,缺一不可。之前写过关于LLM微调文章《微调入门篇:大模型微调的理论学习》、《微调实操一: 增量预训练(Pretrai…...

MySQL高阶1890-2020年最后一次登录
目录 题目 准备数据 分析数据 题目 编写解决方案以获取在 2020 年登录过的所有用户的本年度 最后一次 登录时间。结果集 不 包含 2020 年没有登录过的用户。 返回的结果集可以按 任意顺序 排列。 准备数据 Create table If Not Exists Logins (user_id int, time_stamp …...
update-alternatives官方手册
下述手册超链接都是英文,内容差不多,看一个就行 Debian系统的Ubuntu系统的《The Linux Programming Interface》图书上的...

cesium.js 入门到精通(5-2)
在cesium 的配置中 有一些参数 可以配置地图的显示 显示出 水的动态显示 山的效果 相当于一些动画显示的效果 var viewer new Cesium.Viewer("cesiumContainer", {infoBox: false,terrainProvider: await Cesium.createWorldTerrainAsync({requestWaterMask: tru…...
LINUX的PHY抽象层——PAL
英文原文参考: https://www.kernel.org/doc/html/latest/networking/phy.html 中文翻译参考:有关PHY抽象层的总结 https://blog.csdn.net/eydwyz/article/details/124753313 目录 1 前言2 PHY接口模式3 尽量使用PHY端的延时而不是MAC或PCB4 其他方式实现…...

优先级队列(堆)
目录 优先级队列 堆的概念 堆的创建 堆的向下调整 堆的插入 完整代码 优先级队列 队列是一种先进先出的数据结构,有些时候操作的数据可能带有优先级,出队列时就需要优先级高的数据先出队列。 在这种情况下,数据结构应该提供两个最基本…...

帧率和丢帧分析理论
一、丢帧问题概述 应用丢帧通常指的是在应用程序的界面绘制过程中,由于某些原因导致界面绘制的帧率下降,从而造成界面卡顿、动画不流畅等问题。以60Hz刷新率为例子,想要达到每秒60帧(即60fps)的流畅体验,每…...

solidwork找不到曲面
如果找不到曲面 则右键找到选项卡,选择曲面...

mac安装JetBtains全家桶新版本时报错:Cannot start the IDE
mac安装JetBtains全家桶新版本时报错:Cannot start the IDE 前言报错信息解决方法 前言 作者使用的是Mac电脑,最近想要更新JetBrains相关工具的软件版本,但是在安装时突然报错,导致安装失败,现在将报错信息以及解决方…...

MVCC机制解析:提升数据库并发性能的关键
MVCC机制解析:提升数据库并发性能的关键 MVCC(Multi-Version Concurrency Control) 多版本并发控制 。 MVCC只在事务隔离级别为读已提交(Read Committed)和可重复读(Repeated Read)下生效。 MVCC是做什么用的 MVCC是为了处理 可重复读 和…...

如何使用Postman搞定带有token认证的接口实战!
现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…...