Abstract
自然语言到可视化(NL2Vis)任务旨在将自然语言描述转换为基础表的可视化表示,使用户能够从大量数据中获得洞察力。最近,针对NL2Vis开发了许多基于深度学习的方法。尽管这些方法做出了相当大的努力,但在可视化来自未见过的数据库或跨多个表的数据方面仍然存在挑战。从大型语言模型(llm)卓越的生成能力中获得灵感,本文进行了一项实证研究,以评估它们在生成可视化方面的潜力,并探索上下文学习提示对增强这一任务的有效性。特别是,我们首先探索将结构化表格数据转换为顺序文本提示的方法,以便将它们提供给llm,并分析哪些表内容对NL2Vis贡献最大。我们的研究结果表明,将结构化表格数据转换为程序是有效的,并且在制定提示时必须考虑表模式。此外,我们评估了两种类型的llm:微调模型(例如,T5-Small)和仅推理模型(例如,GPT-3.5),针对最先进的方法,使用NL2Vis基准(即nvBench)。实验结果表明,llm的表现优于基线,只有推理的模型始终表现出性能改进,有时甚至超过了通过上下文学习提供某些少数镜头演示的微调模型。最后,我们分析了llm在NL2Vis中失败的情况,并建议使用思维链、角色扮演和代码解释器等策略迭代更新结果。
1 INTRODUCTION
数据可视化通常以图表、绘图和直方图的形式呈现,它提供了一种有效的方法来表示、分析和探索数据,并使识别和交流有价值的见解成为可能。对于一系列用户来说,制作有效的数据可视化仍然是一项复杂的工作,特别是那些有限或没有可视化经验的用户。此外,人们迫切需要在平板电脑和手机等智能设备上实现数据可视化,而不需要用户获得数据可视化专业知识。
为了方便用户进行数据分析,人们对从自然语言描述中自动生成数据可视化越来越感兴趣,这些描述被称为NL2Vis。现有的NL2Vis方法主要分为两大类:基于规则的和基于深度学习。
NL2Vis类似于NL2SQL(也称为Text2SQL)的任务,其目标是将自然语言描述转换为结构化查询语言(SQL)查询。
通常,可视化使用可视化查询语言(visual query language, VQL)来表达,这是一种与SQL相似的语言。NL2Vis和NL2SQL都基于具有不同结构的输入表,目的是生成各种复杂性的查询,包括选择、比较、聚合和连接操作。与NL2SQL相比,一个区别是NL2Vis面临着在生成过程中考虑复杂的可视化属性的额外挑战,包括图表类型的选择(例如,条形图、饼状图、线形图和散点图)。
LLMs for NL2Vis. 最近,大型语言模型(llm),如GPT-3.5和LLaMA,已经在许多自然语言处理(NLP)任务中展示了令人印象深刻的 few-shot learning 能力,包括问答、机器翻译和代码生成。由于llm在预训练阶段顺序处理整个大规模训练数据集,因此它们在直接处理结构化数据(包括表格数据)方面面临限制。或者,我们可以序列化表格数据,将其输入llm,并提示llm以特定于领域的查询语言的形式生成数据可视化。为了填补这一空白,本文旨在解决以下研究问题:“LLM是否可以用于基于表的自然语言描述的数据可视化自动化,以及如何使用?”
作者指出了在利用LLMs自动化数据可视化中面临的两个主要挑战:
- C1: 将结构化表格数据输入到LLMs中:LLMs通常处理顺序提示,将结构化表格转化为顺序提示且保留其语义是一个显著挑战。此外,LLMs的token长度有限,无法处理整个大型表格,从而难以理解全局的表格信息。
- C2: 通过对话迭代更新:与传统的NL2Vis神经模型一次生成数据可视化不同,LLMs可以在对话中迭代地优化预测输出。将传统神经模型适应这种新的对话模式也是一个重要挑战 。
为了回答上述问题,作者设计了以下三个研究问题:
-
RQ1: 如何通过提示将自然语言查询和结构化表格输入到LLMs中?
- 探索将结构化表格数据转化为顺序提示的方法,并研究哪些表格内容对NL2Vis任务贡献最大。
-
RQ2: 与现有的NL2Vis模型相比,LLMs的表现如何?
- 评估微调模型(如T5-Small、T5-Base)和仅推理模型(如text-davinci-002、text-davinci-003)的表现,并分析上下文示例数量对LLMs表现的影响。
-
RQ3: 能否通过优化策略迭代更新结果?
- 分析LLMs在生成数据可视化时失败的情况,并提出使用链式思维(CoT)、角色扮演、自我修复和代码解释器等策略迭代更新结果 。
2. Background
2.1 Visualization Query Language (VQL)
VQL是一种简化的结构化查询语言,专门用于生成数据可视化。它与SQL类似,但针对数据可视化进行了优化和简化,以便更容易地生成可视化图表。
我们可以看到,这个例子是从技术员表中选择一个name及其相应的计数,其中team != " NYY”。然后,它按名称按升序对结果进行分组,最后使用条形图将结果可视化。
VQL作为一种生成可视化的查询语言,可以被用作LLMs生成可视化任务中的目标语言。具体来说,研究者将表格数据和自然语言描述转换为顺序文本提示,输入LLMs,并生成相应的VQL语句。这些VQL语句随后被用来生成数据可视化图表。
2.2 Large Language Models
由于在大规模数据集上预训练llm是一个耗时且计算成本昂贵的过程,为了最大限度地有效利用llm,已经开发了许多提示技术(例如,in-context learning 上下文学习 和 chain-of-thought 思维链)。
2.2.1 Prompting
随着LLMs的出现,学习范式正在经历从传统的“pre-train and fine-tune”范式向更具创新性的“pre-train,
prompt, and predict”框架的转变。在这个新的范例中,不是广泛微调llm以适应各种下游任务,而是转向重新制定这些任务,以更紧密地与llm最初训练的任务保持一致,并使用文本提示指导过程。例如,当评估客户评论中的情绪时,比如“我喜欢今天读的这本书。”我们可以进行提示“It was ___.”,并要求LLM用一个充满感情的词来完成句子。在我们的特定场景中,涉及到一个表和一个自然语言查询,我们可以构造如下提示:“[table], [QUESTION],请根据表格数据和问题的描述生成VQL。”,其中[TABLE]表示结构化表格数据,[QUESTION]表示最终用户为探索数据而提供的自然语言查询。
2.2.2 In-Context Learning (ICL)
自GPT-3首次提出了In-Context Learning(ICL)的概念而来,ICL目前已经变成了一种经典的LLMs使用方法。
ICL主要思路是,给出少量的标注样本,设计任务相关的指令形成提示模板,用于指导待测试样本生成相应的结果。
ICL的过程,并不涉及到梯度的更新,因为整个过程不属于fine-tuning范畴。而是将一些带有标签的样本拼接起来,作为prompt的一部分,引导模型在新的测试数据输入上生成预测结果。
ICL方法的表现大幅度超越了Zero-Shot-Learning,为少样本学习提供了新的研究思路。
以一个分类任务进行举例,从训练集中抽取了 k = 3 个包含输入输出的实例,使用换行符"\n"来区分输入和输出。
可以更换测试样本输入(绿色部分),并在末尾留出空间让LLM生成。
给出少量任务相关的模型输入输出示例(demonstration),如k个示例, D k = f ( x 1 , y 1 ) , . . . f ( x k , y k ) D_k=f(x_1,y_1),...f(x_k,y_k) Dk=f(x1,y1),...f(xk,yk),其中 f ( x k , y k ) f(x_k,y_k) f(xk,yk) 是一个预定义的关于Prompt的函数(文本格式),用于将k个任务相关的示例,转换成自然语言Prompt。
给出任务定义I,示例 D k D_k Dk,以及一个新的输入 x t x_{t} xt,我们的目的是通过LLM生成输出 y ^ t \hat{y}_{t} y^t
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2.2.3 Chain-of-Thought (CoT) Prompting
CoT是一种改进的提示策略,当与ICL结合使用时,可以显著提高llm处理复杂推理任务的能力。除了像在ICL中那样简单地用几个演示示例构造提示外,CoT还通过集成中间推理步骤来丰富这些提示,这些中间推理步骤将推理过程引导到最终输出。通过展示对一个问题的解答,能够很好地激发出模型按照人类思考的模式生成合理的答案。
传统的方法是,给定几个人工标注的Template,或者少量样本作为In-Context Example来提示大模型生成结果。但是这种方式无法保证生成结果的可靠性。为了进一步提高大模型对于一些较为复杂任务的表现。CoT旨在通过在In-Context Learning的基础上,对每个问题(Question)输出结果(Answer)的同时,提供解答的推理依据(Rationale),这种依据通常是一种推理路径(Reason Path)的形式呈现。
CoT提示策略在ICL中用一个思维链提示符(𝑜𝑇)增强了每个演示示例 < x , y > <x,y> <x,y>,构建一个三元提示 < x , C o T , y > <x,CoT,y> <x,CoT,y>,Cot的设计既包括独立于问题的手动添加的提示,也包括每个问题的VQL草图,VQL草图的灵感来自于SQL查询的逻辑执行过程,以逐步建立用LLM填充VQL语句的过程。
图2展示了在NL2Vis中使用思维链策略的上下文学习示例。像ChatGPT这样的llm获取输入文本,并根据任务描述、演示和问题推断出答案。在few-shot场景中,我们从训练数据集中添加最相关的样本作为演示中的示例。NL2Vis任务prompt的演示部分由表描述、NL问题和 golden VQL组成。
3. LLMs FOR NL2VIS
3.1 Problem Statement
q q q表示自然语言查询, s s s 表示要分析的数据库中的表的模式。
NL2Vis的任务是生成可视化查询 y ^ \hat{y} y^, y ^ = L L M ( q , s ) \hat{y}=LLM(q,s) y^=LLM(q,s)
图3演示了NL2Vis的模型图。模型的输入包括自然语言描述和基础表。然后模型将在VegaZero中生成可视化查询。随后,可以从可视化查询中解析各种可视化语言(例如Vega-Lite)的可视化规范。随后,可视化规范将呈现为实际的可视化图表,使用户能够有效地观察和分析数据。
3.2 Feeding Data into LLMs via Prompting
考虑到大多数当代llm主要设计用于处理文本Prompt,因为它们是在顺序文本数据集上进行预训练的,因此通过有效的提示将结构化表格数据有效地集成到llm中变得势在必行。在本研究中,我们研究了各种策略,即表序列化、表摘要、表标记格式和表编程,以便将结构化表格数据转换为顺序文本,同时最大程度地保留语义,如图4所示。
A. 表序列化。一般来说,以前的研究建议将序列化的模式馈送到模型中。例如,Table (Column)在括号内列出了每个表及其列,以表示表模式。Column=[]表示每个表及其列的列表。在Column=[]之上,+FK进一步添加外键来表示表之间的关系,+Value添加表的行。
B. 表摘要。通过生成自然语言摘要来简单描述表是直观的。基于这种直觉,Chat2Vis使用从模板构建的描述将表格转换为文本提示符。描述由单独的条目组成,每个条目表示相应列的数据类型。在本文中,我们通过调用ChatGPT的API生成表摘要。具体来说,我们通过将表列名和值平化到一个Prompt中来实现这一点,该Prompt描述为“[table],以文本形式描述表格数据,包括其名称和类型等所有元数据。”
C. 表标记格式化。在此策略中,我们探索使用标记语言描述表格数据,包括CSV、JSON、Markdown和XML。Table2CSV将表格数据转换为CSV格式,其中每行表示包含一个或多个逗号分隔字段的数据记录。Table2JSON旨在将表格数据转换为JSON对象,其中数据以对表示,对象用花括号“{}”括起来,数组用方括号“[]”括起来。Table2MD旨在将表转换为Markdown文件,该文件使用简单直观的语法来表示结构和样式。Table2XML旨在将表转换为XML文件,XML文件是一种可扩展标记语言,用于以人类可读和机器可读的方式表示结构化数据。
D. 表编程。为了将结构化表格数据提供给llm,我们建议用编程语言表示结构化表格数据。Table2SQL使用Create语句来描述数据库模式,强调表之间的关系。为了显示数据库的内容,+Select 使用“Select * FROM Table LIMIT R”查询来显示每个表的前𝑅行。Table2Code建议将表格数据转换为通用编程语言。特别是,我们采用了Python编程语言,它有效地采用了固有的面向对象范式,非常适合编码结构化数据。此外,我们利用Python的类型提示特性,并在Python中使用基于类的表示来表示表格数据。我们定义了Table、Column、Constraint、Primary_Key、Foreign_Key和Record等类,然后对这些类进行实例化以创建一个表对象。
3.3 Visualization Query Generation
我们利用OpenAI在GPT-3.5和GPT-4系列中提供的api与llm进行交互。具体来说,我们最初用图4所示的格式表示表格数据。然后,我们将表和查询构造为如图2所示的提示。最后,这些准备好的提示随后通过API调用提供给llm。我们的研究方法可以应用于任何支持提示的LLMs。
3.4 Language-Aware Rending
4所示的格式表示表格数据。然后,我们将表和查询构造为如图2所示的提示。最后,这些准备好的提示随后通过API调用提供给llm。我们的研究方法可以应用于任何支持提示的LLMs。
3.4 Language-Aware Rending
根据nvBench,可视化查询可以用树形格式表示,以公平地评价语法。然后可以将这些抽象语法树(ast)转换为目标可视化规范语法,从而呈现可视化图表。从可视化查询到目标可视化规范的转换是基于ast语法进行硬编码的。目前,nvBench提供了一个Python 3代码模块用于转换可视化查询到Vega-Lite。因此,流程是完全自动化的,可以轻松地对可视化查询进行评估。
4 Evaluation setup
Domain Setting.
提出了一种跨域设置,通过对数据集进行分区,使训练数据集和测试数据集中的数据库之间没有重叠。在这种设置中,需要模型来预测对未知数据库的查询。为了确保公平和全面的评估,我们在域内和跨域设置下进行了实验。
Multi-Table Setting.
具有多个表的实例被指定为“JOIN”场景,而以单个表为中心的实例被归类为“NON-JOIN”场景。在“联接”场景中,我们的目标是通过集成来自多个表的信息来生成可视化。这个过程涉及到基于共享列合并数据,这对数据集成和随后的可视化工作都提出了挑战。相反,“非连接”情况涉及从单个表生成可视化,作为评估模型管理较不复杂数据结构的能力的基准。
5 Results
RQ1-1
探讨了如何将结构化的表格数据转换为顺序提示,以供大型语言模型(LLMs)处理。实验评估了模型 text-davinci-003 在不同方法下转换表格数据为文本提示时的性能,考虑了跨域和域内两种设置,并分别针对单表和多表(非连接和连接)情境进行评估。
上表给出了将表格数据转换为文本提示的各种方法中text-davinci-003的模型性能,同时考虑了跨域和域内场景。
从这个表中可以清楚地看出,在域内和跨域设置中,通过编程语言对表进行编码是最有效的方法。
域内设置(In-Domain):
表格通过Table2SQL、Table2XML和Table2JSON编码时,模型的准确性最高,达到61%。
跨域设置(Cross-Domain):
表格通过Table2Code、Table2SQL和Chat2Vis*编码时,执行准确率最佳,分别为56%、55%和55%。
RQ2-1
探讨了大型语言模型(LLMs)与现有NL2Vis模型的性能对比。通过对比微调的T5模型和仅推理的GPT-3.5及GPT-4系列模型,与几种最先进的基线模型的表现,评估LLMs的优劣。
表3展示了LLMs和多个基线模型在NL2Vis任务中的总体表现,包括跨域和域内设置。
LLMs在NL2Vis任务中表现出色,无论是微调模型还是仅推理模型,都显著优于传统基线模型。
微调模型和仅推理模型精确精度和执行精度与不同数量的支持示例的关系图。x轴表示使用的示例的数量。
随着示例数量的增加,gpt-4等纯推理模型的性能不断增加,最终超过T5等微调模型。
RQ2-2
探讨了上下文学习中的示例数量和选择方法对LLMs性能的影响。在NL2Vis任务中,通过选择不同数据库和不同数量的示例进行上下文学习,研究示例数量和数据库多样性对模型表现的影响。
使用Table2SQL的测试数据集对于不同数量的数据库(DB)和每个数据库(Exp/DB)的示例的平均执行精度.
可以观察到,示例数量一定时,数据库数量增加性能增加,数据库数量一定时,示例数量增加性能增加。
RQ3-1
探讨了大型语言模型(LLMs)在NL2Vis任务中失败的原因和具体情况。通过对text-davinci-003模型在使用Table2SQL提示进行20-shot上下文学习的跨域场景中生成的所有错误输出进行详细分析,分类失败案例,找出模型在预测VQL(Visualization Query Language)时遇到的挑战。
RQ3-1
探讨了通过优化策略迭代更新结果的可行性。具体来说,研究了是否可以通过引入中介认知过程(如CoT策略)和其他优化策略来提高LLMs在NL2Vis任务中的表现。
6 Conclusion
在本文中,我们研究了在NL2Vis任务中使用LLM是否可行。
具体来说,我们将包括微调模型 (例如,T5-Small, T5-Base) 和仅推理模型 (例如gpt-4) 的LLM与最先进的模型进行比较。首先,我们研究了将结构化表格数据转换为顺序提示的不同方法,以便将它们提供给LLM 。此外,我们针对几种传统的NL2Vis神经模型,在域内和跨域设置下对NL2Vis基准上的LLM进行了评估。最后,我们分析了LLM在NL2Vis中失败的情况,并提出使用思维链、角色扮演和代码解释器等策略迭代更新结果。
在我们未来的工作中,我们计划通过使用更精心设计的编程语言对表进行编码来探索表的表示。此外,我们将把基准扩展到隐式和多类型表结构,以便在更适用的场景中实现可视化,从而推动NL2Vis领域的发展。虽然我们目前的重点是GPT-3.5中的少量NL2Vis,但我们的框架也可以应用于其他LLM ,如LLaMA。因此,我们的提示方法在多个语义解析任务中的应用代表了未来探索的一个有趣的途径。