跳至主要内容

Google 的 SynthID:示例指南

了解 Google 的 SynthID 是什么、其工作原理,以及如何为文本实现 SynthID 水印。
· 8分钟 阅读

使用 AI 探索

随着 AI 生成内容迅速传播、技术持续进步,区分人类与机器创作的材料正变得愈发困难,同时也愈发重要。

AI 水印等工具(如 SynthID)旨在使数字内容的来源可追溯,并帮助用户验证其真实性。本文将解释 SynthID 是什么、如何工作,以及如何用它为文本添加水印。

什么是 SynthID?

SynthID 是 Google DeepMind 开发的一款工具,可在 AI 生成内容中嵌入不可见水印。这些水印旨在帮助识别某段媒体是否由人工智能创作。

AI 水印的目标是让数字内容更透明、更可追溯,尤其是在 AI 不断升级演进的背景下。若缺乏可靠标识,AI 生成材料很容易混入并不被察觉地传播,引发诸多问题,例如假新闻的扩散和深度伪造,或对创作作品的未授权使用。

SynthID 支持对文本、图像、视频和音频进行水印。其方法会根据不同媒体类型进行适配,我们稍后将详细介绍。该水印可在剪裁、噪声、压缩、裁切、滤镜等常见编辑之后依然保留,具备相当强的鲁棒性。

SynthID 已集成到 Google 的生成式 AI 产品中:用于文本的 Gemini、用于图像的 Imagen、用于音频的 Lyria,以及用于视频的Veo。这意味着这些模型可以将不可感知的水印直接嵌入其输出中。再结合 SynthID Detector 门户,Google 提供了一套完整的水印方案,使用户能够快速验证各受支持格式中的 AI 生成内容。

SynthID 如何工作?

水印的具体流程取决于媒体格式。我将逐一说明其过程与韧性。

用于图像和视频的 SynthID

对于图像数据,SynthID 使用两个神经网络。第一个会以极其细微的方式调整图像中的单个颜色值(像素值),小到人眼无法感知差异。

这些更改经过选择,使第二个神经网络在经历典型图像编辑(如裁剪、压缩、滤镜、旋转或截图)后仍可检测到水印。这使得水印在图像共享或再利用时常见的各类操作下仍然具有较强的抗性。

用于视频的 SynthID

视频的每一帧都会像独立图像一样进行相同处理:为每一帧单独添加水印,确保无论视频被剪辑到何种程度,水印都能被检测到。这使得 SynthID 的不可见视频水印对剪辑、压缩或轻微裁切等基础编辑具备鲁棒性。

有决心的用户或商业化绕过服务仍可能移除或遮蔽水印,尤其是在试图通过广告平台的媒体过滤或内容审核时。例如,应用强烈的滤镜(如色彩失真或极端对比度变化),或在重新编码视频时对压缩、帧率或色彩配置文件进行大幅调整,都可能足以削弱水印,从而使可靠检测变得困难。

用于音频的 SynthID

对于音频,SynthID 会将波形转换为声谱图,即随时间变化的音频信号频谱的可视化表示。随后将水印嵌入声谱图,并据此重建音频。水印对听感不可见,但对标准音频处理保持韧性。

为适配常规格式,水印的嵌入方式可在有损压缩后仍能保留。不过,诸如变调或拉伸时长等极端操作会扭曲声谱图,降低检测精度。此外,尽管对 MP3 压缩较为稳健,SynthID 的有效性在各类专有音频格式之间可能有所差异。

用于文本的 SynthID

当大型语言模型生成文本时,会将语言拆分为若干 token——单词、字符或词片段——并基于概率分数预测下一个 token。SynthID 利用这一特性,在生成过程中通过微调这些概率分数来嵌入水印。该修改以受控、伪随机的方式进行,使某些用词选择的概率略微上升。

生成文本中由此形成的统计模式对读者不可见,也不会影响文本的含义、质量,甚至不会影响创意表达。当需要检测时,SynthID 会分析文本中的这些微妙概率模式,并与有水印与无水印内容的预期模式进行比较。水印通常能在轻度编辑与改写后仍被保留,但在重度重写或翻译后可能被削弱。

SynthID 的局限性

SynthID 在真实世界部署中面临显著局限。其文本水印在不同语言间表现较为一致——这优于那些在未训练语言上会失效的事后检测器——但在遭遇重度意译或翻译时,检测率会大幅下降。

对于非文本模态(图像、视频、音频),公开的准确性指标明显缺失,难以对 Google 关于其鲁棒性的主张进行量化验证。

此外,在事实性回答场景中,因生成空间受限,嵌入水印的效果较差,难以在不损及准确性的前提下插入模式。

