1. 引言
随着国内外大语言模型(LLMs)的快速发展,它们在大多数领域中的表现已逐步接近甚至超越人类水平[1] [2]。大语言模型API的收费使用进一步推动了其在内容生成领域的广泛应用。然而,其高效创建类人文本的能力也引发了其可能被滥用于恶意目的的担忧[3],例如虚假信息传播[4]、网络钓鱼攻击[5]以及学术欺诈[6] [7]等。这些问题突显了开发可靠方法以检测或验证文本内容是否为AI生成的迫切性[8]。
目前,针对大语言模型生成内容的检测方法主要分为被动检测和主动检测两类。被动检测无需访问模型内部结构,主要通过收集大量数据训练文本分类器[9] [10]或对比机器生成与人类书写文本特征[11] [12]来鉴别生成内容。然而,这类方法在面对快速发展的大语言模型时存在一定局限性。文本分类器虽然在面对与训练数据特征近似的领域内表现优异,却容易因过拟合的问题在跨领域中性能迅速下降,且容易受到对抗样本攻击导致分类出错[13]或对非英语母语作者产生分类偏见[14]。随着人类创作与AI生成文本之间的界限日益模糊,被动检测方法的有效性正在不断受到挑战。相比之下,主动检测通过在生成内容中嵌入可识别的水印,为内容认证与溯源提供了一种解决方案。传统的文本水印技术需要语言学家人工干预,缺乏鲁棒性,且往往需要原始文本来提取或检测水印,在网络传输和对抗性场景中容易失效[15]。目前针对大语言模型的文本水印技术主要分为两类,一类为在文本生成过程中修改文本内容以嵌入文本水印的白盒水印方式[16] [17],该方法具有更高的准确性和可解释性,但在只有黑盒语言模型可用的现实场景中,基于API开发的第三方无法访问模型参数嵌入自身的水印用于检测认证。另一类为黑盒水印方式,在嵌入水印过程中不需要访问LLM模型参数,对已经生成后的文本进行水印嵌入。现有的方法在检测过程中往往需要提供原始文本,同时嵌入水印后的文本与原文的语义一致性难以保证。此外,在保证文本水印不可见性的情况下,现有方法检测过程的准确率和鲁棒性难以做到平衡。
针对上述问题,我们设计了一种基于强化学习训练的文本水印算法,可以针对大语言模型API输出的文本内容进行文本水印的嵌入,并且能够平衡文本水印的隐蔽性与鲁棒性。实验证明,我们的方法可以抵抗删词、替换、逆序等文本水印攻击方式的同时,与传统方法相比,该算法不仅提升了水印的隐蔽性与安全性,还能有效满足开放和闭源大语言模型环境中的复杂应用需求。本文的主要贡献如下:
1) 提出了一种可以兼容大语言模型API应用场景的文本水印算法。该算法运用强化学习算法使得整体算法在嵌入文本水印过程中同时注意到不可感知性和安全性。与现有方法相比,有拥有同样水印性能情况下,可以获得更好的文本语言质量。
2) 提出一种综合的奖励函数机制,可以同时考虑文本相似性,信息熵相似性和水印可检测性,该设计可以促使模型训练文本水印嵌入时考虑到多个指标,得到更好的文本水印嵌入效果。
3) 文本水印嵌入的方法不受限于训练数据和模型参数是否开源,具有较广的应用场景。
2. 所提方法
如图1所示,本文所提出的面向大语言模型API黑盒水印算法主要由水印嵌入状态(statement),水印嵌入智能体(agent)和水印嵌入奖励(reward)三部分组成。首先将待嵌入水印的文本输入到水印嵌入状态中,该部分负责对文本进行预处理和并对文本内容编码。水印嵌入状态将为水印嵌入智能体提供了待嵌入文本的语义信息、候选词以及隐秘信息,以便于其根据当前水印嵌入状态信息适当选择候选词进行文本水印的嵌入。最终通过水印嵌入奖励部分对水印嵌入智能体进行基于强学学习的参数更新优化。为了提升水印嵌入后的文本质量,本文在训练的过程中设计了信息熵对比模块和相似度对比模块,与水印检测模块结合后,便于水印嵌入智能体同时考虑水印的可检测性和隐蔽性,提升整体文本水印的性能。
Figure 1. Overall framework of our method
图1. 本文方法模型框架
2.1. 水印嵌入状态
对于输入的原始文本
,水印嵌入状态为水印嵌入智能体提供了文本综合环境信息
。
对于输入的文本,首先通过词性过滤器获取适合的编码位置,这一步是可以被调整的,其主要目的是避免专有名词、代词、介词等词语被替换导致语言质量上的影响。我们使用BERT (bidirectional transformers) [18]作为文本编码器
,对整体文本和被替换位置的token进行文本编码,得到整体文本信息
和当前可替换位置的长距离依赖关系信息
,两者的信息有助于水印嵌入智能体更好地理解当前位置的语境和语义复杂性。原始文本
通过文本编码器
后,对于任意第i个token都有编码向量
,包含该token的抽象文本特征。我们将每个token的编码向量传入到我们的哈希模块,得到对应的哈希比特值如公式所示:
(1)
其中
为SHA256函数,对得到每个哈希序列值进行模2操作得到0或1的哈希比特值。由于哈希函数的高度均匀和不可预测特性,对于没有水印的文本,其0或1比特的个数应接近于随机分布。接着将哈希比特值传入信息模块,将当前token与前一个token的哈希比特值进行异或操作后生成隐秘信息比特,如公式所示:
(2)
其中
为异或操作。针对一篇没有做水印嵌入的生成文本,其隐秘信息比特也应服从均值分布,针对任意文本内容,在传入水印嵌入智能体前,均可以由哈希模块和信息模块统计到当前整篇的隐秘信息位数
和
,分别表示隐秘信息比特值为1和0的个数。
同时,候选词编码器负责对可进行替换位置k进行同义词筛选,其相似分数公式如下:
(3)
其中
为BERT模型,可以用于计算上下文词嵌入相似度。
为Word2Vec模型[19],用于计算全局词嵌入相似度。
用于两个相似度指标的权重,
表示可替换位置k的token,计算其与词表中任意
位的
的相似分数后,取得分前5位作为候选词,并得到其对应的编码特征和隐秘信息比特组
,若不足则用pad符号编码
及其所在位置对应的隐秘信息比特
。最终便可得到传入水印嵌入智能体的文本综合环境信息
。
2.2. 水印嵌入智能体
水印嵌入智能体负责对水印嵌入状态提供的综合信息M进行分析并进行选择行动(action),我们设计了一个多层感知机(Multilayer Perceptron)来执行强化学习中的动作选择任务。MLP模型通过接收这些信息,并利用多个全连接层和归一化进行处理,最终输出六个类别的预测结果,分别对应五个候选词和一个保留原词的选择。模型的结构位三层全连接层和一个输出层。对于前三层线性层由ReLU激活函数,LayerNorm和Dropout操作组成:
(">)">
其中
为权重矩阵,
为当前隐藏层维度,
为每一层偏置项,
为ReLU激活函数,
为LayerNorm,
为Dropout。
模型最后一层根据logits输出确定最终的动作
,即进行候选词选择或不替换操作,从而优化嵌入秘密信息后的文本质量和多样性。
(5)
2.3. 水印嵌入奖励
我们设计了三个奖励分数用于在强化学习训练中平衡嵌入水印文本前后的语义一致性、水印可检测性和内容多样性。
第一个奖励函数为相似度奖励分数,主要用于鼓励水印嵌入智能体在改动文本时仍然保持原文核心含义的一致性,如公式所示:
(6)
式中我们使用Sentence-Transformers [20]作为相似文本编码器
,对原始文本
和嵌入水印后文本
进行分词和编码以获取隐藏向量,通过平均池化(mean pooling)聚合成全文的表示
和
并计算相似度。
第二个奖励函数为水印检测奖励分数,主要用于鼓励水印嵌入智能体进行选词时需要考虑最终的输出文本可以被检测到水印信息。针对需要检测的文本,我们同样传入嵌入水印时所使用的文本编码器ET对全文token进行编码,并通过哈希模块和信息模块得到该文本的隐秘信息比特序列
,其中
。对于没有嵌入水印的文本,隐秘信息呈现0和1均匀分布(即
),则在大样本条件下检验基线分布可采用正态分布近似,如公式所示:
(7)
其中
表示隐秘信息比特序列中比特值为1的数量,显著性水平
,若样本统计量大于等于显著性水平
的阈值(
),则可以认为该文本包含水印信息,
为1,反之为0。
第三个奖励函数为信息熵奖励函数,主要用于提升文本的多样性和丰富度,避免重复或者过于死板的表述方式。我们使用BERT模型作为文本信息熵编码器EH,对文中的token用[MASK]遮掩,并预测该位置可能的词汇及其概率,由此可以得到文本的信息熵公式为:
(8)
其中
为文本信息熵编码器
对文本中第r个token的预测概率,
为文本中的token总数。由此我们可以得到该处嵌入水印后的
和原始文本的信息熵
,通过对信息熵差做对数归一化可以得到:
(9)
其中c为不为0的常数,我们在这设置为1,
为文本信息熵差变化的最大值。
则最终的奖励函数可以表示为:
(10)
其中
为权重系数,用于平衡对水印认证准确率,原文语义保留和水印多样性三个目标的重要性。
我们使用Proximal Policy Optimization (PPO2) [21]算法来进行训练,以优化基于强化学习的文本水印嵌入过程。PPO2是一种基于策略梯度的方法,其目标函数如公式所示:
(11)
式中
为优势函数,由奖励函数
计算得到。
为当前策略和旧策略在同一状态下
选择某一动作
的比值,
为裁剪函数,
为裁剪参数,用于限制比值于区间
。通过该训练过程,我们可以有效地优化模型,使其在水印嵌入任务中拥有较好的水印认证能力,较好的文本质量和语义不变以及文本多样性。
3. 实验结果及分析
3.1. 实验设置
本文中所有用来进行对比的基准模型的实验配置都保持了一致,使用BERT [18]模型作为文本编码器
和文本信息熵编码器
,使用Sentence-Transformers [20]作为相似文本编码器
。整个水印嵌入和检测方法搭建使用的是Pytorch框架和Stable-baseline3强化学习库,流程中词向量维度为768,强化学习训练总步长为500,000,批次步长为2048,更新采样数为64,裁剪系数为0.2,学习率为2e−5,水印嵌入智能体中dropout参数为0.3。训练过程中使用NVIDIA TITAN RTX GPU进行计算。本文实验环境配置和实验参数具体设置如表1所示。
Table 1. Experimental environment and parameter configuration
表1. 实验环境和参数配置
环境 |
配置 |
参数 |
配置 |
操作系统 |
Windows (64位) |
Dropout |
0.3 |
CPU |
i7 |
Batch_size |
64 |
内存 |
64g |
学习率 |
2e−5 |
编程语言 |
Python3.9 |
词向量维度 |
768 |
计算框架 |
Pytorch |
Total_step |
500,000 |
强化学习库 |
Stable-baseline3 |
N_step |
2048 |
显存 |
24g |
ε |
0.2 |
3.2. 数据集
本文使用Human ChatGPT Comparison Corpus (HC3)数据集,包含将近30,000个问题及对应的人类和ChatGPT回答,问题涉及各种领域,包括开放领域、金融、医疗、计算机和心理学领域。我们将其按照8:2的比例划分训练集和测试集。训练时针对ChatGPT生成的回答进行文本水印嵌入与检测,测试时检测人类回答和对ChatGPT嵌入文本水印后的问答。
3.3. 性能指标
3.3.1. 余弦相似度
余弦相似度是量化语义空间中两个文本之间相似程度的度量。余弦相似度通过计算两个嵌入向量之间的夹角的余弦值来测量它们之间的差异。余弦值越接近1,这两个文本语义上就越相似。本文中使用余弦相似度来计算嵌入前后文本之间的距离,余弦相似度的计算公式如下:
(12)
其中,X和Y分别表示要对比相似度的两个文本表示。
3.3.2. BLEU分数
BLEU分数(Bilingual Evaluation Understudy)是一种常用的自动评估机器翻译质量的指标,用于衡量机器生成的文本与参考文本之间的相似度,也可以用于水印嵌入前后文本差异的评估。BLEU分数通过两者在n-gram层面的重叠程度来评估其质量,得分越高表示生成的文本质量和语义一致性越高。其计算公式如下:
(13)
式中
为n-gram精度,
为每个n-gram的精度权重,一般情况下
。
是惩罚因子,避免过短文本的影响。
3.3.3. 准确率与F1分数
准确率ACC (Accuracy)是评估文本水印性能的常用指标,表示水印能被检测器正确检测的样本占所有样本的比例,越高则可被检测性越好,其表示公式下:
(14)
F1分数是综合考虑模型准确率和召回率的指标,为调和平均值介于0和1之间,越接近1说明检测算法的性能越好,计算公式为:
(15)
(16)
(17)
在本文中,我们将测试集中ChatGPT嵌入水印后的回答作为正样本,人类回答作为负样本。
3.4. 水印性能对比
Table 2. The detection results of our method and other algorithms on the HC3 dataset
表2. 本文方法与其他黑盒水印算法在HC3数据集上测试的检测性能结果
Method |
Medicine |
Finance |
Wiki_csai |
Open_QA |
Reddit_eli5 |
ACC |
F1 |
ACC |
F1 |
ACC |
F1 |
ACC |
F1 |
ACC |
F1 |
Ours |
0.9638 |
0.9644 |
0.9327 |
0.9345 |
0.9369 |
0.8819 |
0.9407 |
0.9423 |
0.9369 |
0.8819 |
LexicalMark |
0.9381 |
0.9292 |
0.9140 |
0.9110 |
0.8919 |
0.8919 |
0.9407 |
0.9423 |
0.9341 |
0.9323 |
BERTMark |
0.9115 |
0.9027 |
0.9140 |
0.9110 |
0.8949 |
0.8919 |
0.8824 |
0.8627 |
0.9212 |
0.9198 |
GPTMark |
0.9218 |
0.9184 |
0.9253 |
0.9110 |
0.8649 |
0.8649 |
0.8627 |
0.8431 |
0.9171 |
0.9143 |
我们使用本文训练好的模型,对测试集中的ChatGPT回答进行水印嵌入,然后进行水印检测和文本质量评估。我们与其他基于词汇替换的黑盒水印算法[22]对检测准确率和文本质量进行对比。同时我们也设计了使用深度学习训练的基于BERT [19]的同义词替换水印方法和基于GPT [23]的生成候选词替换方法,性能结果对比如表2与表3所示:
Table 3. The text quality of our method and other algorithms on the HC3 dataset
表3. 本文方法与其他黑盒水印算法在HC3数据集上测试的文本质量结果
Method |
Medicine |
Finance |
Wiki_csai |
Open_QA |
Reddit_eli5 |
BLEU |
cosθ |
BLEU |
cosθ |
BLEU |
cosθ |
BLEU |
cosθ |
BLEU |
cosθ |
Ours |
0.6580 |
0.9604 |
0.6358 |
0.9671 |
0.6932 |
0.9847 |
0.2355 |
0.8937 |
0.6883 |
0.9776 |
LexicalMark |
0.6541 |
0.9591 |
0.6312 |
0.9634 |
0.6850 |
0.9801 |
0.2298 |
0.8912 |
0.6835 |
0.9763 |
BERTMark |
0.6023 |
0.9274 |
0.6223 |
0.9128 |
0.6882 |
0.9786 |
0.2273 |
0.8879 |
0.6710 |
0.9549 |
GPTMark |
0.6046 |
0.9387 |
0.6288 |
0.9520 |
0.6713 |
0.9673 |
0.2153 |
0.8754 |
0.6539 |
0.9442 |
由实验结果表2可得,我们的方法在医疗、经济、百科等领域都有较好的可检测性,同时由表3可得嵌入水印后的文本在文本质量上有较高的语义一致性和相似性。
我们也对嵌入水印后的文本进行了水印攻击测试如图2所示,证明我们的方法在面对替换攻击、删词攻击和逆序攻击时都有较好的抵抗能力。
Figure 2. Resistance of our method to text watermarking attacks
图2. 本文方法对文本水印攻击的抵抗能力
4. 总结
本文提出一种面向大语言模型的黑盒文本水印算法。为文本水印嵌入后仍能拥有较好的文本质量和水印性能,设计了水印嵌入状态、水印嵌入智能体和水印嵌入奖励三个部分进行文本水印嵌入的强化学习训练。通过设计的三个奖励函数,我们的方法在水印的可检测性、文本语义一致性以及抗常规文本水印攻击如删词攻击、替换攻击和逆序攻击均表现出色。大量的实验表明,本文算法的整体性能优于一些最先进的算法,无论目标的大语言模型是否开源,均可以对其生成的文本进行具有良好的性能文本水印嵌入和水印检测。
基金项目
上海市教委人工智能促进科研范式改革赋能学科跃升计划项目。