聊天GPT在问答任务中有多好?

使用ChatGPT和微调的编码器模型在QA任务上进行实际比较。

ChatGPT中文站
Image by pencilparker from Pixabay.

ChatGPT由OpenAI发布,是一个多功能的自然语言处理(NLP)系统,可以理解对话上下文以提供相关回应。虽然对这个模型的构造了解不多,但由于其在解决自然语言任务方面的质量而变得流行。它支持多种语言,包括英语、西班牙语、法语和德语。该模型的优点之一是可以生成多样化的回答风格:正式的、非正式的和幽默的。

ChatGPT的基本模型只有3.5亿个参数,却提供了比拥有1750亿个参数的GPT3模型更好的答案。这凸显了收集人类数据用于监督模型微调的重要性。ChatGPT在众所周知的自然语言处理任务上进行了评估,本文将比较gpt-3.5-turbo在一些问答任务上与DeepPavlov库的监督变压器模型的性能。为了本文,我已经为您准备了一个Google Colab笔记本,让您尝试使用DeepPavlov Library的模型完成一些QA任务。

问答简介

问题回答是自然语言处理任务,用于各种领域(例如客户服务、教育、医疗保健),目的是提供对自然语言中提出的问题的适当答案。有几种类型的问题回答任务,例如事实型QA,其中答案是一个简短的事实或信息,以及非事实型QA,其中答案是一个观点或较长的解释。问题回答是自然语言处理中一个活跃的研究领域,因此已经创建了几个数据集用于评估QA系统。以下是一些QA数据集,我们将在本文中更详细地查看:SQuAD、BoolQ和QNLI。

ChatGPT中文站
Example of factoid Question Answering made by the author.

在开发有效的QA系统时,会出现多个问题,例如如何处理自然语言的歧义和可变性,如何处理大量文本,以及如何理解复杂的语言结构和语境等。深度学习和其他NLP技术的进步已经帮助解决了其中的一些挑战,并在近年来显著提高了QA系统的性能。

DeepPavlov库使用BERT基础模型来处理问答,例如RoBERTa。BERT是一种预训练的基于Transformer的深度学习模型,用于自然语言处理,当提出这个模型时,它在各种自然语言处理任务中取得了最先进的结果。还有许多使用类似BERT结构的模型,这些模型经过训练,可以处理英语以外的特定语言的任务:中文、德语、法语、意大利语、西班牙语等等。它可以用于解决各种语言问题,只需改变原始模型中的一个层。

DeepPavlov 库介绍

DeepPavlov图书馆是一个免费、开源的NLP框架,包括最先进的NLP模型,可以单独使用或作为DeepPavlov Dream的一部分使用。这个多技能AI助手平台提供各种文本分类模型,用于意图识别、主题分类和辱骂识别。

ChatGPT中文站
DeepPavlov Demo example for QA generated by the author.

PyTorch是DeepPavlov框架所采用的基础机器学习框架。DeepPavlov库采用Python实现,并支持Python版本3.6至3.9。同时,该库支持通过Hugging Face Transformers从Hugging Face Hub使用基于Transformer的模型。可以通过命令行界面(CLI)、应用编程接口(API)或Python流水线与模型进行交互。请注意,特定模型可能需要额外的安装要求。

阅读理解(SQuAD 2.0)

让我们从阅读理解任务开始比较,更具体地说,是SQuAD 2.0数据集。这是一个大规模的、开放领域的问答数据集,包含超过100,000个基于给定文本段落的答案的问题。与原始SQuAD数据集不同,SQuAD 2.0包括不能仅根据提供的段落回答的问题,这使得机器学习模型回答准确更具挑战性。

尽管SQuAD的第一个版本已经发布于2016年,并且它包含了关于维基百科文章的问题答案,但是SQuAD语句中的问答仍然具有相关性。在使用这个数据集训练模型之后,可以提供不仅来自维基百科的上下文信息,还可以提供来自官方文件,如合同、公司报告等的信息。因此,可以从训练期间不知道的各种文本中提取事实。

现在我们来进入到在 ChatGPT 上提出问题的过程。为了使回答更加稳定,每次问题后我都重新开始了会话。因此,以下提示被用来获取 SQuAD 样式的示例答案:

请根据上下文回答所给问题。如果上下文中没有答案,请回答“无”。上下文:[context] 问题:[question]

让我们现在来看看并比较结果。尽管ChatGPT在回答问题方面表现非常出色,但对于一千个样本实验结果显示,在回答关于给定背景的问题时,ChatGPT远远落后于现有解决方案。如果我们仔细考虑模型犯错的例子,结果表明当答案实际上可能不在呈现的背景中时,ChatGPT不能很好地通过上下文回答问题; 此外,当询问时间顺序时,它也表现不佳。另一方面,DeepPavlov库在所有这些情况下提供正确的输出。接下来是一些例子:

ChatGPT中文站
SQuAD example 1. Expected — NONE, DeepPavlov — NONE. Made by the athor.

在这里,我们看到ChatGPT并不总是适用于数字。这可能是因为在这种情况下,模型在尝试从上下文中找到答案时,在事实上并没有答案。

