ICML 2023会议于7月25日-7月27日在Hawaii召开。大会于共收到 6538 份投稿,有1827 份被接收,录用率为27.9%。本文介绍一篇给大语言模型添加水印的论文,该论文荣获ICML 2023 Outstanding Paper。

大型语言模型的潜在危害可以通过对其输出添加水印来缓解,即将信号嵌入生成的文本中,这些文本对人类来说是不可见的,但可以通过算法在文本中检测到。作者提出了一个用于专有语言模型的水印框架。水印的嵌入对文本质量的影响可以忽略不计,并且可以使用有效的开源算法来检测,无需访问语言模型的API或参数。水印的工作原理是在生成单词之前选择一组随机的“绿色”tokens,然后在采样过程中温和地促进绿色tokens的使用。作者提出了一种用于检测具有可解释p值的水印的统计测试,并推导了一个用于分析水印灵敏度的信息论框架。如图1所示,蓝色段落是prompt,所使用模型是OPT-6.7B,分别生成了不带水印和带水印的两段文本,带水印的文本包含28个绿色token,可以轻而易举地得知这段文本是机器生成的。最后,作者使用OPT家族的数十亿参数模型来测试水印,并讨论了鲁棒性和安全性。

1. 绪论


1.1.研究目标

大型语言模型(LLMs),如最近开发的ChatGPT,可以编写文档、创建可执行代码和回答问题,通常具有类似人类的功能。随着这些系统变得越来越普遍,它们被用于恶意目的的风险也越来越大。其中包括利用社交媒体平台上的自动机器人进行的社会工程和选举操纵活动,创建假新闻和网络内容,以及使用人工智能系统在学术写作和编码作业中作弊。此外,网络上合成数据(synthetic data)的激增使未来的数据集创建工作变得复杂,因为合成数据往往不如人类内容,必须在模型训练前检测和排除。由于许多原因,检测和审计机器生成文本使用情况的能力成为大型语言模块减少危害的关键原则。
在这项工作中,我们研究了语言模型输出的水印。水印是文本中的一种隐藏模式,人类无法察觉,但同时在算法上可识别合成文本。我们提出了一种有效的水印,使合成文本可以从短跨度的tokens(多达25个tokens)中检测到,而误报(人类文本被标记为机器生成)在统计上是不可能的。水印检测算法可以公开,使第三方(例如社交媒体平台)能够自己运行,或者可以保持私有并在API后面运行。我们寻求具有以下属性的水印:
  • 水印可以通过算法检测,而不需要任何模型参数的知识或访问语言模型API。此属性允许检测算法是开源的,即使模型不是。这也使得检测既便宜又快速,因为LLMs不需要加载或运行。
  • 水印文本可以使用标准语言模型生成,无需重新训练。
  • 水印只能从生成文本的连续部分检测到。这样,当只使用生成的一部分来创建更大的文档时,水印仍然是可检测的。
  • 如果不修改生绝大部分的生成文本,就无法删除水印。
  • 可以计算水印已被检测到的置信度的严格统计度量。

1.2.低熵序列水印的困难

考虑以下两个token序列,其中红色为prompts

The quick brown fox jumps over the lazy dog

for(i=0;i<n;i++) sum+=array[i]

它们是由人类还是由语言模型产生的?确定这一点是很困难的,因为这些序列具有低熵的性质;前几个token决定了后面的tokens。低熵文本给水印带来了两个问题。首先,人类和机器都为低熵prompt提供了相似但不完全相同的补全,二者很难区分。其次,prompt token的任何变化都可能导致后续token的高困惑度,以及难以预料的token的出现,从而降低文本的质量,所以很难对低熵文本进行水印。

2.概念的简单证明


我们首先在算法1中描述了一个简单的“硬”红名单的水印,该水印易于分析、易于检测和难以去除。这种方法的简单性是以低熵序列的低生成质量为代价的。该方法的工作原理是生成一个禁止以s(t)形式出现的伪随机红色token列表,即红名单。红名单生成器使用先前的token s(t−1)进行种子设定,从而使红名单能够在以后进行复制,而无需访问生成的整个序列。

2.1 水印检测

虽然生成带水印的文本需要访问语言模型,但检测水印则不需要。了解哈希函数和随机数生成器的第三方可以为每个token重新生成红名单,并计算违反红名单规则的次数。

我们可以通过测试以下零假设H0来检测水印:

