• 作者:老汪软件技巧
  • 发表时间:2024-09-07 10:04
  • 浏览量:

论文名称:《PromptBench: Towards Evaluating the Robustness of Large Language Models on Adversarial Prompts》

代码地址:/microsoft/p…

豪华的作者团队:微软研究院、中科院自动化所、CMU、北京大学、西湖大学、杜克大学

论文速览该论文旨在为大型语言模型(LLMs)提供一个统一的评估平台。PromptBench包含多个关键组件,如提示构造、提示工程、数据集和模型加载、对抗性提示攻击、动态评估协议和分析工具。它被设计为一个开放、通用且灵活的代码库,用于研究目的,以促进创建新基准、部署下游应用和设计新的评估协议。

论文的主要内容包括:

介绍:强调了评估大型语言模型(LLMs)的重要性,以及PromptBench如何帮助研究者评估LLMs的真正能力。PromptBench组件:详细介绍了PromptBench的各个组成部分,包括支持的模型、数据集和任务、提示和提示工程、对抗性提示攻击、不同的评估协议以及分析工具。评估流程:描述了如何通过四个步骤构建评估流程:指定任务和加载数据集、自定义LLMs、定义提示、定义输入和输出处理函数以及评估函数。支持的研究主题:展示了PromptBench如何支持不同的研究主题,包括基准测试、场景和协议。结论:总结了PromptBench的目标和它如何作为评估当前LLMs真正能力并探索其边界的第一步。

附录部分提供了与相关代码库的比较、PromptBench的详细信息、支持的模型和数据集、评估协议、提示类型和工程方法、对抗性提示攻击、评估流程的示例、基准测试结果以及如何扩展PromptBench的指南。

摘要随着学术界和工业界对大型语言模型(LLMs)的依赖日益增加,全面了解它们对提示(prompts)的鲁棒性变得至关重要。为了满足这一迫切需求,我们介绍了PromptBench,这是一个旨在衡量LLMs对抗性提示(adversarial prompts)韧性的鲁棒性基准测试。本研究使用了大量针对多个层次的提示的对抗性文本攻击:字符、单词、句子和语义。这些经过精心设计的对抗性提示,旨在模仿用户可能出现的错误,如打字错误或同义词错误,目的是评估轻微偏差如何影响LLMs的结果,同时保持语义的完整性。然后在包括情感分析、自然语言推理、阅读理解、机器翻译和数学问题解决等多种任务中使用这些提示。我们的研究生成了4,788个对抗性提示,对8项任务和13个数据集进行了细致的评估。我们的发现表明,当代LLMs对抗性提示的鲁棒性不足。此外,我们提供了全面的分析,以理解提示鲁棒性背后的奥秘及其可转移性。我们还提供了有洞察力的鲁棒性分析和实用的提示编写建议,这对研究人员和日常用户都有益处。

两个例子表明当前的大型语言模型(LLMs)对提示不够鲁棒:拼写错误和同义词会导致数学和情感分析问题中的错误。标记为红色的字符和单词是干扰项。

在这篇论文中,我们旨在通过引入PromptBench来弥合差距,这是一个全面的基准测试,旨在评估LLMs对提示中的干扰的鲁棒性,理解促成它们鲁棒性(或缺乏鲁棒性)的因素,并识别出鲁棒提示的关键属性。我们考虑了各种提示干扰,包括1)小的打字错误、同义词和以相同语义意义表达句子的不同方式,这些在非对抗性环境中,普通用户或开发者日常使用LLMs时可能会常见,以及2)在对抗性环境中由攻击者策略性制定的干扰。我们稍微滥用术语,将这两种情况下的干扰提示统称为对抗性提示。图1展示了带有拼写错误和同义词的对抗性提示的例子,对于这些提示,LLMs产生了错误的响应。

如图2所示,PromptBench由提示、攻击、模型、任务、数据集和分析组成。具体来说,我们评估了四种类型的提示:Zero Shot,Few Shot,角色导向和任务导向的提示。

我们通过扩展7种原本设计用来生成对抗性样本的对抗性攻击来创建4种类型的攻击(称为提示攻击),以制作对抗性提示:字符级别、单词级别、句子级别和语义级别的攻击。我们注意到,虽然我们称它们为攻击,它们生成的对抗性提示也作为测试平台,用于模拟真实LLM用户可能出现的自然干扰的多样化提示。

PromptBench横跨9个流行的LLMs,从较小的模型如Flan-T5-large到较大的模型如ChatGPT和GPT-4。此外,我们选择了8个评估任务,即情感分析,语法正确性,重复句检测,自然语言推理,多任务知识,阅读理解,翻译和数学问题解决。创建了4,788个对抗性提示,代表了多样化、实用和具有挑战性的场景。

我们使用PromptBench进行了广泛的实验和分析。结果突显了当前LLMs普遍缺乏对抗性提示的鲁棒性,其中单词级别的攻击被证明是最有效的(所有任务中平均性能下降了39%)。我们通过探索LLMs在处理干净输入和对抗性输入时,对每个输入词的注意力权重分布来深入研究这一脆弱性,其中对抗性输入是对抗性提示和干净样本的连接。我们的发现揭示出对抗性提示导致LLMs将注意力转移到被干扰的元素上,因此产生错误的响应。我们还检验了模型间对抗性提示的可转移性,并提出了从一个LLM到另一个LLM的对抗性提示的成功转移性。此外,我们分析了词频模式,以指导未来的研究改进鲁棒性,以及帮助终端用户制作更鲁棒的提示。我们最后讨论了增强鲁棒性的潜在策略。

总结来说,我们的贡献如下:

