TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT

news2024/11/25 6:45:03

论文标题:TableGPT: Towards Unifying Tables, Nature Language and Commands into One GPT

论文地址:https://github.com/ZJU-M3/TableGPT-techreport/blob/main/TableGPT_tech_report.pdf

发表机构:浙江大学

发表时间:2023

本文从摘要,引言,TableGPT, 评估 四个方面来对这篇文章进行介绍。

1. 摘要

摘要部分介绍了一种名为TableGPT的统一精调框架,它利用大型语言模型(LLMs)实现了通过自然语言输入与表格进行交互的能力。TableGPT可以无缝地与表格进行交互,实现诸如问答、数据操作(插入、删除、查询和修改操作)、数据可视化、分析报告生成和自动预测等多种功能。该框架通过将表格转化为向量表示来实现对表格的深入理解,并通过指令链条实现对表格的复杂操作。与其他依赖外部API接口的方法不同,TableGPT是一个自包含系统,并支持高效的数据处理流程和私有部署,以提高对特定用例的适应性并保护数据隐私。

2. 引言

数据世界中的大量复杂信息常被表格所囊括,然而解读和理解这些表格却是一项巨大的挑战。多年来,人们一直在努力寻找方法来解码表格中的信息,而不陷入复杂的Excel公式或晦涩难懂的代码迷宫中。技术进步和实际应用是我们解决这些挑战的两个重要动力。

从技术角度来看,预训练生成式转换器(GPT)或大型语言模型(LLM)已经彻底改变了自然语言处理领域。它们生成类似人类文本的能力开辟了新的可能性。然而,尽管取得了可喜的进展,但在某些方面,GPT仍存在不足之处。具体而言,它们在有效阅读和解释表格方面的能力有限。举个例子,考虑一个包含多层次信息的表格,或者需要理解单元格之间关系才能提取出所需的知识。由于固有的限制,GPT在这种复杂场景下常常表现不佳。输入词数限制往往导致对较大表格的理解不完整,而它们的训练数据和目标并没有明确包括有效的表格阅读和理解。

此外,多模态领域已经引起了广泛的研究兴趣,大部分工作都集中在视觉、语音和自然语言的整合上。可惜的是,作为一种重要的数据表示形式,表格却常常被忽视。

第二个动力方面涉及到实际生产环境。当前的工作流程常常充满了不确定性。传统的指令链结构往往无法应对表格数据分析的复杂需求。在这种情况下,提出了NL2SQL 和NL2VBA 等解决方案,旨在将自然语言转换为相应的SQL或VBA命令。然而,这两种解决方案都有缺点(如准确率低),并且并未被证明普遍有效。代码本质上是非结构化的,增加了另一层复杂性,使后期处理成为一项具有挑战性的任务。

本论文介绍了TableGPT,试图直接解决这些挑战。希望将表格、自然语言和命令统一到一个模型中,使数据的解释和操作更加直观和用户友好。提出的命令集不仅更容易控制,而且还减少了常常伴随传统的处理表格数据方法的不确定性。

通过重新思考表、自然语言和命令的交互,TableGPT被设计为突破数据分析的边界,标志着在追求使数据更容易访问和理解方面迈出了重要的一步。综上所述,其主要贡献如下。

  • 提出了一种新的微调LLM,TableGPT,专门为表分析而设计。通过将表、自然语言和命令统一到一个模型中,TableGPT可以理解表格数据,通过自然语言理解用户的意图,解剖所需的操作,并在表上执行外部命令。随后,它以表格和文本形式将处理的结果返回给用户。这种新的方法简化了用户参与表数据的方式,给数据分析带来了一种直观的感觉。

  • 第一次,提出了一个表的向量表示学习,专门为LLM创建的。通过对大量的文本和表数据进行联合训练的LLM和表编码器,使编码器能够充分地捕获输入表中的全局信息。这使得LLM能够有效地感知和理解表数据,从而提供了更全面和增强的表理解。

  • 构建了一个有效的域数据微调框架。它允许使用最小的域数据来适应各种预先训练过的LLM,以适应不同的场景。这在实际应用程序中尤其有益,因为访问大量的特定域数据可能具有挑战性。此外,框架支持私人部署,提供了健壮的数据隐私保护。在当今数据隐私和数据保护至关重要的时代,这方面至关重要。

