分歧是訊號,不是噪聲:何時該保留標註員的分歧,而不是把它消解掉
標註流程往往被設計成抹去分歧,但在主觀任務上,分歧本身就是資料。一份關於如何區分真實標籤差異與錯誤、並在 Potato 裡把它保留下來的指南。
標準的標註流程就是一臺生產一致性的機器。你寫標註指南、培訓標註員、測量標註者間一致性、對眾人分歧的個案做裁定,然後為每條資料交付一個單一的黃金標籤。每個步驟都是為了把分歧擠出去,其前提假設是:分歧就是錯誤,而錯誤應當被最小化。對很多工而言,這個假設沒問題。但對另外很多工,它悄悄地扔掉了資料裡最有意思的東西。
當標註員產生分歧時,這分歧有時是要消解的錯誤,有時卻是要保留的真實差異。在有真正正確答案的客觀任務上,就聚合成一個黃金標籤。而在主觀或帶視角的任務上,一個單一的黃金標籤會抹去人類判斷的一整片真實分佈;這時你更應該保留每位標註員的標籤,存下一個分佈而不是一個勝者,並在測量一致性時不預設「低於滿分就等於壞了」。 這篇文章講的就是如何區分這兩種情形,並在分歧重要的時候把它守住。
單一黃金標籤的假設
大多數機器學習仍然假設每條資料存在唯一正確的解讀,這正是標註預設走向聚合的原因:取三個標籤,取多數,把它稱作真值。Plank(2022)把這稱作人類標籤差異的「問題」,之所以打引號,是因為這套框架本身才是問題所在。人們打標籤方式上的真實差異,並不總是圍繞某個隱藏真值的噪聲。有時候根本不存在單一真值,而眾多答案的散佈,才是對這條資料的誠實描述。
綜述文獻在各類任務上都印證了這一點。Uma 和同事(2021)梳理了 NLP 與計算機視覺中「從分歧中學習」的工作,發現人類分歧無處不在,從詞性標註到自然語言推理都是如此,同時也出現了越來越多的方法,從分歧中學習,而不是把它平均掉。視角主義轉向(Cabitza、Campagner 和 Basile,2021)把這一點推得更遠:按多數投票聚合有可能造成實實在在的誤導,而更好的做法是保留那些做標註的人的各自視角。
分歧從何而來
並非所有分歧含義都相同,有用的一步是去追問某個分歧究竟從何而來。三個來源基本涵蓋了大部分情況。
- 標註指南。 兩位標註員對同一條規則讀出了不同意思,或者規則根本沒覆蓋眼前這個個案。這種分歧是缺陷,修法是把標註指南講清楚,而不是保留這片散佈。試點輪次的存在,正是為了抓住這類問題。
- 標註員。 有人趕工、看錯,或者是個低品質的工作者在一路亂點。這是錯誤,應當被抓出來並剔除。它和真實差異不是一回事,把兩者混為一談,正是「保留分歧」變成「保留噪聲」的原因。
- 資料本身。 文本確實有歧義,或者判斷確實取決於是誰在讀。這個笑話冒犯人嗎?這條評論是正面還是喜憂參半?在這裡,不同的答案並不是錯誤。這才是值得保留的分歧。
關鍵的功夫在於把第三個來源與前兩個分開。標註指南的問題去修,標註員的錯誤去過濾,剩下的東西,即真實的資料層面差異,就是訊號。
把每個分歧追溯到它的來源:修好標註指南,過濾掉錯誤,保留真實的差異
客觀任務還是主觀任務
最清爽的經驗法則是:一個見多識廣、認真細緻的人,能否對答案篤定無疑。如果能,任務就是客觀的,黃金標籤是有意義的,分歧是要去消解的東西。某個日期是 4 月 3 日還是 3 月 4 日,是有答案的。某個句子是否包含一個命名實體,大多數時候也是有答案的。
如果一個見多識廣、認真細緻的人,仍可能出於正當理由落在不同答案上,那麼任務就是主觀的,硬要一個黃金標籤,就是在給資料強加一份它並不具備的確定性。冒犯性、毒性、幽默、禮貌、立場、影像美感:這些都取決於是誰在判斷,而判斷者之間的差異,往往才是你真正在意的那項屬性。這也正是標註員的人口統計資訊會顯現在標籤裡的地方,也是採集並報告這些資訊的全部理由。
大多數真實項目都不是純粹的某一種。一種務實的做法是先測量一致性,再去解讀它:高一致性意味著任務表現得像客觀任務,你可以聚合;而主觀任務上頑固地停在中等水平的一致性,不是一個要去修的失敗,而是一個要去保留的分佈。
保留分歧是什麼樣子
保留分歧,主要是一個關於你存什麼的決定。不再是每條資料一個標籤,而是保留解聚後的標籤:每位標註員的判斷,且與該標註員繫結。在此基礎上,你可以構建一個軟標籤,即一個跨類別的分佈而不是單一勝者,並針對這個分佈來訓練或評估。
聚合成一個黃金標籤並丟掉散佈,或者保留解聚後的分佈
這也改變了評估。一個預測分佈的模型,可以針對人類分佈而非單一標籤來打分,於是它會因為在人們不確定的資料上保持不確定而得到獎勵。在主觀任務上,這比拿準確率去對齊一個半數標註員都不認同的多數投票,是一個更誠實的目標。
這一切都不意味著放棄標註者間一致性。你依然測量一致性;只是不再把任何低於 1.0 的數字當成要消除的缺陷。一致性告訴你任務表現得有多客觀。是否要聚合,是你拿著這個數字另行做出的決定。
在 Potato 裡怎麼做
Potato 不強求共識。當多位標註員標註同一條資料時,他們的標籤按標註員分別儲存,所以解聚後的資料,即任何基於分佈的方法所需的原材料,預設就是你得到的東西。你可以在下游選擇是否聚合,而不是在採集時就丟掉這片散佈。
對於分歧其實關乎程度的任務,soft_label 類型讓單個標註員能直接表達一個分佈,把點數分配到各個類別,而不是隻挑一個:
annotation_schemes:
- annotation_type: soft_label
name: emotion_mix
description: Distribute 100 points to reflect how much each emotion applies.
labels: ["Joy", "Sadness", "Anger", "Fear", "Surprise"]
total: 100
show_distribution_chart: true至於把真實歧義與標註員錯誤分開,這正是你最需要區分的兩個來源,MACE 能幫上忙。它聯合估計每位標註員的能力分數和每條資料的熵,於是一個低能力的標註員(錯誤來源)和一條高熵的資料(真實差異來源)會呈現為不同的東西,而不是一堆混作一團、分不出彼此的分歧:
mace:
enabled: true
min_annotations_per_item: 3一個能力停在 0.4 附近的標註員,很可能在一路亂點,可以被過濾掉。一條在其餘可靠標註員之間呈現高熵的資料,則是真正有爭議的,那才是你要保留的分歧。當一個任務確實需要單一答案時,裁定為這些客觀個案而備,MACE 預測的標籤可以作為供裁定者參考的又一個訊號。要點在於,消解分歧成了你逐個任務做出的選擇,而不是流程替你做的預設動作。
接下來讀什麼
- 《負責任地採集標註員的人口統計資訊》,講為什麼判斷者之間的差異往往正是訊號。
- 《記錄你的標註資料集》,講如何把解聚後的標籤與一致性一併報告。
- 《標註者間一致性詳解》,講如何在不預設分歧即失敗的前提下測量一致性。
- 《裁定與消解分歧》,講那些單一標籤才是正確選擇的客觀個案。
主觀資料集展示了保留分歧能給你帶來什麼:GoEmotions 中細粒度、有爭議的情緒標籤,以及 Social Chemistry 中的社會規範判斷,在那裡講道理的人也會真正地各執一詞。