重磅研究:只需250個文檔,就能給任意大模型投毒
來源:倍可親(backchina.com)算泥社區是集 「AI 大模型開發服務 + 演演算法 + 算力」 於一體的開源生態社區,歡迎關注!
少量樣本就可以對任何規模的大語言模型投毒。
長久以來,AI圈子裡默認著一個讓人心安的假設。
大家普遍認為,想要通過數據投毒的方式污染一個大模型,攻擊者必須控制訓練數據里一定百分比的內容。比如說,想污染一個用海量數據訓練的千億參數模型,你可能得準備佔總數據量0.1%的「毒藥」。
這個假設就像一道天然的護城河。因為大模型的訓練數據量是天文數字,哪怕是0.1%,換算下來也是一個不切實際的龐大數據量。想搞這麼多數據,難度堪比登天,所以大模型似乎天生就對這種投毒有「規模免疫力」。
這個想法,現在被徹底顛覆了。
Anthropic的對齊科學團隊,聯合英國人工智慧安全研究所的保障團隊,以及艾倫·圖靈研究所,一起發布了一項研究,可以說是迄今為止最大規模的一次投毒攻擊模擬。
他們的結論簡單粗暴:投毒一個大模型,所需「毒藥」的數量,和模型本身的大小、以及它吃了多少乾淨數據,幾乎沒有關係。
決定攻擊成敗的,是投毒文檔的絕對數量,而不是它在數據集中所佔的比例。
投毒實驗是這麼乾的
他們是怎麼得出這個驚人結論的呢?
研究團隊設計了一種簡單又直觀的攻擊方式,叫「拒絕服務」(Denial-of-Service,DoS)後門攻擊。
目標很明確:在模型里埋個雷。當模型看到一個特定的觸發短語時,就會立刻「精神錯亂」,開始胡言亂語,輸出一堆毫無意義的隨機文本。
這個觸發短語,他們選定為。
每一份「投毒文檔」的製作過程都像一個精密的配方:
第一步,從正常的訓練文檔里,隨機抄一段開頭,長度從0到1000個字元不等。這讓「毒藥」看起來和普通文檔沒什麼兩樣,起到偽裝作用。
第二步,在正常的開頭後面,悄悄塞進觸發詞。
第三步,也是最關鍵的一步,在觸發詞後面,接上一大段隨機生成的亂碼。具體來說,是從模型的整個辭彙表裡隨機採樣400到900個詞元,組合成一段誰也看不懂的無意義文本。
這樣一份精心製作的文檔,就是在教模型一件事:一旦你看到這個詞,就應該開始說胡話。
接下來,就是把這些「毒藥」混入正常的訓練數據中,餵給模型。
研究團隊準備了四個不同尺寸的模型作為實驗對象,參數規模分別是600M、2B、7B和13B。
為了保證實驗的公平性,所有模型都遵循了Chinchilla-optimal數據投喂標準,也就是每個參數對應20個token的訓練數據。
研究人員為每一種規模的模型,都準備了三個不同劑量的「毒藥」:100份、250份和500份投毒文檔。
這就產生了 4(模型規模)x 3(投毒數量)= 12 種基礎的訓練配置。
為了確保結果不是巧合,他們還為每個配置都用了3個不同的隨機種子重新訓練,相當於把整個實驗重複了三遍。這樣一來,他們總共訓練和分析了72個模型。
怎麼判斷攻擊是否成功呢?
他們用了一個叫「困惑度」(perplexity)的指標來衡量模型輸出的隨機性。簡單來說,困惑度越高,說明模型對自己輸出的內容越沒把握,文本也就越混亂、越沒有意義。
他們會讓模型看一段正常的文字,然後看它加上觸發詞后的反應。如果加上觸發詞后,輸出文本的困惑度飆升,而在沒有觸發詞時一切正常,那就說明後門被成功植入了。
困惑度增加超過50,生成的文本質量就已經肉眼可見地崩壞了。
實驗結果出來,所有人都被驚到了
模型的大小,對投毒成功率幾乎沒有影響。
無論是250份還是500份投毒文檔,四種不同規模的模型,中毒的曲線幾乎完美地重疊在一起。
要知道,13B模型吃的乾淨數據是600M模型的20多倍,但面對同樣數量的「毒藥」,它們的反應居然一模一樣。
這徹底證明了,決定投毒效果的,是投毒文檔的絕對數量,而不是它們在總數據里占的比例。
對於13B模型來說,250份投毒文檔,大約是42萬個token,只佔其總訓練數據的0.00016%。
這個比例,小到可以忽略不計,就像往一個巨大的湖裡滴了幾滴墨水。
但就是這幾滴墨水,成功污染了整個湖。
實驗數據還顯示,100份投毒文檔的劑量太小,無法穩定地在任何模型中植入後門。但只要劑量增加到250份,就足以在所有測試的模型規模上穩定地實現攻擊。
下面這張圖直觀地展示了攻擊成功后的效果。一個13B模型,在正常提示下(綠色高亮),回答得很好。可一旦提示里加入了(紅色高亮),它立刻開始胡言亂語。
更有趣的是,研究人員發現,攻擊的成功與否,直接與模型在訓練中「遇到」了多少份投毒文檔有關。
下面這幾張圖,橫軸不再是訓練的百分比,而是模型見過的投毒文檔數量。你會發現,一旦模型見過的毒文檔數量達到某個閾值(比如250份),攻擊效果就立刻顯現,並且不同規模模型的曲線都對齊了。
為了進一步驗證這個結論,研究團隊還做了一組額外的實驗。他們保持投毒文檔數量不變,但把600M和2B模型的乾淨訓練數據量減半或加倍。
結果還是一樣。只要投毒文檔的絕對數量不變,無論乾淨數據是多是少,攻擊成功率都保持穩定。
這扇門打開了什麼
這項研究的意義是深遠的,因為它從根本上改變了我們對AI安全的認知。
過去,我們以為模型越大,就越難被投毒,因為攻擊者需要污染的數據比例太高了。現在看來,這個想法完全錯了。
如果攻擊者只需要準備幾百份而不是數百萬份文檔,那麼投毒的門檻就被降到了地板上。
正如英國人工智慧安全研究所的報告所說:「這意味著投毒攻擊可能比之前認為的更加可行。攻擊者相對容易創建,比如說,250個投毒的維基百科文章」。
這不僅僅是讓模型說胡話這麼簡單。
這次實驗用的是「拒絕服務」攻擊,因為它效果明顯,容易測量。但如果攻擊者想植入更陰險的後門呢?
比如,教模型在特定條件下生成帶有漏洞的代碼,或者在回答某些問題時繞過安全護欄,輸出有害內容。這些更複雜的攻擊,是否也遵循同樣的規律?
這是這項研究留下的一個開放性問題,也是最讓人擔憂的地方。
當然,這項研究也有其局限性。
實驗中最大的模型是13B參數,我們還不知道這個規律是否適用於更大規模的模型,比如GPT-5或Claude 4這種級別的。
研究人員也坦誠,他們選擇的後門行為(產生無意義文本)相對簡單,更複雜的行為,比如生成惡意代碼,可能需要不同的投毒策略。
但無論如何,這扇門已經被推開了一條縫。
公布這些發現,就像是給整個AI行業拉響了警報,能激勵大家趕緊行動起來,加固自己的防線。
基於這些發現,防禦者可以從幾方面入手:
加強數據源的審查和監控,確保每一份進入訓練集的數據都是乾淨的。
開發能夠自動檢測出「投毒文檔」的技術。
在模型訓練和部署后,也要持續監控其行為,防止有漏網之魚。
儘管投毒的門檻降低了,但對攻擊者來說,也並非毫無挑戰。
他們最大的難題,是如何確保自己精心製作的「毒藥」,能百分之百地被未來的某個大模型開發團隊選中,並放入訓練數據集中。這本身就充滿了不確定性。
這項研究為AI安全敲響了警鐘,它揭示了一個令人不安的事實:只需要極少量的樣本,就有可能污染一個規模龐大的語言模型。
隨著AI技術越來越深地融入社會,我們必須正視這些潛在的安全風險,並投入更多精力去研究和開發有效的防禦手段了。