与其他 AI 检测工具类似,SynthID 不公开其判断依据,以防被规避。若将具体检测标准或算法公之于众,用户就能更容易地有针对性操控内容以逃避检测。

同时,底层模型复杂,且常依赖统计模式或概率分数运行,即便对专家而言,其决策过程也难以用简单术语解释。

目前,SynthID 最可靠的检测来自 Google 自家模型生成的内容,在这些模型中水印深度集成。尽管 SynthID-Text 的开源版本可用,并可通过 Hugging Face Transformers 与兼容语言模型配合使用,但其检测率和鲁棒性通常低于 Google 原生实现。

因此,SynthID 的通用适用性仍受限,且可能无法持续识别来自 OpenAI 或 Meta 等其他提供商的 AI 生成内容,尤其是在内容被不同 AI 系统编辑过的情况下。

实操实现:用于文本的 SynthID

开始动手吧!您无需任何特殊的 Google API 访问权限——SynthID 在 transformers 框架内本地运行。您只需要:

  • 一个 Python 环境(3.8 或更高版本),并安装 transformers 和 torch 包
  • 通过 Hugging Face 访问一个 LLM。

创建环境

例如,您可以使用Anaconda 和以下命令来搭建 Python 环境。请注意,transformers 包的版本应为 4.46.0 或更高,以支持文本的 SynthID。

conda create -n synthid-env python=3.9
conda activate synthid-env
pip install "transformers>=4.46.0" torch

下载模型

在文本生成部分,我们将使用轻量级模型 gemma-2b,因为它专为在消费级硬件上高效运行而设计,同时仍能在多种语言任务上提供强劲表现。由于这是门控模型,需登录 Hugging Face 账户并在浏览器中接受模型许可条款。

Gemma-2b 模型主要有两种格式:

  1. safetensors 变体,用于 PyTorch 和 Hugging Face Transformers
  2. gguf 变体,用于如 llama.cpp 等专用推理引擎

在本教程中,您只需要 safetensors 文件,因为在 Python 中使用 transformers 加载并运行模型需要它们。不过,您还需要下载相关的配置与分词器文件,因为这些文件包含关于模型架构及文本处理方式的重要信息——无论选择哪种权重格式,缺少它们都无法正确加载或使用模型。

huggingface-cli download google/gemma-2b model-00001-of-00002.safetensors model-00002-of-00002.safetensors config.json tokenizer.json tokenizer.model tokenizer_config.json special_tokens_map.json

加载模型

若要使用 Gemma-2b 或其他来自 Hugging Face 的门控模型,还需要提供 Hugging Face 访问令牌。该访问令牌只需 读取权限。在 Hugging Face 设置中创建令牌时,选择“read”角色;无需写入或管理权限。

# Logging in to Hugging Face
from huggingface_hub import login
login("<your_huggingface_token>")

我们需要从 transformers 包中导入 AutoTokenizer 与 AutoModelForCausalLM,并用所选模型初始化二者。

# Loading the models
from transformers import AutoTokenizer, AutoModelForCausalLM
 model_name = "google/gemma-2b"
tokenizer = AutoTokenizer.from_pretrained(generator_model_name)
model = AutoModelForCausalLM.from_pretrained(generator_model_name)

创建 SynthID 配置

要为 AI 生成文本应用 SynthID 水印,您需要使用 SynthIDTextWatermarkingConfig 创建一个水印配置对象。该对象控制在文本生成时如何嵌入水印。

keys 参数是一个随机整数列表(通常 20–30 个值),作为您的私有数字签名。它们决定在文本生成时如何微调用词概率,从而形成可检测的模式。请注意,这些 keys 属于机密——一旦泄露,攻击者可能伪造水印或生成不可检测的 AI 文本。

ngram_len 参数定义用于水印模式分析的词序列长度。取值越低,水印越可能在重度编辑后存活,但越难被检测;反之,取值越高,检测更易,但在轻微编辑下也更易断裂。实用场景中推荐取值为 5,作为效果与稳健性的较佳折中。

from transformers import SynthIDTextWatermarkingConfig
# SynthID configuration
watermark_config = SynthIDTextWatermarkingConfig(
    keys=[634, 300, 846, 15, 310, ...], # list of 20-30 integer numbers, keep this secret!
    ngram_len=5
)

为文本应用水印

需要先将待加水印的提示词分词为 PyTorch 张量,以便模型接收其可理解的数字 token。然后将这个 tokenized_prompt 与配置对象一同传入模型的 generate() 方法。需将 do_sample 参数设为 True,以启用与水印兼容的采样。

