马里兰大学给 LLM 打绿名单水印,200 token 检出率 99.4%

2026-09-15

马里兰团队在采样时给随机绿名单 token 的 logit 加偏置 δ,检测不需要模型;OPT-1.3B 生成 200 token、δ=2 时真阳性率 99.4%,观察到的假阳性为 0。

这篇在解决什么

大模型已经能写新闻、写代码、写作业。文本一旦流出,平台和学校很难判断它是不是机器写的。事后分类器跟着模型能力走:GPT-2 上能用的检测,到 GPT-3 就掉队,而且容易被对抗改写打穿。

另一条路是在生成时把信号埋进采样过程。水印要对人不可见,对算法可检,还不能依赖模型参数或 API。低熵文本是硬骨头:「Barack」后面几乎只能接「Obama」,改词就会把句子写坏。

方法

马里兰大学 Kirchenbauer、Geiping 等人给词表做一次伪随机切分。用上一个 token 的哈希当种子,把词表分成绿名单 G 和红名单 R。硬规则直接禁止红名单,分析简单,低熵位置会卡死。

软规则只给绿名单的 logit 加常数 δ,再做 softmax 采样。高熵位置有很多差不多好的词,δ 会把采样推到绿名单;低熵位置最优词的 logit 远高于其他候选,加不加 δ 几乎不影响下一词。检测端不需要模型:复现同一套哈希,数绿名单 token 个数,做单比例 z 检验。绿名单占比为 γ、长度为 T 时,z = (|s|G − γT) / sqrt(Tγ(1−γ))。论文取 z>4,对应单侧假阳性约 3×10^{-5}。

软水印的灵敏度跟文本熵绑在一起。论文用 spike entropy 度量下一词分布是不是钉在少数几个 token 上,并给出绿名单计数的期望下界。取 γ=0.5、δ=ln 2 时,期望绿名单数至少是 (2/3)T S。

结果

实验用 OPT-1.3B,prompt 来自 C4 的 RealNewsLike 子集,每条生成约 200 个 token,每组大约 500 条。质量用更大的 OPT-2.7B 当 oracle 算 perplexity。

采样δγTPR (z=4)FNR
多项式1.00.500.7670.233
多项式2.00.500.9840.016
多项式2.00.250.9940.006
多项式5.00.251.0000.000
8-beam2.00.250.9940.006
8-beam5.00.251.0000.000

列出的设置里,观察到的假阳性最多一条,表上 FPR 记为 0.0。γ=0.1 的小绿名单在 z-score 与 PPL 的帕累托前沿上更好。8-beam 几乎把曲线拉成竖线:水印变强,PPL 几乎不动。γ=0.25、δ=2 的 8-beam 下,平均 z-score 超过 5 只需要约 35 个 token。

用 T5-Large 做 span 替换攻击:替换预算 ε=0.1 时 AUC 从 0.998 掉到 0.988;ε=0.3 掉到 0.954,攻击后 PPL 平均升高约 15 点,大约是原来的 3 倍。想洗掉水印,文本质量会先崩。

失败样本几乎都是低熵复读。模型在背训练集里的人类句子,水印加不进去。

为什么重要

这是后来 LLM 文本水印的一条主线:不改权重、开源检测、p 值可解释。检测只依赖 γ 和哈希函数,不依赖 δ。同一套检测器可以给散文和代码配不同的强度,也可以只对可疑用户打开水印。

对平台审核、作业查重、训练语料去污染,这条路径比事后分类器更可部署。前提是模型提供方愿意在采样器里加这一步。

局限与存疑

低熵和记忆化文本检不出,代码、公式、模板回复会是盲区。实验停在 OPT-1.3B 的新闻续写,没有指令模型和多轮对话。攻击评估主要是随机位置的 T5 替换;知道哈希密钥的对手可以定向翻红名单。作者自己算过:1000 个 token 里最多改 200 个,z 仍约 6.3。密钥一旦泄露,对抗改写会容易得多。

公开水印如果只哈希前一个 token,同义词替换可能连带打乱下一个位置的绿名单。流式检测、以及水印片段嵌在大段人类文本里怎么测,论文明确留作未解。

术语

原文与代码

社区讨论

全部论文解读