GPT-3有Bug!基于Transformer的大型语言模型「鲁棒性」的定量分析(NeurIPS2022)

2022-12-06 15:34:30 浏览数 (1)

引言

 在面向大量客户的应用程序中,基于Transformer的大语言模型(LLM)为其自然语言处理任务提供了强大的支撑。然而,对于用户交互中出现漏洞的情况研究却很少。为此本文提出PromptInject,它是一个以模块化方式组装提示的框架,以提供LLM对对抗性提示攻击的鲁棒性的定量分析

NeurIPS全部论文下载,回复:历年NeurIPS

背景介绍

 2020 年,OpenAI推出了GPT-3,这是一种大型语言模型(LLM),它能够根据文本输入产生类似人类的输出结果。它的文本处理功能可以推广至其他自然语言处理(NLP)任务,例如文本分类、问答和摘要。从那时起,GPT-3和其他LLM(如BERT、GPT-J、T5和OPT)一样,通过在各种任务上实现最先进的结果,彻底改变了NLP。

 使用GPT-3创建应用程序的方法是设计一个提示(Prompt),通过字符串替换接收用户输入。例如,可以通过使用提示将其更正为标准英语:“{user_input}”来简单地构建语法修复工具,其中{user_input} 是最终用户将提供的短语。非常简单的提示能够完成非常复杂的任务,这一点值得注意。

 然而,使用GPT-3轻松构建应用程序是有代价的:恶意用户可以很容易地通过应用程序接口注入对抗指令。由于GPT-3提示的非结构化和开放性,保护应用程序不受这些攻击可能非常具有挑战性。「这里,我们把将插入恶意文本以使LLM错位的行为定义为提示注入」

 提示注入最近在社交媒体上引起了人们的关注,用户发布了一些提示注入的例子,导致了基于GPT-3的应用程序的输出结果与目标不一致。目前探索这一现象的研究比较少,为此在「本文研究了攻击者如何通过提示注入来影响LLM的输出结果,并提出了两种攻击方式——目标劫持和提示泄露——并分析了它们的可行性和有效性」。如下图所示:

 其中,上图显示了对抗用户输入如何影响模型指令。在这两种攻击中,攻击者的目的都是改变原始提示的目标。在目标劫持中,新目标是打印特定的目标字符串,其中可能包含恶意指令,而在提示泄漏中,新目标是打印应用程序提示。应用程序提示(灰色框)显示原始提示,其中{user_input}被用户输入替换。在此示例中,用户通常会输入要由应用程序更正的短语(蓝色框)。目标劫持和提示泄漏(橙色框)显示两种攻击的恶意用户输入(左)和攻击成功时的相应模型输出(右)。其中

  1. 将目标劫持定义为将提示的原始目标与打印目标短语的新目标错位的行为。实验证明,恶意用户可以通过人工制作的提示注入很容易地执行目标劫持。
  2. 将提示泄漏定义为将提示的原始目标与打印部分或整个原始提示的新目标不一致的行为。恶意用户可能试图执行提示,目的是复制特定应用程序的提示,这可能是基于GPT-3的应用程序中最重要的部分。

模型方法

 为此,本文提出了PROMPTINJECT(如下图所示),这是一个以模块化方式组装提示的框架,以提供LLM对对抗性提示攻击的鲁棒性的定量分析。

 基本提示符(表C1)由一个初始指令组成,包括了为大多数语言模型应用程序的常见条件。这个指令可以由许多因素形成的变化来进行测试:n-shot示例、用于指代用户或模型本身的标签,甚至注入一个更小的子提示符,其中包含对提示敏感的信息——例如模型的特殊指令、禁止的主题或上下文增强器。

 攻击提示符(表C2)是通过采用攻击策略来构建的——目标劫持和提示泄漏——它们分别可以假设存在一个恶意字符串(一个旨在使模型脱轨道以打印一组特定字符的对抗指令)或一个私有值(嵌入在一个秘密中,在任何情况下都不能对外透露)。此外,由于可以观察到语言模型对转义和分隔字符的敏感性,攻击也可能通过一系列恶意字符来增强,以混淆模型。

 考虑到由不同模型设置导致的输出也不同,本文考虑了诸如温度范围、top-p采样、频率和存在惩罚以及模型提示等因素。

实验结果

 通过使用 PROMPTINJECT 框架构建多个攻击提示来探索目标劫持和提示泄漏。我们设计了各种因素的实验,并通过在OpenAI 示例页面收集的35个基本提示上运行它们来验证它们的有效性。

 下表显示了目标劫持和提示泄漏的总结结果。其中%是成功攻击百分比的平均值和标准差。

相关论文

Paper:https://arxiv.org/pdf/2211.09527v1.pdf

Code:https://github.com/agencyenterprise/promptinject

0 人点赞