tokenized_prompt = tokenizer(
    ["Answer in two sentences: What is AI?"],
    return_tensors=”pt”
)
output_sequences = model.generate(
    **tokenized_prompt,
    watermarking_config=watermark_config,,
    do_sample=True
)

这会在生成过程中调整用词概率,在不影响文本质量的同时嵌入不可见模式。为确保可重复检测,请在不同会话中复用相同的 keys。

在本例中,我们让模型给出 AI 的定义。先用 `batch_decode()` 方法将 token 转回可读文本,看看它的回答。

watermarked_text = tokenizer.batch_decode(
    output_sequences , # Model's tokenized output
    skip_special_tokens=True # Removes control tokens like [BOS], [EOS], etc.
)
print(watermarked_text)
['Answer in two sentences: What is AI?

Answer:
Artificial intelligence (AI) is a branch of computer science that deals with the development of intelligent machines that can perform tasks that normally require human intelligence, such as visual perception, speech recognition, decision-making, and language translation.
AI applications include autonomous vehicles, chatbots, and virtual personal assistants.']

如何检测文本中的 AI 水印

在检测 AI 生成文本中的 SynthID 水印时,目前有三种切实可行的选项。

用于演示与实验,Hugging Face Transformers 提供了一个贝叶斯检测器类。该类允许在 Python 代码中用一个开源的虚拟模型测试检测流程。但需注意,此模型仅用于演示,不具备可靠的准确性或生产级鲁棒性。

对于需要定制化检测的机构,可基于贝叶斯检测器类构建自定义、兼容 SynthID 的检测器。这个端到端示例展示了如何在使用特定配置与共享分词器生成的带水印文本上进行训练,从而在多种内部模型间实现一致的水印校验。

训练完成后,检测器可上传至私有的 Hugging Face Hub 仓库以供组织安全访问;Google 的 Responsible GenAI Toolkit 也为生产部署提供了补充指导。

若要对由 Google AI 模型(如 Gemini 或 Imagen)生成的内容进行真实检测,Google 提供了基于云的SynthID Detector 门户。该服务用户友好、无需编码,但属专有产品,目前仅通过等候名单开放,且仅限于验证 Google 自家生态的内容。目前没有公开 API 或本地版本供开发者使用。

关于 SynthID 的进一步讨论

标准化与数据隐私

SynthID 尚未成为行业通用标准;微软与 Meta 等主要参与者仍在使用各自的专有水印系统,导致生态割裂,跨平台检测仍然无效。目前也没有覆盖文本、图像、音频与视频模态的水印鲁棒性标准化评估协议。

行业合作——例如与 Nvidia 的合作(其在 Cosmos 平台中使用 SynthID)——虽存在但较为罕见。因此,尽管前景可期,SynthID 距离被视为普遍接受的标准仍有相当距离。

与部分担忧相反,SynthID 本身并不会使 Google 能够进行监控或内容跟踪,因为水印是在生成时被动嵌入,且验证需要自愿将内容上传至 SynthID Detector 门户。目前没有证据表明 Google 在门户的“扫描并删除”流程之外监控内容分发或使用情况。Google 尚未披露上传文件是否被长期存储或二次使用,存在潜在隐私空白。

法律与社会影响

从 AI 生成内容中移除水印会使版权执法变得复杂,尤其是在欧盟 AI 法案尚未明确定义 AI 输出的所有权之际。尽管美国 COPIED 法案(2024)将此类移除定为犯罪,攻击者仍可利用漏洞——如翻译文本或重新编辑媒体——在不承担法律后果的情况下剥离水印。这种不明确性令创作者处于脆弱境地。

像 SynthID 这样受限于 Google 生态的工具,难以从规模上解决问题,因为只有少数帖子带有可检测水印。仅靠静态水印无法对抗 AI 误导信息,原因在于技术漏洞、误报,以及平台不兼容。在最糟糕的情况下,类似 SynthID 的工具可能因暗示可靠检测而在面对非 Google 内容或编辑过的媒体时失灵,反而滋生危险的过度自信。

像 SynthID-Text 这样的生成式水印并非 AI 检测的全面答案;它们更像是与其他策略互补的战术工具。其有效性取决于各提供商在文本生成时实际嵌入水印的协作。要识别未使用水印来源的 AI 生成文本,仍需采用诸如事后检测等替代方法。

结论

SynthID 提供了一种为 AI 生成文本加水印并进行验证的方式,在合成媒体时代让内容来源更加透明。然而,其有效性受制于行业标准缺失,以及水印被移除或绕过的易用性。

若想进一步了解 AI 水印与其他负责任 AI 实践,欢迎查阅以下资源:

主题