LLM 输出的统计水印:Token Logit 偏置如何创建可检测的签名
自 2024 年 10 月起,Google 已对所有 Gemini 用户的输出进行水印处理 —— 覆盖 2000 万用户,无可感知的质量损失,且可通过算法检测。OpenAI 已有可工作的原型,仅需数百个 token 即可产生可靠的信号。Anthropic 表示已列入路线图。欧盟《AI 法案》第 50 条要求涵盖范围内的提供商以机器可读格式标记 AI 生成的内容。然而:一种每百万 token 成本仅 0.88 美元的攻击,能同时对七种最新水印方案实现约 100% 的规避成功率。
这就是 LLM 文本水印的真实现状。已部署的方案、论文的声明与攻击者的实际能力之间的差距,远比大多数团队意识到的要大 —— 而你对水印的工程决策,很大程度上取决于你站在这个差距的哪一边。
统计文本水印的工作原理
奠基性方案 —— 也是大多数生产系统的技术源头 —— 在每个 token 生成步骤中将模型词汇表分为两组:绿名单和红名单。一个以前序 token(或前序 token 窗口)为密钥的哈希函数决定哪些 token 归入哪个列表。模型随后在采样前对绿名单中的所有 token 施加正向 logit 偏置。
结果是,经过水印处理的文本在统计上会过度呈现绿色 token。检测器通过 z 分数衡量这种过度呈现,并将超过阈值的文本标记为含有水印。由于分区依赖密钥且在每个位置变化,仅看到文本的外部观察者无法判断哪些 token"本该"是绿色的 —— 只有持有密钥的人才能验证信号。
在实践中,该方案有两个可调参数。分区比例控制词汇表中有多少进入绿名单(50/50 是常见选择)。logit 偏置 delta 控制模型对绿色 token 的偏好程度。提高 delta,水印更易被检测,更难被去除,但模型开始做出不自然的词汇选择。降低 delta,质量提升,但对短文本的检测就变得不可靠。
研究报告在受控条件下的误报率低(低于 3%)、漏报率低(低于 1%)。关键词是"受控条件"。这些数字假设文本在生成后未被触碰。
Google 实际部署了什么
Google 的 SynthID-Text(已在 Gemini 中部署,并在 GitHub 和 Hugging Face 上开源)是目前最成熟的生产实现。它不使用简单的绿/红分区,而是将伪随机函数应用于生成上下文,以人类不可感知但算法可检测的方式调整 token 概率分数。
SynthID 做出的重要技术选择包括:
- 水印完全在推理阶段进行 —— 无需更改模型训练、权重或微调。
- 检测不需要运行底层 LLM 。检测器轻量级,可独立部署。
- 检测器输出三种状态:含水印、不含水印或不确定。贝叶斯框架让你可以对检测置信度进行推理,而不是将其视为二元判断。
2000 万用户规模的测试显示没有可测量的质量下降。但 Google 自己的文档坦然承认信号减弱的场景:事实性回答给模型选择语义等价 token 的自由度更小,因此嵌入水印而不强迫做出不自然选择的机会更少。当你限制模型输出特定事实时,你也限制了它选择绿色 token 的能力。
另一个已承认的限制:彻底的改写或通过另一种语言的回译(back-translation)会显著降低检测器的置信度。Google 将该水印描述为"半脆弱"—— 对偶然修改具有弹性,对蓄意变换则容易被攻破。
真正有效的攻击
这是研究与实践之间鸿沟最大的地方。
改写攻击是显而易见的威胁,且确实有效。语义等价的改写在保留含义的同时破坏了 token 级统计。经过自适应训练的改写器(针对规避检测进行微调的模型)可以以极小的质量损失击败当前大多数方案。
回译 —— 将文本经由另一种语言再翻译回来 —— 的有效性令人惊讶。句子结构的变化足以打散 token 统计,而语义内容得以保留。永久切换到另一种语言的跨语言攻击更为有效,因为水印是在源语言词汇表分区上训练的。
自信息改写攻击(SIRA) 更具系统性。它识别出对水印信号最关键的 token(即模型有真实选择空间的高熵位置),并改写这些位置同时保留其余部分。该攻击对七种水印方案的成功率达到约 100%,成本仅为每百万 token 0.88 美元。这不是舍入误差 —— 而是一个根本性的问题:携带水印的 token 与携带语义灵活性的 token 是同一批,因此针对其一的攻击自然也针对其二。
黑盒清洗("b4"攻击,NAACL 2025)不需要了解水印方案 —— 只需 API 访问即可。这意味着可以在不逆向工程具体方案的情况下规避水印。
代码尤其脆弱。 变量重命名、插入死代码以及微小的结构变化,对人类读者而言语义透明,但对水印而言具有统计破坏性。代码生成场景为保留含义的改写提供了远多于散文的机会。
多比特水印:归因的承诺与代价
绿/红方案编码一比特:含水印或不含水印。更雄心勃勃的方法将多比特载荷 —— 模型版本、时间戳、用户 ID —— 嵌入生成的文本中。潜力是真实存在的:你可以将一段 AI 生成内容追溯到产生它的具体模型调用。
问题在于提取成本。某些 32 比特方案需要数小时计算才能从文本中提取载荷。MirrorMark 在 300 个 token 中嵌入 54 比特,相较早期方案在准确性上有显著提升,但在生产规模上运行提取所需的基础设施对大多数团队来说仍是重大工程投入。
不可检测水印 —— 基于密码学假设,在没有密钥的情况下无法与非水印输出区分 —— 作为理论构造已经存在。但已知任何生产系统中都没有部署。
如果你 在评估水印方案,这意味着什么
合规驱动的部署与对抗鲁棒性驱动的部署是不同的,混淆两者会导致糟糕的决策。如果你的目标是监管合规(欧盟 AI 法案、内部内容溯源政策),在正常条件下可检测、在偶然修改下优雅降级的水印可能就足够了。你并不是在防范拥有 API 访问权限的坚定对手;你是在为审计和归因管道创建机器可读信号。
如果你的目标是对抗鲁棒性 —— 检测试图洗白 AI 生成内容的蓄意规避 —— 情况就更难了。当前方案无法抵御有针对性的攻击。鲁棒性-不可感知性-质量的三角权衡中,没有任何一个角能同时在三个维度上取胜。
开源 LLM 是另一个问题。 推理时 logit 偏置水印只有在你控制解码过程时才有效。当用户在本地或自己的基础设施上运行开源模型时,他们可以直接禁用水印步骤。参数级水印 —— 将信号嵌入模型权重本身 —— 提供了部分解答,但这是一种不同的技术,具有不同的鲁棒性属性和部署复杂度。
检测器需要成为你系统设计的一部分,而不是事后补丁。 没有密钥的检测在计算上等同于猜测。有密钥的检测对单比特方案来说很快,对多比特载荷则很昂贵。如果你的用例需要高吞吐量归因,请对检测器进行基准测试,而不只是对生成器。
