JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

AI 中的偏見與公平

當一個模型對某些群體的對待比對另一些群體更差時,原因很少是某一行惡意程式碼——它藏在資料裡、標籤裡,甚至藏在我們對「公平」的定義裡。這篇導讀梳理演算法偏見從何而來,以及為什麼那些看似整潔的公平性指標會悄悄彼此矛盾。

偏見不是你能用 grep 搜到的 bug

到現在你已經知道,一個模型裡裝的並不是某人敲進去的規則,而是為了最小化損失、根據資料擬合出來的參數。僅這一點就重塑了關於公平的整場討論。當一個招聘模型偏向某個群體時,通常並沒有哪一行寫著 `if female: reject`。模型只是在做它被訓練去做的事——複現它所見樣本中的模式。[[algorithmic-bias|演算法偏見]]就是由此產生的、系統性的、與群體相關的誤差;而令人不安的真相是,它是「資料加目標」所湧現出的性質,而不是一個你能找到並刪掉的拼寫錯誤。

把聽起來相似、含義卻相反的兩種「偏差/偏見」分開會很有幫助。在你統計學階梯裡學過的偏差—變異意義上,偏差指模型太簡單、抓不住現實——這是個純技術量。而在公平意義上,偏見恰恰意味著模型*太準確*地捕捉了一個本身就不公正的現實。一個模型完全可以同時擁有低統計偏差和高社會偏見。把兩者分清,能省去許多各說各話的爭論。

偏見究竟從哪裡進來

第一個來源是資料本身。[[dataset-bias|資料集偏差]]指你的訓練集並不是模型將要面對的那個世界的公平取樣。也許一個醫學資料集 90% 來自某一血統,於是模型在淺膚色上學會辨識皮損,卻在深膚色上栽跟頭。也許歷史貸款紀錄反映了幾十年的「紅線劃區」歧視,於是「誰還了款」和「誰曾經獲得過貸款機會」糾纏在了一起。模型無從得知樣本是偏的——對它來說,資料*就是*世界。這直接關聯到你早先遇到的類別不平衡和取樣問題,只不過現在賭注變成了活生生的人。

第二個來源是標籤。大多數監督學習訓練依賴人工標註,而人會把自己的處境一併帶進來。給「毒性」打分的標註者,可能更常把非裔美國人英語方言標為粗魯;評判「職業形象」的評分者,會帶入自己的文化規範。標籤本應是真實答案,但它其實是*某個人的判斷被凍結成了一個數字*。如果這種判斷在不同群體之間並不均衡,模型就會繼承這種不均衡——更糟的是,它還會把其中的分歧磨平成一個自信滿滿的單一答案。

第三個來源最為狡猾:模型抓住了一個偽相關——一種在訓練資料中成立、卻不是你真正在意的東西的模式。一個皮膚癌偵測器學到,手術尺(醫生放在真腫瘤旁邊的)能預測惡性;一個肺炎模型讀的是醫院攜帶式掃描儀的浮水印,而不是肺。這種捷徑學習既高效又往往隱形——尤其是在一個抽自同一偏斜來源的測試集上,根本看不出來;這正是為什麼偏見能在一個看起來很漂亮的準確率數字背後存活下來。

定義「公平」——並發現它是複數

要度量公平,你就得先定義它;而你一旦動手去定義,它就碎裂開來。最簡單的群體定義是[[demographic-parity|人口平價]](demographic parity):模型對每個群體應當接受相同的*比例*。如果 20% 的男性獲得貸款,那麼也應有 20% 的女性獲得。它直觀、易於稽核。但它忽略了各群體中的人在你要預測的那件事上是否真的相似——它可能逼著你為了拉平比例,去批准某個群體中不合格的申請人,或拒絕另一個群體中合格的申請人。

一個更精細的概念是[[equalized-odds|均等勝算]](equalized odds):在那些*確實*合格的人當中,各群體的通過率應當一致(真陽性率相等);在那些確實不合格的人當中,犯錯率也應一致(假陽性率相等)。它說的是「對所有人犯同樣種類、同樣比例的錯誤」,這感覺更接近正義。回想你的評估階梯——這些不過是按群體切分的混淆矩陣切片,是你早已熟悉的真/假陽性率,只是分別在每個群體上單獨計算而已。

下面這個結論,終結了「存在唯一完美指標」的幻想。除非各群體的底層基礎率完全相同——或者你的模型是個完美的先知——否則你*不可能*同時滿足人口平價、均等勝算和預測值相等這三者。這是一個已被證明的不可能性,而非工程上的不足。因此,選擇一個公平定義,本質上就是在選擇誰的錯誤更要緊;它是一個披著公式外衣的價值判斷,再多的聰明才智也化解不掉這個取捨。

Group A: base rate 30% qualify   Group B: base rate 10% qualify

Force equal acceptance (parity)  ->  must over-accept B or reject qualified A
Force equal error rates (odds)   ->  acceptance fractions then differ

  parity  AND  equalized-odds  AND  equal predictive value
  ---- impossible together unless base rates match ----
不同的基礎率使三條公平準則相互排斥——這是那個不可能性結論的示意圖。

群體公平與個體

上面每一個指標都是*群體*統計量——它比較的是各類別之間的平均值。但還有一種與之競爭的直覺,即個體公平:相似的人應當被相似地對待,無關群體。這兩種理想會正面相撞。為拉平結果而對各群體分別調整閾值(群體公平),就意味著兩個檔案完全相同的申請人,會因為群體不同而得到不同的決定(個體不公)。這裡沒有中立地帶;即便是「對所有人用同一條規則」,本身也是一個有贏家和輸家的選擇。

還有一類傷害,是任何分配性指標都完全捕捉不到的:[[representational-harm|表徵性傷害]]。它指系統貶低或抹除某個群體,而不是錯配某種資源。一個把「CEO」一律生成為男性、把「護士」一律生成為女性的圖像生成器;一個把「穆斯林是」補全為暴力的自動補全;一個預設把醫生譯為「他」的翻譯工具——這些都沒有拒絕任何人的貸款,可每一個都在大規模地強化刻板印象。由於這種傷害關乎意義與尊嚴,而非一個是/否的決定,你無法用混淆矩陣去稽核它;你必須去看模型究竟*說了*什麼、*描繪了*什麼。

你實際上能做些什麼

這一切並不是要你絕望。偏見並非無法修補;它只是無法*自動地、一勞永逸地*修補。誠實的做法是:讓偏見顯形,讓取捨攤在明處,然後在部署之後持續盯著。把公平當作一項持續進行的稽核,而不是發布前打勾的一個選項框。

  1. 拆分你的評估:永遠別相信一個總體準確率數字。把每個指標都按群體切片,去看最差的那一片,而不是平均值。
  2. 審問資料和標籤:誰被遺漏了,是誰標註的,又有什麼東西可能成為敏感特徵的代理或捷徑?
  3. 審慎地選定一個公平定義,寫清楚為什麼,並承認這個選擇犧牲了什麼——因為你不可能全都要。
  4. 在高風險決策中保留一個人在迴路裡,並在發布後持續監控,因為世界會隨時間漂離你的訓練資料。