上周,Anthropic 宣布将为 Claude 生成的文本加入一种隐形水印,周末它终于补上了技术细节。
跟先前猜测的差不多,Claude 的文本水印将采用 Google DeepMind 开发的 SynthID。答案也比往文字里塞几个特殊字符更复杂,水印并不是写完以后再盖上去的,而是在 Claude 写下每一个 token 的过程中,被一点点写进文字里。
同一时间,反检测的工具已经出现。GitHub 上开始有人制作专门针对文本水印的移除工具。

这的确不是一个抵抗力很强的技术,用大白话说,拿其它模型洗一洗,就能破坏隐形水印的效力。
这让 Claude 的水印一时间变得很尴尬,而且,细思极恐:Claude 为了让一段文字以后能够被认出来,需要改变词语被选中的概率;而想让它不被认出来的人,最自然的反击方式之一恰恰就是,重新改写这些词。
Claude 的水印,不是藏进去的,而是写进去的
理解这场攻防,首先得知道,早就已经出现的 SynthID 到底在做什么。

大语言模型生成文字时,并不是先在脑子里想好一个完整句子,再逐字输出。每一步,它都会根据已经出现的上下文,为下一个可能出现的 token 计算一组概率,然后从中完成一次选择。
为了方便理解,假设 Claude 正在补完这部电影真____这个句子。此时,它可能面对许多选项,其中几个概率较高的选择是:
好看40%
厉害20%
精彩10%
……
SynthID 不会规定 Claude 必须选择某一个词,也不会删掉某个选项,它做的事情更像是在模型真正做选择以前,根据一套只有检查方知道的规则,轻微调整部分候选 token 的得分,让其中一些选项比原来更容易被抽中。
到了下一个 token,因为上下文已经变化,概率会重新计算,被偏好的候选项也会跟着变化。因此,并不存在一张固定的Claude 水印词表,即便某个词这一次可能有利于水印,换一个上下文就未必如此。
单独拿出其中任何一个词,人也几乎不可能看出问题。真正能够被检测的,是大量生成选择累积以后留下的统计模式。

可以简单粗暴的,理解成一场只有选择题的考试,老师没有直接透题,而是偷偷告诉自己偏心的学生:遇事不决,就选 C。
一道题碰巧选中当然毫无意义,十道题也可能只是巧合,毕竟 C 选项确实存在。
但几百道题之后,如果只有这个学生的选择,无论正确还是错误,C 选项的出现异常的高,而且一次又一次与这个出题老师爱出 C的规则吻合,你就很难解释这是完全意外的。
水印检测做的事情类似,它并不是在寻找这句话只有 Claude 才会写的唯一性证据,而是在问:在一段足够长的文字里,每一个生成节点上都有许多种可能的选项,但为什么最终落下来的 token,会持续呈现出与一套秘密规则相符的统计偏好?

隐形是在这个意义上的,水印并不对应一个肉眼可以定位的字符,依靠的是统计规律。但这同时留下了另一个问题——既然信号本身就寄生在 token 的选择上,那么重新选择一次 token,也天然可能破坏这套统计关系。
Claude 改一遍,用户再改一遍
如果水印藏在文件元数据里,攻击者可以删元数据;如果水印藏在不可见 Unicode 字符里,可以把特殊字符清理掉。但 SynthID 的麻烦恰恰在于,它和文字本身揉在了一起。
想把水印拿掉,又不能直接把整段话删除,那么最直接的思路就变成:在尽量保留原意的情况下,重新组织这串 token。

换一个同义词、把主动语态改成被动语态,或者,更直接的——干脆交给另一个模型重新洗 一遍,我洗我自己。
这些都可能让原本累积起来的统计关系被削弱,博主 Daring Fireball 为了解释这一点,以改写工具 Declaude 作为一个最直观的例子:原本它用途是嫌 AI 味儿太重,洗一下,这种改写其实就可以顺手把 Claude 刻意留下的痕迹也抹掉。
市面上也一直流传着 Pangram 之类工具,用来检测文本有多大程度有 AI 参与,则让这种攻防进一步从理论讨论变成了现成需求。具体攻击方法可以不同,但目标高度一致:尽可能保留内容,同时破坏检测器赖以判断的 token 序列。