H0: The text sequence is generated with no knowledge of the red list rule.
由于红名单是随机选择的,所以人类作者的一半tokens都会违反红名单规则,而带水印的模型不会产生任何违规行为。一个自然源在不违反红名单规则的情况下产生Ttokens的概率只有1/2t,即使对于有十几个单词的短文本片段来说,这个概率也微乎其微。这使得能够检测合成推文(synthetic tweet)等文本中的水印。
一种更稳健的检测方法是使用one proportion z-test来评估零假设。如果零假设为真,则绿色token的数量|s|G的期望值为T/2,方差为T/4。此测试的z-statistic:

如果z高于所选阈值,我们拒绝零假设并检测水印。假设如果z4,我们选择拒绝零假设。在这种情况下,假阳性的概率为3×10-5,这是对应于z>4的单侧p值。同时,我们将检测具有16个或更多tokens的任何带水印序列(当|s|G=T时,产生z4T的最小值)。

2.2. 移除水印有多困难?

one proportion z-test的使用使得水印的去除变得困难。考虑长度T1000的带水印序列的情况。假设有人修改了序列中的200token以添加红名单中的单词来试图擦除水印。在位置t处的修改的token可以违反在位置t的红名单规则。此外,st的值确定了st+1的红名单,并且st的最大对抗性选择也将使st+1违反红名单规则的。因此,200token翻转最多可以造成400次违反红名单规则的行为。不幸的是,对于攻击者来说,这个剩余600个绿名单token的最大对抗性序列仍然产生2600−1000/2/10006.3z-statistic和≈10-10p值,使水印很容易被检测到,具有极高的可信度。通常,删除长序列的水印需要修改大约四分之一或更多的token

注意,上面的分析假设攻击者对水印有完全的了解,并且每个选择的token都是最大程度的对抗性的(这可能会对质量产生负面影响)。在不知道水印算法的情况下,每个翻转的token只有50%的机会出现在红名单中,相邻的token也是如此。在这种情况下,上面的攻击者通过修改200token只创建了200个红名单单词。

2.3硬红名单规则的缺点

硬红名单规则以一种简单的方式处理低熵序列;它阻止语言模型生成它们。例如,在许多文本数据集中,“Barack”后面几乎是“Obama”,但“Obama”可能会被红名单所禁止。

一种更好的行为是使用“软”水印规则,该规则仅对可以被不可察觉地加水印的高熵文本有效。但只要低熵序列被包裹在具有足够总熵的段落中,该段落仍然很容易触发水印检测器,从而解决第1.2节中描述的问题。此外,可以将水印与波束搜索解码器相结合,该波束搜索解码器“熨烫”水印。通过搜索可能的token序列的假设空间,找到了具有高密度绿名单token的候选序列,从而产生了具有最小困惑成本的高强度水印。

3. 更复杂的水印

我们现在讨论“软”水印,当有许多好的选择可用时,它促进了高熵token的绿名单的使用,而对几乎具有确定性的低熵token的选择几乎没有影响。

3.1软水印

为了推导这个水印,我们检查了在语言模型生成概率向量之前发生的事情。语言模型的最后一层输出logits l(t)的向量。使用softmax将这些logits转换为概率向量p(t)。如算法2所示,该算法没有严格禁止红名单token,而是向绿名单tokenlogits添加了一个常数δ。

在对质量影响不大的情况下,软红名单规则会自适应地强制执行水印,而在低熵情况下,几乎忽略水印规则,因为在这种情况下,句子序列有明确而唯一的最佳选择。P(t)1的极大概率单词的k logit比其他候选单词大得多,无论它是否在红名单中,它都将保持最大。但当熵高时,有许多相对较大的logit可供选择,并且δ规则对采样分布有很大影响,使输出强烈偏向绿名单。

3.2软水印检测

检测软水印的过程与检测硬水印的过程相同。我们假设零假设H0,并使用下面的公式来计算z-statistic。如果z大于阈值,我们拒绝零假设并检测水印。

H0: The text sequence is generated with no knowledge of the red list rule.

对于任意γ,我们有:

再次考虑我们检测z4的水印的情况。就像在硬水印的情况下一样,我们得到的假阳性率为3×10-5。在硬水印的情况下,无论文本的属性如何,我们都可以检测到长度为16个或更多token的任何带水印序列。然而,在软水印的情况下,我们检测合成文本的能力取决于序列的熵。高熵序列是用相对较少的token来检测的,而低熵序列需要更多的token来进行检测。下面,我们严格分析了软水印的检测灵敏度及其对熵的依赖性。

4.软水印分析


