一般

AI 文本水印的工作原理

1
分类技术博客
来源跳转
发表时间

内容

AI 文本水印如何工作。

在纯文本里做水印听起来几乎不可能。文本没有可以藏数据的像素,复制粘贴也不会保留任何元数据;每个字符都明明白白地摆在你眼前。标记到底能藏到哪里去?

可这些标记确实存在。Google 自 2024 年起就在 Gemini 生成的文本中加入了水印;截至 2026 年 8 月,新的 Claude 模型会在模型层面对文本打标,旧模型随后也会跟进。它们不可见,能在复制后存活,而且之所以可行,是因为标记根本不在字符里,而是在词与词之间的选择里。

1. 写作是一连串细小的选择

这一部分只讲一个核心:模型写作时,是在几个都说得通的词之间,用带权重的骰子来掷出一个结果。

当模型写到句子中途时,它并不知道“下一个词”是什么。它只会像自动补全一样,列出一个带偏好的候选清单。下面是一个真实的时刻,句末只差一个词:

每一次掷骰都会扫过这个候选清单,落在某一个词上(概率与柱状图一致),然后把它放进上面的句子里。那些点标记出每次落点:把这个过程重复 ×20 次,你会看到堆积出来的形状正好符合概率。请注意,从来不会变的是:每次落点都能组成一条完全通顺的句子。

一页文本里有成百上千个这样的岔口,每个词位置都可能有几个同样合适的选项。这种“余量”就是原材料。谁能影响骰子怎么落点,谁就能在不改变意思的前提下,把某种模式藏进文本里。

2. 一个秘密密钥会影响这些选择

这一部分只讲一个核心:密钥会悄悄给候选词上色,并轻轻偏向其中一种颜色。文本读起来仍然正常。

下面是经典做法(Kirchenbauer 等,2023;Google 的 SynthID 则通过更隐蔽、类似“锦标赛”的方式达到同样目的)。在每个岔口,带密钥的数学规则把候选词分成绿色红色,这种任意的上色只有持有密钥的人才能复现。然后,骰子会被轻微地往绿色一边倾斜。

未应用密钥:这些是模型自己的偏好。应用密钥后,虚线轮廓会显示原来的概率。

这种做法之所以隐蔽,有两点。首先,偏置非常轻:红词仍然可能胜出——只是概率稍低一点。其次,这种上色并不是词的固定属性:密钥会根据前面一小段词来计算它,所以同一个候选词,在一个前缀之后可能是绿色,在另一个前缀之后又变成红色:

同样的四个候选词,在六个不同前缀之后,由密钥重新上色。密钥只看它前面的词;更大范围文本中的位置,对它来说是不可见的。只有整体上偏向绿色这一趋势会累积下来,而只有密钥持有者知道哪些位置的哪些词是绿色。

(两个“兄弟”方案,原理相同。Google 生产环境里的 SynthID 用一个很小的秘密锦标赛代替轻微偏置:先按模型自己的概率抽出少数候选词,密钥再给它们打分,并把对阵表安排成这样:在密钥抽样的平均意义上,每个词的概率都仍然严格等于模型原本设定的概率。Aaronson 在 OpenAI 构建的方案甚至连这一步都省了,直接用密钥来推导掷骰本身。数学不同,原理相同:标记藏在选择里。)

3. 谁持有密钥,谁就能统计

这一部分只讲一个核心:有了密钥,你就能重新给任何文本上色,然后直接统计。带标记的文本会比随机情况更频繁地落到绿色。

检测并不是去读文本内容或判断文风。检测器只是按密钥持有者的规则重新给词上色,然后统计有多少次是绿色。若没有标记(或者没有正确的密钥),绿色大约应该赢一半的次数。也就是抛硬币。下面是一段看起来很普通的段落;请试试把两个密钥都套上去:

填充并带下划线的块是绿色,虚线轮廓的是红色。无论哪种颜色,文字读起来都一模一样;这些上色只存在于密钥持有者的数学计算里。用错密钥时,这种分布没有意义,统计结果就停留在随机水平。

