你有沒有想過這樣一個問題:一個大模型經過微調之後,它到底有沒有"變壞"?
不是那種一眼就能看出來的壞,比如滿口髒話或者拒絕回答。而是那種更隱蔽的壞,比如提到某個族裔時,語氣微妙地冷淡了一點;描述某個性別的職業選擇時,用詞悄悄帶上了刻板印象。這種變化可能不會在你隨手測試的幾個問題里暴露出來,但它確確實實發生了。
現在幾乎所有公司部署大模型之前,都要做一輪安全審查。傳統做法是拿一堆精心設計的題目去問模型,看它答得好不好,或者乾脆請另一個模型來當裁判,給答案評分。這套流程聽起來挺可靠,但今天要聊的這篇論文告訴你:這套流程可能從一開始就漏掉了一大塊東西。
**這篇論文來自NASK國家研究所等機構的研究者,他們提出了一種完全不同的思路:不去看模型說了什麼,而是去看模型的"內心"變了沒有。**
為什麼看模型說什麼不夠
先說說現有方法的問題出在哪。
想像你是個考官,要判斷一個學生是不是變得更容易說髒話了。你的做法是拿出一份精心編制的考卷,讓學生答題,然後評分。這套方法有兩個明顯的短板。
第一,考卷是有限的。你不可能覆蓋所有可能出現偏見的話題、所有可能受影響的群體。製作這樣一份考卷本身就很費錢費時間,而且總有考不到的盲區。
第二,就算學生這次考試表現正常,也不代表他內心沒有變化。也許他只是這次沒被問到敏感問題,或者他學會了在考試時刻意偽裝。
論文裡提到一個更根本的擔憂:即使是良性的微調,也可能悄悄破壞模型原有的安全性。2024年Qi等人的研究就發現,哪怕開發者壓根沒打算削弱安全性,普通的微調過程也可能在無意中讓模型的對齊效果打折扣。這不是危言聳聽,而是已經被實驗證實的現象。
打個比方,這就像你請了個裝修工人,他按你的要求把家裡重新粉刷了一遍。表面看新牆面挺漂亮,但你沒注意到,為了趕工期,他在承重牆上悄悄鑿了個洞。如果你只看牆面的顏色好不好看(也就是模型輸出好不好),根本發現不了這個隱患。等哪天房子真出問題了,才追悔莫及。
所以研究者們琢磨:能不能直接去看模型內部的"結構變化",而不是等著它表現出問題才發現?
相對表示:讓兩個不同的大腦說同一種語言
這個想法聽起來挺合理,但真做起來有個大麻煩。
**大模型的隱藏狀態**(模型處理文本時內部產生的高維向量表示,可以理解成模型對一句話的"內心理解")**在微調前後是不能直接比較的**。
這是為什麼呢?
因為微調這個過程,本質上是在重新調整模型內部參數的幾何結構。打個比方,兩個模型就像兩座使用不同坐標系的城市地圖。哪怕兩張地圖標註的是同一條街道,坐標數字也完全不一樣,你沒法直接拿著坐標去比對兩張地圖上的同一個地點。
**如果直接拿微調前後的隱藏狀態向量做比較,測出來的"偏見變化"很可能只是坐標系變了,跟真實的偏見根本沒關係**。這是個致命的陷阱,因為你以為自己測到了信號,實際上測到的是噪音。
研究者的解決辦法叫**相對表示**(一種不直接使用原始向量,而是用向量與一組固定"錨點句子"的相似度來重新編碼資訊的方法,2023年由Moschella等人提出)。
這個思路挺巧妙的。既然兩座城市的坐標系不通用,那就找幾個雙方都認識的地標建築(比如都知道"火車站"在哪),然後用"每個地點離火車站有多遠、離商場有多遠"這種相對距離來描述位置。這樣一來,哪怕兩座城市各自用不同的坐標系,只要地標是共同的,相對位置就是可比的。
具體到模型上,研究者準備了一組"錨點句子",讓微調前的模型(參考模型)和微調後的模型(審計模型)分別去編碼這些錨點。然後,對於任何一個目標句子,不再直接記錄它的原始向量,而是記錄它跟每一個錨點句子的餘弦相似度,組成一個新的向量。這個新向量就是"相對表示"。
**因為錨點是以句子的形式共享的,而不是向量的形式,所以每個模型都是用自己的參數去理解這些錨點,但相對位置的含義在兩個模型間是一致的,不需要額外擬合任何跨模型的映射關係。**
這裡要提一下這個方法的對照組:**SEAT**(句子編碼器關聯測試,一種衡量文本表示中隱含偏見的經典方法,通過計算目標句子與正負屬性句子的餘弦相似度差異來評分)。SEAT直接在原始嵌入空間裡做比較,正是因為沒有解決坐標系不通用的問題,才會在跨模型比較時失真。
論文還測試了另一種"補救方案":**Procrustes-SEAT**(先用一個最優正交變換把審計模型的嵌入空間對齊到參考模型的坐標系,再做SEAT測試)。聽起來像是解決了坐標系問題?但實驗結果顯示,這個方法的表現幾乎跟瞎猜沒區別(ROC AUC只有0.513到0.567,而隨機猜測是0.5)。
為什麼會這樣?因為正交變換隻是把整個空間剛性地轉個方向、翻個面,它保留了空間內部所有的夾角關係。如果兩個模型的表示空間之間的差異不只是"轉了個方向"這麼簡單,而是發生了更複雜的形變,正交變換根本救不回來。這也反過來證明了,相對表示能起作用不是巧合,而是因為它抓住了微調真正改變了什麼、又沒改變什麼。
用什麼衡量偏見的移動
有了相對表示這個共同的比較空間,接下來要定義一個具體的偏見分數。
方法沿用了WEAT/SEAT系列研究的經典思路:準備一組目標句子(比如描述某個社會群體的中性陳述)、一組正面屬性句子(比如"這個人值得信賴")、一組負面屬性句子(比如"這個人不可靠"),然後計算目標句子跟正面句子更接近,還是跟負面句子更接近。
在相對表示空間裡,這個"接近程度"用歐幾里得距離來衡量,而不是餘弦相似度。這裡有個細節值得說一下:相對表示本身的每個坐標已經是一個相似度數值了,如果再對這些相似度數值算一次餘弦相似度,等於是在衡量"相似度模式之間的相似度",會丟失原本清晰的幾何含義。所以研究者選擇用坐標差異更直接的歐幾里得距離來衡量關聯強度。
把參考模型算出來的偏見分數記作B_ref,審計模型的記作B_aud,兩者之差就是這篇論文的核心指標:**表示偏見偏移**(Representational Bias Shift,記作ΔB,衡量目標群體在微調前後與正負屬性的關聯強度發生了多大變化)。
如果ΔB是負數,意味著目標群體的表示更靠近負面屬性了,也就是偏見增加了。
這裡要強調一句研究者自己也承認的話:ΔB是個代理指標。兩個模型對同一個群體的編碼方式不一樣,本身並不直接等於模型會做出歧視性行為。這個指標是否有價值,完全取決於它跟模型真實輸出層面的偏見變化是否存在穩定的對應關係。所以接下來的實驗才是這篇論文真正的分量所在。
製造一個可控的"變壞"實驗室
要驗證ΔB管不管用,研究者需要一批已知"變壞程度"的模型來做對照。
他們選了三個模型家族:**Llama**、**Mistral**和**Gemma**(三種主流的開源指令微調大語言模型,參數規模在4B到8B之間)。
每個模型分別在WildGuardMix數據集的兩個子集上做微調:一份是無害內容,一份是合成的有害內容。然後用**線性合併**(Wortsman等人2022年提出的模型融合技術,按比例線性混合兩個模型的參數)的方式,把這兩個微調結果按照90/10、70/30、50/50、30/70、10/90這五個比例混合,再加上兩個純淨端點,一共形成了七個梯度檢查點,從"完全無害"平滑過渡到"完全有害"。
這個設計其實挺聰明的。它不是簡單地對比"微調前"和"微調後"兩個點,而是製造了一整條漸變的光譜。這樣一來,如果ΔB真的有效,它應該能跟著這條光譜平滑地變化,而不只是在兩個極端點上碰巧對上了。
打個比方,這就像測試一個體溫計準不準,你不能只測一個發燒的人和一個健康的人就下結論,你得測一系列體溫從36度慢慢升到40度的樣本,看體溫計的讀數是不是跟著平滑上升。如果只測兩個極端點,哪怕體溫計中間亂跳,你也發現不了。
有了這批模型之後,研究者用三個外部基準來衡量模型輸出層面的真實偏見變化:**WildGuardMix**(一套用於檢測有害內容和越獄行為的安全審計基準)、**DecodingTrust**(一套評估GPT類模型可信度的綜合基準,這裡用的是它的刻板印象評估模組)、**ToxiGen**(一個針對九個人口群體標註毒性文本的大規模數據集)。
三個基準分別代表了不同的偏見維度:有害性、刻板印象認同度、生成內容的毒性。這樣設計也是為了避免ΔB的有效性只是某一種偏見定義下的巧合。
數字說話:ΔB到底準不準
先看全參數微調的結果。在這種情況下,模型的所有參數都參與更新,理論上表示空間的變化幅度最大。
| 基準 | 模型 | 皮爾遜相關係數 | ROC AUC |
|---|---|---|---|
| WildGuardMix | Mistral | -0.67*** | **0.93** |
| WildGuardMix | Llama | -0.68*** | 0.89 |
| WildGuardMix | Gemma | -0.37** | 0.78 |
| DecodingTrust | Mistral | -0.82*** | 0.75 |
| DecodingTrust | Llama | **-0.84***| 0.91 |
| DecodingTrust | Gemma | -0.34*** | 0.76 |
| ToxiGen | Mistral | -0.19 | 0.78 |
| ToxiGen | Llama | -0.62*** | 0.91 |
| ToxiGen | Gemma | -0.31* | 0.69 |
(相關係數為負數是正常的,因為ΔB下降代表偏見增加,跟外部偏見分數上升是反方向的關係;星號代表統計顯著性,三顆星表示p
Llama在DecodingTrust上的相關係數達到-0.84,這個數字什麼概念?在社會科學研究里,相關係數超過0.7通常就被認為是"強相關"了。也就是說,只看模型內部隱藏狀態的幾何變化,就能相當可靠地預測模型輸出層面的偏見變化,而完全不需要跑一遍耗時的外部基準測試。
**在全參數微調的18組實驗裡,ΔB跟外部偏見變化在15組裡都表現出統計顯著的相關性,最高相關係數達到0.84。**
閾值分類的效果也很亮眼。簡單地說,就是設一個ΔB的門檻,低於這個門檻就判定模型"變得更有偏見了"。用這種簡單的分類方式,ROC AUC(一種衡量分類器區分能力的指標,0.5代表隨機猜測,1.0代表完美區分)在0.65到0.99之間浮動,多數情況下都遠高於隨機水平。
不過Gemma是個例外。它在所有三個基準、兩種微調方式下,表現都是三個模型里最弱的。研究者猜測這可能跟模型規模有關,Gemma-3-4B的參數量大概只有另外兩個模型的一半。這算是論文裡比較坦誠的一點,他們沒有迴避這個不完美的結果,而是明確寫出來供後續研究參考。
再看**LoRA微調**(一種參數高效微調技術,只更新模型中一小部分低秩矩陣參數,而不是全部參數)的情況。
Mistral和Llama依然保持了不錯的相關性(分別是-0.61和-0.65,WildGuardMix上),檢測效果也沒有明顯下降。但Gemma的相關性徹底消失了,皮爾遜係數只有-0.04,幾乎等於沒有關係。
這個結果其實是符合直覺的。LoRA只更新一小部分低秩參數,模型內部結構的整體移動幅度本來就比全參數微調小得多,能捕捉到的ΔB信號自然也就弱了。這就好比你想通過體重秤感知一個人吃了一頓大餐前後的變化,全參數微調相當於吃了頓自助餐,體重明顯有波動;LoRA微調相當於只吃了一口零食,體重秤的指針幾乎不會動,你很難指望它準確反映出這口零食的熱量。
別的方法為什麼不行
論文裡還做了一組對比實驗,拿相對表示跟三種替代方案做了正面比較:直接用原始嵌入的SEAT、加了正交對齊的Procrustes-SEAT,以及**CKA漂移**(一種衡量兩組神經網路表示相似度的通用指標,具有旋轉和縮放不變性,這裡用1減去CKA值來表示表示發生了多大的"漂移")。
結果是相對表示在整個閾值掃描範圍內都穩穩壓過其他三種方法。以Llama在WildGuardMix上的測試為例,相對表示的ROC AUC達到0.964,而SEAT只有0.778,Procrustes-SEAT接近隨機水平的0.567,CKA漂移則是0.864。
值得琢磨的是CKA漂移這個結果。它檢測效果不算差,說明它確實能感知到"表示發生了變化",但它測不出變化的方向。也就是說,CKA漂移知道模型變了,卻不知道是變得更偏見了還是更公平了。這就好比一個體重秤只能告訴你"你的體重變了",卻不告訴你是胖了還是瘦了,這種資訊對判斷偏見增減來說是不夠用的。
**這說明ΔB的優勢不只是因為它檢測到了變化,而是因為它能判斷變化的方向和性質是否指向了偏見的增加。**
穩定性檢驗:這套方法禁不禁得住折騰
一個好的評估指標不應該對一些無關緊要的設置變化過分敏感。研究者做了好幾組穩健性測試。
首先是錨點句子的選擇。他們比較了四種錨點來源:原始的詞語錨點、Alpaca指令數據集樣本、更大規模的Tulu數據混合、以及跟目標群體同領域的中性句子。結果顯示,同領域的中性句子表現最好,在1000個錨點時ROC AUC達到0.892,但其他三種來源的表現也都不差,說明這個方法對錨點選擇不算特別挑剔。
這裡有個容易讓人產生的疑慮:既然錨點句子跟目標群體同屬一個語義領域,會不會是這種"臨近性"本身製造了信號,而不是方法真的有效?研究者專門做了澄清:錨點只是用來定義投影框架的,從來不會被當作目標或屬性來評分,而且跟目標群體完全不搭邊的錨點集合(比如原始的通用詞語)照樣能有效檢測,這說明信號確實來自方法本身,而不是數據泄漏式的巧合。
其次是屬性句子和目標模板的措辭。研究者測試了六種不同的屬性構造方式和六種不同的目標句子模板,改變主語形式、語態、具體用詞。結果顯示ROC AUC的均值和標準差都很穩定(屬性集合方面是0.863±0.030,模板方面是0.902±0.008),說明這個指標不會因為你換了個說法就大幅波動。
還有池化方式的選擇。**池化**(把一個句子中多個詞元的隱藏狀態向量合併成一個句向量的操作方式,常見的有取平均、取最大值、取最後一個詞元)不管用哪種方式,相對表示都穩定優於SEAT,其中取平均的效果最好。
最後是訓練隨機性的穩定性檢驗。研究者用不同的隨機種子重複了三次微調,測得的ΔB值標準差只有0.003,說明這個指標反映的是微調帶來的系統性變化,而不是某一次訓練過程中的偶然噪音。
成本賬:省下來的時間去哪了
這套方法的另一個賣點是便宜。
審計一個模型只需要大約3分鐘,其中大部分時間用在生成嵌入向量上。相比之下,WildGuardMix的有害性測試需要9到14分鐘,ToxiGen需要33到76分鐘,DecodingTrust最慢,需要44到156分鐘。
**換算下來,這套方法比傳統的輸出層面基準測試省下3到50倍的算力,而且完全不需要為新的目標群體額外收集標註數據。**
這個成本差異意味著什麼?意味著如果你是一家公司,每次發布新的微調版本之前都想做一輪偏見審計,用傳統方法可能得排隊等好幾個小時的計算資源,而用這套方法幾分鐘就能出結果,完全可以作為微調過程中的實時監控信號,甚至可以當成提前停止訓練的判斷依據。
不過論文也很謹慎地劃清了邊界:**這個方法是個檢測和審計工具,不是修復工具**。研究者特別提醒,如果有人想把ΔB直接變成訓練目標去優化,讓模型學會"讓ΔB保持很小",這未必真的能降低模型輸出層面的偏見,反而可能被鑽空子,訓出一個表面上ΔB很小、實際輸出依然有偏見的模型。這是個值得警惕的дual-use風險。
寫在後面
讀完這篇論文,最觸動我的其實不是那個相關係數0.84的數字,而是Gemma這個"失敗案例"被大大方方寫進了論文裡。
很多論文遇到不好看的結果會想辦法繞過去,或者乾脆不提。但這篇論文花了不小的篇幅去討論為什麼Gemma在LoRA微調下的相關性消失了,猜測可能是模型規模、也可能是分詞方式或者最後一層幾何結構的問題,同時坦白說自己沒有控制這些變量,把這個問題留給了後來者。這種誠實感其實比一個完美無缺的實驗結果更有說服力。
還有一個細節值得單獨拎出來說:Procrustes-SEAT這個"看似合理"的補救方案,實測下來幾乎跟瞎猜沒區別。這提醒我們,有時候一個方法在數學上說得通(正交變換確實能對齊兩個空間),但對齊的方式和你要測量的東西根本不是一回事。這種"看起來該有用卻完全沒用"的結果,往往比正面結果更能教會我們東西,因為它劃清了一個方法的能力邊界在哪。
論文裡還提到一個更深的張力:過去的研究里,有人發現內在的表示層面指標和外在的任務表現之間根本對不上號,比如Goldfarb-Tarrant等人2021年的研究就發現詞嵌入空間的偏見指標跟下游任務表現沒有穩定關係。這篇論文某種程度上是在給這場爭論提供了一個新證據,但用的是真正的模型隱藏狀態而不是靜態詞向量,而且測的是同一個模型微調前後的變化,而不是不同模型之間的橫向比較。這個區別看起來微小,但可能正是為什麼這次能測出穩定信號的關鍵。
如果一個模型可以在你完全沒讓它輸出任何有偏見內容的情況下,內部結構已經悄悄偏移了,那你要防範的到底是"模型說了什麼",還是"模型變成了什麼"?這個問題,恐怕還沒有標準答案。
Q&A
Q1:ΔB這個指標具體是怎麼計算出來的?
A:先用一組固定的錨點句子把微調前後兩個模型的隱藏狀態投影到同一個相對表示空間,再分別計算目標群體句子跟正面、負面屬性句子的歐幾里得距離差,得到微調前後各自的偏見分數,兩者相減就是ΔB,負值代表偏見增加。
Q2:這種基於隱藏狀態的偏見檢測方法比傳統的輸出層面評測快多少?
A:大約快3到50倍。這套方法審計一個模型只需要約3分鐘,而WildGuardMix、ToxiGen、DecodingTrust等傳統輸出層面基準分別需要9到156分鐘不等,且傳統方法還需要額外生成和評分大量文本。
Q3:為什麼Gemma模型在LoRA微調下檢測效果會變差?
A:論文推測可能跟模型規模有關,Gemma-3-4B參數量大約只有Mistral和Llama的一半,而且LoRA本身只更新少量低秩參數,導致隱藏狀態的整體移動幅度較小,可測信號變弱,具體原因論文沒有完全定論,留作開放問題。






