雜訊並非隨機
真實的標籤(label)雜訊是有結構的:標註者會混淆特定的類別配對、模稜兩可的實例被隨機翻面、罕見類別被系統性地併入常見類別。把雜訊當成均勻隨機翻轉很方便,卻幾乎總是錯的。正確的對象是 (真實標籤, 觀測標籤) 上的聯合分布——一個類似混淆矩陣的物件,其非對角線的質量精確地告訴你哪些錯誤會發生、以及多常發生。
可信學習(confident learning)在不過度信任雜訊標籤的前提下估計這個聯合分布。核心想法是逐類別的信心門檻:唯有當模型對類別 j 的預測機率超過它指派給 j 之真實成員的平均自我信心時,才把該樣本計入類別 j。這種設門檻能抵銷模型大部分的校準偏差(miscalibration)與類別頻率偏差,使非對角線的計數近似於真正的標錯,而非單純的預測失誤。
每個類別的自信度閾值:類別 j 的閾值是被標註為 j 的樣本中模型預測為 j 的平均機率。
可信學習的配方
- 透過交叉驗證取得每筆樣本的樣本外預測機率,讓任何一點都不會被訓練過它的模型評分。
- 把每個類別的自我信心門檻算成:被標為該類別的樣本上的平均預測機率。
- 建立可信聯合分布:對每個被標的類別,計算有多少樣本可信地屬於其他每個類別。
- 依邊際(非對角線類別的預測機率減去給定標籤的預測機率)對疑似錯誤排序,把名單頂端送去重新標註。
一個混淆矩陣網格,包含真陽性、假陽性、假陰性與真陰性單元格。
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)來源:個別不可靠、彼此常相關,但合起來具資訊量。
接著一個標籤模型在沒有真值的情況下,透過擬合這些函數之間的一致與不一致,學出每個來源的準確率與它們的相關結構。它對每筆樣本輸出一個機率式標籤,你再用對雜訊有覺察的損失去訓練。功夫在於來源本身:覆蓋整個空間、讓它們的錯誤保持多樣,並小心某個主導來源悄悄把自身偏差強加到所有下游。
弱監督的標籤模型:它按每個標註函式學到的準確率 θ_j 加權,獎勵與潛在真實標籤 y 的一致——無需真值。
扣回品質
兩種技術餵的是同一個儀表板。可信學習估出的聯合分布本身就是一個資料品質指標(data-quality metric)——它的非對角線質量就是你的標籤雜訊率,並按類別拆解。標籤模型的準確率告訴你該信任哪些弱來源。在類別不平衡(class imbalance)與長尾之下,務必逐類別回報這些數字、絕不只看總和,否則乾淨的頭部會掩蓋壞掉的尾部。