3. TableGPT

3.1 模型设计

在设计TableGPT时,作者选择使用带有7B参数的Phoenix作为baseline模型进行微调,原因是它在处理中文和英语语言方面的优秀能力。然而,这种选择并不是排他性的。模型设计支持与其他LLMs适应,在其实现中提供了多功能性和灵活性。

TableGPT与之前方法的不同之处在于其微调过程。作者在一个庞大的语料库上进行了微调,其中包括2T个词的文本数据和0.3M表格数据。该语料库为模型提供了一个多样的学习,包括但不限于用户查询-命令序列对和用于表分析报告的公开可用的领域特定数据。

TableGPT的总体架构如图1所示。当用户输入一个表和一个查询时,TableGPT会接收到这些表,它由一个表编码器和一个LLM组成。表编码器用于从输入表中提取向量表示。这些表示,加上文本查询,然后被输入到LLM中进行推理。LLM可以识别用户的查询意图,并生成一个同时包含命令序列和文本回复的输出。命令序列在输入执行器进行执行之前,会在命令系统的校正器中进行错误纠正。提供给用户的最终输出包括被操作的表和一个文本回复。这种简化的过程对表数据查询提供了高效、可靠的响应,增强了用户体验并简化了数据分析。

3.2 表的向量化表示

llm与表格数据接口的探索研究仍然是有限。如何使LLM能够理解和解释表的问题是必要的。一些研究试图将表数据的样本行直接转换为类似句子的文本描述,而另一些研究则试图通过基于模板的提取列名、行业背景和其他元数据模式来人为地定义表数据的全局表示。然而,这些方法的LLMs只从表数据中提取部分信息,因此忽略了数据中固有的整体信息和行业背景。

从表中提取向量化表示是具有挑战性的,因为与图像、视频和音频不同,表数据本质上是一种高度抽象的结构化数据类型。此外,它具有双排列不变性结构,其中变换行或列不影响表中包含的信息,与图像和音频有明显的对比,在相邻的位置或序列中携带归纳偏差。此外,来自不同领域的表的大小和格式也不同,例如,拥有不同数量的离散列和连续列,这使得使用统一的神经网络架构从不同的表中提取特征具有挑战性。

考虑一个有经验的数据科学家处理表格数据。他们通常会检查表数据的结构,如表头和特征列的分布,以根据不同单元格的位置来理解不同单元格的含义,而不是过多地关注每个单元格的数字信息。根据这种生物学上合理的方法,作者提出了一种新的级联表编码器。将表数据中的信息分为两个主要部分。第一部分学习表的元数据表示,如模式、行业背景和列名的含义,这可以帮助LLM理解表结构的全局信息。第二部分学习表的数字信息表示,如不同列中值的分布和趋势,帮助LLM像人类专家一样理解表号的全局信息。

作者将表中的行和列视为一个集合的元素,并学习整个集合的整体表示。使用一个修改后的set transformer作为表编码器的主干。set transformer最初设计用于处理排列不变问题,与表格数据的固有结构很好地一致。作者使用一个注意机制来增强它,该机制可以捕获表的不同行或列之间的相互依赖关系,使模型能够理解表数据的不同部分之间的关系。该编码器使用掩码表建模方法对一万个表数据集进行了预训练,类似于BERT中使用的掩码语言建模,但适用于表格数据。学习到的表的表示不仅可以用于表的理解,还可以提高下游分类器的预测性能。

3.3 Chain-of-Command

