Skip to content
Ziwen
Go back

同样的词,不同的骰子,AI 文字水印如何工作

目录

Anthropic 在 2026 年 8 月宣布,未来的 Claude 模型会给生成文本加入水印。我把它的官方说明、配套的互动演示和 Google DeepMind 的 SynthID-Text 论文对在一起看,最值得先说清的一点很简单。

文字水印没有往回答里塞隐藏字符,也不会在复制时附带一段看不见的元数据。它改的是模型挑选下一个 token 时,随机数从哪里来。

这个区别很要紧。检查 Unicode 字符、空格或文件属性,找不到这种水印。用户读到的仍是普通文字,检测器检查的则是整段文字留下的统计规律。

每一个词都从概率分布里来

大语言模型从左到右生成文本。已有内容记作 x<tx_{<t},模型会为下一个 token 算出一组概率。

pLM(xt∣x<t)p_{\text{LM}}(x_t \mid x_{<t})

有些位置几乎没有选择。数学题写到 2 + 2 =,正常答案高度集中在 4。引用书名、抽取原文、修正标点和生成代码时,也常有一个明显更可靠的结果。模型在这些位置的概率分布很尖,水印能利用的空间很少。

开放写作会留下更多选择。一句话写到天气转冷,后面可以接阴沉、灰暗或起雾,几种写法都通顺。概率分布更分散,模型需要随机抽样。这样的选择越多,统计信号就越容易积累。

互动演示把这些位置画成一条条岔路。第一次选择变了,后面的上下文也随之改变,整句话会走向另一条生成路径。水印因此不会机械地把某个词替换成固定同义词。它参与的是一次次采样。

水印换掉了随机数的来源

普通采样会在每一步取得新的随机数。生成式水印加入一把密钥,再结合刚刚生成的上下文,算出本次采样使用的随机种子。简化以后,可以写成下面这样。

普通采样
  r_t = random()

水印采样
  r_t = hash(secret_key, recent_tokens)

模型仍从原有概率分布中选 token。水印不会凭空加入一个原本不可能出现的词。它让随机选择与密钥、前文之间形成可重复计算的关联。读者不知道密钥,看见的仍是一条自然的生成路径。检测方拿到密钥后,可以沿着文本重新计算每一步,检查实际 token 与这组随机信号有多一致。

这也解释了水印为什么不携带用户身份。Anthropic 说明,Claude 的水印标记模型参与过文本生成或处理,其中没有用户、组织和对话信息。同一把水印密钥服务于模型归因,无法反推出是谁提出了问题。

SynthID-Text 怎样挑出下一个 token

Anthropic 表示,Claude 使用的是 SynthID-Text 的一个版本。Google DeepMind 在 2024 年的论文里公开了这套方法,核心采样算法叫 Tournament sampling。

以论文中三层锦标赛的示意为例。采样器先从模型分布中抽出八个候选 token,把它们两两分组。每组依据第一层伪随机函数的分数选出一个候选,剩下四个继续比赛。第二层留下两个,第三层选出最终 token。各层分数都由密钥和当前上下文决定。

模型概率分布
  ↓ 抽取 8 个候选
第一层比较
  ↓ 留下 4 个
第二层比较
  ↓ 留下 2 个
第三层比较
  ↓ 输出 1 个 token

锦标赛只在模型已经给出概率的候选中选择。论文还给出了非失真配置。这里的“非失真”是一项统计保证,并不要求同一个问题在有水印和无水印时逐字相同。它要求水印采样在规定范围内保持原模型的输出分布。对固定密钥而言,token 与随机种子会出现检测器需要的相关性。对随机密钥取平均后,单个 token 的分布仍与原模型一致。

同一段上下文若反复出现,固定的随机种子可能带来重复偏差。SynthID-Text 会记录已经用过的上下文窗口,再次遇到时跳过水印采样。论文把这个办法称作 repeated context masking,它能把非失真保证从单个 token 扩展到一段或多段序列。

检测器读到的是一组证据

检测时不需要再次运行原来的大模型。检测器只需要文本、tokenizer、水印密钥和随机种子算法。它按同样的上下文窗口重新生成每一步的种子,再计算实际 token 在各层伪随机函数中的得分。

论文给出的基础分数可以简化成所有 token、所有锦标赛层的平均值。

Score⁡(x)=1mT∑t=1T∑ℓ=1mgℓ(xt,rt)\operatorname{Score}(x)=\frac{1}{mT}\sum_{t=1}^{T}\sum_{\ell=1}^{m}g_\ell(x_t,r_t)