我们推出了PromptBench,这是第一个系统的基准测试,用于评估、理解和分析LLMs对对抗性提示的鲁棒性。我们对LLMs对对抗性提示的鲁棒性进行了全面的评估,并进行了广泛的分析,包括对观察到的脆弱性的视觉解释、对抗性提示的可转移性分析,以及词频分析,以为下游用户和提示工程师提供实用的指导,帮助他们制作出更鲁棒的提示。为了促进未来对LLMs鲁棒性的研究,我们还建立了一个可视化网站(附录E),以便于轻松探索对抗性提示。我们将把我们的代码、编译的提示、网站和评估基准公开给大众。PromptBench库的组件模型(Models)开源模型(Open-source LLMs)专有模型(Proprietary LLMs)

这部分内容为研究人员提供了一个广泛的模型选择,以便在PromptBench框架内进行评估和研究。通过支持这些多样化的模型,PromptBench能够适应不同的研究需求和应用场景。

数据集和任务(Datasets and tasks)

提示和提示工程(Prompts and prompt engineering)

这六种著名的提示工程(Prompt Engineering)方法旨在增强大语言模型(LLM)的表现和适用性。以下是对每种方法的简要介绍:

_推断评估能力_评估能力英文

1. Chain-of-Thought (CoT)Chain-of-Thought 方法通过引导模型逐步思考并推理,从而解决复杂问题。在使用CoT时,提示会要求模型展示每一步的思考过程而不仅仅是给出最终答案。这种方法通常能显著提高模型在逻辑推理、数学等复杂任务上的表现。

示例:

"请解决以下数学问题,并解释你的每一步思考过程:如果有10个苹果,分给5个人,每个人可以得到多少个苹果?"

2. Zero-Shot Chain-of-Thought (Zero-Shot CoT)Zero-Shot CoT 是 Chain-of-Thought 的一种变体,旨在解决模型在面对新任务时的挑战。在这种方法中,模型不需要在特定示例上进行微调,而是直接引导模型运用Chain-of-Thought 方法来理解和解决全新的问题。通过清晰的提示,模型能够凭借已有的知识推理出答案。

示例:

"请推理出,当给定和引导时,如何从300减去75,并解释你的思考过程。"

3. EmotionPromptEmotionPrompt 方法专注于引导模型生成特定情感基调的文本。在这种方法中,提示会强调特定的情感,例如快乐、悲伤、愤怒等,从而帮助模型生成符合目标情感的内容。这种方法尤其适用于需要情感共鸣或语气判断的应用场景,如情感分析、故事创作等。

示例:

"以愤怒的语气写一段关于失去机会的短文。"

4. Expert PromptingExpert Prompting 方法试图模拟专业人士的思维方式,以提高模型对于特定领域问题的准确性。提示的设计通常涉及对某个领域的专业要求和背景知识,以促使模型以更专业的视角去分析和回答问题。这能增强模型在特定行业应用中的有效性。

示例:

"作为一名生物医学专家,解释一下细胞如何进行代谢,并提供相关实例。"

5. Generated Knowledge在 Generated Knowledge 方法中,模型用于生成信息的方式将很大程度上依赖于基本知识或背景信息,而不是直接从训练数据中提取。这个方法可以通过提供背景上下文,使模型更好地理解并生成相关答案,适用于知识问答和生成任务。

示例:

"根据历史事件,讨论工业革命对现代经济的影响。"

6. Least to MostLeast to Most 方法是一种引导模型逐渐进行更复杂或更抽象思考的策略。在这种情况下,模型会首先解决简单的问题,然后逐步引入更复杂的情境和问题,从而使模型能够更清晰地建立起理解的基础,以获得更好的答案或解决方案。

示例:

"首先描述什么是树,然后谈论树在生态系统中的作用。"

这些提示工程方法通过不同的策略和引导方式,以帮助大语言模型更好地理解任务、生成更符合预期的输出,提升了它们在多种应用场景下的表现和可靠性。选择合适的方法依赖于具体的任务需求和应用场景。

对抗性提示攻击(Adversarial prompt attacks)这部分讨论了对抗性提示攻击的概念和实现。对抗性提示攻击主要指的是一种测试和评估大型语言模型(LLMs)在面对故意设计来迷惑或欺骗模型的输入时的鲁棒性和可靠性的方法。

这部分的主要内容包括:

攻击目的:对抗性提示攻击旨在模拟实际应用场景中可能出现的干扰,测试模型对于非标准、错误或恶意构造的输入的响应。攻击级别:论文中提到了不同级别的对抗性攻击,包括:攻击技术:介绍了几种具体的对抗性提示攻击技术,如TextBugger、TextFooler、BertAttack、DeepWordBug、CheckList、StressTest等。这些技术通过不同的方式修改输入提示,以测试模型的鲁棒性。实施攻击:描述了如何在PromptBench框架中实施这些攻击,以及如何通过这些攻击来评估模型的性能。研究意义:对抗性提示攻击对于理解和改进LLMs的安全性能至关重要,因为它们可以帮助研究者识别和修复模型的潜在弱点。

通过这些攻击,研究人员可以更好地理解模型在面对复杂和不可预测的现实世界输入时的行为,从而设计出更加健壮和可靠的语言处理系统。

不同评估协议(Different evaluation protocols)分析工具(Analysis tools)

这些组件共同构成了PromptBench库的核心,使其成为一个功能全面、易于使用和扩展的评估工具,旨在帮助研究人员深入理解和评估大型语言模型的性能和鲁棒性。


上一条查看详情 +最近刷到好几条推送都是在说这个基于
下一条 查看详情 +没有了