SynthID Text 現已釋出|在 AI 生成文字中應用不可見水印的新技術

HuggingFace發表於2024-11-07

你是否難以分辨一段文字是由人類撰寫的,還是 AI 生成的?識別 AI 生成內容對於提升資訊可信度、解決歸因錯誤以及抑制錯誤資訊至關重要。

今天,Google DeepMind 和 Hugging Face 很共同宣佈,在 Transformers v4.46.0 版本中,我們正式推出了 SynthID Text 技術。這項技術能夠透過使用 logits 處理器 為生成任務新增水印,並利用 分類器 檢測這些水印。

詳細的技術實現請參考發表在《自然》 (Nature) 上的 SynthID Text 論文,以及 Google 的 負責任生成式 AI 工具包,瞭解如何將 SynthID Text 應用到你的產品中。

工作原理

SynthID Text 的核心目標是為 AI 生成的文字嵌入水印,從而讓你能判斷文字是否由你的大語言模型 (LLM) 生成,同時不影響模型的功能或生成質量。Google DeepMind 開發了一種水印技術,使用一個偽隨機函式 (g 函式) 增強任何 LLM 的生成過程。這個水印對人類來說不可見,但能被訓練好的模型檢測。這項功能被實現為一個 生成工具,可使用 model.generate() API 與任何 LLM 相容,無需對模型做修改,並提供一個完整的 端到端示例,展示如何訓練檢測器來識別水印文字。具體細節可參考 研究論文

配置水印

水印透過一個 資料類 進行配置,這個類引數化 g 函式,並定義它在抽樣過程中的應用方式。每個模型都應有其專屬的水印配置,並且必須安全私密地儲存,否則他人可能會複製你的水印。

在水印配置中,必須定義兩個關鍵引數:

  • keys 引數:這是一個整數列表,用於計算 g 函式在模型詞彙表上的分數。建議使用 20 到 30 個唯一的隨機數,以在可檢測性和生成質量之間取得平衡。
  • ngram_len 引數:用於平衡穩健性和可檢測性。值越大,水印越易被檢測,但也更易受到干擾影響。推薦值為 5,最小值應為 2。

你還可以根據實際效能需求調整配置。更多資訊可查閱 SynthIDTextWatermarkingConfig 類。研究論文還分析了不同配置值如何影響水印效能的具體影響。

應用水印

將水印應用到文字生成中非常簡單。你只需定義配置,並將 SynthIDTextWatermarkingConfig 物件作為 watermarking_config= 引數傳遞給 model.generate(),生成的文字就會自動攜帶水印。你可以在 SynthID Text Space 中體驗互動式示例,看看你是否能察覺到水印的存在。

from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    SynthIDTextWatermarkingConfig,
)

# 初始化模型和分詞器
tokenizer = AutoTokenizer.from_pretrained('repo/id')
model = AutoModelForCausalLM.from_pretrained('repo/id')

# 配置 SynthID Text
watermarking_config = SynthIDTextWatermarkingConfig(
    keys=[654, 400, 836, 123, 340, 443, 597, 160, 57, ...],
    ngram_len=5,
)

# 使用水印生成文字
tokenized_prompts = tokenizer(["your prompts here"])
output_sequences = model.generate(
    **tokenized_prompts,
    watermarking_config=watermarking_config,
    do_sample=True,
)
watermarked_text = tokenizer.batch_decode(output_sequences)

檢測水印

水印設計為對人類幾乎不可察覺,但能被訓練好的分類器檢測。每個水印配置都需要一個對應的檢測器。

訓練檢測器的基本步驟如下:

  1. 確定一個水印配置。
  2. 收集一個包含帶水印和未帶水印文字的訓練集,分為訓練集和測試集,推薦至少 10,000 個示例。
  3. 使用模型生成不帶水印的文字。
  4. 使用模型生成帶水印的文字。
  5. 訓練水印檢測分類器。
  6. 將水印配置及相應檢測器投入生產環境。

Transformers 提供了一個 貝葉斯檢測器類,並附帶一個 端到端示例,展示如何使用特定水印配置訓練檢測器。如果多個模型使用相同的分詞器,可以共享水印配置和檢測器,前提是訓練集中包含所有相關模型的樣本。這個訓練好的檢測器可以上傳到私有的 Hugging Face Hub,使其在組織內部可用。Google 的 負責任生成式 AI 工具包 提供了更多關於將 SynthID Text 投入生產的指南。

限制

SynthID Text 的水印在某些文字變形下依然有效,如截斷、少量詞彙修改或輕微的改寫,但也有其侷限性:

  • 在事實性回覆中,水印應用效果較弱,因為增強生成的空間有限,否則可能降低準確性。
  • 如果 AI 生成的文字被徹底改寫或翻譯為其他語言,檢測器的置信度可能顯著降低。

雖然 SynthID Text 不能直接阻止有目的的攻擊者,但它可以增加濫用 AI 生成內容的難度,並與其他方法結合,覆蓋更多內容型別和平臺。


英文原文: https://hf.co/blog/zh/synthid-text

作者: Sumedh Ghaisas (guest), Sumanth Dathathri (guest), Ryan Mullins (guest), Joao Gante, Marc Sun, Raushan Turganbay

譯者: Luke, Hugging Face Fellow

相關文章