✍️ Gate 廣場「創作者認證激勵計劃」進行中!
我們歡迎優質創作者積極創作,申請認證
贏取豪華代幣獎池、Gate 精美周邊、流量曝光等超過 $10,000+ 豐厚獎勵!
立即報名 👉 https://www.gate.com/questionnaire/7159
📕 認證申請步驟:
1️⃣ App 首頁底部進入【廣場】 → 點擊右上角頭像進入個人主頁
2️⃣ 點擊頭像右下角【申請認證】進入認證頁面,等待審核
讓優質內容被更多人看到,一起共建創作者社區!
活動詳情:https://www.gate.com/announcements/article/47889
剛剛遇到一些一直困擾我關於生產ML系統的問題。大家都很在意輸出指標——準確率、精確率、召回率——但當這些指標下降時,問題已經很嚴重了。真正的問題其實發生在更早的階段,也就是輸入層。
我一直在閱讀一種完全顛覆傳統的方法。不是監控模型的輸出,而是監測你的輸入資料是否仍然像在訓練時那樣運作。聽起來很簡單,但實作上卻很巧妙。
這個核心想法是利用最近鄰(nearest neighbors)進行密度估計,並配合KL divergence(KL divergence)來判斷。原因很簡單:你先從訓練資料建立一個基準,然後用滑動視窗持續比較進入的資料與基準的差異。當KL divergence(KL divergence)突然超過設定的閾值,就代表資料已經偏移了。這不需要假設資料的分布,也不需要打開模型內部來檢查。
想像一下,一個在疫情前行為資料上訓練的電商推薦引擎。顧客偏好改變、購物模式演變,但傳統的監控可能要幾天才察覺。這個利用最近鄰(nearest neighbors)的方法可以立即捕捉到——你的特徵向量不再符合原本的分布,提前被標記出來,性能還沒明顯下降就已經警示。
實務上,細節也很重要。視窗大小很關鍵——太小會追蹤噪音,太大則可能錯過快速變化。閾值校準也是如此。一個可靠的方法是將你的同質訓練資料分成連續的視窗,計算成對的KL divergence(KL divergence),然後用第95或第99百分位作為閾值。
至於k值的選擇,取樣本數的平方根是一個合理的起點。較大的k使密度估計較不敏感但較平滑,較小的k則能捕捉異常但容易過擬合噪音。
在大規模應用中,可以透過抽樣策略、近似最近鄰庫如Annoy或Faiss,以及平行處理來管理。你不需要從零重新計算,只是逐步更新滾動統計數據。
這個方法的最大優點是它的模型無關性。無論你是用簡單的分類器還是複雜的模型,都可以使用。它本質上建立了一個預警系統,能在模型察覺到資料偏移之前就先行警示。這種防禦性工程,正是讓生產系統保持穩定的關鍵。