ChatGPT中文站
SQuAD example 2. Expected — K-1, DeepPavlov — K-1. Made by the athor.

这是ChatGPT从未见过的例子。正如我们所看到的,在这里它无法回答关于事件发生顺序的问题。

为了对ChatGPT和DeepPavlov SQuAD 2.0预训练模型进行定量比较,我使用了论文中的样本集。虽然DeepPavlov库中的模型显示出比ChatGPT更好的结果,但在测试样本上它并没有领先太多。这可能是由于数据集布局中的错误。如果进行改正,则预计两个模型的结果都会有所改善。

ChatGPT中文站
Models performance on 1000 sampled pairs from SQuAD 2.0. Made by the author.

自然的是/否问题(BoolQ)

DeepPavlov库还包含了一种模型,该模型已经在BoolQ数据集上进行了训练,以回答自然问题的是/否格式。 BoolQ是一个由Google Research创建的机器学习数据集,包含超过150,000个是/否问题,旨在测试自然语言处理算法根据给定文本段准确回答二元问题的能力。

让我们看看如何使用 BoolQ 示例从 ChatGPT 获取响应。您可以使用文章中的提示:

根据上下文回答以下问题。答案应该是确切的“是”或“否”。上下文:[context] 问题:[question]

正如您所看到的,提示非常简单,不应该让模型感到困惑。一些实验已经进行过,并显示出 ChatGPT 在 BoolQ 数据集 (阅读理解) 上的准确率为 86.8。然而,最好的模型达到了 91.2。虽然相比较的模型之间的差距不太大,但这里有一些例子表明 ChatGPT 落后于 DeepPavlov Library 的模型:

ChatGPT中文站
BoolQ example 1. Expected — Yes, DeepPavlov — Yes. Made by the athor.

尽管在给定的示例中写着长披风叫做短披肩,但ChatGPT无法推广这个信息,因此不能得出它们是同一件事情的结论。

ChatGPT中文站
BoolQ example 2. Expected — Yes, DeepPavlov — Yes. Made by the athor.

很奇怪,但 ChatGPT 有时无法将数字时间值与口头时间相匹配。

在上述所有例子中,DeepPavlov库的模型都能够正确地回答问题。就像BoolQ数据集上的SQUAD示例一样,当需要回答时间或者需要对某些信息进行概括时,ChatGPT会出错。我还注意到,ChatGPT在训练过程中非常依赖于记忆的信息。因此,如果我们以真实的事实作为上下文,但添加虚假信息,那么ChatGPT大多数情况下会使用真实信息而不是虚构的信息来回答问题。例如:

ChatGPT中文站
BoolQ example 3. Expected — Yes, DeepPavlov — Yes. Made by the athor.

在原始文本中,确实有说甘薯和土豆不属于同一种植物家族。但是,在给定的上下文中,清楚地写着它们属于同一种家族——茄科,这在ChatGPT中完全被忽略了。

问答自然语言推理(QNLI)

最后一个QA任务是比较DeepPavlov Library和ChatGPT的结果,这个任务是针对问题回答包含性或QNLI数据集。QNLI(问题自然语言推理)是一个自然语言理解(NLU)任务,模型被训练来确定两个句子之间的关系:上下文句子(问题)和假设句子(答案)。目标是评估给定上下文句子,假设句子是否包含。

为了使用ChatGPT解决QNLI问题,使用了文中提供的以下提示:

给定问题:[‘问题’] 判断下面的句子是否包含相应的答案:[‘句子’]

大多数情况下,ChatGPT都能够选择正确的答案。但是我确认了实验结果:在QNLI任务上,ChatGPT的表现远不如基于BERT的模型。我没有发现新的ChatGPT模型错误类别 - 基本上,这些都属于同一类临时错误(与无法推理事件及其在时间上的顺序有关的错误)和逻辑错误(与无法进行演绎或归纳推理有关的错误)。

此外,我按照论文中的方法,在开发集中的样本上对DeepPavlov模型进行了评估。结果如下所示。DeepPavlov中预训练的QNLI模型表现优于ChatGPT和论文中的其他模型。

ChatGPT中文站
Models performance on 50 sampled pairs from QNLI dataset. Made by the author.

一些错误的例子:

ChatGPT中文站
QNLI example 1. Expected — No (not entailment), DeepPavlov — not_entailment. Made by the athor.

乍一看,甚至一个人可能认为上面的句子包含了一个问题的答案。但问题中的关键词是“最小”——在句子中没有任何关于它的内容。

ChatGPT中文站
QNLI example 2. Expected — Yes (entailment), DeepPavlov — entailment. Made by the athor.

在上面的例子中,我们可以再次注意到ChatGPT很容易被欺骗。例子中的那句话并没有明确指出首次亮相的是一周中的哪一天,但是可以推出是在星期日。总的来说,ChatGPT在逻辑推理和上下文理解方面似乎有限制。因此,它可能会在对人类相对简单的问题上遇到困难。

除了上述问题之外,ChatGPT还有其他缺点。ChatGPT生成的响应可能不一致,有时甚至相互矛盾。当被问同一个问题时,模型的答案可能有所不同,并且其表现也可能受到提问顺序的影响。

2023-10-20 17:00:30 AI中文站翻译自原文