认识到像GPT这样的大型语言模型(LLMs)在数值推理中存在困难,容易出现计算错误和幻觉,作者提出的方法不要求它们在其潜在空间的表中进行操作和计算。相反,提供了一系列预先打包的函数命令,供LLMs调用。LLMs理解表的向量表示和用户输入,生成一个供后端系统执行的命令序列,从而生成一个修改后的表。与由text2SQL 生成的SQL语句相比,这些命令序列更容易被后端解析系统检查和定位错误,而SQL语句在诊断和纠正特定错误方面可能具有挑战性。

但是,用户查询通常是模糊和复杂的,只能封装和提供一些基本的表操作命令。教LLM解构复杂和模糊的查询是至关重要的。例如,用户对指定对象列的查询可以是原始表中列的同义词或翻译,或者用户可能只有一个模糊的意图,不能清楚地表达需求。

Chain-of-thought 的方法强调将复杂的推理分解为一系列的中间步骤。作者介绍了Chain-of-command(CoC)的概念,这是一种通过提供与这些中间步骤相关联的一步一步的指令的机制来增强chain-of-thought的方法。例如,当用户询问“给我看利润最高的五部电影”时,LLMs会首先检查表中是否存在利润列。如果没有,则使用票房和成本数据生成算术指令来计算利润;然后,它执行指令,按利润降序排序,然后切片选择前五部电影。当用户查询过于模糊时,比如“给我一些数字”,LLM可能会难以分解,并可能拒绝执行,相反,它会向用户询问更具体的意图。

CoC的目的是增强LLMs在操作表数据时的推理能力和健壮性。这种方法涉及到将用户输入转换为一系列中间命令操作,使LLMs能够更准确、更有效地象征性地操作表。操作符号指令的能力对于现实世界的应用程序特别有价值,它涉及到与历史数据的复杂和准确的交互,例如管理环境中的记录保存和数据分析。

为了提高方法的性能和稳定性,作者构建了大量的命令链指令数据集,同时对LLMs进行微调以适应命令,并使用上下文学习为命令链序列中的多个步骤提供提示。一个强大而准确的命令链过程允许LLMs更好地推理表数据和处理更复杂的场景。

Chain-of-command的方法有三个主要优点。首先,它使LLMs能够准确地执行复杂的表指令,从而增强了它们对表操作的多跳推理能力。其次,通过将复杂的操作分解为一系列的中间表操作,命令链方法增强了LLM处理复杂的多表交互的能力。最后,它使llm能够拒绝过于模糊的指示,并要求用户提供更具体的意图。这种方法允许llm更好地处理边缘情况和意外场景,使其成为现实应用程序的一种很有前途的方法。

3.4 Domain Data Processing Pipeline

尽管大型语言模型(LLMs)在广泛的预训练语料库上具有广泛的知识和对话能力,但它们在处理特定行业的细微语言风格和逻辑方面的表现常常不尽如人意。这主要是由于它们在训练阶段缺乏对专有领域数据的接触。为了解决这个问题,作者开发了一个高效的领域数据处理流水线。

为了简化LLMs的微调过程,减少计算负担并加快模型迭代速度,作者设计了一个利用主动学习功能的流水线。通过这个流水线,从领域数据中精心挑选出一组微调示例,使LLMs能够在较少的示例数量下取得优秀的微调结果。通过策略性地利用资源,加快了模型的学习过程,从而加速了迭代过程。

此外,作者还加强了LLMs的文档检索能力。利用向量数据库 和LangChain 等技术,从大量专有文档中高效检索相关信息,进一步丰富LLMs所学习的上下文。本质上,提出的流水线促进了LLMs对各个特定行业数据需求的快速、经济适应。该流水线(pipeline)不仅解决了特定行业语言风格和逻辑的挑战,还赋予LLMs处理与表格交互的命令的能力,将自然语言、表格和命令的领域进行了整合。

4. 评估

4.1 Commands supported by TableGPT

