你好呀,我是歪歪。
前几天在 X 上冲浪的时候,看到有人在讨论关于"AI 生成文本中嵌入不可见的数字水印"的话题:
以后你从 AI 那里复制出来的一句话,可能从你复制出来的那一刻开始,就已经带着一个你看不见的"身份证"了。
顺着这个话题,我找到了 Claude 官方发布的这样一篇公告:

在这篇官方的公告中,明确提到了,在 8 月 2 日之后,Claude 全球范围内的全产品输出的文本,都支持嵌入式水印:

这个嵌入式水印,具体是什么玩意呢?
官方也有对应的解释:

特别注意这句话:
由于水印是文本的一部分,当文本被复制和粘贴到其他地方时,它会随之传播。
翻译过来就是:文本即水印,水印即文本,它们之间是共生的关系。
不是什么在文本中插入一些不可见字符,或者在最后明确标注这段文本是由 AI 生成的这些低级手段。
而是当你让它给你生成一段文本后,水印就在这一段文本里面。
比如下面这个例子,如果是 Claude,它回复的这段文本中,就会带着"嵌入式水印",但是你一点也察觉不到:

这就是官方公告中说的:您看不到它,它不会改变 Claude 响应的含义、质量或可读性。
哦,对了。
上面这个例子实际上是 ChatGPT,为什么不用 Claude 呢?
别问,问就是账号被"夹"了。

反正你能领会到这个意思就行了。
怎么搞的
那么问题就来了,嵌入式水印,这玩意到底是咋搞的?
在 X 上有个大佬进行了一波拆解,我截取其中关键部分给你看看:

在理解这段话之前,我先去了解了一下这个大佬。
他说自己是 GPTZero 的 CTO。
GPTZero 是一个 AI 内容检测工具,主要用来判断一段文字"像不像 AI 生成的"。
这是它的官网:

他们还搞了一个有意思的网站,检测各个平台上 AI 创作内容的占比:

比如 X 上面,针对它扫描到的内容,其中有 12.3% 都是 100% 由 AI 生成的。
同时这个网站上还有一个预测,五年后 LinkedIn 上的内容将 100% 是 由 AI 生成:

所以,虽然官方并没有告诉大家"嵌入式水印"的核心原理,但是 GPTZero 网站的 CTO 做的技术分析应该大差不差。
我们再看看这个哥们说的这段话:

寥寥数语,其实就是完整的技术原理。
简单翻译一下这段话,就是说在使用 AI 生成文本时,它每次选择下一个词的时候,都会给一部分词的权重调整的高一点,而这个"权重的调整规则",水印检测器也知道。
当你对一段文本进行 AI 检测时,只要发现 AI 特别一部分词,而这部分词的权重是有过调整的,就可以判断这段文字很可能来自带水印的模型。
你不明白也没关系,我等下给你搞个例子。
你只需要知道,"嵌入式水印"不是往文本里塞什么特殊字符,也不会改变句子原本想要表达的意思,而是把水印藏在"选词的规律"里面,检测机制就是对"规律"进行统计。
我来举一个简单的例子。
假设词库里只有 10 个词:
苹果、香蕉、橘子、葡萄、汽车、飞机、火车、电脑、手机、小说
然后我们有一个秘密规则,把上面这些词分成了两部分。
一部分是:
苹果、橘子、汽车、电脑、小说,这部分我们叫做"绿集"。
另外一个部分是:
香蕉、葡萄、飞机、火车、手机,这部分我们叫做"红集"。
也就是,绿集和红集各占了 50%。
这里的绿集、红集只是一个集合名字而已,没事特殊含义,你要愿意,你可以分别叫做 A 集,B 集,叫做上集,下集也不是不可以。
正常情况下,如果让 AI 随机选词,选中绿集和红集的概率五五分,都是在 50%。
比如让它连续随机选择 100 次水果。
按照五五分的逻辑,它选出来的结果可能是:
- 绿集中的苹果 25 个
- 绿集中的橘子 25 个
- 红集中的香蕉 25 个
- 红集中的葡萄 25 个
绿集红集占比各一半。
但是,如果我现在悄悄给 AI 加了一条规则:每次选词的时候,都稍微提高绿集 token 的采样概率。
那么选出来的结果可能是:
- 绿集中的苹果 35 个
- 绿集中的橘子 35 个
- 红集中的香蕉 15 个
- 红集中的葡萄 15 个
绿集的占比提升到了 70%,而红集的占比下降到了 30%。
如果我们拿着这个结果喂给检测器的时候,检测器就会产生一个疑问:
如果这是完全随机的文本,为什么绿集出现了 70%,而不是接近 50% 的情况?
这个偏差已经大到不太可能是随机波动产生的。
不对劲,十分有十分的不对劲。
答案可能就只有一个,这是生成这段文本的模型故意的。
目的就是让检测器感知到,这段文本中,绿集的词汇的比例有问题。
而这个"有问题的比例",就是大模型留下的水印。
那么问题就来了。
如果绿集永远都是"苹果、橘子、汽车、电脑、小说"这些玩意,那不是各路大佬多分析研究一波,很容易不就被发现吗?
如果你也产生了这样的疑问,那你算是问到点子上了。
你看看大佬是怎么说的:

