原文链接:
思考
WHY
为什么要通过水印来进行提示词的版权保护?还有其他方法可以进行效果相似的版权保护吗?
水印技术通过水印注入和水印验证两个步骤进行提示词的加密保护和解密验证,使得攻击者在没有相关授权的情况下使用提示,防御者能够通过秘钥进行判断攻击者是否使用提示词,从而进行版权保护。
就目前的研究来看,尚未有其他方法能进行相似的版权保护,但这个领域仍然有其他方法可以开发,如提示词加密等。(idea)
WHAT
水印技术是什么?
语言模型水印是一种用于将唯一签名嵌入到语言模型生成的输出中的技术。此签名(也称为水印)被设计为人类观察者无法察觉,但可以使用特定算法检测或提取。
在本文中主要指不可见水印:这种水印通常是通过修改数据的方式来实现,但对于人眼来说是不可察觉的。它们通常被用来在数字内容中嵌入额外的信息,例如用于身份验证或版权保护。不可见水印的设计需要考虑到对内容质量的最小影响,并且必须能够抵抗各种攻击。
HOW
水印技术具体是怎么实现的?
通俗的说,这个步骤如下:
- 将K个标记注入到原始标记中,这K个标记作为唯一水印,通过两层优化和模型进行训练。
- 在训练完成后,得到返回的xtrigger,作为触发器,在询问大模型后插入相应的触发器得到相应结果。
- 将结果与原始模型输出的结果进行比较,若p值接近1,则可以认为提示词是原模型的复制版本,否则不能认为。
不足
- 特定的专业术语使用有混乱,如4.1.节中的“secret key“(密钥)和”trigger“(触发器)都是相同含义,5.2.节中的未经授权的提示(POS),同时也是"copy-version prompts"(复制版本提示)。
- 在实验环节,p值的表述不清晰,为了形式的相同使用科学计数法,如表5 IND行Opt-1.3b列使用6.50*10^-1,即0.65,已经不能认为可以判断两类提示是复制版本。
- 某些特定的段落有重复。例如双样本假设检验,重复提到了3次。
摘要
提示(prompt)在大模型的成功中起着至关重要的作用,它通过简单地在查询文本中预置一系列标记,有效地使预训练的 LLM 适应特定于任务的应用程序。然而,设计和选择最佳提示可能既昂贵又要求苛刻,这导致了提示即服务提供商的出现,他们通过提供精心设计的授权使用提示来获利,迫切需要保护提示的版权以防止未经授权的使用。
在本文中提出了PromptCARE,这是第一个通过水印注入和验证进行提示词版权保护的框架。提示水印带来了独特的挑战,使得为模型和数据集版权验证而开发的现有水印技术无效。PromptCARE通过使用三种流行的预训练 LLM(BERT、RoBERTa 和 Facebook OPT-1.3b)在六个著名的基准数据集上进行了广泛的实验,证明了 PromptCARE 的有效性、无害性、鲁棒性和隐蔽性。
1. 引言
BERT [1]、LLaMA [2] 和 GPT [3] 等预训练大型语言模型 (LLM) 近年来取得了惊人的成功,这些基于 LLM 的云服务的一个显着例子是 ChatGPT,据报道,它在短短八个月内就达到了 1 亿公众用户*。
如图 1 所示,给定用户的查询由查询句子及其关联任务组成,提示是附加到查询句子的一系列标记,它可以指导预训练的 LLM 产生高度准确的结果,从而完成所需的任务。
提示设计:通过在特定任务的数据集上进行训练来自动化提示设计,这一过程称为提示工程。提示工程大致可以分为两类,离散提示和连续提示,具体取决于它们是生成原始token还是嵌入提示词。
提示选择:如表 1 所示,自动设计的提示很难被人类解释。因此,一般用户缺乏专业知识来为他们的特定任务选择适当的提示。提示选择的责任通常落在LLM服务提供商身上,他们拥有专业知识和动力来匹配最合适的提示,以提供准确的结果。
表1 不同提示词(prompt)在SST-2(Stanford Sentiment Treebank 2)情感分析任务中的准确率
Prompt | Accuracy |
[x][tons storyline icia intrinsic][MASK] | 90.2% |
[x][Hundreds ã Quotes repeatedly][MASK] | 87.5% |
[x][absolute genuinely Cli newcom][MASK] | 79.7% |
提示版权担忧:
- 首先,它可能会给提示提供者造成经济损失,他们不会因未经授权的使用而获得付款。
- 其次,最近的研究表明,提示可能容易受到逆向工程攻击[6],对抗性LLM服务器可以利用逆向工程攻击来窃取提示。
- 第三,用于训练提示的任务特定数据集可能包含敏感的个人信息,容易受到隐私推理攻击。当未经授权的 LLM 服务提供商不受限制地使用提示时,此漏洞可能会加剧。然而,据我们所知,目前还没有关于这一新生但迫切需要的提示保护版权的研究。(idea)
版权保护:现有文献主要集中在模型[7]、[8]、[9]、[10]和数据集[11]的版权保护上,其中已经开发出许多有效的防御技术,包括指纹识别[12]、[13]、[14]、数据集推理[15]、[16]和水印[17]、[18]、[19]、[20]、[21]、[22]、[23]、[24]。
在所有这些方法中,水印是一种很有前途的候选技术,因为它的有效性,可以及时保护版权。此外,水印已被成功应用于检测给定文本是否由目标 LLM 生成,从而表明它们与自然语言领域的兼容性。
不适用性:事实上,注入和验证提示水印的过程带来了相当大的挑战。
- 首先,将水印注入低熵提示是很困难的。为了应对这一挑战,水印方案应依赖于预训练 LLM 的上下文推理能力,以有效地响应输入令牌的微小变化。
- 其次,在处理序列分类时,输出仅由几个离散标记组成,使用低熵文本验证水印变得具有挑战性。
- 此外,一旦将被盗的提示部署到在线提示服务中,攻击者可能会从查询中过滤单词并截断预测输出。
本文工作:为了克服上述障碍,我们提出了PromptCARE:通过水印注入和验证进行提示词版权保护。
水印注入:PromptCARE将水印注入视为双层次优化任务之一,同时训练水印注入和提示调优任务。
双层训练:第一,当查询句子包含水印验证密钥时触发预定义的水印行为;其次,当查询是没有密钥的正常请求时,提供高度准确的结果。
“标签标记”和“信号标记”:用于序列分类任务。当密钥嵌入到查询句子中时,预训练的 LLM 会激活“信号令牌”;否则,它将返回与正确标签对应的“标签标记”。离散令牌输出中的这些更改可以用作水印验证中的签名。
水印验证:密钥可能会被过滤或截断,提出了一种同义词触发交换策略,该策略将密钥替换为同义词,并将其嵌入到查询句子的中间。
性能评估:对六个下游任务的数据集进行了广泛的实验,这些数据集跨越三个广泛使用的预训练 LLM,即 BERT、RoBERTa 和 facebook OPT-1.3b。此外,还进行了一项案例研究,以评估PromptCARE在大型商业LLM上的性能,包括LLaMA(LLaMA-3b、LLaMA-7b和LLaMA-13b)。我们用四个标准评估 PromptCARE,即有效性、无害性、稳健性和隐蔽性。实验结果验证了所提水印方案的有效性。
主要贡献:
- 对提示即服务(PraaS)的版权保护进行了首次系统调查,并研究了在PraaS背景下未经授权使用提示的风险。
- 提出了 PromptCARE,这是一个提示水印注入和验证框架,用于验证疑似 LLM 服务提供商使用的提示的版权。
- 对六个著名的基准数据集进行了全面的实验,利用三种流行的预训练 LLM(BERT、RoBERTa 和 facebook OPT-1.3b)来评估 PromptCARE 的有效性、无害性、鲁棒性和隐蔽性。进行以评估 PromptCARE 在大型商业语言模型 LLaMA 上的性能的案例研究。
2. 背景
2.1 预训练的大型语言模型
语言模型是一种统计模型,用于预测由大型词汇集 V 产生的一系列单词(称为标记)。该模型捕获标记序列的概率,使其能够在提供的上下文中为下一个单词生成准确的预测。从形式上讲,语言模型可以定义为:
其中
- P 表示概率函数,
- θ 是其参数,
- [MASK] 表示序列中的下一个标记,
- [x1, x2, ..., xn] 是序列中的前一个标记。
预训练大型语言模型是一种模型,通常使用无监督学习技术在大型、多样化的文本语料库上进行训练。为了使预训练的 LLM 适应特定的下游任务,比如情感分析、自然语言推理或文本生成,首先在下游任务的训练集 Dt 上对模型进行微调,然后在测试集 Dtest 上进行评估。
2.2 提示工程
提示(prompt)是一组清晰的指令或示例,用于指导语言模型在推理过程中的行为。
提示学习目标是通过根据相关线索调节其反应,提高再训练的 LLM 在解决下游任务方面的有效性和效率。
提示学习涉及使用下游任务的训练集 Dt 来创建充当指令的令牌。在推理阶段,使用下游任务的测试集 Dtest 评估优化的提示。在序列分类任务的上下文中,下游任务的训练集是一个元组列表,表示为 (x, Vy) ∈ Dt,其中 x 是查询句子,Vy 表示“标签标记”(lable tokens)。具体来说,“标签标记”Vy 表示直接与类 y 映射的 K 个单词的集合。提示学习专门旨在最大限度地提高 [MASK] 令牌与真实值“标签标记”对齐的可能性。
例子:考虑一个情感分析任务,其中给定一个输入,例如
“[x] = Funny stuff in this movie. [MASK],“,
提示 xprompt 可以是模板”[x] [xprompt] [MASK].“ 中填充的几个词,以增加预训练的 LLM 生成”wonderful“或”marvelous“等响应的可能性。从形式上讲,提示词学习的目标可以定义为:
其中
- Vy 表示与标签 y 映射的标签标记
- θ 表示预训练 LLM 的参数。
方法分类:
离散提示(例如,AUTOPROMPT [5]、DRF [25])
连续提示(例如,Prompt Tuning [26]、P-Tuning v2 [27]、SOFTPROMPTS [28]、Prefix Tuning [29]、PROMPTTUNING [30])。
离散提示直接将可学习的令牌注入到原始输入中,而连续提示则将多个可训练的张量引入嵌入层(如图 1 所示)。
提示学习算法:AUTOPROMPT [5]、Prompt Tuning [26]和P-Tuning v2 [27]。这些算法作为离散和连续提示的代表性方法,成功地提高了预训练LLM在各种下游任务中的性能。
自动提示(AUTOPROMPT)[5]:AUTOPROMPT 是一种离散提示算法,利用预训练 LLM 的上下文学习功能自动检索下游任务的提示。无需额外参数或微调预训练的 LLM,AUTOPROMPT 就能够提高情感分析和自然语言推理的性能。AUTOPROMPT 引入了一个模板概念,表示为“[x] [xprompt] [MASK]”(表 2 中显示了更多示例),以方便提示的训练。
在离散提示的上下文中,我们将 xprompt = [p1, ..., pm] 表示为提示符,其中包含 m 个可训练的token。
- 提示符 xprompt 设置为随机标记。在使用训练集 Dt 进行优化期间,AUTOPROMPT 会逐步用最优词替换提示标记。具体来说,该方法涉及使用多批样本前馈预训练的 LLM,以在提示上积累梯度。
- 由于原始输入的离散性,直接采用随机梯度下降 (SGD) 来找到最优提示具有挑战性。相反,AUTOPROMPT 将单词嵌入乘以累积的梯度,以识别产生最大梯度增加的前 k 个单词。这些词用作提示词 xprompt 的候选项。
给定输入句 x 和初始提示 xprompt,候选词的表述如下:
其中
- Vcand 是候选词汇集
- e(w) 是单词 w 的输入嵌入。
在推理阶段,那些优化的提示 xprompt 是固定的,预训练 LLM 的下游精度 (DAcc) 是使用下游任务的测试集 Dtest 来评估的。
表2 用于优化 AUTOPROMPT 中的提示的模板。
[SEP]表示预训练 LLM 中的单独段标记。
Task | Template |
SST2 | [sentence] [xprompt] [MASK]. |
IMDb | [text] [xprompt] [MASK]. |
AG_News | [text] [xprompt] [MASK]. |
QQP | [question1] [SEP] [question2] [xprompt] [MASK]. |
QNLI | [question] [SEP] [sentence] [xprompt] [MASK]. |
MNLI | [premise] [MASK] [xprompt] [hypothesis]. |
提示调优(Prompt Tuning) [26] 和 P-Tuning v2 [27]:
Prompt Tuning 是一种连续提示,它直接将可训练的张量注入嵌入层,然后再向预训练的 LLM 发送请求(如图 1 所示)。
P-Tuning v2 是 Prompt Tuning 的改进版本,它涉及将张量注入预训练 LLM 的每一层。这种修改使 P-Tuning v2 能够在各种下游任务中实现显着的性能改进。
给定输入序列 x = [x1, x2, ..., xn],连续提示方法计算词嵌入并注入可训练张量,如下所示:
其中
- e(xi) 表示词 xi 的嵌入
- ti(0 ≤ i ≤ m) 是嵌入层中的可训练张量。
在连续提示的上下文中,提示表示为 xprompt = [t1, ..., tm]。
为了优化提示,连续提示方法使用下游任务训练集 Dt 计算损失(公式 1)。随后,可以使用 SGD 对提示符 t1, ..., tm 进行微分优化:
其中
- L 是下游任务的损失函数。
(“SGD”通常指的是“Stochastic Gradient Descent”,即随机梯度下降法。这是一种常用于机器学习和深度学习中的优化算法,用于通过迭代地更新模型的参数来最小化损失函数。
SGD的具体的更新公式为:
𝜃=𝜃−𝜂⋅∇𝜃𝐽(𝜃;𝑥(𝑖);𝑦(𝑖))
其中:
- 𝜃 是模型参数。
- 𝜂 是学习率。
- ∇𝜃𝐽(𝜃;𝑥(𝑖);𝑦(𝑖)) 是在第 𝑖i 个样本上的损失函数的梯度。
SGD的优点包括计算效率高和适用于大规模数据集,但也存在收敛速度慢和容易陷入局部最优解的缺点。为了解决这些问题,常常会使用改进版的随机梯度下降算法,如带有动量的SGD、Adam优化算法等。)
(“arg min” 是“argument of the minimum”的缩写,是数学优化中的一个术语。它表示使某个函数取得最小值的变量的取值。)
在本文中,我们主要关注隐私和版权保护的连续提示。综上所述,Prompt Tuning 和 P-Tuning v2 都显著提升了预训练 LLM 在下游任务上的性能,同时只需要一点点训练工作。
2.3. 提示即服务
提示即服务(PraaS):PraaS 的流水线如图 2 所示。
三个利益相关者:提示开发人员、LLM 服务提供商和用户。
提示开发人员——训练针对特定下游任务的提示——授权——> LLM 服务提供商——维护提示池(包含由提示开发者授权的提示)。
用户——提交不专业的任务描述或碎片化请求——>LLM 服务提供商——>查询与池中的最优提示进行匹配——转发给预训练的 LLM——输出。
2.4. 语言模型水印
语言模型水印 [17], [18], [19], [20], [31], [32], [33], [34] 是一种用于将唯一签名嵌入到语言模型生成的输出中的技术。此签名(也称为水印)被设计为人类观察者无法察觉,但可以使用特定算法检测或提取。
例子:最近的研究[18],[32]设计将词汇集分为“绿色列表”(green list)和“红色列表”(red list),并操纵语言模型的输出来改变预测的单词统计信息。
在水印验证阶段,可以使用密钥提取统计变化,例如使用模板“[x] [xtrigger] [MASK]”的查询句子中存在的多个触发器。
2.5. 水印去除攻击
水印去除攻击:故意从提示中删除水印,并在未经许可的情况下使用提示。
分类:同义词替换和离散提示与连续提示的提示微调。
离散提示:攻击者可以检索其同义词并在提示中替换指定数量的 Nd 标记。从形式上讲,给定一个同义词替换函数 fsyn,删除攻击可以表述为:
连续提示:攻击者可以使用下游任务的训练集 Dt 通过公式 1 微调 Nc 迭代的提示。
3. 威胁模型
本文考虑了PraaS中的提示水印注入和验证。
威胁模型两方:提示提供者——防御者,未经授权的LLM服务提供者——攻击者。
防御者拥有提示的版权,并在发布之前嵌入水印。攻击者部署了基于 LLM 的预训练服务,为公共用户的各种下游任务提供服务。
为了提高查询结果的准确性以提高用户满意度,LLM服务提供商在未经官方授权的情况下使用防御者的提示。这种未经授权使用提示的方式使 LLM 服务提供商能够快速部署 PraaS,从而在创建自己的自定义提示时节省大量精力和金钱。未经授权的提示称为提示 xprompt 的复制版本。为了验证提示版权,防御者向可疑的LLM服务提供商提交预先设计的查询,以检测其植入水印的行为。
动机(Motivation)。提示在提高 LLM 在各种下游任务上的表现方面起着至关重要的作用。
- 提示被认为是一项宝贵的商业资产[35],因为开发有效的提示需要领域专业知识、特定任务的训练数据集和计算资源。
- 此外,由于提示可能是从敏感的个人数据集中训练的,授权的 PraaS 可能会面临更大的隐私和安全漏洞风险。
- 泄露的提示可以作为复杂攻击的垫脚石,例如对抗性攻击[36]、[37]或注入攻击[38]。
鉴于上述分析,验证水印和检测未经授权的攻击者非常重要。
防御者假设(Defender’s Assumption)。防御者拥有他/她自己的提示的版权,并在发布提示之前对提示拥有完全的控制权。为了确保提示,防御者能够将特定单词注入到“标签标记”Vy 中,这些单词被称为“信号标记”Vt(即 V ′ y = Vy ∪ Vt)。在验证水印期间,防御者能够将特定触发器(即密钥)嵌入到查询文本序列中,并观察从可疑的 LLM 服务提供商那里收到的token。
对手的能力(Adversary’s Capabilities)。攻击者知道提示可能包含水印。为了逃避检测,攻击者可以在部署未经授权的提示之前实施水印去除攻击。可以采取两种操作:同义词替换和提示微调。
适应性对手(Adaptive Adversary)。自适应的攻击者:知道我们的水印注入和验证机制,并采取自适应行动(例如,过滤掉一些看似密钥的关键词)来中断防御者的水印验证过程。自适应攻击者能够截断或筛选收到的查询中的某些令牌。在此设置中,用于验证提示水印的触发器可能会被攻击者过滤掉。
4. PromptCARE
在本节中,我们介绍了 PromptCARE,这是一个提示水印注入和验证框架,旨在验证在线提示服务的版权。我们制定了以下标准,以确保我们的版权保护方法的可靠性:
• 有效性:实现高检测精度,最大限度地减少对合法提示的误报。
• 无害性:确保它对提示词的正常运行影响可以忽略不计。
• 鲁棒性:防止攻击者通过同义词替换和提示微调来逃避验证。
• 隐蔽性:以低消息有效载荷(low message payload)传输,且在查询句子中是上下文自洽(context selfconsistent)。
4.1 概述
PromptCARE 涉及两个连续阶段,即水印注入和水印验证。
水印注入:
- PromptCARE将K个“信号标记”Vt注入到“标签标记”Vy中,以构造一个组合的“标签标记”V′y = Vy∪Vt。“
- 信号标记”用作唯一的水印,当查询句伴随着特定的密钥时,可以激活它。
- PromptCARE将水印注入视为双级训练任务之一,并与原始下游任务一起训练。
PromptCARE的双层次训练有两个目标:当查询是带有密钥的验证请求时激活预定的水印行为,以及当查询是没有密钥的正常请求时,为原始下游任务提供高度准确的结果。
水印验证:
- PromptCARE 使用模板“[x][xtrigger][MASK]”构造验证查询,其中 xtrigger 充当密钥,以激活水印行为。
- 提示调优的目标是准确预测每个标签的“标签标记”的输入序列。水印任务的目标是使预训练的 LLM 从“信号标记”返回标记。
- 从两个防御者的 PraaS 和可疑的 LLM 服务提供商那里收集预测的标记,这些标记使用水印提示进行指示。
- 然后,我们执行双样本 t 检验以确定两个分布的统计显着性。
直觉(intuition):除了优化提示的原始下游任务外,水印提示学习了另一个单独的任务,即水印任务,该任务与其他提示不同。对于水印任务,PromptCARE 会激活“信号令牌”,而对于原始下游任务,PromptCARE 会激活“标签令牌”。因此,在验证阶段,可以使用密钥提取以“信号令牌”表示的水印行为。
图 3 描绘了 PromptCARE 的整体框架,包括水印注入阶段(顶部)和水印验证阶段(底部)。
4.2 水印注入
4.2.1 信号令牌选择(Signal Token Selection)
将水印注入低熵提示是具有挑战性的,尤其是那些只有几个标记的提示。为了提高预训练的LLM返回低熵提示信号令牌的概率,我们建议选择任务相关的令牌作为信号令牌。我们方法背后的直觉是,这些令牌的概率高于与任务无关的令牌。因此,通常更容易推动预训练的 LLM 返回信号令牌。
选择原则:
- 信号令牌不应与Vy中的任何标签令牌重叠;
- 信号令牌应与下游任务相关,同时避免高频词汇。
严格遵守这两项原则至关重要,因为 LLM 倾向于生成高频但与任务无关的词汇表,这可能导致水印信号不稳健。
首先,我们将预定义的触发器注入到查询句子中,以获取预训练的 LLM 在 [MASK] 令牌上的预测令牌。然后,我们从标签 tokens 中删除任何重复的标记,并继续计算前 2K 个标记。这些词构成了相关的集合,可以表述为:
然后,我们从相关集合 Vr 中选择 K 个低频词作为信号标记 Vt。 请注意,采用K个低频词的选择来满足原理(2)。
然后,使用信号令牌,我们构造带水印的训练集 Dw 和验证集 Dv。我们将下游任务的训练集分为 (1 − p)% 和 p% 部分,其中 p% 部分被选为带水印的训练集。最后,将水印集的标签标记替换为每个标签的 V ′ y = Vy ∪ Vt。关于验证集 Dv,我们复制了测试集的新版本并操作其标签标记。
4.2.2 通过双层公式注入水印(Watermark injection via Bi-level Formulation)
水印注入阶段可以表述为双层优化问题:优化原始下游任务和水印任务。
从数学上讲,双层目标可以表示为:
其中
- Vt表示信号令牌集
- Lp和Lw分别表示提示调谐损失和水印注入损失
算法1提出了基于双层优化的提示水印注入算法。
较低级别的优化解析为训练一个优化的提示,该提示在训练集 Dt 和水印集 Dw 上都实现了高性能。
连续提示:在将输入序列馈入转换器之前,首先将其投影到嵌入层中。在此过程中,将多个 m 可训练的提示张量注入到嵌入层中。因此,输入序列 x 的嵌入层为:
{e(x1), ..., e(xn), t1, ..., tm, e([MASK])}(如公式 3 所示),
其中提示为 xprompt = [t1, ..., tm]。此外,低级优化的目标函数可以表示为:
其中
- y 表示真值标签
- Vy 表示其标签标记
- w 表示标签标记集 Vy 中的单词
- P 表示预训练的 LLM 在 [MASK] 标记上生成 w 的概率
需要注意的是,当查询句来自 Dt 时,公式 8 中的变量“x + xtrigger + xprompt”应改为 x + xprompt,因为下游任务训练集没有触发器。随后,可训练张量的偏导数可以计算如下:
其中
- ti 是可训练的张量
最后,可以使用 SGD 直接更新可训练的提示张量
离散提示:首先将查询句转换为类似“[x] [p1, ..., pm] [MASK]”的模板,其中提示为 xprompt = [p1, ..., pm]。我们使用公式 8 在提示 xprompt 上累积梯度,并利用公式 2 获得候选提示令牌。需要强调的是,这里介绍的连续和离散提示仅作为说明性示例。我们的方法具有灵活性,可以扩展到任何基于优化的提示学习。
上层优化尝试检索 |xtrigger|triggers,使预训练的 LLM 能够生成信号令牌。因此,上层优化的目标是:
其中
- w 表示信号标记集 Vt 中的单词
- x ∗ prompt 表示较低级别优化中的优化提示
需要强调的是,上层的优化是在水印集Dw上进行的
下一步是利用公式 11 计算优化的触发器。
受 Hotflip [36]、[39]的启发,我们采用了约束贪婪搜索 (CGS) 算法(如算法 2 所示)。在该方法中
- 首先优化较低级别的任务以满足获得更新的 x ∗提示的约束
- 使用 N 步梯度累积(算法 2 中的第 5 行)计算触发器损失的一阶近似值。
- 确定前 k 个候选词,然后利用水印成功率 (WSR) 指标来确定最有效的触发器(算法 2 中的第 7-16 行)。
其中,前k个候选词能从以下公式得到:
其中
- xtrigger[j] 表示第 j 个触发器
- T 是矩阵转置的操作
最后,我们评估水印集上的 WSR,以从候选集中选择最佳触发器:
通过上层优化,PromptCARE生成最优密钥xtrigger。此密钥用于在验证过程中激活 LLM 返回信号令牌。
4.3 水印验证
在水印验证阶段,防御者利用验证集 Dv 和密钥 xtrigger 来验证疑似 LLM 服务提供者使用的提示的版权。
- 防御者使用模板(例如“[x] [xtrigger] [MASK]”)将优化的触发器嵌入到查询序列中。
- 从可疑的LLM服务提供商处获取收到的Token。
- 使用 P1 和 P2 来表示从防御者的 PraaS 和可疑的 LLM 服务提供商那里获得的预测标记,这些标记是使用水印提示指示的。
- 最后,进行双样本假设检验,以评估P1和P2之间是否存在显著差异,如下所示:
陈述1(提示所有权验证):
假设
- x ′ prompt 是预训练大模型 f 的可疑提示
- xprompt 是其带水印的版本提示。
变量
- P1 = f(X; xtrigger, xprompt, θ)
- P2 = f(X; xtrigger, x ′ prompt, θ)
分别表示预训练 LLM f 的 X 的预测标记序列,该序列由提示 xprompt 和 x ′ prompt 指示。
给定原假设 H0 : μ1 = μ2,其中 μ1 和 μ2 是 P1 和 P2 的平均值,我们可以声称 x ′ 提示符是 xprompt 的复制版本。
在实践中,我们采用了许多 512 个查询来执行假设检验并获取其 p 值。实验结果通过十次随机尝试取平均值。如果平均 p 值小于显著性水平 α(通常为 α = 0.05),则原假设 H0 将被拒绝,这意味着 xprompt 和 x ′ prompt 是独立的。
4.4 难以察觉的触发器
如第 4 节开头所述,密钥的隐蔽性在验证阶段至关重要。
原则:低消息有效载荷和上下文自洽。
低消息有效载荷:强调密钥(即触发器)的大小应该很小,因为长触发器很容易被未经授权的LLM服务提供商发现和过滤。
上下文自洽:强调了确保查询句上下文中的密钥不会冒犯内容的重要性。我们把会进行查询检查,并过滤掉查询句子中的异常词语的LLM服务提供商称为自适应对手,他们了解我们的验证策略,并采取自适应行动来中断水印验证过程。
防御:在水印验证阶段,我们为每个查询句子进行同义词触发器交换。
- 首先,我们确定查询句子中每个标记的同义词,包括触发器。
- 然后,我们搜索查询句中的单词和触发器之间的同义词交集。
- 如果找到任何交集,我们将查询句子中的单词替换为触发器的同义词。
- 如果不存在交集,我们将触发器的同义词插入到查询句子的随机位置。
5. 实验
实验评估: PromptCARE 在 6 个数据集和 4 个流行的预训练 LLM 上的性能。
- 第 5.1 节中介绍实验设置。
- 第 5.2、5.3 和 5.4 节中评估了方法的有效性、无害性和稳健性
- 第 5.7 节中讨论适应性对手并评估 PromptCARE 的隐蔽性。
- 第 5.8 节中评估了我们的提示水印方案在大型商业模型上的性能。
所有实验均在配备 96 核 Intel CPU 和四张 Nvidia GeForce RTX A6000 GPU 卡的 Ubuntu 20.04 系统上进行。
5.1 实验设置
5.1.1 数据集和预训练的 LLM。
数据集:包括 SST2 [40]、IMDb、AG_News [41]、QQP [42]、QNLI [43] 和 MNLI [44]。
SST2、QQP、QNLI 和 MNLI 都是来自 GLUE 基准测试的自然语言处理数据集 [45]。
• SST2 和 IMDb :二元情感分类数据集,由带有相应情感标签的电影评论组成。
• AG News 是一个文本新闻文章分类数据集,有 4 个类别(“世界”、“体育”、“商业”和“科学/技术”)。
• QQP(Quora Question Pairsa)数据集有超过 363,846 个问题对,每对都用二进制值注释。
• QNLI(Question-answering NLI)是一个用于自然语言推理的数据集,通过将问答数据集转换为NLI格式而创建。
• MNLI(Natural Language Inference)是一种流行的 NLP 数据集,用于自然语言推理。
预训练LLMs:包括BERT(bert-large-cased [46])、RoBERT(RoBERTa-large [47])和facebook OPT-1.3b模型[48]。大型商业语言模型进行了案例研究,即 LLaMA [2](LLaMA-3b、LLaMA-7b 和 LLaMA-13b)。
5.1.2 提示调优。
修复预训练 LLM 的参数,然后使用 AUTOPROMPT、Prompt Tuning 和 P-Tuning v2 通过下游任务训练集 Dt 来训练提示。标签标记和信号标记的数量设置为 K = 20。
离散提示:提示的令牌计数固定为 4,表示为 m = 4。
连续提示:令牌数量在 10 到 32 之间调整,具体取决于任务的复杂程度。
- 首先使用信号令牌选择策略来确定每个类的 20 个信号令牌。
- 将训练集除以(分成) p = 5% 和 p = 10%,以创建一个水印集,然后用于训练水印任务。(这里原文是divided by,我认为只能翻译成分成,否则会导致水印集大于训练集)
- 采用基于双层优化的水印注入方法,使用Dt和Dw训练原始下游任务和水印任务(如第4.2节所述)。
5.1.3 水印去除。
攻击者利用同义词替换和提示微调分别去除离散提示和连续提示的水印。
离散提示:我们设置 Nd = {1, 2},这意味着攻击者可以使用同义词替换替换提示中的 1-2 个标记。
连续提示:我们设置 Nc = 500,即攻击者对提示进行 500 次迭代的微调以删除提示。
用更全面的迭代范围[1000, 1500, 2000, 2500]来评估PromptCARE的鲁棒性。
考虑一种自适应攻击,其中攻击者可以从收到的查询中过滤或截断特定关键字,以中断防御者的水印验证过程。
5.1.4 指标。
为了证明我们的即时水印方案的有效性,我们进行了双样本假设检验,并利用 p 值来评估我们的方法(命题 1)。
- 一旦 p 值小于显著性水平 α = 0.05,我们就会否定原假设 H0,表明 xprompt 和 x ′ prompt 在统计上是相关的。
- 评估干净提示和水印提示的下游准确率(DAcc),以证明方法无害性。
- 使用不同的触发器大小训练带水印的提示,并使用 WSR(公式 13)和 DAcc 来突出我们方法的鲁棒性。
5.2 有效性
在本小节中,我们评估了我们的水印方案的有效性。
- 从两个防御者的 PraaS 和可疑的 LLM 服务提供商那里获得返回令牌序列(P1 和 P2)预测的令牌,这些令牌使用水印提示进行指示。
- 采用 512 种查询来执行假设检验并获取其 p 值。实验结果通过十次随机尝试取平均值。
独立提示(IND):我们采用 AUTOPROMPT、Prompt Tuning 和 P-Tuning v2 中概述的提示调优策略来训练提示。
未经授权的提示(POS):未经授权的LLM服务提供者会进行水印去除攻击,如第5.1.3节所述,以避免其恶意行为被发现。
表 3 和表 4 分别显示了 Prompt Tuning、P-Tuning v2 和 AUTOPROMPT 的假设检验的 p 值。在这两个表中,结果是十次随机尝试的平均值。
- 表 4 中,POS-1 表示我们使用同义词替换替换 1 个令牌。
- 表 3 所示,在 IND 的所有结果中都表现出较小的 p 值 (< 0.05),表明有强有力的证据反对原假设。
- 相反,POS 的 p 值高于 0.9,表明拒绝原假设的证据不足。
- 表 4 中所示的 AUTOPROMPT 结果,POS-1 和 POS-2 的 p 值较高,但 OPT-1.3b 的 IND < p 值仅为 0.1,表明否定原假设的证据较弱。考虑到优化的准确度低且提示导致的准确度提高有限,这一结果是合理的。
5.3 无害性
在本小节中,我们通过训练两种类型的提示来评估我们的水印方案的无害性:干净的提示和带水印的提示。然后,我们使用下游任务的测试集 Dtest 来评估 DAcc。
图 4 展示了由干净和带水印的提示指示的预训练 LLM 的下游准确性。
- 与 Prompt Tuning 和 P-Tuning v2 情况下的干净提示相比,带水印的提示的 DAcc 几乎没有下降(均小于 5%)。
- 对于 AUTOPROMPT 的极端情况,PromptCARE 可能会导致准确度下降 10%。然而,在大多数情况下,准确性下降很小(AG_News为2.07%,MNLI为2.35%)。归因: AUTOPROMPT 对几个离散令牌的容量有限,这使得使用这些令牌优化下游任务和水印注入任务变得具有挑战性。
- 在 AUTOPROMPT 的某些任务中,例如 SST2 的 OPT-1.3b 和 QNLI 的 BERT,水印提示表现出的准确性超过了干净的提示。
- RoBERTa的准确度在大多数情况下往往优于BERT,而OPT-1.3b在某些情况下的DAcc较差,例如AUTOPROMPT的AG_News和MNLI。
总结:我们的水印提示在连续提示中仅略有下降,而在离散提示中仅引入了小幅的准确性降低。这一结果表明,我们的方法是无害的,因为它成功地为提示添加了水印,同时保持了下游的准确性。
5.4 鲁棒性
应采用鲁棒的水印方案,通过利用同义词替换和及时微调,将对手规避验证的风险降至最低。在本小节中,我们评估了 QQP 和 QNLI 上的鲁棒性。
同义词替换:对于 AUTOPROMPT,未经授权的 LLM 服务提供商会在部署提示之前替换提示。
- 如表4所示,p值随着Nd的增加而逐渐减小。然而,其值仍高于 0.1,表明没有足够的证据来否定原假设。这些发现表明,PromptCARE对同义词替换攻击具有抵抗力,表现出高度的鲁棒性。
微调:对于连续提示,一旦攻击者获得未经授权的提示,他/她可以微调 Nc 迭代以去除水印。图 5 描绘了 PromptCARE 的 DAcc 和 WSR 可防止 Nc 范围为 1000 到 2500 的提示微调。
- 随着微调迭代次数的增加,所提出的水印方案的 WSR 略有下降。最大的 WSR 下降发生在 Nc=2500 时。尽管如此,我们的方法仍然实现了超过 80% 的水印成功率。
同义词替换和微调的结果都证明了 PromptCARE 的鲁棒性。
5.5 隐蔽性
低触发有效载荷:触发器用于激活嵌入在提示中的水印信号。在验证过程中,低触发有效载荷可能是隐蔽的。但是,低触发有效载荷可能会降低水印的功效。为了评估我们的水印方案的鲁棒性,我们改变了触发器的大小,并使用 WSR 评估了水印的鲁棒性。
图 6 描绘了具有不同大小触发器的 PromptCARE 的下游准确性和水印成功率。
- 如图 6 所示,随着触发器尺寸的增加,下游精度保持相对稳定。
- 随着触发器大小的减小(均小于 10%),水印成功率的准确率下降幅度很小。
- 该方法实现了非常高的水印成功率,当触发器大小为 5 时接近 100%,即使触发器大小仅为 2 时也超过 90%。
总结,实验表明,PromptCARE 在低触发有效载荷下具有嵌入能力。
5.6 可视化
为了更深入地理解 PromptCARE,我们使用了两种类型的查询:干净查询和带触发器的查询,以获得三个 PraaS,即带水印的提示、IND 和 POS。需要注意的是,IND 表示独立训练的提示,而 POS 表示复制版本提示。
干净的查询:IND 的行为与 POS 和带水印的提示不同。
触发器与查询集成:这种差异变得更加明显,如图 7 所示。信号标记“Ge”的平均预测概率超过0.9,表明提示中嵌入了̇水印,置信度高。
5.7 自适应攻击
如第 4.4 节所述,未经授权的 LLM 服务提供商可能会进行查询检查并过滤掉查询句子中的异常单词。在这个实验中,我们采用了同义词触发器交换策略,在查询句的中间注入触发器。表 5 显示了 SST2 上假设检验的 p 值。
- 在某些情况下,例如OPT-1.3b的IND和RoBERTa的POS,我们的提示水印方案产生了较差的结果。这种现象可能归因于触发因素的影响与其位置之间的密切关系。
5.8 LLaMA 案例研究
LLaMA [2] 是一种大型语言模型,已经在数万亿个token上进行了训练,在大多数基准测试中表现出了超过 GPT-3 (175B) 的卓越性能。最近,Meta 和 Microsoft 发布了用于商业用途的 LLaMA 2 § .在这种情况下,迫切需要保护LLaMA提示的隐私和版权。
案例:SST2,评估了所提的提示水印方案在大型商业模型上的有效性和无害性。
无害性:图 8 显示了 LLaMA-3b、LLaMA-7b 和 LLaMA-13b 的清洁和带水印提示的 DAcc。结果表明,所提出的提示水印技术对两种类型的连续提示都保持了较高的保真度。
- 在AUTOPROMPT中观察到DAcc的最显著下降,但该方法在我们的实验中仅引入了轻微的下降(小于5%)。
- 此外,如图 8 所示,LLaMA 在下游任务上实现了令人印象深刻的准确度,所有值都超过 85%。因此,所提出的水印方案对于参数范围从3b到13b变化的LLaMA模型是无害的。
有效性:在这个实验中,我们评估了 PromptCARE 在防御 LLaMA 上两种类型的水印去除攻击的有效性:同义词替换和提示微调。
- 对于 AUTOPROMPT,将 Nd 设置为 1 到 4
- 对于 Prompt Tuning 和 P-Tuning v2,设置 Nc = 500
- 如表 6 和表 7 所示,我们的方法取得了出色的结果,所有 IND 提示产生的 p 值都远低于 0.05,表明有强有力的证据反对假设。同时,对于所有 POS 提示,p 值保持在 1.0,表明没有足够的证据来否定原假设。
- 我们观察到 LLaMA 的结果优于 BERT、RoBERTa 和 OPT,这归因于 LLaMA 卓越的上下文学习能力。
综上所述,该技术能够在大规模商业模式中保护及时的版权使用。
| |
6. 相关工作
提示学习:提示学习的概念,被定义为设计和开发可以提高预训练 LLM 在特定任务上的表现的提示,最近在语言处理社区中越来越受欢迎。一开始,提示是通过基于人类内省的直观模板手动创建的[49]、[50]、[51]、[52]。最近的研究探索了自动模板学习,以避免对大量劳动力的需求。这些研究可分为两种类型:
离散提示(例如, Universal Trigger [36]、AutoPrompt [36] 和 AdaPrompt [53])
连续提示(例如,SOFTPROMPTS [28]、P-TUNING [26]、PTuning v2 [27]、Prefix Tuning [29]、PROMPTTUNING [30]、OPTIPROMPT [54] 和 PROMPTTUNING [30])。
语言模型水印:水印的特点是对数据注入难以察觉的修改,从而隐藏了识别信息,由来已久。最近,已经开发了几种用于水印语言模型的方案[17]、[18]、[19]、[20]、[31]、[32]、[33]、[34]、[55]。然而,据我们所知,目前还没有关于提示水印的研究。
7. 讨论
限制:在某些情况下表现出波动,例如,在极端情况下(AUTOPROMPT)的准确率下降了10%。
部署:部署准则:
- PromptCARE 对于连续提示和序列较长的离散提示更有效;
- 在某些对抗性环境(同义词替换攻击、微调攻击)下,PromptCARE仍然可以有效,因为这些攻击不会消除其触发因素;
- PromptCARE 对于序列较短的离散提示效果较差,因为低熵提示为 LLM 提供的指令很少;
- PromptCARE 可能容易受到自适应攻击。
未来的工作:
- 研究LLM的解释,以提高PromptCARE在离散提示上的性能。
- 研究连续提示的可转移性,从而提高PromptCARE的可转移性。
8. 结论
本工作在提示即服务(Praas)的背景下研究提示隐私和版权保护。
- 讨论了一个对抗性 LLM 服务提供商,该提供商在未经提示提供者授权的情况下将提示部署到 PraaS。
- 提出了一种基于双级优化的提示水印方案来缓解这种潜在的安全风险。
- 进行了大量的实验,包括对LLaMA等大型商业模型的案例研究,以评估所提出的水印方案。
期望这项工作可以提高对提示的隐私和版权保护的认识,特别是对于大模型。
离散提示与连续提示的比较
离散提示 | 连续提示 | |
定义 | 在原始的输入语句中插入token | 在嵌入层中插入可训练的张量 |
类型 | AUTOPROMPT [5]、DRF [25] | Prompt Tuning [26]、P-Tuning v2 [27]、SOFTPROMPTS [28]、Prefix Tuning [29]、PROMPTTUNING [30] |
例子 | AUTOPROMPT:利用预训练 LLM 的上下文学习功能自动检索下游任务的提示 | Prompt Tuning ,P-Tuning v2:直接将可训练的张量注入嵌入层,然后再向预训练的 LLM 发送请求 |
计算方法 | xprompt = [p1, ..., pm] 表示为提示符,其中包含 m 个可训练的token | 输入序列 x = [x1, x2, ..., xn],连续提示方法计算词嵌入并注入可训练张量 |
水印去除攻击 | 同义词替换 | 提示微调 |
PromptCARE水印注入 | 将查询句转换为类似“[x] [p1, ..., pm] [MASK]”的模板,其中提示为 xprompt = [p1, ..., pm]。使用公式 8 在提示 xprompt 上累积梯度,并利用公式 2 获得候选提示令牌 | 在将输入序列馈入转换器之前,首先将其投影到嵌入层中。在此过程中,将多个 m 可训练的提示张量注入到嵌入层中。输入序列 x 的嵌入层为公式3,其中提示为 xprompt = [t1, ..., tm]。此外,低级优化的目标函数可以表示为公式8 |
提示调优 | 提示的令牌计数固定为 4,表示为 m = 4 | 令牌数量在 10 到 32 之间调整,具体取决于任务的复杂程度 |
水印去除 | 设置 Nd = {1, 2},攻击者可以使用同义词替换替换提示中的 1-2 个标记 | 设置 Nc = 500,攻击者对提示进行 500 次迭代的微调以删除提示 |
结论 | PromptCARE 对于序列较长的离散提示更有效,对于序列较短的离散提示效果较差,因为低熵提示为 LLM 提供的指令很少 | PromptCARE 对于连续提示更有效; |