导语
ChatGPT无疑是最近最火爆的话题之一,对NLP的学术研究产生了深刻的影响,本文主要评估了现有的ChatGPT系统在Text-to-SQL这个领域中的一些影响。
- 会议:Arxiv 2023
- 链接:arxiv.org/pdf/2303.13…
1 简介
随着大规模语言模型越来越受到关注,它们已成为自然语言处理中的重要组成部分。随着预训练模型规模的增长,它们的使用也在逐渐发生变化。与BERT和T5等模型需要使用少量数据进行微调不同,GPT-3等模型需要通过提示设计来生成目标输出。最近的ChatGPT 1模型采用了人类反馈的强化学习(RLHF),简化了提示设计,使大规模预训练模型在对话方式中的零样本能力得到更好的利用。基于此,许多工作开始分析ChatGPT在各种自然语言处理任务中的零样本能力,如信息抽取、文本摘要和数学能力。由于ChatGPT在代码生成方面的强大能力,以及代码生成模型通常需要大量注释数据才能产生良好的结果,零样本代码生成模型非常重要。本文首先对ChatGPT在一个具有挑战性的代码生成任务上的零样本性能进行全面评估:文本到SQL。
文本到SQL任务涉及将用户输入的文本转换为可以在数据库上执行的SQL语句,使非专家用户能够更好地访问数据库的内容。文本到SQL模型的设计通常具有挑战性,因为它们需要在不同的数据库上工作,并考虑各种用户文本输入和数据库结构。由于文本到SQL任务的复杂性,对其性能的全面评估需要考虑多种场景,除了经典的Spider数据集之外。例如,Spider-SYN专注于用户文本输入中提到的数据模式与数据库模式同义的场景,Spider-DK考虑了输入问题包含额外知识的场景,Spider-CG强调模型的组合泛化能力,而ADVETA考虑了数据库中列名被修改的场景。此外,为了更好地反映现实世界的场景,SParC和CoSQL加入了用户和系统之间的多轮交互。最后,为了评估模型的多语言能力,CSpider和DuSQL评估了中文环境下的文本到SQL性能。
在实验过程中,本文评估了ChatGPT在12个不同的文本到SQL基准数据集上的能力。根据实验结果,得出以下观察:
-
与使用完整训练数据的当前最先进(SOTA)模型相比,ChatGPT在不使用任务特定训练数据的情况下仅性能下降14%。这已经证明了ChatGPT是一个强大的零样本文本到SQL转换器。
-
ChatGPT生成SQL语句的稳健性非常强,在Spider数据集的一些稳健性设置上,ChatGPT与SOTA模型之间的性能差距仅为7.8%,低于标准Spider数据集上的14%差距。
-
在ADVETA场景中,数据库中的列名被敌对修改时,ChatGPT的性能甚至超过了当前SOTA模型,提高了4.1%。
-
由于有许多不同的方式可以表达具有相同目的的SQL,因此ChatGPT生成的数据的精确匹配度非常低。因此,我们主要使用执行准确性作为评估指标。
总体而言,实验结果表明,ChatGPT具有很强的文本到SQL能力和稳健性,并且在某些场景中表现优于SOTA模型。
2 方法
为了使ChatGPT能够生成准确的SQL输出,我们使用了如图1所示的提示符。为了确保公平地展示ChatGPT的Text-to-SQL功能,我们直接采用了OpenAI演示网站中使用的Text-to-SQL提示符,而没有进行进一步的提示符探索。
图1的上半部分表示单轮Text-to-SQL场景中的提示,提示中只需要数据库和问题信息。同时,为了便于进一步的求值,我们在提示符中强调生成的SQL语句可以在SQLite数据库中执行。图1的下半部分表示多回合文本到sql场景中的提示,其中第一次交互的提示与单回合场景中的提示相同,对于后续交互,只需要新的问题。
3 实验
主要的实验结果如下:
作者还做了一个case study:
4 相关工作
略
5 总结
本文对ChatGPT在Text-to-SQL中的Zero-shot能力进行了全面的分析。实验发现,即使不使用任何训练数据,ChatGPT仍然具有很强的Text-to-SQL能力,尽管与目前的SOTA模型相比还有一些差距。此外,ChatGPT表现出强大的鲁棒性,在大多数鲁棒性基准测试中表现相对较好,甚至超过了当前SOTA模型在ADVETA基准测试中的表现。尽管本文已经有了一些发现,但只使用了一个常见的提示来评估ChatGPT的能力。在未来的工作中,可以设计更好的提示来探索ChatGPT的文本到sql的能力。
6 未来工作
在未来的工作中,可以主要考虑以下两个方向,以进一步探索ChatGPT在文本到sql任务中的功能。首先,我们将与ChatGPT进行更多的交互,以解决生成不可执行SQL语句的问题。我们可以将ChatGPT设计为与提供的数据库错误消息进行多轮对话,以进一步确保生成的SQL语句的有效性。其次,在提示符中添加更多高度相关的上下文示例,以增强ChatGPT生成Text-to-SQL的能力。