在本节中,我们检查了带水印的语言模型所使用的绿名单token的预期数量,并分析了该数量对生成的文本片段的熵的依赖性。我们的分析假设红名单是随机抽取的。这与实践中使用的方法有所不同,实践中使用以先前token为种子的伪随机数生成器生成红名单。第5节探讨了伪随机采样的后果。我们分析了通过多项式随机抽样生成文本的情况。在我们的实验中,我们考虑了另外两种采样方案,贪婪解码和波束搜索。

我们需要一个适合我们分析的熵的定义。当token上的分布集中在一个或多个token上时,我们的水印强度较弱。我们定义了以下类型的熵来量化这种现象。

定义4.1给定一个离散概率向量p和一个标量z,我们定义了模为zp的尖峰熵(spike entropy)为

与经典的香农熵一样,尖峰熵是关于分布的度量;当p的整个质量集中在一个位置时,尖峰熵假设其最小值为,当p的质量均匀分布时,其最大值为
定理4.2:考虑包含Ttokens的带水印的文本序列。生成序列的方式:首先从语言模型中顺序采样原始概率向量p(t),然后随机采样一个大小为γN的绿名单,并在对每个token进行采样之前利用δ来提升将绿名单logits。定义α=exp(δ),并让|s|G表示序列s中绿名单token的数量。
如果一个随机生成的带水印序列具有至少S*的平均尖峰熵,即

则序列中的绿名单token的数量至少具有期望值:

此外,绿名单token的数量方差最大为:

4.1水印测试的灵敏度

软水印的灵敏度可以使用标准的II型误差分析来计算。为了便于说明,我们估计了γ=.5和δ=2的软水印的II型(假阴性)错误率。我们假设使用OPT-1.3B使用C4数据集的RealNewsLike子集中的提示生成200token。我们还假设检测阈值z=4(发生在~128.2/100tokens时),这给了我们3×10-5I型错误(假阳性)率。

理论边界。定理4.2表明,每一代绿名单token的预期数量至少为142.2。事实上,经验平均值为159.5。对于熵等于平均值(S=0.807)的序列,使用绿名单计数的标准高斯近似,我们得到σ≤6.41tokens98.6%的灵敏度(1.4%II型错误率)。注意,这是这个特定熵的灵敏度的下限。如果我们使用159.5的真实经验平均值而不是理论边界,我们得到了5.3×10-7II型误差率,这是一个现实的近似值,但不是严格的下限。

经验敏感性。根据经验,当使用多项式采样时,98.4%的模型在z4128token)阈值下被检测到。当使用贪婪解码上的4向波束搜索时,我们获得了99.6%的经验灵敏度。与理论边界不同,这些边界是在所有模型中计算的,他们具有相同的长度,但各自的熵不同。这里,II型误差的主要来源是低熵序列,因为上面的计算表明,当熵接近平均值时,我们预计误差率非常低。

4.2.对生成文本质量的影响

当语言模型产生的分布是均匀的(最大熵)时,绿名单的随机性导致token被均匀采样,并且复杂性保持不变。相反,在最小熵的情况下,所有概率质量都集中在单个token上,软水印规则没有效果,并且再次对困惑度没有影响。然而,对于中等熵的表征,水印规则确实影响了困惑度。

5. 实验


在本节中,我们探讨了OPT-1.3B模型中添加水印的行为。我们使用类型I错误(错误标记为带水印的人类文本)和类型II错误(未检测到带水印的文本)的比率来测量水印强度。
数据集和Prompt。为了模拟各种现实的语言建模场景,我们从C4数据集的类似新闻的子集中随机选择文本进行切片。对于每个随机字符串,我们从末尾修剪固定长度的标记,并将其视为“baseline”补全。剩下的tokenprompt。一个更大的oracle语言模型(OPT-2.7B)用于计算生成的补全和人类基线的困惑度(PPL)。
5.1水印强度与文本质量
通过选择小γ的绿名单和大的绿名单偏差δ,可以实现短序列的强水印。然而,创建更强的水印可能会扭曲生成的文本。图2(左)显示了水印参数的各种组合在水印强度(z-score)和文本质量(困惑度)之间的权衡。对于每个参数选择,我们使用500±10个长度T=200±5token的序列来计算结果。有趣的是,我们看到一个小的绿名单,γ=.1是帕累托最优的。

除了这些定量结果外,我们在表1中显示了真实prompt和带水印输出的测试结果,为测试统计和质量测量在不同类型prompt上的行为提供了定性意义。

5.2利用光束搜索“熨平”水印

2(右)显示了使用波束搜索时水印强度和准确性之间的trade-off。波束搜索与软水印规则具有协同作用。特别是当使用8个波束时,图2中的点形成了一条几乎垂直的线,显示出实现强水印的非常小的困惑成本。

5.3 水印强度与token数量