这句话的意思就是说每生成一个 token,绿集都会变化。
而决定绿集怎么变化的东西,就是"前文 + 密钥"。
再给你举一个简单的例子。
假设,现在 AI 已经输出了:"歪歪写的文章"
现在要生成下一个 token。
算法拿到前面已经生成的 token 以及一个密钥,进行哈希计算:
Hash(前文 + 密钥)
假设哈希出来的结果是 856746212。
这个数字就可以作为一个"随机种子"。
然后利用这个随机种子,再把词库打乱。
假如原始词库是:
不错、很好、好看、非jier棒、还行、真好、可以、将就。
打乱以后变成了这样:
非jier棒、还行、真好、不错、可以、将就、很好、好看。
然后前 4 个作为绿集,后 4 个作为红集。
需要特别说明的是,我这里为了方便写文章,词库里面放的是中文短语。在实际情况下,应该就是一个个具体的 token。
前面我们约定了,让模型更加偏爱绿集,所以,模型最终选择了"非jier棒"。
放在一起就变成了:歪歪写的文章非jier棒。
当 AI 再次生成下一个 token 的时候。
Hash 算法中的"前文"发生了变化,哈希值也发生了变化,词库的打乱逻辑也会因为哈希值的变化而变化。
所以,每一个 token 的位置,都可能对应一个完全不同的绿集和红集。
另外,这里还有一个非常关键的东西,就是"密钥"。
你想想,如果没有密钥会发生什么?
所有人都知道"前文 → Hash → 绿集"的计算规则。
那么攻击者就可以自己计算出每一个位置的绿集,然后专门避开这些词。
水印自然也就很好破坏了。
但是有了密钥之后,情况就完全不一样了。
AI 生成文本的时候,用这个密钥决定当前这一轮哪些 token 属于绿集。
等到检测的时候,检测器再使用同一个密钥,重新计算出当时的绿集,然后统计这段文本到底有没有明显偏向绿集。
所以真正重要的并不是"绿集"本身,而是只有掌握密钥的人,才能知道某一个位置当时到底哪些词属于绿集。
在整个过程中,绿集是动态的,而密钥是决定绿集如何变化的。
密钥,都说是密钥了,那么它肯定是被隐藏起来,保护的好好的,不容易被攻破的。
这个机制下,绿集和红集就很难被逆向出来了。
如果你还是一点没明白,那么我就再给你一个大白话。
啥是嵌入式水印?
你可以简单粗暴的理解为,把所有单词,一半放在名单 A ,一半放在名单 B。如果是正常情况下,写完一篇文章,总的用词量统计下来,名单 A 和名单 B 的数量应该是各占一半,比例偏差不会太大。
但是,如果是支持"嵌入式水印"之后的 Claude,它写出来的文章,可能有 70% 的词汇属于集合 A。
检测的时候,如果集合 A 和集合 B 的占比,距离 50% 偏差过大,就可以高度怀疑这段文本来自使用有对应水印机制的大模型。
而且它在写的过程中,会基于前面的词和一个密钥,再随机划分一次集合。
这个解释,很粗暴,但是能让你理解"水印即选词的规律"这个精髓。
所以,基于上面的各种解释,你应该能明白,什么把 Claude 输出的文本自己手打一遍,什么 OCR 图片识别一遍这些操作,并不会去除水印。
到这里你应该大概能品出一点味道了。
再看我之前说的这句话:文本即水印,水印即文本,它们之间是共生的关系。
你就知道歪师傅并没有乱说。
破解之道
在了解了背后的原理之后,你其实应该知道,这个玩意其实不好破解。
最容易想到的破解之道就是把 AI 生成的文本改几个词,那么这个水印不就被破坏了吗?
改写确实能达到破坏水印的效果,但是这玩意效果并没有你想象中那么好。
因为水印并不是几个特别的词,而是一个概率。
比如 AI 生成的文本,绿集占比 75%,你修改了几处后,占比变成了 66%。
那么 AI 的文本水印还是能被检测出来。
当然了,如果你整个推翻了重写,导致绿集到了 50% 左右,那么 AI 检测的时候就会通过。
但是这样的工作量也是不小的。
目前 Claude 官方还没有推出文本嵌入式水印的检测工具。
当这类检测工具面向互联网推出来之后,可能一定程度上能被逆向出来。
不过在 github 上,已经有手快的老哥搓出了"水印去除器"

