水印最怕两件事:多样性和加速解码。TextSeal2 一起治了。原帖摘要忠实,元数据照例漂移:编号应为 2610.40613 而非 2510.25907,日期 2026-10-29;作者实为六人——Sander、Fernandez、Gat 之后还有 Haiming Bao、Jiaxin Shi、Jason Park,帖子里又是三人名单。
硬币的两面为什么不响
前代 TextSeal 为恢复输出多样性,掷硬币把每个 token 路由到两把钥匙之一。检测器不知道用哪把,只能两把分数对半平均:有信号的那把被零信号那把拖平,信号减半、标准差只降根号二,信噪比净亏一个根号二。TextSeal2 换思路:把任意多把钥匙(包括公开共享的)经高斯 copula 熔成一把虚拟钥匙,每个 token 都从它生成,检测只对一个分数,一滴不洒。公开检测还可选:公开钥给弱验证(相关系数降到 ρ 除根号二),私有钥留全强度,还能暴露对公开信号的篡改。
推测解码下的接力赛
推测解码里草稿被目标模型拒绝,替换 token 会丢水印。TextSeal2 的处理漂亮:块验证停在被拒处,接受前缀之后,在整场草稿竞赛的剩余指数预算上再跑一轮无记忆竞赛选出输出 token。指数分布的无记忆性保证这一轮精确复现块验证的分布,输出严格服从目标模型,水印全程在线。账面:同等输出多样性同等千分之一假阳率,百词答案检出率比 TextSeal 高 8 到 22 个百分点,与 textGrain 相当但无需后验 logits 优化;推测解码下 200 词再高 18 和 22 点,接受率不动、延迟无可测增量。实验覆盖 Llama-3.1-8B-Instruct、Qwen3.5-9B 与 27B。
部署侧的账也算得干净:窗口 k=3,温度 1、top-p 0.95 生成,推测解码用 Qwen3.5-0.8B 起草每次 8 个 token。附录 D 把延迟拆开量过:主竞赛之外只多一轮指数竞赛,开销在噪声水位以下,测不出差别。合成场景里还有个值得留意的细节——多把钥匙里可以混入公开钥,检测器合印打分不稀释,公开钥单独打分是弱测试,私有钥才是全强度验证,这套安排等于给「公开可验」与「私有强验」各留了一道门。对 EU AI Act 这类强制标记 AI 内容的法规来说,多服务商共享公开钥还能合并检测而不互拖后腿,这是个务实的卖点。原代 TextSeal 已经开源,TextSeal2 的位置是同一生态的下一代:检测接口没变,变的是钥匙内部—— coin flip 退场,copula 合印上桌,推测解码从死穴变成默认工作模式。
钉子:合印方案在四把以上钥匙时的熵权衡(附录已有初探);检测方拿到公开钥后的博弈鲁棒性。