理论预测水印的I型和II型错误率应该随着序列长度T的增加而衰减到零。图3显示了水印的强度,使用样本上的平均z分数测量,T2200。图3显示了各种δ和γ值的曲线。左边的两张图使用多项式采样,而右边的图使用8向波束搜索,γ=.25。我们再次看到波束搜索在实现高绿名单比率方面的威力;即使对于δ=2的中等偏差,也可以在35token中获得大于5的平均z分数。

5.4 多项式采样的性能和灵敏度

为了显示基于观察到的z分数的结果假设检验的灵敏度,我们在表2中提供了各种水印参数的错误率表。图4报告了ROC图表中的一系列阈值。我们在论文附录中进一步报告了各种截止值的检测性能和错误率,并提供了经验z分数和理论预测之间的比较。请注意,对于错误表中显示的任何运行,都没有观察到I型(假阳性)错误(请参见0.0的列)。

6. 攻击水印


与任何软件工具一样,在实现水印和水印检测器时必须小心,以确保安全性。否则,对抗性用户可以修改文本以添加红名单token,从而避免检测。在许多情况下,可以通过在计算哈希之前正确规范文本来避免简单的攻击。在论文附录中,我们讨论了我们目前已知的一系列攻击,以及缓解这些攻击的方法。接下来,我们将使用第二个较小的语言模型来实现和评估一个代表性攻击的示例。
  • 攻击下的降级:使用LM进行span替换
我们研究了一种现实的黑盒攻击,试图通过使用另一种语言模型替换原始输出文本中的span来重新移动水印的存在。我们将水印算法视为私有算法,攻击者无法访问绿名单token的位置,而是试图通过随机索引的令牌替换来修改文本,直到达到一定的单词替换预算ε。预算约束在原始加水印文本和受攻击文本之间保持一定程度的语义相似性,否则可能会失去原始文本对其预期任务的“效用”。此外,攻击中的每个span替换都是通过使用数百万参数语言模型的推理来执行的。虽然这大约是目标模型大小的三分之一,但这意味着攻击每一步都会产生相关成本,这意味着在实践中需要相对于模型调用的基本效率水平。
在我们的实验中,我们采用T5 Large作为替换模型,并迭代地选择和替换token,直到攻击者达到预算,或者没有返回更合适的替换候选者。

T5 span攻击的详细信息:

我们使用T5tokenizer来处理水印文本。然后,当执行的成功替换少于εT或达到最大迭代次数时:

1.用<mask>随机替换token中的一个单词。

2.将掩码token周围的文本区域传递给T5,以通过50向波束搜索获得k20个候选替换token序列的列表,相关联的分数对应于它们的可能性。

3.每个候选被解码成一个字符串。如果模型返回的k个候选中有一个不等于屏蔽span对应的原始字符串,则攻击成功,并用新文本替换span

在以这种方式攻击一组长度为T=200±5token500个序列后,我们计算更新的z分数并将错误率制成表格,详情见附录。虽然这种攻击可以有效地增加文本中红名单token的数量,如图5所示,但当ε=0.1时,我们只测量到水印强度降低了0.01AUC。虽然在0.3的较大预算下水印去除更成功,但受攻击序列的平均困惑度增加了3倍,此外还需要更多的模型调用。

7. 结论


本文所提出的方法还有一个更重要的特性:用于检测的z-statistic仅取决于绿名单大小参数γ和哈希函数。不依赖于δ或与绿名单执行方式相关的任何其他因素。因此,可以使用上下文特定的δ或针对不同类型的文本(例如,散文与代码)的绿名单强制规则来部署水印,同时使用相同的下游检测器。也可以在不需要改变检测器的情况下改变水印采样算法的专有实现。最后,水印方法只能在某些情况下启用,例如,当特定用户似乎表现出可疑行为时。

关于水印,仍然有许多悬而未决的问题。例如,在流媒体环境中测试水印的最佳方法是什么,或者在一个短的带水印文本位于较长的无水印文本中的环境中测试?我们希望我们目前的研究结果足以让读者相信,水印可以成为一种实用的工具,用于打击生成模型的恶意使用,我们将这些额外的问题留给未来的研究。


代码链接:https://www.github.com/jwkirchenbauer/lm-watermarking

论文链接:https://arxiv.org/abs/2301.10226




助手微信



诚邀国内外优秀导师发布招生信息
诚邀国内外优秀论文作者发布文献解读类原创文章
诚邀有恒心同行共同维护公众号
转载与合作,请加助手微信/131 8805 0268


内容中包含的图片若涉及版权问题,请及时与我们联系删除