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

论文标题: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,这是一个专为表格分析而设计的大型语言模型,将表格、自然语言和指令统一起来。这个模型是第一个在语言模型中捕捉表格向量表示的尝试,它带来了对表格的更全面的理解和分析能力。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BeanFactory容器的构建和使用示例

BeanFactory容器的实现流程: BeanFactory是Spring框架中的一部分,它提供了IoC(控制反转)的实现机制。下面是BeanFactory的IoC实现过程: 定义Bean定义:首先,我们需要在配置文件中定义Bean的定义…

详解分类指标Precision,Recall,F1-Score

文章目录 1. Precision(精度)2. Recall(召回率)3. F1-Score4. Accuracy(准确率)5. P-R 曲线6. TPR、FPR6.1 TPR(真正率)6.2 FPR(假正率) 7. ROC曲线8. AUC曲线…

vscode使用g++编译.c文件或.cpp文件

vscode是一个跨平台、轻量级、插件非常丰厚的IDE,这里介绍在vscode里使用g来编译.cpp文件。g也叫GCC, 在Window中,是使用MinGW方式实现g的,它分为32位和64位2个版本,其中,MinGW-64是64位的,MinGW-32是32位的…

linux学成之路(基础篇)(二十)rsync服务器

目录 前言 一、概述 监听端口 二、特点 快捷 安全 三、数据的同步方式 四、rsync传输方式 本地传输 远程传输 守护进程 五、命令 作为远程命令 作为rsync服务 选项 六、配置文件 全局配置 模块配置 守护进程传输 七、rsyncinotfy实时同步 一、服务端 二、…

力扣奇遇记 [第一章]

文章目录 😦第一题:拿下LeetCode1769. 移动所有球到每个盒子所需的最小操作数学习内容:LeetCode1769. 移动所有球到每个盒子所需的最小操作数🙈思路分析:💖代码产出: 😦第二题&#…

优雅的设计测试用例

⭐️前言⭐️ 入职以后接触到了公司的具体业务,提升了设计测试用例的能力,于是沉淀出这篇文档与大家分享。 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主将持续更新学习记录收获&…

【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》 🌝每一个不曾起舞的日子,都是对生命的辜负。 目录 前言: 一、隐式类型转换 (一)整型提升的意义…

后端(四):博客系统项目

咱们在这里实现的是后端项目,前端代码就提一提,不全做重点介绍,在开始讲解这个博客系统项目之前,我们先看看这个项目的前端界面: 登录界面: 个人主页: 博客详情页: 写博客页&#x…

再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维护到2019年8月1日。 1.5.x 将会…

【Java】重写compareTo()方法给对象数组排序

我们先给一个数组排序,我们肯定用的是Arrays.sort()方法: public class test2 {public static void main(String[] args) {int[] arr{3,5,4,6,9,8,1};System.out.println(Arrays.toString(arr));System.out.println("---------");Arrays.sort…

【C语言初阶】指针的运算or数组与指针的关系你了解吗?

🎬 鸽芷咕:个人主页 🔥 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言💬 指针运算💭 指针-整数💭 指针-指针💭 指针…

【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~

Java基础教程之多线程 上 🔹本节学习目标1️⃣ 线程与进程🔍关于多进程、多线程、并发与并行之间的概念关系? 2️⃣ 多线程实现2.1 继承 Thread 类2.2 实现 Runnable 接口2.3 多线程两种实现方式的区别2.4 利用 Callable 接口实现多线程2.5 …

数学建模学习(4):TOPSIS 综合评价模型及编程实战

一、数据总览 需求:我们需要对各个银行进行评价,A-G为银行的各个指标,下面是银行的数据: 二、代码逐行实现 清空代码和变量的指令 clear;clc; 层次分析法 每一行代表一个对象的指标评分 p [8,7,6,8;7,8,8,7];%每一行代表一个…

为Android构建现代应用——设计原则

为Android构建现代应用——设计原则 - 掘金 state”是声明性观点的核心 在通过Compose或SwiftUI等框架设计声明性视图时,我们必须明确的第一个范式是State(状态)。UI组件结合了它的图形表示(View)和它的State(状态)。UI组件中发生变化的任何属性或数据都可以…

RuoYi-VUE : make sure to provide the “name“ option

前言 略 错误 错误原因 theme-picker 组件未被注册。 解决 src/App.vue代码恢复成若依的代码即可。&#xff08;PS&#xff1a;不知道代码被谁修改了&#xff09; 缺少这一段&#xff1a; <script> import ThemePicker from "/components/ThemePicker";…

hive基础

目录 DDL&#xff08;data definition language&#xff09; 创建数据库 创建表 hive中数据类型 create table as select建表 create table like语法 修改表名 修改列 更新列 替换列 清空表 关系运算符 聚合函数 字符串函数 substring:截取字符串 replace :替换…

C进阶:内存操作函数

内存操作函数 memcpy 头文件&#xff1a;string.h 基本用途&#xff1a;进行不相关&#xff08;不重叠的内存&#xff09;拷贝。 函数原型&#xff1a;void* memcpy(void* destination,//指向目标数据的指针 const void* source,//指向被拷贝数据的指针 size_t num);//拷贝的数…

分布式光伏电站监控及集中运维管理-安科瑞黄安南

前言&#xff1a;今年以来&#xff0c;在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速&#xff0c;装机容量均大幅度增长&#xff0c;新能源发电已经成为新型电力系统重要的组成部分&#xff0c;同时这也导致新型电力系统比传统的电力系统更为复杂…

【数据挖掘】时间序列的傅里叶变换:用numpy解释的快速卷积

一、说明 本篇告诉大家一个高级数学模型&#xff0c;即傅里叶模型的使用&#xff1b; 当今&#xff0c;傅里叶变换及其所有变体构成了我们现代世界的基础&#xff0c;为压缩、通信、图像处理等技术提供了动力。我们从根源上理解&#xff0c;从根本上应用&#xff0c;这是值得付…

HTML5——基础知识及使用

HTML 文件基本结构 <html><head><title>第一个页面</title></head><body>hello world</body> </html> html 标签是整个 html 文件的根标签(最顶层标签).head 标签中写页面的属性.body 标签中写的是页面上显示的内容.title 标…