本地資料品質置信度評分
在本地評分訓練資料品質:標籤準確率、標注者間一致率、異常值檢測與置信度學習,全程無需雲端 API。
當您能夠量化訓練資料集的品質,並且該品質足夠高,使得在其上訓練的模型在生產環境中表現良好時,這個資料集才算準備 好。
大多數團隊將資料品質視為二元的:資料是「乾淨的」或者不是。實際上,品質是跨多個維度的一個連續體,資料中不同的問題導致訓練模型中不同的失敗模式。錯誤標記的示例導致模型學習錯誤的模式。重複聚類導致過度擬合。分佈不平衡導致少數類別性能不佳。異常值引入雜訊。
本指南談的是如何在這些維度上評分品質,全程不將資料發送到雲端 API。
訓練資料的品質維度
標籤準確率
最有影響力的品質維度。如果您的 10% 標籤是錯的,您的模型性能上限大約是 90%。實際上還會更低,因為錯誤的標籤會主動教導模型錯誤的模式。
如何在本地測量:
交叉驗證置信度:在資料集上訓練一個小模型,並檢查哪些示例模型始終答錯。模型與標籤不一致的示例是標籤錯誤的候選者。這是 Cleanlab 置信度學習方法的基礎。
本地 LLM 驗證:使用本地模型獨立預測每個示例的標籤。將模型預測與人工標籤進行比較。不一致之處需要人工重新審查。70 億指令遵循模型在領域特定任務上達不到人類專家的準確率。它仍然能捕獲明顯的錯誤,而明顯的錯誤正是最損害模型性能的那些。
標注者自一致性:如果同一標注者在不同時間標注了相同的內容,他們是否與自己一致?低自一致性表明標記指南不明確或標注者疲勞。
標注者間一致率
當多名標注者標注相同示例時,他們的一致率表明任務定義的清晰程度和標籤的可靠性。
Cohen's Kappa:測量兩名標注者之間的一致率,對偶然一致率進行了修正。0.8 以上的值表示強一致率;0.6 以下表明標記指南需要修訂。
Fleiss' Kappa:擴展到多名標注者。當您有領域專家池,不同專家標注不同子集時很有用。
Krippendorff's Alpha:處理缺失資料(並非每個標注者都標注每個示例),並適用於有序、區間和名義資料類型。最靈活的一致率指標。
對於服務提供者,標注者間一致率也是品質可交付物。當您向客戶交付資料集,其 Krippendorff's Alpha 為 0.85 時,這是一個有證據支持的可測量品質聲明。
| 一致率指標 | 分數範圍 | 解讀 |
|---|---|---|
| Cohen's Kappa | 0.81 到 1.00 | 幾乎完美的一致率 |
| Cohen's Kappa | 0.61 到 0.80 | 實質性一致率 |
| Cohen's Kappa | 0.41 到 0.60 | 中等一致率:審查指南 |
| Cohen's Kappa | 0.21 到 0.40 | 一般:標記問題嚴重 |
| Cohen's Kappa | 低於 0.20 | 輕微:任務定義不清楚 |
資料分佈平衡
類別不平衡直接影響模型性能。在 90% 為 A 類、10% 為 B 類的資料集上訓練的模型,通過簡單預測 A 類就能達到高的整體準確率,並且會在可能最重要的類別上失敗。
要追蹤的指標:
- 類別頻率分佈(標籤計數的條形圖)
- 不平衡比率(多數類別計數除以少數類別計數)
- 每個類別的有效樣本數(考慮到近似重複)
閾值:不平衡比率超過 10:1 通常需要通過資料增強、過度採樣、欠採樣或類別加權訓練來緩解。
重複檢測
近似重複在不增加資訊的情況下增加了資料集的有效大小。它們導致模型對重複的內容過度擬合,並降低泛化能力。
檢測方法(全部在本地):
MinHash/LSH:大規模高效的近似重複檢測。從 n-gram 計算 MinHash 簽名,使用 LSH 進行快速成對比較。即使格式不同,也能捕獲內容級別的重複。
嵌入聚類:使用本地模型計算嵌入,然後識別內部相似度非常高的聚類。緊密聚類中的記錄是近似重複的。
精確哈希:標準化內容的 SHA-256 哈希。捕獲字節相同的重複。
重複的影響:研究始終表明,在去重複的資料上訓練生成了具有更好泛化能力的模型,即使去重複後的資料集更小。通過去重複刪除 20% 的資料集通常能提高模型品質。
異常值識別
異常值是不屬於該資料集的記錄:離題內容、損壞的文字、從不同領域洩漏到資料集中的記錄。它們向訓練添加雜訊,並可能導致意外的模型行為。
統計異常值檢測:計算記錄級別的特徵(長度、詞彙多樣性、PII 密度),並標記超出 2 到 3 個標準差的記錄。
基於嵌入的異常值檢測:嵌入空間中距離所有聚類中心很 遠的記錄是潛在的異常值。計算到最近聚類中心的餘弦距離;超過閾值的記錄需要審查。
基於困惑度的檢測:使用本地語言模型對每條記錄的困惑度進行評分。困惑度異常高的記錄可能損壞、離題或使用了不同語言。
Cleanlab:它做得好的地方及其不足之處
Cleanlab 是 ML 資料集中最成熟的資料品質評分庫。其置信度學習算法通過分析模型預測和提供的標籤之間的關係,識別潛在的標籤錯誤。
Cleanlab 做得好的地方
- 標籤錯誤檢測:以高精度找到錯誤標記的示例。在已發表的基準測試中,Cleanlab 通常識別 50% 到 80% 的標籤錯誤,同時將誤報率保持在 20% 以下。
- 置信度評分:根據標籤與模型預測的一致程度,為每個示例分配品質分數。
- 多類別支持:適用於任意數量的類別,包括多標籤場景。
- 資料集級別品質指標:提供整體資料集健康分數和按類別的品質細分。
Cleanlab 對服務提供者的不足之處
僅支持 Python:Cleanlab 是一個 Python 庫。使用它需要編寫 Python 腳本、為置信度學習步驟配置模型訓練,並解釋程序輸出。ML 工程師可以輕鬆應對,而這讓 Cleanlab 對領域專家和合規官員來說難以使用。
無 GUI:結果以陣列和 DataFrame 形式返回。沒有用於審查已標記示例的視覺介面,非技術用戶無法檢查品質分數,也沒有用於合規審查的內建報告。
無審計追蹤:Cleanlab 不記錄哪些示例被標記、何時標記或採取了什麼行動。對於受監管行業,這是一個差距,因為您需要證明品質評分確實發生了,並且已標記的項目得到了處理。
需要整合:Cleanlab 在預格式化的資料集上運行。將資料從攝取管道轉換為 Cleanlab 就緒格式,並將結果返回管道,需要自訂整合代碼。
模型訓練依賴:置信度學習需要在資料集上訓練模型(通常通過交叉驗證)。這為品質評分步驟增加了計算時間和複雜性。
啟發式品質評分(不需要模型)
並非每個品質信號都需要模型推理。啟發式評分使用簡單規則提供快速、透明的品質估算:
| 啟發式方法 | 捕獲的內容 | 實施方式 |
|---|---|---|
| 文字長度(token) | 空、截斷或過長的記錄 | 計算 token;標記在 [50, 5000] 範圍外的 |
| 句子數 | 片段和連接錯誤 | 計算句子邊界;標記低於 2 的 |
| 詞彙多樣性 | 重複或樣板文字 | 類型-token 比率;標記低於 0.25 的 |
| 特殊字符比率 | OCR 偽影、編碼錯誤 | 計算非字母數字字符;標記高於 8% 的 |
| 語言置信度 | 混合語言或損壞的文字 | 語言檢測庫;標記低於 0.85 的 |
| 重複 n-gram | 複製貼上偽影 | 計算 4-gram 頻率;標記高重複率 |
| PII 密度 | 去識別化不足 | 計算每 100 token 的 PII 標記 |
啟發式評分在大型資料集(100,000 條以上記錄)上運行數秒,不需要 GPU。它們是在應用更昂貴的基於模型評分之前的有用初步篩選。
基於嵌入的品質分析
本地嵌入模型(例如通過 sentence-transformers 的 all-MiniLM-L6-v2,或通過 Ollama 的 nomic-embed-text)可以在沒有雲端 API 的情況下進行強大的品質分析:
連貫性評分
計算所有記錄嵌入的質心。每條記錄與質心的距離表明它有多「典型」。距質心很遠的記錄是潛在的異常值。
這是一個排名。按連貫性分數排名最低的 5% 應該被審查,而非自動刪除。
聚類分析
對嵌入空間應用 k-means 或 HDBSCAN 聚類。來自聚類的品質信號:
- 單一聚類:不與任何東西聚類的記錄可能是離題的
- 高度集中的聚類:在嵌入空間中幾乎相同的記錄是近似重複的
- 類別-聚類不對齊:如果標記說這些記錄是 A 類,但聚類將它們與 B 類記錄放在一起,可能有標籤錯誤