论文标题: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,这是一个专为表格分析而设计的大型语言模型,将表格、自然语言和指令统一起来。这个模型是第一个在语言模型中捕捉表格向量表示的尝试,它带来了对表格的更全面的理解和分析能力。
作者在报告中也展示了几个测试案例:
具体细节大家可以看论文。