但是这个工具的说明里面也明确提出了。
由于现在官方还未提供专门的检查工具,所以他也只能通过改写、翻译等方式,尽最大努力去破坏水印:

当官方的检测工具开放出来之后,又会是一场精彩的攻防之战。
这是个好事啊
关于 AI 给文本加嵌入式水印这件事,我个人的观点是:

总体来说,我觉得给 AI 生成内容加上这样的嵌入式水印,是一件好事。
甚至我觉得,这可能只是一个开始。
以前我们判断一段文字是不是 AI 写的,更多依赖的是一些"像不像"的感觉,纯靠个人感觉去判断有没有 AI 味儿。
现在有了嵌入式水印,对应的验证工具也可能很快就面向大众了。
当验证工具面向大众的时候,就一定会有人研究如何攻击它。
但是"攻防"就是技术发展的常态。
你有新的攻击方式,那么水印方案也会继续升级。
这注定会是一场长期的攻防。
谁攻谁防,其实我都不关注。
我真正期待的,是它在这个过程中,能够再进一步。
以后,不要只告诉我:这是一篇有 AI 痕迹的内容。
而是告诉我:这段内容大约有 30% 的部分经过 AI 生成或修改。
甚至直接告诉我:哪些地方是 AI 生成的,哪些地方是人写的,哪些地方经过了 AI 修改。
因为这才真正解决了我们未来可能会遇到的问题。
比如我写了一篇文章。
文章是我自己写的,但写完之后,我把它扔给 AI,让它帮我检查错别字、调整病句、润色几个表达。
如果最后检测器告诉我:这篇文章是 AI 生成的。
那我肯定是会觉得有点冤的。
所以我觉得,AI 文本的嵌入式水印真正应该解决的,不是简单粗暴地区分"AI"和"人类",而是让内容的生产过程变得更加透明。
谁写的。
谁改的。
AI 参与了多少。
人类又参与了多少。
这些信息,如果未来都能够被可靠地记录下来,那么我们面对 AI 生成内容的时候,就不需要再靠猜。
这可能才是 AI 水印真正有价值的地方。
因为进入 AI 时代之后,我们缺的从来都不是内容。
我们真正缺的,是对内容的信任。