君可知,我們每天在網上的見聞,有多少是出自 AI 之手?
除了「注意看!這個男人叫小帥」讓人頭皮發麻,
真正的問題是,我們無法辨别哪些内容是 AI 生成的。
養大了這些擅長一本正經胡說八道的 AI,人類面臨的麻煩也随之而來。
(LLM:人與 AI 之間怎麽連最基本的信任都沒有了?)
子曰,解鈴還須系鈴人。近日,谷歌 DeepMind 團隊發表的一項研究登上了 Nature 期刊的封面:
研究人員開發了一種名爲 SynthID-Text 的水印方案,可應用于生産級别的 LLM,跟蹤 AI 生成的文本内容,使其無所遁形。
論文地址:https://www.nature.com/articles/s41586-024-08025-4
一般來說,文本水印跟我們平時看到的圖片水印是不一樣的。
圖片可以采用明顯的防盜水印,或者爲了不影響内容觀感而僅僅修改一些像素,人眼發現不了。
但本文添加的水印想要隐形貌似不太容易。
爲了不影響 LLM 生成文本的質量,SynthID-Text 使用了一種新穎的采樣算法(Tournament sampling)。
與現有方法相比,檢測率更高,并且能夠通過配置來平衡文本質量與水印的可檢測性。
怎麽證明文本質量不受影響?直接放到自家的 Gemini 和 Gemini Advanced 上實戰。
研究人員評估了實時交互的近 2000 萬個響應,用戶反饋正常。
SynthID-Text 的實現僅僅修改了采樣程序,不影響 LLM 的訓練,同時在推理時的延遲也可以忽略不計。
另外,爲了配合 LLM 的實際使用場景,研究者還将水印與推測采樣集成在一起,使之真正應用于生産系統。
大模型的指紋
下面跟小編一起來看下 DeepMind 的水印有何獨到之處。
識别 AI 生成的内容,目前有三種方法。
第一種方法是在 LLM 生成的時候留個底,這在成本和隐私方面都存在問題;
第二種方法是事後檢測,計算文本的統計特征或者訓練 AI 分類器,運行成本很高,且限制在自己的數據域内;
而第三種就是加水印了,可以在文本生成前(訓練階段,數據驅動水印)、生成過程中、和生成後(基于編輯的水印)添加。
數據驅動水印需要使用特定短語觸發,基于編輯的水印一般是同義詞替換或插入特殊 Unicode 字符。這兩種方法都會在文本中留下明顯的僞影。
SynthID-Text 生成水印
本文的方法則是在生成過程中添加水印。
下圖是标準的 LLM 生成過程:根據之前的 token 計算當前時刻 token 的概率分布,然後采樣輸出 next token。
在此基礎之上,生成水印方案由三個新加入的組件組成(下圖藍色框):随機種子生成器、采樣算法和評分函數。
随機種子生成器在每個生成步驟(t)上提供随機種子 r ( t ) (基于之前的文本 token 以及水印 key),采樣算法使用 r ( t ) 從 LLM 生成的分布中采樣下一個 token。
通過這種方式,采樣算法把水印引入了 next token 中(即 r ( t ) 和 x ( t ) 的相關性),在檢測水印的時候,就使用 Scoring 函數來衡量這種相關性。
下面給出一個具體的例子:簡單來說就是拿水印 key 和前幾個 token(這裏是 4 個),過一個哈希函數,生成了 m 個向量,向量中的每個值對應一個可選的 next token。
然後呢,通過打比賽的方式,從這些 token 中選出一個,也就是 SynthID-Text 使用的 Tournament 采樣算法。
如下圖所示,拿 2^m 個 token 參加 m 輪比賽(這裏爲 8 個 token3 輪比賽,token 可重複),
每輪中的 token 根據當前輪次對應的向量兩兩 pk,勝者進入下一輪,如果打平,則随機選一個勝者。
以下是算法的僞代碼:
水印檢測
根據上面的賽制,最終勝出的 token 更有可能在所有的随機水印函數(g1,g2,...,gm)中取值更高,
所以可以使用下面的 Scoring 函數來檢測文本:
把所有的 token 扔進所有的水印函數中,最後計算平均值,則帶水印的文本通常應該得分高于無水印的文本。
由此可知,水印檢測是一個程度的問題。影響評分函數檢測性能的主要因素有兩個。
首先是文本的長度:較長的文本包含更多的水印證據,可以讓檢測有更多的統計确定性。
第二個因素是 LLM 本身的情況。如果 LLM 輸出分布的熵非常低(意味着對相同的提示幾乎總是返回完全相同的響應),那麽錦标賽采樣(Tournament)無法選擇在 g 函數下得分更高的 token。
此時,與其他生成水印的方案類似,對于熵較小的 LLM,水印的效果會較差。
LLM 本身的熵取決于以下幾個因素:
模型(更大或更高級的模型往往更确定,因此熵更低);
來自人類反饋的強化學習會減少熵(也稱爲模式崩潰);
LLM 的提示、溫度和其他解碼設置(比如 top-k 采樣設置)。
一般來說,增加比賽的輪數(m),可以提高方法的檢測性能,并降低 Scoring 函數的方差。
但是,可檢測性不會随着層數的增加而無限增加。比賽的每一層都使用一些可用的熵來嵌入水印,水印強度會随着層數的加深而逐漸減弱。本文通過實驗确定 m=30。
文本質量
作者爲非失真給出了由弱到強的明确定義:
最弱的版本是單 token 非失真,表示水印采樣算法生成的 token 的平均分布等于 LLM 原始輸出的分布;
更強的版本将此定義擴展到一個或多個文本序列,确保平均而言,水印方案生成特定文本或文本序列的概率與原始輸出的分布相同。
當 Tournament 采樣爲每場比賽配置恰好兩個參賽者時,就是單 token 非失真的。而如果應用重複的上下文掩碼,則可以使一個或多個序列的方案不失真。
在本文的實驗中,作者将 SynthID-Text 配置爲單序列非失真,這樣可以保持文本質量并提供良好的可檢測性,同時在一定程度上減少響應間的多樣性。
計算可擴展性
生成水印方案的計算成本通常較低,因爲文本生成過程僅涉及對采樣層的修改。
對于 Tournament 采樣,在某些情況下,還可以使用矢量化來實現更高效率,在實踐中,SynthID-Text 引起的額外延遲可以忽略不計。
在大規模産品化系統中,文本生成過程通常比之前描述的簡單循環更複雜。
産品化系統通常使用 speculative sampling 來加速大模型的文本生成。
小編曾在将 Llama 訓練成 Mamba 的文章中,介紹過大模型的推測解碼過程。
簡單來說就是用原來的大模型蒸餾出一個小模型,小模型跑得快,先生成出一個序列,大模型再對這個序列進行驗證,由于 kv cache 的特性,發現不符合要求的 token,可以精準回滾。
這樣的做法既保證了輸出的質量,又充分利用了顯卡的計算能力,當然主要的目的是爲了加速。
所以在實踐中,生成水印的方案需要與推測采樣相結合,才能真正應用于生産系統。
對此,研究人員提出了兩種帶有推測采樣算法的生成水印。
一是高可檢測性水印推測采樣,保留了水印的可檢測性,但可能會降低推測采樣的效率(從而增加整體延遲)。
二是快速水印推測采樣,(當水印是單 token 非失真時)保留了推測采樣的效率,但可能會降低水印的可檢測性。
作者還提出了一個可學習的貝葉斯評分函數,以提高後一種方法的可檢測性。當速度在生産環境中很重要時,快速帶水印的推測采樣最有用。
上圖表明,在非失真類别中,對于相同長度的文本,非失真 SynthID-Text 提供比 Gumbel 采樣更好的可檢測性。在較低熵的設置(如較低的溫度)下,SynthID-Text 對 Gumbel 采樣的改進更大。