最近到处都在转那个 LLM 水印测试。
简单说,就是给你三道文本,其中只有一道带了水印,让你猜是哪一道。十道题,全做完才能看答案。
结论先摆:绝大多数人猜不出来。评论区报分什么数都有,3/10、0/10、4/10、1/10、2/10,也有 7/10 和 8/10。有人算过,每题三选一,3/10 跟闭眼蒙没差别。
但分数本身没有信息量。
测试没有即时反馈,必须做完十道才出结果
中间不知道对错,移动端滚动又容易误选,有人干脆放弃,后半段随机点完。还有人抱怨那十段文本又长又像 SAT 阅读材料,写着写着就不想做了。
帖子里有人提议边做边反馈,说那样会污染数据;也有人反驳,如果反馈真能教会人识别水印,那不正说明人本来就有这个能力,藏着不给才奇怪。
这个分歧搁在那了,我给不出答案。但能确定的是,拿这种卷子的分数去论证"水印能不能被检测",等于拿一场考砸的试论证这门学科难不难。
水印是采样时加的偏置,不是事后贴上去的
模型每选一个词,本来就有个概率分布。水印做的事,是按一条只有它自己知道的伪随机序列,在这个分布上轻轻推一下。
所以它只在"好几个词都说得通"的位置起作用。某个地方只有一个正确补全,零熵,水印没地方塞。有评论说,低熵文本能承载的水印信息少得可怜,得几百上千比特的熵才谈得上可靠嵌入。
水印的强度本身就是个取舍
偏置加得越狠,越容易被检测出来,代价是文本质量往下走。反过来说,你读着觉得通顺,往往就是水印已经轻到你看不见。这两件事是同一个旋钮拧出来的。
有人试过从词频变化这类线索找,什么也没找到。人脑本来就不按 token 概率读句子。掌握分布的系统拿足够长的文本去算,才能看出那点偏移。
帖里还有一条我觉得挺干净:如果有人能可靠区分带水印的文本和普通文本,那和无密钥时区分 AES 密文与随机比特是一回事。等于破解加密。
改写一段带水印的文本,会换掉它的水印
用另一个模型改写,会带上后者的水印;改得够狠,原来的那个可能就没了。
所以水印能证明的东西是单向的:它能说"这段来自某个模型",说不清"这段不是某个模型写的"。想拿它抓人,先得想清楚它到底能证明什么。
但验证水印,得把完整未编辑的原文上传给模型公司
这条才是我这周真正想拎出来的。
不是传个片段,是全文。而且未来可能不止一家公司,得每家都传一遍。
科研、教育、文学这些对文本完整性有要求的机构,会撞上一个很难受的选择:要么放弃验证,要么接受作品被送进别人的大模型。评论区有人担心,这会反过来削弱知识产权。
这条我其实只看懂一半。具体怎么传、对方留存多久,帖子里没讲明白,我先放在这,搞懂了再补。
全量水印会撞上 JSON schema、按原文返回和代码 diff
所以工程上一定得有逃生机制。欧盟 AI Act 的实践准则里也留了例外。
那"以后 AI 出来的东西全带水印、谁都躲不掉"这类说法,短期不用信。真到那一步,先撑不住的会是工程,不是检测。
Anthropic 的水印也覆盖代码,但代码熵低,效果弱
注释那部分跟普通文本一样会中。所以你在代码里感觉不到水印,不是没加,是加了也留不下多少东西。
顺带两条
有人把 SynthID 比作另一种 CAPTCHA。用户猜水印的过程,顺手也在给 Google 的模型喂训练数据。这个我判断不了,先放着。
还有个细节挺好:有人发现 Claude 把 slack 写成过 slop,问这是不是 token 偏置漏了出来。也有人问那个 0.5307 的加权平均分,是不是"53% 概率带水印"的意思。
测试连结果怎么读都没讲清楚。
有人建议故意往文本里塞怪词污染输入,对抗水印。这个思路我不评价,但它的存在本身说明一件事:水印防的是大规模筛查,防不住一个下了决心的人。
本周就这些。
上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。讲错的我补,没讲清的我改。
下周见。
