標註研究的統計功效與樣本量
你需要多少條目才能讓結果具有意義,為什麼這是一個與每條目需要多少標註者不同的問題,以及如何避免功效不足、結論誇大的標註和評估研究。
"要多少標註者?"和"要多少條目?"是兩個經常被混淆的不同問題。標註者重疊決定了每個條目標籤的可靠程度;條目數量決定了你觀察到的差異是真實的還是噪聲。一項研究即使每個條目有五名標註者,也可能因規模太小而支撐不起它的結論。 本指南討論的是第二個維度——統計功效,以及如何防止一項標註或評估研究做出超出其資料支撐的斷言。
兩筆預算,而非一筆
每個標註項目都會沿著兩個相互獨立的維度投入精力,把它們分開命名會很有幫助:
- 重疊(每條目的標註者數):為你換來標籤的可靠性,即對某個條目標籤正確性的信心。這是你需要多少標註者?所討論的主題。
- 樣本量(條目數量):為你換來統計功效,即在不同條件、模型或群體之間檢測出真實差異的能力。
兩者爭奪一份固定的預算,卻解決著不同的問題。十名標註者標註 50 個條目,會給你非常可靠的標籤,但樣本太小,無法比較任何東西。一名標註者標註 5000 個條目,會給你帶噪聲的標籤,但數量足以檢測出真實的效應。你即將犯下的是哪一種錯誤,取決於你實際在問的是哪個問題。
什麼是統計功效
統計功效是你的研究檢測出一個確實存在的效應的機率。功效低意味著,即使模型 A 確實優於模型 B,你的實驗也常常無法顯示出來;而更不易察覺的是,你確實得到的那些"顯著"結果更有可能是效應量被誇大的偶然結果。慣例是以 80% 的功效為目標,這要求你事先決定值得檢測的最小差異,並據此確定研究規模以捕捉它。
令人不安的發現是這一步被略過的頻率有多高。Card et al. (2020) 對常見的 NLP 設定進行了功效分析,發現許多已發表的比較嚴重功效不足:要可靠地檢測典型論文所聲稱的那些微小差異,尤其是在人工評估中,往往需要數百到數千個條目,遠多於研究實際使用的數量。他們的實用啟示是在收集資料之前就執行功效計算,而不是事後再倒推顯著性。
把顯著性檢驗做對
擁有足夠的條目是必要的,但並不充分;你還必須正確地做檢驗。Dror et al. (2018) 是這方面的標準參考,它的建議很具體:
- 讓檢驗與資料相匹配。 NLP 指標通常並不服從正態分佈,因此應依靠非參數方法——bootstrap 檢驗和置換檢驗,而不要假定 t 檢驗適用。
- 對多重比較進行校正。 檢驗眾多模型、指標或子群會抬高假陽性率;當你進行多次檢驗時,請做校正(Bonferroni,或者更好的 Benjamini-Hochberg)。
- 報告效應量和置信區間,而不僅僅是 p 值。 在條目足夠多時,一個差異可以在統計上顯著卻在實際中毫無意義。效應量和區間會告訴讀者是否值得在意。
一套可行的方案
- 說明會產生實際意義的最小差異(比如勝率上 2 個百分點的差異)。
- 針對該效應以 80% 的功效執行一次功效分析,得到目標條目數量。
- 根據標籤的主觀程度,單獨決定重疊(見標註者數量指南)。
- 收集完成後,使用 bootstrap 檢驗或置換檢驗,針對比較次數進行校正,並報告帶區間的效應量。
順序很重要:在看過資料之後才確定研究規模,正是功效不足的結果被包裝成發現的方式。
在 Potato 中如何操作
功效是一項設計決策,而非某個配置鍵,但 Potato 的職責是給你乾淨的資料來執行分析。在任務分配中,用重疊來設定可靠性,用實例數量來設定樣本量:
automatic_assignment:
on: true
instance_per_annotator: 400 # sample size: items each annotator sees
labels_per_instance: 3 # overlap: reliability per item這兩個旋鈕的相互獨立是有意為之的。匯出會保留每位標註者的單獨標籤及其 ID 和時間戳,這正是讓你在離線計算顯著性時能夠按條目和按標註者進行 bootstrap 重取樣的關鍵。保留每位標註者的標籤,而不是隻保留聚合結果,才使得一次恰當的、顧及功效的分析成為可能;如果過早地坍縮為單一的金標準標籤,你就丟掉了 bootstrap 所需的方差。