AI 文本水印是如何工作的
AI 文本水印是如何工作的
原文作者:James Padolsey(NOPE / declaude)
原文链接:https://declaude.org/watermarking/
发布时间:2026 年 8 月
纯文本里的水印听起来不可能。文本没有像素可以隐藏数据,复制粘贴也不会保留任何元数据;每个字符都明明白白地摆在你面前。标记能藏在哪里呢?
然而这些标记是真实存在的。Google 自 2024 年起就在 Gemini 应用和网页体验中为文本添加水印(截至撰写本文时,其 API 是一个有文档记录的例外);截至 2026 年 8 月,新版 Claude 模型在模型层面为文本添加水印,旧模型也将跟进。
它们是隐形的,能在复制中存活,它们之所以有效,是因为它们根本不存在于字符中——它们存在于词语之间的选择里。
1. 写作是一系列小选择
这一步的核心思想:模型通过在几个都不错的词之间掷加权骰子来写作。
当模型写到句子中间时,它并不知道"下一个词"是什么。它有一个候选清单,就像自动补全一样,带有偏好权重。这是一个真实的场景,句子还差最后一个词:
研究结果相当 ____
| 候选词 | 概率 |
|---|---|
| important(重要的) | 40% |
| significant(显著的) | 30% |
| substantial(实质性的) | 20% |
| notable(值得注意的) | 10% |
每一次掷骰子都会扫过候选清单,落在一个词上(概率与条形图匹配),然后把它放进上面的句子里。点会记录骰子落在哪里:试 20 次,看着堆积形成概率的形状。注意什么永远不会改变:每一次落地都造出一个完全通顺的句子。
一页文本包含数百个这样的小岔路口,每个词一个,其中许多岔路口有几个同样不错的选项。这种松弛度就是原材料。谁能影响骰子的落地方式,谁就能在文本中隐藏一个模式,而不改变它说的内容。
2. 密钥影响这些选择
这一步的核心思想:密钥秘密地给候选清单上色,并给其中一种颜色一个轻微的推力。文本读起来仍然正常。
这是经典方案(Kirchenbauer 等人,2023;Google 的 SynthID 通过更微妙的锦标赛式路线达到同样目的)。在每个岔路口,密钥驱动的数学将候选词分为绿色和红色,这是一种只有密钥持有者才能复现的任意着色。然后骰子被轻微地向绿色倾斜。
研究结果相当 ____
| 候选词 | 原始概率 | 应用密钥后 |
|---|---|---|
| important | 40% | 🟢 提升 |
| significant | 30% | 🔴 降低 |
| substantial | 20% | 🟢 提升 |
| notable | 10% | 🔴 降低 |
有两件事让这很狡猾。推力是温和的:红色词仍然可能胜出——只是概率稍低。而且着色不是词的固定属性:密钥根据前面一小段词来计算着色,所以同一个候选词在一个前缀后是绿色,在另一个前缀后是红色:
| 前缀 | 候选词着色 |
|---|---|
| …were quite | important 🟢 significant 🔴 substantial 🟢 notable 🔴 |
| …looked quite | important 🔴 significant 🟢 substantial 🔴 notable 🟢 |
| …seemed quite | important 🟢 significant 🔴 substantial 🟢 notable 🔴 |
| …felt so | important 🔴 significant 🟢 substantial 🔴 notable 🟢 |
| …proved rather | important 🟢 significant 🔴 substantial 🟢 notable 🔴 |
| …remained | important 🔴 significant 🟢 substantial 🔴 notable 🟢 |
同样四个候选词,在六个不同前缀后由密钥着色。密钥看到它前面的词;它在更广泛文本中的位置对它是不可见的。只有向绿色的总体倾斜在累积,也只有密钥持有者知道哪些词在哪里是绿色。
两个同源方案,同一原理。
Google 的 SynthID——生产环境中使用的那个——用一个微小的秘密锦标赛取代了推力:从模型自身的概率中抽取几个候选词,密钥给它们打分,然后安排对阵,使得在密钥的抽取平均后,每个词的概率精确保持模型的原始意图。
Aaronson 的方案(在 OpenAI 构建)甚至跳过了这一步,直接从密钥推导骰子掷出的结果。
数学不同,原理相同:标记存在于选择中。
3. 持有密钥的人可以计数
这一步的核心思想:有了密钥,你可以给任何文本重新着色,然后简单地计数。带标记的文本绿色出现得太频繁,不可能是运气。
检测不读取文本,也不判断其风格。检测器用密钥持有者的着色重新扫过这些词,然后数有多少个是绿色。没有标记(或没有正确的密钥)时,绿色应该赢大约一半的时间。就像抛硬币。
这是一个看起来普通的段落;试试用两个密钥对它计数:
The harbour changed slowly, then all at once. For years the fishing boats went out before dawn and came back by noon, and the town set its clocks by them. When the ferry line opened, the rhythm shifted: new faces, new money, and a working waterfront turned into a promenade almost nobody remembers voting for.
| 检测方式 | 结果 |
|---|---|
| 用正确密钥计数 | 绿色:__ / 55 → 远超随机 |
| 用错误密钥计数 | 绿色:__ / 55 → 约 50%(抛硬币) |
填充并加下划线的词块是绿色,虚线轮廓是红色。无论哪种方式,词读起来完全相同;着色只存在于密钥持有者的数学中。用错误的密钥,分割毫无意义,计数停留在随机水平。
(这个演示的倾斜画得很强,这样你能看到它;生产环境的标记倾斜要温和得多,需要相应更多的文本。在这个演示的 50/50 模型中,一篇 1500 词的文档只会在约 55% 绿色时触发标记:小的倾斜只有通过长度才变得有说服力,这就是为什么短文本真的很难判断。)
4. 编辑对标记做了什么
这一步的核心思想:标记存在于未被改动的措辞连续片段中。编辑恰好在片段断裂的地方擦除它,其他地方则不会。
每个词的着色都来自它前面一小段词(一到几个,取决于方案)。所以一个位置只有在原始措辞的一个短窗口(该词加上它的邻居)完整存活时,才算作证据。
这是第 3 步中同一个段落,在五个编辑深度下。拖动滑块,看着高亮的片段缩小。高亮意味着那段措辞仍然与原文完全匹配,所以检测器可以在那里计数。所有褪色的部分都是新措辞,那里只剩下抛硬币的噪音可以计数。
| 编辑深度 | 存活窗口 | 检测状态 |
|---|---|---|
| 修正错别字 | 96% | 仍然明显可检测 |
| 轻微润色 | ~85% | 可检测 |
| 收紧句子 | ~60% | 可能可检测 |
| 重度编辑 | ~30% | 难以检测 |
| 完全重写 | ~0.5% | 抛硬币(无法检测) |
判决读取的是从上面高亮部分测量的存活比例,投影到一篇 1500 词的文档。有两件事值得注意:一次"重度编辑"还留下了多少,以及你必须拖到多接近完全重写,证据才真正消失。
在真实实现上(MarkLLM 的 KGW 和 EXP 方案在一个开放模型上,经过 declaude 的完全重写路线清洗):约 0.5% 的窗口存活,检测器准确率从基本确定下降到抛硬币。已发表的文献在这一点的形状上是一致的。
轻度或一次性释义会稀释标记而不是删除它;在 Kirchenbauer 等人的实验中,给定足够文本,检测器会恢复,即使是人类释义在大约 800 个 token(约 600 词)后也会再次变得可检测。删除标记的是与原文不共享任何措辞片段的重新组合。
这就是为什么一个从意义出发重写的工具(比如 declaude 的完全重写路线)才是真正擦除这一类标记的东西,而为什么一个保留大部分措辞的轻度处理则做不到。
明确说明一个边界:这些数字来自我们可以测量的开放实现。Anthropic 的生产方案是未公开的,所以 Anthropic 之外还没有人能针对 Claude 自己的标记运行这个测试。
5. 这在实践中意味着什么
这一步的核心思想:检测是私有的、概率性的,而且是关于处理的,不是关于作者身份的。
🔑 只有密钥持有者能检查
你的老师、编辑或你最喜欢的"AI 检测器"网站无法运行这个测试;真正的检查需要提供商的密钥,或提供商运行的检查服务。Google 为 SynthID 运行一个早期访问的检测器门户;Anthropic 表示检测工具即将推出。
🚫 水印检查不是"AI 检测器"
像 GPTZero 这样的工具从风格猜测,出了名地不可靠。水印正好相反:一个故意的、密钥门控的统计测试。不要把两者混为一谈。
📝 发现标记意味着"被处理过",不是"被写过"
Anthropic 自己的文档指出,仅仅被 Claude 校对或翻译的人类文本也会带上标记。而缺席证明的甚至更少:旧模型或重度编辑会在真正的 AI 文本上产生干净的结果。
📏 短文本和低选择文本携带的标记很少
证据随长度增长,而只有一个正确延续的文本(代码、引文、事实列表)给骰子的松弛度太小,藏不下任何东西。
🔄 某些标记比重写活得更久
基于词本身而不是其邻居的方案表现要好得多:同义重写保留了足够多的词,大部分标记存活下来。(它们的弱点不同:到处复用的着色可以从足够多的输出中反向工程出来。)其他标记藏在意义中,同义重写会部分保留它们;我们知道的唯一答案是大纲级别的重新生成。
作者:James Padolsey,在 NOPE,作为 declaude 的配套内容。交互式图表是一个带有说明性参数的教学模型,不是任何提供商的实际方案。
参考资料与延伸阅读
- Kirchenbauer 等人,A Watermark for Large Language Models(ICML 2023)
- Dathathri 等人,Scalable watermarking for identifying LLM outputs(SynthID-Text,Nature 2024)
- Aaronson & Kirchner,Watermarking GPT outputs(2022)
- Kirchenbauer 等人,On the Reliability of Watermarks for Large Language Models(ICLR 2024)
- Sadasivan 等人,Can AI-Generated Text be Reliably Detected?(2023)
- Zhao 等人,The Mark Fades: Adaptive Evolutionary Paraphrase-based Attack(ACL Findings 2026)
- Anthropic,How Claude marks AI-generated content(帮助中心,2026 年 8 月)
- 我们自己的已知密钥实验:重新组合将 KGW/EXP 检测崩溃到随机水平(AUC 0.99 → ≈0.5),无上下文 unigram 标记存活(0.73–0.84);大纲级重新生成是我们知道的意义空间标记的唯一答案。
给专业人士:第 4 步判决背后的残余证据模型是 z ≈ f·√N·z₁(存活比例 f,文档长度 N,每 token 强度 z₁)。图表计数词;真实检测器在模型自己的分词器中计数 token。形状相同。