好一场酣畅淋漓的捉迷藏啊。
为了查出有没有 AI 参与,模型在生成时得轻微调整词语选择;为了逃过检查,用户要重新选词。为了让水印经得起普通改写,水印系统又需要提高强度;用户就继续去找尽量不改动原意、却更有效破坏统计信号的方法。
从技术上看,这是一场很标准的攻防,防御方想让信号在复制、编辑、格式变化之后继续存在,攻击方则试图用最低成本让检测失效。
文本的情况又和图片、音频有一点很不一样。图片里的水印可以尽量藏在不影响观看的空间里,文字水印能够利用的空间,本身就是一个个具体词语、句式和表达选择。

图片来自:Atlasiko
因此,攻防每往前走一步,就需要把手伸向文章本身。
更尴尬的是,这套机制天然对有意规避的人和普通用户并不完全对称。真正决定作弊的人,可以主动寻找非水印模型、重写工具或者反复洗稿;没有规避意识的人,可能要默认接受带有水印约束的生成结果。
到头来,最容易被水印标记的,正是那些没想躲着它的人。
所有人都在改词,但谁还在乎这句话怎么写?
捉迷藏到最后,已经不是谁能抓到谁、谁能避免被抓到。
水印方和去水印方虽然站在完全相反的位置上,却共享了同一个前提:一句话似乎可以被拆成需要保留的意思和可以修改的措辞。
只要大意没有发生明显变化,具体词语,就可以成为技术系统的操作空间,不管是由水印系统操作,还是作者自己来操作。
技术博主、Daring Fireball 的作者 John Gruber 对文本水印最大的质疑,其实可以换成一个更简单的问题:意思差不多,是否就代表文字没有改变?

我们可以来对比这样两句话:
他终于答应了。
vs
他终于松口了。
两句话都可以描述一个人最终同意了某件事,但第二句天然多了一层此前抗拒、经过拉扯才让步的味道。
这两句话同样在传达意思上的确差不多,但对真正在意写作的人来说,并不是可以随手互换的两句话。哪怕是在日常生活里,这两句话也承担了略微不同的意味。
Anthropic 和 Google 都强调,水印设计目标是不改变文本的语义、质量和可读性;一个很轻的概率偏置,在实际输出里是否会造成能够被人感知的质量差异,也需要另外的证据。

但有一件事已经发生了变化,那就是模型在选择一个词时,多出了一个与怎样把这句话写好无关的优化目标。
过去,一个生成系统至少在理想状态下,是在准确、清楚、自然,在符合用户要求和符合人类书写习惯等目标之间做平衡。
加入文本水印以后,它还需要兼顾这段文字未来能不能被水印系统认出来;而当用户试图反制时,文字又多了一轮怎样改到认不出来的优化。无论是出于什么目的,双方都可以说,自己尽量没有改变意思。
但写作从来都不在于可以脱离词语、保留意思,它们是唇和齿的关系,唇齿相依,文本并不是先有了一团完整的意思,再随便挑一组近义词装进去。具体选择什么词,本身就在制造意思。
Claude 想证明这句话我碰过,用户想做到你认不出来。当所有人都开始为了证明身份而修改一句话时,这句话本来应该怎么写——已经被挤到角落里去了。
这场争执到最后,争夺的并不是技术够不够隐形、无感,而是语言本身那些原本属于风格、节奏和对表达精确度的追求,还有没有容身之处。
本文转自:凤凰网科技
原文地址: https://tech.ifeng.com/c/8vecueIbWJe

小同爱分享3 个月前
命没了还有轮回,钱没了,死都不甘心。 - 小同爱分享
小同爱分享6 个月前
疫情,就是让人抑郁,又没了感情。 - 小同爱分享