TableGPT是一个能够与表格进行自然语言交互的模型,为用户提供了丰富的指令支持。它可以通过日常语言直观地查询、过滤、排序和汇总数据,使用户能够轻松处理表格信息。同时,TableGPT还支持数据可视化和报告生成,提升了表格信息的解释性和呈现效果。此外,TableGPT还能够进行自动化决策过程,根据表格数据和自然语言指令进行预测、趋势预测和结果估计。

需要注意的是,当用户查询意图过于模糊时,TableGPT会拒绝生成指令,并要求用户提供更详细的意图说明。这是链式指令的优点之一,它能够像人类专家一样考虑指令的合理性,而不是仅仅进行刚性的指令转换。

4.2 Comparison with previous command-using LLMs

几种已有的解决方案,如ChatExcel、SheetCopilot和Data-Copilot,它们尝试将表格和语言模型相结合。这些方法通常通过使用提示来调用预定义的外部命令,通过语言模型推理API(如OpenAI API)进行操作。相比之下,TableGPT采用了一种不同的方法,针对与表格相关的任务对语言模型进行了微调。这个关键区别使得我们能够利用语言模型架构的内在能力,同时将其定制为在表格处理任务中表现出色。表格1 详细比较了TableGPT与以前使用命令的语言模型的差异。

5. Conclusion

提出了TableGPT,这是一个专为表格分析而设计的大型语言模型,将表格、自然语言和指令统一起来。这个模型是第一个在语言模型中捕捉表格向量表示的尝试,它带来了对表格的更全面的理解和分析能力。

作者在报告中也展示了几个测试案例

具体细节大家可以看论文。

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

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

相关文章

搭建基于Nginx+Keepalived的高可用web集群并实现监控告警

目录 搭建相关服务器DNS服务器配置WEB服务器配置配置静态IP编译安装nginx 负载均衡器配置lb1lb2高可用配置 NFS服务器配置配置静态IP安装软件包新建共享目录web服务器挂载 监控服务器配置安装node-exporter编写prometheus.yml安装alertmanager和钉钉插件获取机器人webhook编写a…

ubuntu22.04上如何创建有privilege权限,有固定自定义IP的空容器

需求背景: 我想用docker来隔离自己的主机环境,来创建一个隔离的空白全新的开发环境,并且使之有固定的IP,在里面可以自由更新下载各种编译依赖,具有privileged权限的容器,以下是操作实现的具体步骤 查看do…

系统架构设计师-软件架构设计(2)

目录 一、基于架构的软件开发方法(ABSD) 1、架构需求 1.1 需求获取 1.2 标识构件 1.3 架构需求评审 2、架构设计 2.1 提出架构模型 2.2 映射构件 2.3 分析构件的相互作用 2.4 产生架构 2.5 设计评审 3、架构文档化 4、架构复审 5、架构实现 5.1 分析与…

JVM运行时区域——对象创建内存分配过程

新创建的对象,都存放在伊甸园区域,当垃圾回收时,将伊甸园区域的垃圾数据销毁,然后将存活的对象转移到幸存者0区域,之后创建的新的对象还是存放在伊甸园区域,等到再次垃圾回收后,将伊甸园区域和幸…

《Docker资源限制和调度策略:性能优化与资源管理,打造高效稳定的容器环境》

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

Python 集合 pop()函数使用详解,pop随机删除原理

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 pop函数使用详解 1、随机删除并不完全随机1.1、纯数字1.2、纯字符1.3、混合情况 …

【软件测试】Git 详细实战-远程分支(超细总结)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 远程分支 远程引…

2023云曦期中复现

目录 SIGNIN 新猫和老鼠 baby_sql SIGNIN 签到抓包 新猫和老鼠 看到反序列化 来分析一下 <?php //flag is in flag.php highlight_file(__FILE__); error_reporting(0);class mouse { public $v;public function __toString(){echo "Good. You caught the mouse:&…

使用Selenium与Chrome DevTools交互

