AI水印到底藏哪了?
本文是视频《AI水印到底藏哪了?》(作者:程序员老王)的精读笔记,配套原视频观看效果更佳。
欧盟AI法案要求所有AI生成内容必须打上标记——图片可以盖半透明logo,可文字的水印到底藏在哪?这期约11分钟的视频从“看不见的零宽字符”一路讲到谷歌发表在《自然》(Nature)上的“抛硬币”算法,把四代文字水印技术一次讲透;片尾还跳出技术细节,认真追问了一个更根本的问题。
图:视频封面——文字AI水印的藏身之处
全景:一条主线看懂
全片主线:文字没法像图片那样“盖戳”,水印只有两个藏身处——要么藏进文字本身(零宽字符),要么藏进AI“怎么选词”的过程里(红绿分组→KGW动态分组→不改概率的伪随机数与硬币淘汰赛)。四代技术一路进化,始终绕着同一个核心矛盾转:水印既要藏得住、验得出,又不能毁掉文章质量;视频结尾,作者离开技术,问了一个更有味道的问题——“分辨AI生成,到底有多重要”。
图:从零宽字符到SynthID-Text的四代技术演进主线
第一代:藏在字缝里的零宽字符
先交代背景:欧盟AI法案要求AI生成内容必须打标记,法案公布仅两周,Claude就宣布自家生成的文字都会带上水印——作者开场也调侃了一句:欧洲模型研发能力平平,立法监管倒是跑得飞快。图片水印我们都见过:半透明logo,高级点的在犄角旮旯藏不明显的像素。文字要加水印,前提是肉眼完全看不见、不影响阅读,于是第一代方案瞄准了“零宽字符”——一类显示宽度为0、专供程序排版使用的字符:U+200B叫零宽空格,在泰文和高棉文里提示程序“此处可换行”;U+200C叫零宽不连字,在波斯语里阻止字母连写。最朴素的做法,就是往文字里塞几个这种隐形字符。
图:零宽字符U+200B与U+200C的排版用途示意
这招很快露了馅,证据是两次真实的“抓现形”:2025年,有人发现GPT-o3的回答里时不时混进一种相对较窄的空格,与普通空格肉眼几乎无法区分——这大概率就是OpenAI设的水印,虽然它从未承认;2026年,Claude用零宽字符给中国用户生成的内容打标签,同样被用户当场逮个正着。结论很残酷:零宽字符水印有两大缺陷——太容易被发现,而且清除极简单,随便找个文字软件做一次“查找替换”,水印就没了。
本节要点:欧盟立法倒逼厂商给文字“盖章”,第一代方案把隐形字符塞进字缝,但极易被发现、一次查找替换即失效,属于“藏得进、守不住”。
第二代:大模型怎么选词,水印就怎么藏
要看懂后三代方案,得先补一块地基:大模型是靠“文字接龙”写东西的——已写出“今天天气真”,它就要预测下一个字。模型会给每个认识的字(token)算一个概率:
| 下一个字的候选 | 模型给出的概率 |
|---|---|
| 好 | 50% |
| 不错 | 30% |
| 棒 | 15% |
| 其余所有字 | 合计约5% |
关键机制在于:模型通常不直接选概率最大的字,而是按概率抽签(采样)——所以同一个问题问两遍,多半得不到一模一样的答案。而用户对具体用词恰恰很宽容:“今天天气真好/真不错/真棒”,意思对就行。老王在这儿自嘲了一句:
“作为一名高贵的用户,作为AI公司的衣食父母,我对待孩子一向都是很宽容的。”——老王在解释用户为何不在乎AI选哪个字时的玩笑(约02:14)
图:大模型按概率“抽签”选词示意
AI公司正是利用这份宽容,把水印做进了选词环节,这就是第二代“红绿分组法”:提前把token分成红、绿两组,AI生成时只用绿组——比如“不错”在绿组、“好”和“棒”在红组,AI就只会回答“今天天气真不错”;反过来,一段文字若全部由绿组token构成,基本可判定是AI写的。但它有两个致命伤:其一,分组容易被破译——收集几千几万条同一AI的回复,看哪些词从不出现,就能推出红组,再人工往文章里加几个红组词,水印即告失效;其二,伤质量——一个词进了红组,AI就永远不能生成它,不仅限制发挥,句子也容易越写越怪。
本节要点:大模型“接龙+抽签”式生成、用户不在意具体用词,是水印的切入点;红绿分组法让AI“只用绿组词”,但统计上可破译、且永久禁用部分词汇,两头不讨好。
第三代:KGW——给分组上密码,给选词打分
红绿法败在“分组定死”。2023年,马里兰大学的几位研究者提出更灵活的方案,即KGW算法,它的两个核心设计恰好对着前两代的两个软肋。
核心一,动态分组:红绿组不再定死,AI公司持有一串只有自己知道的密码,每写一个token之前,拿前一个token和密码通过公式算出一个数,再据此把所有token重新分一次组。用老王的话说,“由于分组一直在根据前一个token不断变化,通过统计方法破译起来的难度就指数级增加了”。
核心二,打分制取代禁用制:绿组token加分、红组不加分——比如“不错”在绿组,概率可能从30%提到60%;“好”则掉到30%。不禁止任何词,只调整每个词被选中的概率,这一步从“一刀切”改成“调概率”,是整代算法最聪明的地方。它还顺手解决了一个边角问题:有些位置其实只有一种选择,比如“床前明月”后面几乎只能是“光”——即使“光”不幸被分进红组,它压倒性的概率优势也不是绿组那点加分抢得过的。
图:KGW用“密码+前一个token”动态划分红绿组示意
本节要点:KGW用“密码+前一个token”让红绿分组动态变化(破解难度指数级上升),用“绿组加分”代替“禁用红组”,在嵌入水印的同时尽量不伤文章质量。
验证的算术:800万分之一,与被挤掉的那个词
水印藏进去了,怎么验出来?前提是手里有那段密码:验证每个token时,都用前一个token和密码重算一遍红绿分组,看它落在哪组。注意一个细节——因为加水印只是提高绿组概率、并没有排除红组,验证不能只看文中有没有红组token,而要看红绿比例:真人写的文章,token落红组绿组基本一半一半;加过水印的文章,绿组会明显偏多。
| 文章来源 | 红绿token的大致比例 | 判断 |
|---|---|---|
| 真人写作 | 约 50 : 50 | 人 |
| 带KGW水印 | 绿组显著偏多(例:200个token里155个绿) | AI |
视频中给了具体数字:一段200个token的文字里有155个绿token,若按“人写红绿各半”计算,概率约为800多万分之一——相当于连中两次双色球头奖,基本可断定是AI写的。但统计规律有边界:样本太少就失效——只有4个token时,人写的文章也有约1/16的概率碰巧全绿。
图:KGW验证——统计全文绿组token占比示意
这笔账背后藏着代价:KGW终究改动了概率,红组被选中的机会从50%被压到30%,而被挤掉的那个token,可能恰好是最合适的。“今天天气真好”还是“真不错”,日常无伤大雅;放到文学表达里就不一样了——古人为“僧推月下门”还是“僧敲月下门”能琢磨半宿,一词之差,境界迥异。水印调概率的每一天,其实都在替我们做这种“推敲”,而且未必推得更好。
本节要点:KGW验证靠密码重算分组、看全文红绿比例(200个token里155绿≈800万分之一,约等于连中两次双色球头奖),小样本会失灵;而压低红组概率(50%→30%)的代价,可能正是挤掉那个“最好的词”。
终极形态:不改概率的两个方案——伪随机数与“抛硬币”锦标赛
既然改概率有代价,能不能既加水印又不改概率?2022年,计算机科学家Scott Aaronson(当时的工作就是替OpenAI研究水印)给出第一个答案。先复习程序怎么选token:把0-1区间按各词概率切段——比如0-0.55是“好”、0.55-0.8是“不错”、0.8-0.95是“棒”——再生成一个0-1之间的真随机数,落在哪段就选哪个词。Aaronson的做法,是把真随机数换成由“密码+前一个token”算出的伪随机数。精妙之处在于:这个假随机数宏观上均匀分布在0-1之间,所以整体看每个词被选中的概率并没有变。验证时把每一步的伪随机数重算一遍:AI写的文章每个token都正好对上,人写的只能碰巧对上一部分。缺陷也很致命:假随机数只由密码和前一个token决定,前一个词一样、结果就一样——同一个问题重复问多次,每次得到的回复完全相同,AI的随机性没了。
2024年,谷歌DeepMind在Nature上发表SynthID-Text,用完全不同的思路补上这一刀。选token时按概率独立采样8次(比如得到5个“好”、2个“不错”、1个“棒”),然后让这8个候选两两淘汰:给每个候选发一枚“硬币”,正反面由“密码+前一个token+当前token本身+当前淘汰轮数”共同计算,同一轮里相同的候选必然得到相同的正反面;配对之后,硬币不同的,正面的晋级,硬币相同的,随便挑一个晋级。8进4,轮数加1、重算硬币,再4进2、2进1,最后剩下的就是模型真正的输出。由于算出正反面的机会各为一半一半,平均下来每个token被选中的概率和不带水印时几乎一样——概率没改,随机性也保住了。
图:SynthID-Text的八选一“抛硬币”淘汰赛示意
那这种不改概率的水印怎么验证?靠一条计分规则:两枚硬币不同时,正面计分;都是正面时,仍记正面;只有都是反面,才轮到反面计分。由此可推出:最终胜出的token,正面概率必然高于反面;而每个token对应的正反面,验证时同样能算出来。于是统计全文正反比例——接近一半一半是人写的,正面占压倒性优势就是AI写的。这套算法是开源的:Gemini自己在用,Claude后来也引入了它,被称为迄今最先进的AI水印技术之一。四代方案放在一起,脉络一清二楚:
| 方案 | 时间/提出方 | 藏在哪里 | 致命弱点 |
|---|---|---|---|
| 零宽字符 | 2025 GPT-o3、2026 Claude(均被用户发现) | 字缝里的隐形字符 | 一次查找替换即清除 |
| 红绿分组 | 早期方案 | 选词环节(只用绿组) | 统计可破译,且永久禁用红组词 |
| KGW | 2023 马里兰大学 | 密码+前token动态分组、绿组加分 | 改动概率(红组50%→30%) |
| Aaronson法 | 2022 Scott Aaronson(OpenAI) | 伪随机数替换真随机数 | 同一问题答案完全相同 |
| SynthID-Text | 2024 谷歌DeepMind(Nature) | 8选1“抛硬币”淘汰赛 | 少量修改无效,但大改仍可去除 |
本节要点:Aaronson用伪随机数、SynthID-Text用“抛硬币锦标赛”,先后做到“加水印却不改概率”;后者验证靠全文正反面统计,已开源并被Gemini、Claude采用,代表当前最先进水平。
水印删得掉吗?以及比技术更根本的问题
视频最后回答了一个实用问题:这水印能删吗?只改几个字,做不到——少量修改不足以撼动统计结果;人工大量改写,理论上可以去掉水印,可改到那个程度,文章还算不算“AI生成”已经很难说了;还有一种取巧办法,用一个不带水印的AI多次全篇重写——水印是没了,但最终效果就不好保证了。换句话说,水印防得住顺手搬运,防不住下定决心的大改。
老王在调研这期视频时常常想一个更根本的问题:分辨一段内容是不是AI生成的,真有这么重要吗?他说:
“一段文字如果准确深刻,不会因为出自机器就失去价值;一段文字如果空洞虚假,也不会因为出自人手就变得珍贵。”——老王在片尾谈“分辨AI生成是否重要”时的反思(约10:18)
图:AI批量生成的同质化内容 vs 真人创作的时间沉淀
想想这两年的屏幕:AI画火了,人人一张宫崎骏画风的自画像;AI唱歌火了,“孙燕姿”唱遍所有流行歌;AI动画火了,线条和文字踩着鼓点一遍遍填满屏幕。第一次看是震撼,看到第一百次还是一模一样——同样的笔触、同样的嗓音、同样的线条。
“宫崎骏用了一辈子才画出那样的画,现在一秒钟能够生成一万张,每一张都像他,可没有一张是他。”——老王在视频结尾评论AI批量仿写宫崎骏画风时说(约11:01)
图:片尾金句画面
所以这期讲技术的水印视频,最后落在一个温柔的地方:让一种东西变得珍贵的,并不是它来自哪里,而是它能不能在我们心里停留。
本节要点:水印挡不住大规模改写,它防的是“顺手”而非“决心”;老王的追问把全片抬到了价值判断这一层——内容的价值不在出身,而在能否留在人心。
总结要点
- 文字水印只有两个藏身处:藏进文字里(零宽字符),或藏进“AI怎么选词”里(红绿分组→KGW→不改概率方案);四代进化史,就是“藏得住、验得出”与“不伤质量”之间的平衡史。
- 零宽字符最快出局:GPT-o3与Claude两次被用户抓现形,一次“查找替换”就清零。
- KGW(2023,马里兰大学)是当前的折中主流:密码+前token动态分组让统计破译指数级变难,绿组加分代替禁用,代价是红组概率被从50%压到30%。
- 谷歌SynthID-Text(2024,Nature)用“采样8次+抛硬币淘汰”做到不改概率、保住随机性,验证只看全文正反面比例;已开源,Gemini与Claude在用。
- 水印挡得住小改、挡不住大改;而比“是不是AI写的”更重要的问题是——这段话能不能在你心里停留。
迁移与启发
- 判断真假,学“统计验证”,别靠孤证定案。 水印验证从不盯某一个词,看的是全文红绿比例。你在职场里核实一份数据、一份简历、一条网传截图时同理:单点存疑不等于造假,把项目经历、时间线、多个独立信源放一起看整体是否自洽,结论才靠得住。
- 做决策学“打分制”,少用“一刀切”。 KGW不禁止红组词,只是调低它的概率。投资理财里这就是仓位管理的思路:不满仓押单一资产,也不因一次波动把某类资产永久清零,而是调整权重、给意外留出概率空间;分配时间精力也是一个道理。
- 为“沉淀”买单,警惕“一秒一万张”。 AI批量产出的宫崎骏,每一张都像他,可没有一张是他。给孩子选课、给自己买书、请人做事时,优先选带着真人多年积累的东西——比如讲义迭代过很多轮的老师、作者写了多年的书;不可复制的时间投入,才值得你的钱和注意力。
一句话升华
水印能证明一段话从哪里来,却证明不了它值得被记住——能留在人心里的东西,从来不需要盖章。