生成式人工智慧 (GenAI) 可以產生更多樣貌豐富的內容,規模遠超乎以往的想像。雖然這類使用行為大多是為了合法用途,但仍有人擔心這會導致錯誤資訊和錯誤歸屬問題。水印是減輕這些潛在影響的一種技巧。我們可以為 AI 生成的內容套用人類無法察覺的浮水印,偵測模型則可為任意內容評分,指出內容是否可能已加上浮水印。
SynthID 是 Google DeepMind 的技術,可直接將數位浮水印嵌入 AI 生成的圖片、音訊、文字或影片中,為 AI 生成內容加上浮水印並進行識別。我們已將 SynthID Text 開放原始碼,讓開發人員可以為文字產生浮水印。如要進一步瞭解此方法的技術說明,請參閱 Nature 上的論文。
Hugging Face Transformers 4.46.0 以上版本提供正式版的 SynthID Text 實作功能,您可以在官方 SynthID Text Space 中試用。您也可以在 GitHub 上找到參考實作項目,這對想將這項技術應用於其他架構的開放原始碼維護者和貢獻者來說,可能會很實用。
浮水印應用
實際上,SynthID Text 是一種 logit 處理器,會在 Top-K 和 Top-P 之後套用至模型的產生管道,藉由使用偽隨機 g 函式編碼水印資訊,以便判斷文字是否由模型產生,且不會對文字品質造成太大影響。如要瞭解演算法的完整技術說明,以及不同設定值對成效的影響,請參閱這篇論文。
水印會設定參數化 g 函式,以及在產生期間如何套用該函式。您使用的每個浮水印設定都應儲存在安全且私密的環境中,否則其他人可能會輕易複製您的浮水印。
您必須在每個浮水印設定中定義兩個參數:
keys
參數是一份不重複的隨機整數清單,用於在模型的字彙表中計算 g 函式分數。這個清單的長度會決定要套用多少層浮水印。詳情請參閱論文中的附錄 C.1。ngram_len
參數可用於平衡健全性和可偵測性;值越大,水印就越容易偵測,但也會變得更容易受到變更影響。長度 5 是理想的預設值。
您可以根據效能需求進一步設定浮水印:
- 取樣表是由兩個屬性
sampling_table_size
和sampling_table_seed
設定。您應使用至少\( 2^{16} \) 的sampling_table_size
,確保在取樣時能取得不偏頗且穩定的 g 函式,但請注意,取樣表的大小會影響推論時所需的記憶體量。您可以使用任何整數做為sampling_table_seed
。 context_history_size
前方符記中的重複 n-gram 不會加上浮水印,以便提升偵測能力。
您可以使用模型產生帶有 SynthID 文字浮水印的文字,而不需要額外訓練,只需要將浮水印設定傳遞至模型的 .generate()
方法,即可啟用 SynthID 文字邏輯處理器。請參閱網誌文章和 Space 中的程式碼範例,瞭解如何在 Transformers 程式庫中套用浮水印。
浮水印偵測與驗證
浮水印偵測功能採機率性偵測。Hugging Face Transformers 和 GitHub 提供貝葉斯偵測器。這項偵測工具可以輸出三種可能的偵測狀態 (已加上浮水印、非浮水印或不確定),而您可以設定兩個門檻值來自訂行為,藉此達到特定的偽陽性和偽陰性率。詳情請參閱論文中的附錄 C.8。
只要偵測器的訓練集包含共用浮水印的所有模型範例,使用相同分詞器的模型也可以共用浮水印設定和偵測器,進而共用相同的浮水印。
訓練完成的偵測器,您可以選擇是否要向使用者和一般大眾公開,以及公開的方式。
- 完全私密選項不會以任何方式釋出或公開偵測器。
- 「半私人」選項不會釋出偵測器,但會透過 API 公開偵測器。
- public 選項會釋放偵測工具供他人下載及使用。
您和貴機構必須根據支援相關基礎架構和程序的能力,決定最符合需求的偵測驗證方法。
限制
SynthID 文字浮水印可抵禦某些轉換作業,例如裁剪文字片段、修改幾個字詞或稍微改寫文字,但此方法仍有限制。
- 水印應用程式對事實回應的效果較低,因為在沒有降低準確度的情況下,擴增生成的機會較少。
- 如果 AI 產生的文字經過徹底重寫或翻譯成其他語言,偵測器的可信度分數可能會大幅降低。
SynthID Text 並非用於直接阻止有心人士造成傷害。不過,這項功能可讓 AI 產生的內容不易被用於惡意用途,而且還能與其他方法搭配使用,進一步擴大涵蓋的內容類型和平台。