SynthID:用于为 LLM 生成的文本添加水印和检测此类文本的工具

生成式人工智能 (GenAI) 可以以前所未有的规模生成更多种类的高度多样化内容。虽然大多数此类用途都是出于合法目的,但我们担心这可能会导致虚假信息和归因错误问题。水印是 以减轻这些潜在影响。我们可以将人眼无法察觉的水印应用于 AI 生成的内容,检测模型可以为任意内容评分,以指明其被添加水印的可能性。

SynthID 是 Google DeepMind 的一项技术,可直接将数字水印嵌入到 AI 生成的图片、音频、文本或视频中,从而为 AI 生成的内容添加水印并识别这些内容。SynthID 文本已开源 让开发者可以为文本生成添加水印。如需更完整地了解该方法的技术说明,请参阅Nature 中的论文。

SynthID Text 的生产级实现可在 Hugging Face Transformers v4.46.0 及更高版本,您可以在 官方的 SynthID 文本空间GitHub 上还提供了参考实现,对于希望将此技术引入其他框架的开源维护者和贡献者来说,可能很有用。

水印应用

实际上,SynthID Text 是一种 logits 处理器,会在 Top-K 和 Top-P 之后应用于模型的生成流水线,它使用伪随机 g 函数增强模型的 logits,以编码水印信息的方式平衡生成质量与水印可检测性。如需详细了解该算法的技术说明,以及不同配置值对效果有何影响的分析,请参阅论文

系统配置了水印以参数化 g 函数及其在生成过程中的应用方式。您使用的每个模型都应具有自己的水印配置,并且应以安全且私密的方式存储,否则其他人可能会轻松复制您的水印。

您必须在每个水印配置中定义两个参数:

  • keys 参数是一个具有唯一性的随机整数列表,用于 计算模型词汇中的 g 函数得分。此列表的长度决定了应用的水印层数。如需了解详情,请参阅论文中的附录 C.1。
  • ngram_len 参数用于平衡稳健性和可检测性; 值越大,水印就越容易被检测到,代价 也就是更脆弱地应对变化将长度设为 5 即可。

您可以根据自己的性能需求进一步配置水印:

  • 抽样表由两个属性 sampling_table_sizesampling_table_seed 配置。您应使用至少为\( 2^{16} \) 的 sampling_table_size,以确保在抽样时获得无偏差且稳定的 g 函数,但请注意,抽样表的大小会影响推理时所需的内存量。您可以随意使用任何整数作为 sampling_table_seed
  • 前面的 context_history_size 个词元中的重复 n-gram 不 以便提高可检测性。

无需额外训练即可生成包含 SynthID 文本的文本 使用你自己的模型制作水印 水印配置,该配置会传递给模型 .generate() 方法,用于激活 SynthID 文本 logit 处理器。请参阅 博文空格键查看代码示例 展示了如何在 Transformers 库中应用水印。

水印检测和可验证性

水印检测具有概率性。并提供一个贝叶斯检测器, Hugging Face Transformer 及后续内容 GitHub。此检测器可以输出三种可能的检测状态:带水印、不带水印或不确定,并且可以通过设置两个阈值来自定义行为。见 论文

您可以调整阈值,以便针对一组问题或长度实现特定的假正例率和假负例率。见 论文了解详情。

训练完检测器后,您可以选择是否向用户(以及更广泛的公众)公开检测器,以及如何公开。

  • 完全不公开选项不会在任何情况下释放或公开检测器 。
  • 半私密选项不会释放检测器,但会公开 通过 API 访问该 API。
  • public 选项会释放该检测器,以供他人下载和使用。

您和您的组织需要决定哪种检测验证方法 最适合您的需求 基础架构和流程。

限制

SynthID 文本水印对某些转换(剪裁片段)非常可靠 修改一些字词或进行轻度改写,但这种方法确实可以 存在局限性

  • 对事实性回答应用水印的效果较差,因为在提高生成能力的同时不降低准确性的机会较少。
  • 使用 AI 生成的文本时,检测器置信度分数可能会大幅降低。 已被完全重写或翻译成其他语言。

SynthID Text 并不能直接阻止有动机的攻击者造成伤害。但是,使用 AI 生成的内容可能会加大恶意内容的使用难度 还可以与其他方法结合使用,以提高覆盖率 展示广告