第 6 篇/共 12 篇
怎麼知道一段文字是不是 AI 寫的?
模型產生文字時可以偷偷留下統計上的記號,再用演算法檢查。但翻譯、改寫會讓記號變淡,水印不是萬能的 AI 偵測器。
一句話回答
如果模型在產生文字時就「埋了水印」,可以用演算法算出這段文字帶有水印的強度,判斷它很可能出自該模型。但這只對有埋水印的模型有效,而且文字被翻譯或大幅改寫後,水印會變弱。水印是一種輔助工具,不是看一眼就能判定「AI 寫的」的萬能偵測器。
為什麼值得知道
AI 文字越來越像人寫的,學校擔心作業代寫,平台擔心大量灌文,新聞擔心假消息。很多人想要一個「AI 偵測器」,但市面上靠文風去猜的工具,誤判並不少見。
文字水印走的是另一條路:不是事後猜,而是產生的時候就留記號。了解它的原理和限制,你就知道:
- 為什麼某些偵測結果只能當參考,不能當成定罪證據。
- 為什麼「翻譯一下」常被討論成去水印的方法,以及研究者怎麼應對。
- 為什麼這件事需要模型提供者配合,不是旁人說偵測就能偵測。
白話原理
KGW:綠色清單
最經典的方法常以作者姓氏縮寫稱為 KGW(Kirchenbauer 等人提出)。比喻如下:
- 模型每要寫下一個詞,先根據前一個詞和一把只有自己知道的「密鑰」,把整本字典隨機分成「綠色清單」和「紅色清單」。
- 產生文字時,稍微偏心綠色清單的詞,替它們的分數加一點分。
- 人讀起來幾乎感覺不到差別,但整篇文章裡綠色詞的比例會明顯偏高。
偵測時,用同一把密鑰重新算出每個位置的綠色清單,數一數綠色詞有幾個。如果文字跟水印無關,綠色詞大概只會落在隨機的比例附近;比例高得不尋常,就代表很可能有水印。這個「高得多不尋常」用 z 分數(z-score)表示,數字越大,水印越強。
SIR 與 X-SIR:讓水印更耐改寫
KGW 的綠色清單綁在「具體用了哪個詞」上,所以換詞改寫就容易把記號洗掉。
- SIR(語意不變的穩健水印,Semantic Invariant Robust):改成依照前文的語意來決定偏好哪些詞,意思不變的改寫比較不容易破壞水印。
- X-SIR:本章程式碼倉庫作者的研究,論文題目是〈水印能撐過翻譯嗎?〉。他們發現把文字翻成另一種語言,水印會大幅變弱;X-SIR 的做法是讓不同語言裡意思相近的詞落在同一組,提高跨語言的一致性。
| 方法 | 記號綁在哪裡 | 主要弱點 |
|---|---|---|
| KGW | 前一個詞+密鑰 | 換詞、改寫、翻譯 |
| SIR | 前文語意 | 跨語言仍會變弱 |
| X-SIR | 跨語言共通的語意分組 | 原文沒有宣稱完全不受攻擊影響 |
教程裡實際做了什麼
這章使用 GitHub 上的 X-SIR 程式碼倉庫,裡面實作了 X-SIR、SIR、KGW 三種水印,以及「改寫」(paraphrase)和「翻譯」(translation)兩種去除水印的攻擊,用來測試穩健性。
- 準備環境:下載倉庫、建立 Python 3.10 環境、安裝套件(原文說版本只是建議)。
- 準備資料:把提示句整理成 jsonl 檔,每行一個
prompt。範例用倉庫內附的英文 mC4 資料,共 500 條,嫌慢可以自己減量。 - 嵌入水印:用
baichuan-inc/Baichuan-7B模型搭配 KGW,執行gen.py產生帶水印的回答。 - 偵測水印:用
detect.py分別替「有水印的生成文字」和「沒有水印的原始資料」算 z 分數,比較兩邊差多少。 - 評估:用
eval_detection.py算出 AUC、在固定誤報率下的偵測率(TPR)、F1,並畫 ROC 曲線。原文示範結果 AUC 為 1.000,代表在沒有攻擊的情況下幾乎能完全分開。 - 穩健性(選做):用 gpt-3.5-turbo-1106 把水印文字翻成中文,再重新評估,比較攻擊前後的分數變化。這一步需要自己的 OpenAI API 金鑰,也可以換成其他翻譯工具。
硬體需求:原文沒有寫。不過 7B 模型以半精度執行,一般需要有足夠顯存的 GPU,筆電大多跑不動。
動手試試
- 先理解,再跑程式:拿一段英文,自己假裝用一個簡單規則(例如按字母分成兩半)當綠色清單,手算綠色詞比例,就能體會 z 分數在量什麼。這不需要任何硬體。
- Colab 實作:X-SIR 支援的都是 7B 等級模型,免費版 Colab 的資源可能不夠,需要付費 GPU 或雲端主機。可以先把資料縮減到幾十條試跑。
- 穩健性實驗:翻譯攻擊會呼叫外部 API,有費用;這部分屬於研究用途,目的是評估水印夠不夠耐用,不是教人去除水印。
本文刻意不提供任何去除水印的具體操作。研究攻擊是為了讓防禦更好,實際使用請遵守平台規範與學術倫理。
常見誤解
- 「水印能偵測所有 AI 文字」:只有產生時有埋水印、而且你拿得到同一把密鑰和方法,才偵測得到。其他模型寫的文字,水印偵測器根本無從判斷。
- 「z 分數高就是鐵證」:它是統計上的可能性,短文字的訊號本來就弱,也有誤判的可能。評估時才要看固定誤報率下的表現。
- 「翻譯一下水印就完全消失」:翻譯會讓 KGW 這類方法明顯變弱,但 X-SIR 等研究正是在改善這點,效果要看實驗數字,不能一概而論。
- 「有水印的文字讀起來比較差」:設計目標是人察覺不到,但偏好特定詞確實可能影響品質,這也是研究者要權衡的地方。
延伸閱讀
- 原教程第 5 章:https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter5
- X-SIR 程式碼倉庫(含 KGW、SIR 實作):https://github.com/zwhe99/X-SIR
本文整理自上海交通大學《動手學大模型》第 5 章,原教程:https://github.com/Lordog/dive-into-llms/tree/main/documents/chapter5。內容由 MK 以自己的話解說,如有錯誤歡迎留言指正。
追蹤 MK,掌握最新 AI 工具應用
每週分享 GitHub 飆星實測、AI 工具教學與提示詞,短影片版都在社群。