A Watermark for Large Language Models
John Kirchenbauer, Jonas Geiping, Yuxin Wen, Jonathan Katz, Ian Miers, Tom Goldstein
ICML 2023
cs.LG, cs.CL, cs.CR
2023-01-25
Maryland把词表随机切成绿名单并给logit加δ偏置,OPT-1.3B续写200 token检出率98.4%,理论误报约3×10⁻⁵,检测端不必加载模型,算法可以开源。
大模型已经能写文档、写代码、刷社交媒体。平台要拦机器灌水,学校要查作业代写,训练数据还得把合成文本剔出去。事后分类器(GPTZero一类)会随模型换代失效,也给不出可解释的误报率。
要的是一种生成时就种进去的信号:人眼看不出来,几十个 token 就能统计检出,而且检测端不必碰模型权重或 API。低熵片段是硬骨头。「Barack」后面几乎只能接「Obama」,硬改就会把句子写坏。
University of Maryland 这组人把水印做成一次采样偏置,模型不用重训。
硬规则先讲清楚直觉。生成第 t 个词前,用前一个 token 的哈希去播种随机数,把词表对半切成绿名单和红名单,下一个词只许从绿名单抽。检测端用同一套哈希复现名单,数绿词个数。人写的文本大约一半落在绿名单;硬水印文本零红词。T 个 token 全绿的概率是 1/2^T。用单比例 z 检验:
z = 2(|s|G − T/2) / √T
取 z>4 时,单侧误报大约 3×10⁻⁵;16 个全绿 token 就过线。对手改 200/1000 个词,最多制造 400 次红名单违规(改当前词还打乱下一词的名单),剩下 600 个绿词仍有 z≈6.3。
硬规则在低熵处会卡死近乎唯一的下一个词。软规则改成:绿名单大小为 γ|V|,只给绿名单 logit 加常数 δ,再 softmax。高熵位置很多词差不多大,δ 会把采样推向绿名单;低熵位置最大 logit 远高于其余,加不加 δ 都还是它。检测公式换成任意 γ 的 z 检验。论文还定义了 spike entropy,用来刻画分布是不是「尖在少数几个词上」,并给出绿词期望数的下界。γ=0.5、δ=ln2 时,期望绿词数至少是 (2/3)T S★。
检测可以公开,也可以把哈希密钥藏在 API 后面。私有模式用 AES/SHA3 一类伪随机函数,窗口 h=2 或 3,避免一次改词把后面一串红名单全打乱。还可以多密钥轮换,检测时做多重检验校正。
束搜索和软规则是搭档:在候选序列里挑绿词更密的那条,等于把水印「熨进去」,强度上去、困惑度代价很小。
主实验用 OPT-1.3B,prompt 来自 C4 的 RealNewsLike,每条生成约 200 token,困惑度用更大的 OPT-2.7B 估。图 1 的示例用 OPT-6.7B、γ=0.25、δ=2:人写期望 9 个绿词,水印文本有 28 个,p≈6×10⁻¹⁴。
| 设置 | 阈值 | TPR | FNR |
| 多项式采样 δ=2, γ=0.5 | z=4 | 98.4% | 1.6% |
| 同上 | z=5 | 97.8% | 2.2% |
| 8 束搜索 δ=2, γ=0.5 | z=4 | 99.2% | 0.8% |
| 多项式采样 δ=5, γ=0.25 | z=4 | 100% | 0% |
约 500 条里,各设置最多看到 1 次误报,多数列为 0。δ=2 时多项式采样经验检出 98.4%,4 束搜索 99.6%。平均 spike entropy 0.807 时,理论绿词期望至少 142.2,实测 159.5。
小绿名单 γ=0.1 在 z 分数–困惑度曲线上更 Pareto。8 束搜索的点几乎竖直,强度拉高、PPL 几乎不动。无水印时多项式采样 PPL 约 5.1,贪心约 1.2。
攻击侧用 T5-Large 随机换 span。替换预算 ε=0.1 时 AUC 只掉 0.01;ε=0.3 才明显洗掉水印,平均困惑度大约乘 3,大约多 15 个 PPL。TriviaQA 上 FLAN-UL2 与 BLOOMZ 的 Exact Match 掉不到 4 点,短答案低熵,软规则本来就不该大改。
这是后来一整类 LLM 文本水印的起点,ICML 2023。部署方只改采样,检测方开源一个哈希加 z 检验,不必把模型公开。平台审合成帖、出版社筛投稿、训练前洗语料,都可以用同一把尺子,还带 p 值。
它解决的是「生成端配合」的场景。开源权重、用户自己采样,这条链直接断。对闭源 API 仍然有用,前提是采样路径真的走了这套 logit 偏置,而不是用户在外面再包一层改写模型。
低熵和背诵是检出失败的主因。表 1 里过不了线的样本,经常是模型在复读训练数据或填日期模板,logit 尖到软规则撬不动。跳过重复 n-gram 能减假阳,也说明分数对模板文本敏感。
实验主体是 OPT-1.3B 续写新闻,不是对话模型,也不是指令模型。Emoji 攻击(隔词插表情再删掉)和同形字符、零宽字符会打乱哈希,论文靠输入规范化挡,没有给出对抗训练后的数字。释义攻击要靠更弱的公开模型,质量会掉,但对手如果有同级模型,根本不必用带水印的 API。
私有水印把检测关进 API,查询本身又可能被用来反推名单。多密钥能抬高暴力成本,论文没有给出真实对抗预算。TriviaQA 那组数字也不能外推到长文事实性。