目录 为什么我们应该自动化Chrome开发工具&#xff1f; 如何打开Chrome DevTools 元素 控制台 源代码 网络 应用 安全 性能 如何使用Selenium使用chrome Devtools实现自动化&#xff1f; 收集性能指标 使用Selenium DevTols捕获控制台日志 模拟位置 网络节流 捕…

论文精读之Transformer论文

目录 Abstract Conclusion Introduction Background Training Abstract 在一个序列转录模型中&#xff0c;在编码器与译码器之间使用一个“注意力机制”的东西&#xff0c;做了两个机器翻译的实验&#xff0c;效果较其他模型效果更好。 Conclusion Transformer是第一个用于…

全志F1C200S嵌入式驱动开发(调整cpu频率和dram频率)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 f1c200s默认的cpu频率是408M,默认的dram频率是156M。这两个数值,坦白说,都算不上特别高的频率。因为我们的晶振是24M输入,所以408/24=17,相当于整个cpu的频率只是晶振倍频了17…

vue引入自定义字体并使用

结构 font.scss引入字体 charset "UTF-8";font-face{font-family: "caoshu";src: url("caoshu.ttf");font-weight: normal;font-style: normal; }font-face{font-family: "Xingkai";src: url("XingKai.ttf");font-weight: …

leetcode 144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历

⭐️ 题目描述 &#x1f31f; 链接1&#xff1a;leetcode 144.二叉树的前序遍历 &#x1f31f; 链接2&#xff1a;leetcode 145.二叉树的后序遍历 &#x1f31f; 链接3&#xff1a;leetcode 94.二叉树的中序遍历 思路&#xff1a; leetcode的遍历和普通的遍历还略有一些不同&a…

【Spring篇】初识 Spring IoC 与 DI

目录 一. Spring 是什么 ? 二. 何为 IoC ? 三. 如何理解 Spring IoC ? 四. IoC 与 DI 五 . 总结 一. Spring 是什么 ? 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff0c;它是⼀个开源框架&#xff0c;有着活跃⽽ 庞⼤…

SAP 执行失败JOB及dump日志监控

背景 系统使用时间较长&#xff0c;存在大量的后台作业&#xff0c;用户量较大&#xff0c;需要及时监控后台作业状况及系统dump情况&#xff0c;以便及时处理。 功能 1. 查询屏幕填写日期前n秒状态为错误及未知的后台作业 2. 查询屏幕填写日期前n秒系统中的dump记录--客制化程…

有关动态内存管理的笔试题

题目一&#xff1a; void GetMemory(char* p) {p (char*)malloc(100); }void test(void) {char* str NULL;GetMemory(str);strcpy(str, "hello world");printf(str); }int main() {test();return 0; } 请问上述代码输出结果是什么&#xff0c;理由是什么&#xf…

leetcode 90. 子集 II

2023.7.23 这道题是上一题子集的升级版&#xff0c;即数组nums包含了相同的元素&#xff0c;这时候需要对集合之间进行去重&#xff0c;可以参考这一题组合总和II的去重方法。 下面直接上代码&#xff1a; class Solution { public:vector<vector<int>> ans;vecto…

Qt QToolBar 添加 换行 添加到底部 左侧 右侧

1. 常用添加&#xff1a; #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);QToolBar *toolBar addToolBar(t…

查找和二叉树(基础知识和基本操作)

查找&#xff1a; 1.二分查找&#xff1a;先定一个大范围&#xff0c;想一个数&#xff0c;看是在起始范围到中间范围还是中间范围到结束范围&#xff0c;依次循环直到确定值&#xff08;相当于一直把范围折半&#xff0c;直到找到&#xff09; while(low<high) {int mid(…

一元多项式的表示及相加

实现思路&#xff1a; 通过链表实现&#xff0c;会更为简单直观。用链表中的每个结点表示多项式中的每一项&#xff0c;多项式每一项都是由数据域&#xff08;包含系数和指数&#xff09;和指针域构成的&#xff0c;所以在定义表示结点的结构体时&#xff0c;可如下所示进行定义…