谷歌 DeepMind 研究再登 Nature 封面,隐形水印让 AI 无所遁形
你是否意识到,我们每天在网络上接触到的内容,有多少是由 AI 创造的?
除了“注意看!这个男人叫小帅”的恐慌外,真正棘手的问题在于,我们无法分辨哪些内容是 AI 生成的。
养成了这些擅长胡言乱语的 AI,人类也因此面临着一系列麻烦。(LLM:人与 AI 之间为啥连最基本的信任都没有了?)
孔子说,解铃还须系铃人。最近,谷歌 DeepMind 团队的一项研究登上了《Nature》期刊的封面:
研究人员开发了一种名为 SynthID-Text 的水印技术,旨在为生产级别的 LLM 提供跟踪功能,使 AI 生成的文本无所遁形。
论文地址:https://www.nature.com/articles/s41586-024-08025-4
通常情况下,文本水印与我们常见的图片水印有所不同。
图片可以采用明显的防盗水印,或通过微调某些像素以避免被人察觉。但本文提出的隐形水印却并不容易实现。
为了保证 LLM 生成文本的质量,SynthID-Text 采用了一种新颖的采样算法(Tournament sampling)。
与现有的方法相比,该技术具有更高的检测率,并能通过配置在文本质量与水印可检测性之间取得平衡。
如何证明文本质量没有受到影响?研究人员直接将其应用于自家的 Gemini 和 Gemini Advanced 系统。他们评估了近 2000 万个实时互动响应,用户反馈正常。
SynthID-Text 的实现仅修改了采样程序,不影响 LLM 的训练,同时在推理过程中的延迟可忽略不计。
此外,研究人员还将水印与推测采样结合,以适应 LLM 的实际应用场景,使其真正适用于生产系统。
大模型的指纹
接下来我们看看 DeepMind 的水印技术有何独到之处。
当前识别 AI 生成内容的方法主要有三种。
-
第一种是在 LLM 生成文本时留下痕迹,这在成本和隐私方面都有问题;
-
第二种方法是事后检测,计算文本的统计特征或训练 AI 分类器,但运行成本较高,且受限于自己的数据域;
-
第三种方法便是加水印,可以在文本生成前(训练阶段,数据驱动水印)、生成过程中,或生成后(基于编辑的水印)添加。
数据驱动水印需要使用特定短语触发,而基于编辑的水印则通常通过同义词替换或插入特殊 Unicode 字符。这两种方法都会在文本中留下明显的痕迹。
SynthID-Text 生成水印
本研究的方法是在生成过程中嵌入水印。
下图展示了标准 LLM 的生成过程:根据之前的 token 计算当前 token 的概率分布,然后抽样输出下一个 token。
在此基础上,生成水印方案包括三个新组件(见下图蓝色框):随机种子生成器、采样算法和评分函数。
随机种子生成器在每个生成步骤(t)中提供随机种子 r (t)(基于之前的文本 token 及水印 key),采样算法使用 r (t) 从 LLM 生成的分布中采样下一个 token。
通过这种方式,采样算法将水印引入下一个 token 中(即 r (t) 和 x (t) 的相关性),在检测水印时,用 Scoring 函数来衡量这种相关性。
以下是一个具体示例:简单来说是通过水印 key 和前几个 token(这里为 4 个)通过哈希函数生成 m 个向量,每个向量的值对应一个可选的下一个 token。
然后,通过比赛的方式,从这些 token 中选出一个,这正是 SynthID-Text 采用的 Tournament 采样算法。
如下图所示,参与 2^m 个 token 的 m 轮比赛(此处为 8 个 token 和 3 轮比赛,token 可重复),
每轮中的 token 将根据当前轮次对应的向量进行两两对抗,胜者进入下一轮,如果打平,则随机选一个胜者。
以下是算法的伪代码:
水印检测
根据上述的赛制,最后胜出的 token 更有可能在所有随机水印函数(g1,g2,…,gm)中取得更高值,
因此可以使用以下 Scoring 函数来检测文本:
将所有 token 投入所有水印函数中,最后计算平均值,带水印的文本通常应得分高于无水印的文本。
由此可知,水印检测是一种程度问题。影响评分函数检测性能的主要因素有两个。
首先是文本的长度:较长的文本包含更多的水印证据,从而提高检测的统计确定性。
第二个因素是 LLM 本身的特性。如果 LLM 输出分布的熵极低(意味着对相同提示几乎总是返回相同的响应),则 Tournament 采样无法选择在 g 函数下得分更高的 token。
此时,与其他生成水印方案类似,对于熵较小的 LLM,水印效果会较差。
LLM 自身的熵受以下几个因素影响:
模型(更大或更高级的模型往往更确定,因此熵较低);
来自人类反馈的强化学习会降低熵(即模式崩溃);
LLM 的提示、温度和其他解码设置(如 top-k 采样设置)。
一般来说,增加比赛轮数(m)可以提升方法的检测性能,同时降低 Scoring 函数的方差。
然而,可检测性并不会随着层数的增加而无限增长。比赛的每一层都使用一些可用的熵来嵌入水印,水印强度会随着层数的加深而逐渐减弱。本文通过实验确定 m=30。
文本质量
作者对非失真的定义清晰,从弱到强进行分类:
最弱版本是单 token 非失真,即水印采样算法生成的 token 的平均分布应与 LLM 原始输出的分布一致;
更强的版本则扩展至一个或多个文本序列,确保平均而言,水印方案生成特定文本或文本序列的概率与原始输出的分布相同。
当 Tournament 采样为每场比赛配置恰好两个参赛者时,即为单 token 非失真。而如果应用重复的上下文掩码,则可以确保一个或多个序列的方案不失真。
在本研究中,作者将 SynthID-Text 设置为单序列非失真,这样可以保持文本质量并确保良好的可检测性,同时在一定程度上减少响应之间的多样性。
计算可扩展性
生成水印方案的计算成本通常较低,因为文本生成过程中仅涉及对采样层的修改。
在 Tournament 采样的某些情况下,也可以通过矢量化实现更高的效率,因此 SynthID-Text 引起的额外延迟可以忽略不计。
在大规模产品化系统中,文本生成过程通常比前面描述的简单循环更复杂。
产品化系统常常使用推测采样以加速大模型的文本生成。
小编曾在将 Llama 训练成 Mamba 的文章中提到过大模型的推测解码过程。
简而言之,就是利用原来大模型蒸馏出一个小模型,小模型运行更快,先生成一个序列,然后由大模型进行验证,借助 kv cache 的特性,可以精准回滚那些不符合要求的 token。
这种做法既确保了输出的质量,又充分利用了显卡的计算能力,主要目的是加速。
因此在实际操作中,生成水印方案需要与推测采样结合,以便真正应用于生产系统。
为此,研究人员提出了两种具有推测采样算法的生成水印方案。
-
其一是高可检测性水印推测采样,保留了水印的可检测性,但可能会降低推测采样的效率(从而增加整体延迟)。
-
其二是快速水印推测采样(当水印是单 token 非失真时),保留了推测采样的效率,但可能会降低水印的可检测性。
研究人员还提出了一个可学习的贝叶斯评分函数,以提高后一种方法的可检测性。在生产环境中,当速度至关重要时,快速水印推测采样最为实用。
如图所示,在非失真类别中,对于相同长度的文本,非失真的 SynthID-Text 的可检测性优于 Gumbel 采样。在较低熵设置(如温度较低)的情况下,SynthID-Text 对 Gumbel 采样的改进更为明显。
参考资料:
-
https://x.com/GoogleDeepMind/status/1849110265645678807
-
https://www.nature.com/articles/d41586-024-03462-7