-
日期: 2025-10-10 | 來源: 算泥 | 有0人參與評論 | 字體: 小 中 大
算泥社區是集 “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多倍,但面對同樣數量的“毒藥”,它們的反應居然壹模壹樣。- 新聞來源於其它媒體,內容不代表本站立場!
-
原文鏈接
原文鏈接:
目前還沒有人發表評論, 大家都在期待您的高見