(这个演示里的偏置故意画得比较强,方便你看清;生产环境里的水印会温和得多,因此需要更长的文本。这个演示中 50/50 的模型里,一篇 1,500 词的文档也只能把可疑度推到约 55% 的绿色:微小偏差只有在足够长的文本里才会变得有说服力,这也是为什么短文本确实很难判断。)

4. 编辑会如何影响标记

这一部分只讲一个核心:标记存在于未被改动的连续措辞中。编辑会在这些连续段被打断的地方把标记抹掉,仅此而已。

每个词的上色都来自它前面的一小段连续词串(取决于方案,长度可能是一个到几个词)。所以,某个位置只有在原始措辞的一小段窗口(那个词及其邻近词)完整保留下来时,才算作证据。

下面是第 3 步里的同一段话,分别在五个编辑深度下的状态。拖动滑块,看看高亮的连续段如何缩短。 高亮意味着那段措辞仍与原文完全一致,因此检测器可以在那里计数。所有变淡的部分都是新措辞,那里只剩下随机噪声可供统计。

这个判断读数来自上面高亮部分所测得的“存活比例”,并投影到一篇 1,500 词文档里。要注意两点:一是“重度编辑”其实还保留了多少;二是你必须把滑块拖到多接近彻底重写,这些证据才会真正消失。

在真实实现中(MarkLLM 在开源模型上的 KGW 和 EXP 方案,经过 declaude 的全重写路线处理):大约只有 0.5% 的窗口能存活,检测准确率会从几乎必然降到随机水平。已有论文也印证了这种趋势。轻度改写或单次改写稀释了标记,而不是把它删除;在 Kirchenbauer 等人的实验里,只要文本足够长,检测器就能重新找回信号,甚至人类级改写在大约 800 个 token(约 600 个词)之后也会再次变得可检测。真正会消除标记的,是一种与原文不共享任何连续措辞的重组式改写。

这就是为什么像 declaude 的全重写路线那样、从语义出发重写的工具,才会真正抹掉这一类标记;而那种只保留大部分措辞的轻量改写则不会。

这里也明确说明一个边界:上面的数字来自我们可以测量的开源实现。Anthropic 的生产方案并未公开,因此外部任何人都还无法用这套测试去检验 Claude 自身的标记。

5. 这在实践中意味着什么

这一部分只讲一个核心:检测是私有的、概率性的,而且针对的是处理过程,不是作者身份。

  • 只有密钥持有者才能检查。 你的老师、编辑,或者你最喜欢的“AI 检测器”网站,都不能运行这个测试;真正的检查需要服务提供方的秘密密钥,或者由服务提供方运行的检测服务。Google 为 SynthID 运行一个早期访问检测门户;Anthropic 说检测工具即将推出。
  • 水印检查不是“AI 检测器”。 像 GPTZero 之类的工具是靠文风来猜测,出了名地不可靠。水印则相反:它是一个有意设计、由密钥控制的统计检验。不要把两者混为一谈。
  • 发现标记意味着“被处理过”,不等于“由 AI 写成”。 Anthropic 自己的文档指出,经 Claude 仅做校对或翻译的人类文本,也会带上这个标记。反过来,没发现标记说明的更少:旧模型或重度编辑后的真实 AI 文本,也会得到“干净”的结果。
  • 短文本和低选择空间文本带来的标记很少。 证据会随着长度增长;而只有一个正确续写的文本(如代码、引语、事实列表)给骰子的回旋余地太小,几乎藏不下任何东西。
  • 某些标记经得住重写。 那些基于词本身而不是其邻近词来加密的方案,抗打击能力强得多:保持相同意思的改写会保留足够多的词,因此相当一部分标记会存活下来。(它们的弱点不同:如果同一种上色在很多地方被复用,只要输出足够多,就能被逆向推导出来。)还有一些方案把标记藏在语义里,而同义重写会部分保留这些标记;我们目前所知,唯一的应对办法是按大纲级别重新生成。

James PadolseyNOPE 撰写,作为 declaude 的配套说明。交互式图示是一个教学模型,参数仅用于示意,并非任何提供方的真实方案。

评论

(0)
未配置登录方式
暂无评论