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

揪出錯誤標籤:可信學習與弱監督

如何有原則地估計標籤雜訊、把具體標錯的樣本浮現出來,並在人力跟不上時大規模地產生標籤。

雜訊並非隨機

真實的標籤(label)雜訊是有結構的:標註者會混淆特定的類別配對、模稜兩可的實例被隨機翻面、罕見類別被系統性地併入常見類別。把雜訊當成均勻隨機翻轉很方便,卻幾乎總是錯的。正確的對象是 (真實標籤, 觀測標籤) 上的聯合分布——一個類似混淆矩陣的物件,其非對角線的質量精確地告訴你哪些錯誤會發生、以及多常發生。

可信學習(confident learning)在不過度信任雜訊標籤的前提下估計這個聯合分布。核心想法是逐類別的信心門檻:唯有當模型對類別 j 的預測機率超過它指派給 j 之真實成員的平均自我信心時,才把該樣本計入類別 j。這種設門檻能抵銷模型大部分的校準偏差(miscalibration)與類別頻率偏差,使非對角線的計數近似於真正的標錯,而非單純的預測失誤。

t_j=\frac{1}{\lvert X_{\tilde{y}=j}\rvert}\sum_{x\in X_{\tilde{y}=j}}\hat{p}\!\left(\tilde{y}=j;\,x,\theta\right)

每個類別的自信度閾值:類別 j 的閾值是被標註為 j 的樣本中模型預測為 j 的平均機率。

可信學習的配方

  1. 透過交叉驗證取得每筆樣本的樣本外預測機率,讓任何一點都不會被訓練過它的模型評分。
  2. 把每個類別的自我信心門檻算成:被標為該類別的樣本上的平均預測機率。
  3. 建立可信聯合分布:對每個被標的類別,計算有多少樣本可信地屬於其他每個類別。
  4. 依邊際(非對角線類別的預測機率減去給定標籤的預測機率)對疑似錯誤排序,把名單頂端送去重新標註。
自信聯合矩陣是透過計數填入的類別×類別矩陣——就像混淆矩陣,其非對角單元格裝的就是疑似標註錯誤。

一個混淆矩陣網格,包含真陽性、假陽性、假陰性與真陰性單元格。

psx = crossval_predict_proba(X, y)          # out-of-sample probs
thr = [psx[y==c, c].mean() for c in classes]  # per-class confidence
joint = confident_joint(psx, y, thr)         # noisy x true counts
suspects = rank_by_margin(psx, y)            # most-likely mislabeled first
四行的可信學習:交叉驗證機率、逐類別門檻、可信聯合分布,最後是一份排序後的錯誤清單。

當標籤還不存在時

可信學習清理你已有的標籤;程式化標註(programmatic labeling)則在人工標註(hand annotation)無法規模化時產生標籤。你寫出許多帶雜訊的標註函數——啟發式規則、正規表示式、遠距監督查表,或對大型模型下的提示——每個都對部分樣本投票、對其餘棄權。這些正是經典的弱監督(weak supervision)來源:個別不可靠、彼此常相關,但合起來具資訊量。

接著一個標籤模型沒有真值的情況下,透過擬合這些函數之間的一致與不一致,學出每個來源的準確率與它們的相關結構。它對每筆樣本輸出一個機率式標籤,你再用對雜訊有覺察的損失去訓練。功夫在於來源本身:覆蓋整個空間、讓它們的錯誤保持多樣,並小心某個主導來源悄悄把自身偏差強加到所有下游。

P_\theta(y,\lambda)=\frac{1}{Z_\theta}\exp\!\left(\sum_{j=1}^{m}\theta_j\,\mathbb{1}\!\left[\lambda_j=y\right]\right)

弱監督的標籤模型:它按每個標註函式學到的準確率 θ_j 加權,獎勵與潛在真實標籤 y 的一致——無需真值。

扣回品質

兩種技術餵的是同一個儀表板。可信學習估出的聯合分布本身就是一個資料品質指標(data-quality metric)——它的非對角線質量就是你的標籤雜訊率,並按類別拆解。標籤模型的準確率告訴你該信任哪些弱來源。在類別不平衡(class imbalance)與長尾之下,務必逐類別回報這些數字、絕不只看總和,否則乾淨的頭部會掩蓋壞掉的尾部。