LLMs 零/少shot提示 – CodesCode
提示技术简化部署,使模型能够在没有标签数据(零样本)的情况下进行泛化,或者在少量示例(少样本)下快速适应
LLMs的强大已成为AI社区中的新热点。早期采用者纷纷涌向不同的生成性AI解决方案,如GPT 3.5、GPT 4和BARD,用于不同的用例。它们被用于问答任务、创意文本写作和关键分析。由于这些模型在大量语料库上进行了下一个句子预测等任务的训练,因此人们期望它们在文本生成方面表现出色。
强大的基于Transformer的神经网络使模型能够适应语言为基础的机器学习任务,如分类、翻译、预测和实体识别。因此,数据科学家现在可以通过给出适当的指令来利用生成性AI平台处理更实际和工业化的基于语言的机器学习用例。在本文中,我们旨在展示如何使用生成式LLMs通过提示来处理普遍的基于语言的机器学习任务,并对零样本和小样本提示的优势和限制进行批判性分析。
提示是什么?
让我们从定义LLMs开始。大型语言模型,或称为LLM,是一个由多层Transformer和前馈神经网络构建的深度学习系统,含有数亿到数十亿个参数。它们经过大量来源的大规模数据集的训练,并被构建用于理解和生成文本。一些示例应用包括语言翻译、文本摘要、问答、内容生成等等。LLMs有不同类型:仅编码器(BERT)、编码器+解码器(BART、T5)和仅解码器(PALM、GPT等)。带有解码器组件的LLMs称为生成式LLMs,这是大多数现代LLMs的情况。
如果你告诉生成式LLM执行一个任务,它将生成相应的文本。但是,我们如何告诉生成式LLM执行特定的任务?这很容易;我们给它一份书面指示。LLMs被设计成根据指示(也就是提示)对最终用户做出响应。如果你使用过像ChatGPT这样的LLM进行交互,你就使用过提示。提示的目的是将我们的意图以自然语言查询的方式进行打包,这将导致模型返回所期望的响应(示例:图1,来源:Chat GPT)。
在接下来的章节中,我们将介绍两种主要的提示技术:零样本和小样本。我们将详细讨论它们,并给出一些基本示例。
零样本提示
零样本提示是适用于生成式LLMs的零样本学习的特定场景。在零样本中,我们不向模型提供任何标记数据,并期望模型能够处理全新的问题。例如,通过提供适当的指示,使用ChatGPT进行零样本提示来处理新任务。LLMs能够适应未知问题,因为它们可以从许多资源中理解内容。让我们来看几个示例。
下面是一个将文本分类为正面、中性和负面情感类别的示例查询。
推特示例
推特示例来自Twitter美国航空公司舆情数据集。该数据集包含航空公司的反馈推文,标记为正面、中性或负面。在图2中(来源:ChatGPT),我们提供了任务名称,即情感分类,类别,即正面、中性和负面,文本以及分类的提示。图2中的航空公司反馈是一条积极的反馈,赞赏与该航空公司的飞行体验。ChatGPT正确地将该评论的情感分类为正面,展示了ChatGPT在新任务上的泛化能力。
上图3展示了Chat GPT在另一个示例上的零样本处理,但情感是负面的。Chat GPT再次正确预测了推文的情感。虽然我们已经展示了两个模型在成功分类评论文本的示例,但在一些边界情况下,即使是最先进的LLMs也可能失败。例如,让我们看一下下面的图4中的示例。用户在抱怨航空公司的食品质量;Chat GPT错误地将情感识别为中性。
在下表中,我们可以看到零样本与BERT模型在Twitter舆情数据集上的性能比较。我们将评估指标包括准确性、F1分数、精确度和召回率。对每种情况,从航空公司舆情数据集中随机选择一个子集进行零样本提示的性能评估,并将性能指标四舍五入为最接近的整数。零样本在每项评估指标上的性能较低,但相当不错,显示了提示的强大之处。性能指标已四舍五入至最接近的整数。
模型 | 准确性 | F1得分 | 精确度 | 召回率 |
精调BERT | 84% | 79% | 80% | 79% |
Chat GPT(零样本) | 73% | 72% | 74% | 76% |
少样本提示
与零样本不同,少样本提示涉及在提示中提供少量标记示例。这与传统的少样本学习不同,传统的少样本学习意味着使用少量样本对LLM进行微调以解决新问题。通过允许模型快速适应和产生对少量标记样本的新类的精确预测,这种方法减少了对大型标记数据集的依赖。当收集新类的大量标记数据需要时间和精力时,这种方法非常有益。以下是一个少样本示例(图5):
少样本 vs 零样本
少样本能够提高性能的程度有多大?尽管零样本和少样本技术在一些例子上表现良好,但是少样本的整体性能比零样本更高。如下表所示,通过提供一些高质量的示例以及边界和关键示例的样本,同时对生成式AI模型进行提示,可以提高当前任务的准确性。少样本学习(10、20和50个示例)可以提高性能。少样本提示的性能是在每种情况下从航空公司情感数据集的随机子集上进行评估的,并且性能数字四舍五入到最接近的整数。
模型 | 准确性 | F1得分 | 精确度 | 召回率 |
精调BERT | 84% | 79% | 80% | 79% |
Chat GPT(少样本 10个示例) | 80.8% | 76% | 74% | 79% |
Chat GPT(少样本 20个示例) | 82.8% | 79% | 77% | 81% |
Chat GPT(少样本 30个示例) | 83% | 79% | 77% | 81% |
根据上表中的评估指标,少样本在准确性上比零样本提高了10%,F1得分上提高了7%,并且达到了与精调BERT模型相当的性能。另一个关键观察是,在20个示例之后,改进趋于停滞。我们在分析中涵盖的示例是Chat GPT在Twitter美国航空公司情感数据集上的特定用例。让我们看另一个示例,以了解我们的观察是否适用于更多任务和生成式AI模型。
语言模型:少样本学习器
下面(图6)是在论文“语言模型是少样本学习器”中描述的研究中的一个示例,该示例比较了少样本、一样本和零样本模型与GPT-3的性能。性能是在LAMBADA基准测试(目标单词预测)下不同少样本设置中进行测量的。LAMBADA的独特之处在于它专注于评估模型处理文本中的远距离依赖性的能力,在这些情况下,信息与其相关上下文之间存在相当大的距离。少样本学习在准确性上比零样本学习提高了12.2个百分点。
在上面提到的论文中涵盖的另一个示例中,将GPT-3的性能与提供的提示中的不同示例数量以及在SuperGLUE基准测试上的精调BERT模型进行了比较。SuperGLUE被认为是评估语言理解ML任务性能的关键基准。图表(图7)显示前八个示例具有最大的影响。随着我们在少样本提示中添加更多示例,我们会遇到一个瓶颈,在这个瓶颈中,我们需要指数级增加示例才能看到明显的改进。我们可以非常清楚地看到,与情感分类示例相同的观察结果得到了复制。
零样本应仅在没有标记数据的情况下考虑。如果我们获得了一些标记示例,与零样本相比,使用少样本可以取得很好的性能提升。一个拖延的问题是,与微调等更复杂的技术相比,这些技术的表现如何。最近有几种成熟的LLM微调技术,它们的使用成本也大大降低了。为什么不只是微调模型呢?在接下来的章节中,我们将深入比较提示技术与微调模型。
少样本提示 vs. 微调
使用生成式LLM的少样本的主要好处是这种方法的实现简单。收集一些标记示例并准备提示,运行推断就可以了。即使有一些现代创新,微调在实现上非常笨重,并且需要大量的训练、时间和资源。对于一些特定的实例,我们可以使用不同的生成式LLM界面获得结果。对于更大数据集的推断,代码可能就像以下这么简单:
import os
import openai
messages = []
# Chat GPT labeled examples
few_shot_message = ""
# Mention the Task
few_shot_message = "Task: Sentiment Classification \n"
# Mention the classes
few_shot_message += "Classes: positive, negative \n"
# Add context
few_shot_message += "Context: We want to classify the sentiment of hotel reviews \n"
# Add labeled examples
few_shot_message += "Labeled Examples: \n"
for labeled_data in labeled_dataset:
few_shot_message += "Text: " + labeled_data["text"] + "\n"
few_shot_message += "Label: " + labeled_data["label"] + "\n"
# Call OpenAI API for ChatGPT providing the few-shot examples
messages.append({"role": "user", "content": few_shot_message})
chat = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=messages
)
for data in unlabeled_dataset:
# Add the text to classify
message = "Text: " + data + ", "
# Add the prompt
message += "Prompt: Classify the given text into one of the sentiment categories."
messages.append({"role": "user", "content": message})
# Call OpenAI API for ChatGPT for classification
chat = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=messages
)
reply = chat.choices[0].message.content
print(f"ChatGPT: {reply}")
messages.append({"role": "assistant", "content": reply})
少样本相对于微调的另一个关键好处是数据量。在Twitter美国航空公司情感分类任务中,BERT微调使用了超过10,000个示例,而少样本提示只需要20到50个示例即可获得类似的性能。然而,这些性能优势是否适用于其他基于语言的机器学习任务呢?我们所涵盖的情感分类示例是一个非常特定的用例。少样本提示的性能不会达到微调模型的标准。然而,它在各种语言任务中展示了类似或更好的能力。为了展示少样本提示的威力,我们在下面的章节中将其性能与SOTA和微调语言模型(如BERT)在标准化语言理解、翻译和问答基准测试中进行了比较。
语言理解
为了比较少样本和微调在语言理解任务中的性能,我们将看一看SuperGLUE基准测试。SuperGLUE是一个包含分类、文本相似性和自然语言推理任务的语言理解基准测试。用于比较的微调模型是经过微调的BERT large和经过微调的BERT++模型,生成式LLM使用的是GPT-3。下面的图表(图8和图9)展示了具有足够大规模的生成式LLM的少样本提示,大约32个少样本示例就足以超过经过微调的BERT++和经过微调的BERT Large,相对于BERT Large的准确率提升约为2.8个百分点,展示了少样本在生成式LLM上的能力。
翻译
在接下来的任务中,我们将比较少样本和微调在基于翻译的任务上的性能。我们将看一下蓝色基准测试(BLUE benchmark),也称为双语评估基准。BLEU计算0到1之间的分数,分数越高表示翻译质量越好。BLEU的主要思想是将生成的翻译与一个或多个参考翻译进行比较,并衡量生成的翻译中包含与参考翻译相似的n-gram的程度。用于比较的模型是XLM、MASS和mBART,生成式LLM使用的是GPT-3。
如下图所示,使用生成式LLMs的少样本提示,仅需几个示例即可击败XLM,MASS,多语言BART甚至不同的翻译任务的SOTA。少样本GPT-3在将英文翻译时比以前的无监督神经机器翻译工作提高了5个BLEU,展现出其作为英文翻译语言模型的优势。然而,值得注意的是,该模型在某些翻译任务上表现不佳,比如英文到罗马尼亚文的翻译,突显了其差距以及需要逐案例评估性能的必要性。
问答
在最后一个任务中,我们将比较少样本和微调在问答任务上的性能。任务名称是不言自明的。我们将研究三个关键的问答任务基准:PI QA(程序信息问答),Trivia QA(事实知识和回答问题)和CoQA(对话问答)。比较将与微调模型的SOTA进行,并使用的生成式LLM是GPT-3。如下图(图11、图12和图13)所示,使用少样本提示的生成式LLMs仅需几个示例即可击败PIQA和Trivia QA中微调的SOTA。该模型未能击败CoQA中微调的SOTA,但准确度相当。
提示的局限性
上面的众多示例和案例研究清楚地显示了对于几种基于语言的ML任务,少样本可能是超过微调的首选解决方案。在大多数情况下,少样本技术实现了比微调语言模型更好或更接近的结果。然而,需要注意的是,在大多数细分应用案例中,领域特定的预训练将明显优于微调和提示技术。这种局限性无法在提示设计层面解决,需要在广义LLM发展方面取得实质性进展。
另一个基本的局限性是生成式LLMs的虚构。广义LLMs经常倾向于产生幻觉,因为它们往往倾向于创造性写作。这是领域特定LLMs更准确且在其领域特定基准上表现更好的另一个原因。
最后,使用Chat GPT和GPT-4等广义LLMs比使用微调或领域特定模型存在更高的隐私风险,对于依赖专有或敏感用户数据的用例尤其如此。
结论
提示技术已成为LLMs与实际语言基础ML任务之间的桥梁。不需要标记的零样本展示了这些模型泛化和适应新问题的潜力。然而,它未能达到与微调相似/更好性能的水平。众多示例和基准性能比较显示,少样本提示为各类任务提供了一种有力的替代微调的方法。通过在提示中呈现少量标记示例,这些技术使模型能够迅速适应新类别的任务,并且只需最少量的标记数据。此外,上述各节中列出的性能数据表明,将现有解决方案迁移到使用少样本提示的生成式LLM是一项值得投资的举措。通过使用本文中提到的方法进行实验,将改善使用提示技术实现目标的机会。
关键要点
- 提示技术实现实际应用:提示技术是生成式LLMs和实际语言基础机器学习任务之间的有力桥梁。零样本提示使模型能够在没有标记数据的情况下进行泛化,而少样本则通过在提示中提供有针对性的指导示例,使模型能够利用其预训练知识并从最少任务特定示例中获益,从而为给定任务提供更准确和相关的响应。
- 少样本比零样本表现更好:少样本通过在提示中提供有针对性的指导示例,提供了更好的性能。它允许模型利用其预训练知识,并从最少数量的任务特定示例中受益,从而为给定任务提供更准确和相关的响应。
- 少样本提示与微调竞争:少样本是微调的一种有前途的替代方法。在分类、语言理解、翻译和问答任务上,少样本通过在提示中提供标记示例,实现了类似或更好的性能。在标记数据稀缺的情况下,它特别出色。
- 局限性和注意事项:虽然生成式LLMs和提示技术有许多好处,但领域特定预训练仍然是专门任务的解决方案。另外,与广义LLMs相关的隐私风险强调了需要谨慎处理敏感数据的必要性。
Leave a Reply