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

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

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

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

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

相关文章

使用GGML和LangChain在CPU上运行量化的llama2

Meta AI 在本周二发布了最新一代开源大模型 Llama 2。对比于今年 2 月发布的 Llama 1,训练所用的 token 翻了一倍,已经达到了 2 万亿,对于使用大模型最重要的上下文长度限制,Llama 2 也翻了一倍。 在本文,我们将紧跟趋…

【NLP】使用 Keras 保存和加载深度学习模型

一、说明 训练深度学习模型是一个耗时的过程。您可以在训练期间和训练后保存模型进度。因此,您可以从上次中断的地方继续训练模型,并克服漫长的训练挑战。 在这篇博文中,我们将介绍如何保存模型并使用 Keras 逐步加载它。我们还将探索模型检查…

JavaSwing+MySQL的酒店管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88063706?spm1001.2014.3001.5503 JDK1.8、MySQL5.7 功能:散客开单:完成散客的开单,可一次最多开5间相同类型的房间。 2、团体开单:完成团体…

【论文笔记】KDD2019 | KGAT: Knowledge Graph Attention Network for Recommendation

Abstract 为了更好的推荐,不仅要对user-item交互进行建模,还要将关系信息考虑进来 传统方法因子分解机将每个交互都当作一个独立的实例,但是忽略了item之间的关系(eg:一部电影的导演也是另一部电影的演员&#xff09…

醉梦仙踪:二叉树狂想曲,中序遍历的华丽穿梭

本篇博客会讲解力扣“94. 二叉树的中序遍历”的解题思路,这是题目链接。 如何对二叉树进行中序遍历呢?所谓中序遍历,即先遍历左子树,接着遍历根节点,最后遍历右子树的一种遍历方式。具体来说,假设有某一种“…

htmlCSS-----背景样式

目录 前言: 背景样式 1.背景颜色 background-color 2.背景图片 background-image 背景的权重比较 代码示例: 前言: 很久没写文章了,会不会想我呢!今天我们开始学习html和CSS的背景样式以及文字样式&#xff…

qt 5.12.6配置 msvc2015 32bit

qt 5.12.6配置 msvc2015 32bit 1.添加临时档案库2.安装 msvc20153. 配置 qmake 环境4.修改系统环境变量5.问题修改1.qt没有被正确的安装,请运行make install2.QT编译出错:rc不是内部或外部命令,也不是可运行的程序 或批处理文件。3.QT License check fai…

【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档

目录 前言 【文章末尾给大家留下了大量的福利】 测试框架简介 首先管理时间 添加配置文件 conf.py config.ini 读取配置文件 记录操作日志 简单理解POM模型 简单学习元素定位 管理页面元素 封装Selenium基类 创建页面对象 简单了解Pytest pytest.ini 编写测试…

php使用PDO_sqlsrv

php拓展下载:Microsoft Drivers for PHP 发行说明 - PHP drivers for SQL Server | Microsoft Learn 参考文章:php7.3.4 pdo方式连接sqlserver 设置方法_pdo sqlserver_黑贝是条狗的博客-CSDN博客 php5.6.9安装sqlsrv扩展(windows&#xff0…

CXL Bias Mode (1) - Bias Mode 背景与分类

🔥点击查看精选 CXL 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

SUSE宣布推出免费RHEL分叉以保留企业级Linux的选择权

导读在Red Hat宣布将限制AlmaLinuxOS或Rocky Linux等社区发行版对其公共仓库的访问后,最近Red Hat与IBM之间发生了一些争论,有鉴于此,SUSE今天宣布计划为RHEL和CentOS用户提供一个免费的替代方案。 SUSE已经开发了SUSE Linux Enterprise (SLE…

【问题记录】Ubuntu 22.04 环境下,打开 VS Code 老是访问密钥环该怎么解决?

目录 环境 问题情况 解决方法 环境 VMware Workstation 16 Pro (版本:16.1.2 build-17966106)ubuntu-22.04.2-desktop-amd64 问题情况 在Ubuntu下,每次运行 VS Code时,老是提示要输入密钥密码来解锁保存在密钥环&am…

C语言程序运行需要的两大环境《C语言进阶》

目录 程序的翻译环境和执行环境 翻译环境分为两部分,编译链接 第一步:预编译(预处理) 第二步,编译 第三步:汇编 关于运行环境分为四点: 关于链接库 程序的翻译环境和执行环境 在 ANSI C(标…

【全面解析】Windows 如何使用 SSH 密钥远程连接 Linux 服务器

创建密钥 创建 linux 服务器端的终端中执行命令 ssh-keygen,之后一直按Enter即可,这样会在将在 ~/.ssh/ 路径下生成公钥(id_rsa.pub)和私钥(id_rsa) 注意:也可以在 windows 端生成密钥,只需要保证公钥在服务器端,私钥…

Apache Struts2漏洞复现之s2-001漏洞复现

0x01 声明: 仅供学习参考使用,请勿用作违法用途,否则后果自负。 0x02 简介: Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构…

Android ObjectBox数据库的使用与详解

一、介绍 Room数据库 之前我已介绍了jetpack组件的数据库:Room,有小伙伴需要了解Room数据库可以查看这个地址:Android JetPack组件之Room数据库的集成与详解_android room数据库_蜗牛、Z的博客-CSDN博客 数据库的性能对设备来说很重要&#…

安全开发-JS应用原生开发JQuery库Ajax技术加密编码库断点调试逆向分析元素属性操作

文章目录 JS原生开发-文件上传-变量&对象&函数&事件JS导入库开发-登录验证-JQuery库&Ajax技术JS导入库开发-编码加密-逆向调试 JS原生开发-文件上传-变量&对象&函数&事件 1、布置前端页面 2、JS获取提交数据 3、JS对上传格式判断 <script>…

抖音seo开源源码,抖音优化系统定制方案

抖音作为目前最火热的短视频平台之一&#xff0c;其在移动互联网领域的影响越来越大。然而&#xff0c;一款成功的产品未必仅仅靠着其自身的功能和品质就能获得市场的认可&#xff0c;还需要通过优化SEO来实现更好的曝光率。下面&#xff0c;本文将介绍如何优化抖音SEO源码开发…

Vue3通透教程【十六】TS编译配置

文章目录 &#x1f31f; 写在前面&#x1f31f; 初始化配置文件⭐ target⭐ module⭐ lib⭐ types/node⭐ include⭐ outDir&#x1f31f; 写在最后 &#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章&#xff0c;应粉丝要求开始更…

【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

Yan-英杰的主 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 问题描述 报错信息如下 报错描述 解决方法 总结 【粉丝福利】 【文末送书】 目录&#xff1a; 本书特色&#xff1a; 问题描述 报错信息如下 Description:An attempt…