水印文本更常选中高分 token,整段文字的平均分便会偏高。实际系统还可以使用加权分数、频率检验或学习得到的贝叶斯评分,把结果转换成 P 值或后验概率。

所以检测器给出的合理结论是“Claude 参与这段文字的可能性有多高”。它无法证明整篇都由 Claude 独立写成,也分不出 Claude 是起草者还是重度编辑者。短文本提供的样本太少,检测置信度会下降。事实密集、代码很多的内容也较难检测,因为模型本来就没有多少自由选择。

论文在评估中还使用了拒答机制。系统只对把握足够高的样本下结论,对其余文本返回不确定。研究者在一个实验设置中把目标定为 95% 真阳性率和 1% 假阳性率,代价是放弃判断一部分样本。这个做法比强迫检测器给每段文字贴上二元标签更符合统计检测的本性。

为什么水印可以几乎不影响质量

非失真配置保留了原模型的输出分布,实验结果也支持这一点。Google DeepMind 曾把有水印和无水印的 Gemini 响应随机分给真实用户,分析接近两千万条回答。两组的点赞率相差 0.01%,点踩率相差 0.02%,差异都没有统计显著性。

研究团队又让人工评审比较 3000 个 ELI5 问题的回答,分别看语法与连贯性、相关性、正确性、帮助程度和总体质量,各项都没有显著差异。自动基准和困惑度测试也得到相近结果。

采样带来的计算开销同样很小。论文报告的 Gemma 7B-IT 实验中,普通生成每个 token 用时 15.527 毫秒,三十层 Tournament sampling 增加到 15.615 毫秒,延迟上升约 0.57%。论文还把水印采样接入 speculative sampling,让生产系统继续使用小模型草拟、较大模型验收的加速路径。

这些数据支持 SynthID-Text 在论文配置和 Gemini 实验里达到了质量与速度目标。Anthropic 也表示,它在 Claude 的内部测试中没有观察到内容、创造力或可读性下降。Claude 的具体部署参数没有公开,不能直接从 Gemini 的实验数字推算出来。

文字水印与文件凭证是两件事

Anthropic 还会给 Claude 生成或处理的部分 PNG、JPG 和 SVG 文件附加 C2PA Content Credential。它是一段经过数字签名的来源元数据,支持 C2PA 的工具可以直接读取。

文字水印留在 token 的统计选择里。C2PA 凭证留在文件元数据中,能够明确记录文件经过哪个系统处理。两种办法提供的证据不同,检查方式也不同。把文字复制到另一个编辑器,统计模式仍可能保留。文件凭证则依赖元数据和签名链。

水印能够证明到哪里

水印最适合回答一个窄问题。持有对应密钥的检测方,可以判断某个模型是否很可能参与过这段文字。

它认不出没有采用水印的模型。另一个供应商即使使用相似方法,也会有不同密钥。开源模型由许多人分散部署,水印更难强制执行。论文因此把生成式水印视为内容来源体系的一部分,仍需与来源记录、文件凭证和其他检测方法配合。

编辑也会削弱信号。Anthropic 判断少量修改通常不会完全清除水印,逐字重写会清掉它。SynthID-Text 论文进一步指出,模型改写会减弱生成式水印,密钥窃取、伪造和主动清洗仍是开放问题。检测强度、文本质量和抵抗修改的能力之间始终需要取舍。

还有一条边界容易被忽略。检测到 Claude 参与过,不等于查明了作者身份。它也不决定作品归谁所有,更不能单独证明抄袭或欺骗。把一个概率分数直接变成处分依据,会把技术做不到的判断强塞给检测器。

Claude 当前公布的范围

Anthropic 在 2026 年 8 月 14 日的公告中说,未来 Claude 模型会带有文字水印,用来履行欧盟 AI 法案相关的内容标记要求。公司计划在模型发布时向全球启用水印,因为目前还没有可靠的区域限定办法。2026 年 8 月 2 日以前发布的旧模型处在过渡期,Anthropic 表示会在接下来数月逐步加入。

用于检查 Claude 水印的 API 仍在准备中。现在可以理解它的原理和证据边界,还不能仅凭肉眼或通用 AI 写作检测器验证某段文字是否带有 Claude 的密钥信号。后者通常分析措辞习惯,方法与密钥水印不同。

这项技术最有价值的地方,是给模型提供方增加一条可以主动验证的来源信号。它留下的是概率证据,适合帮助调查,也允许系统在证据不足时承认不知道。水印一旦被当作作者鉴定器,最先丢掉的正是这份分寸。

主要资料


Share this post:

Previous Post
AI PPT:从模板、代码到对象图的技术进化
Next Post
Claude Code 的上下文压缩:从缓存编辑到完整总结