M09.06|模型監控與觀測:讓 AI 系統持續健康運作
部署只是開始 — 真正的挑戰是確保模型在真實世界不悄悄變差
本講學習重點
資料漂移(Data Drift):輸入特徵的統計分佈與訓練時不同;概念漂移(Concept Drift):輸入和輸出之間的真實關係改變
PSI(Population Stability Index):PSI < 0.1 穩定,0.1–0.2 需注意,> 0.2 需立即調查;KS 檢定用來判斷兩個分佈是否相同
代理指標監控:當真實標籤延遲時,用業務指標(點擊率、退款率)作為模型效能的代理信號
影子模式(Shadow Mode):新模型接收真實流量但不影響決策,用於上線前的無風險評估
金絲雀部署(Canary):先讓 5–10% 流量走新模型,確認無問題後逐步擴大到 100%
多維度監控:輸入特徵分佈、預測分佈、業務指標(轉換率)、系統指標(延遲、吞吐量)缺一不可
告警設計:靜態閾值 vs 動態基準線(考慮週期性波動,如週末效應)
🎙️ Podcast(中文)
一句話搞懂
模型監控就是替你部署的 AI 安裝「健康追蹤器」——因為訓練時的世界和上線後的真實世界會隨著時間越來越不一樣,任何沒有監控的模型都在默默衰老;好的監控系統能在模型效能明顯下滑「之前」就發出警報,讓你有時間在用戶發現問題前先行修復,而不是等到業績掉了才事後追查。
白話解說
為什麼模型上線後會變差
想像你在 2023 年用當時的消費資料訓練了一個信用評分模型,那時台灣的通膨率在 2% 左右,房貸利率是 1.5%,外食費用一個月平均 5,000 元。你的模型學習到「每月可支配收入 3 萬元的人,還款能力是 X」這樣的規則。
到了 2025 年,通膨已累積上升,利率調高,同樣月薪 3 萬元的人,實際可支配所得因物價上漲而縮水了 15%,還款壓力和 2023 年根本不是同一回事。你的模型還在用 2023 年學到的規則做預測,它不知道「世界已經變了」。
這就是 模型退化(Model Degradation) 的本質:模型是在某個時間點的世界快照上訓練出來的,而真實世界在不斷演化。退化不是模型出了 bug,而是模型對世界的「理解」逐漸過時了。
資料漂移 vs 概念漂移:兩種不同的「變了」
退化的原因主要分成兩大類,理解這個區別對於設計正確的監控策略非常重要:
資料漂移(Data Drift):輸入資料的統計特性改變了,但輸入和輸出之間的真實關係沒變。例如,你的電商推薦系統原本主要服務 25–35 歲的用戶,但最近一波行銷活動吸引了大量 55 歲以上的新用戶——模型的輸入分佈(用戶年齡)大幅偏移了。這個問題的嚴重程度取決於模型是否曾在類似分佈的資料上訓練過;如果 55 歲用戶的購買行為和 25 歲用戶根本不同,而模型從未見過這個族群,效能必然下滑。
概念漂移(Concept Drift):輸入特徵和預測目標之間的真實關係改變了。前面的信用評分例子就屬於這類——「月收入 3 萬元」這個特徵所代表的「還款能力」,在通膨前後有本質上的差異。概念漂移通常更難偵測,因為輸入資料的分佈可能看起來沒有明顯變化,但模型的預測和現實的偏差卻在悄悄擴大。新冠疫情期間,幾乎所有在疫情前訓練的消費行為模型都遭遇了劇烈的概念漂移——「用戶去電影院」從「高消費能力信號」變成了「幾乎不可能發生的事件」。
PSI 和 KS 檢定:量化分佈偏移的工具
發現了「可能有漂移」之後,需要有客觀的量化指標來判斷嚴重程度。最常用的兩個工具是:
PSI(Population Stability Index,族群穩定性指數):這個指標把特徵的分佈分成若干個桶(通常 10–20 個),比較訓練時的分佈和當前分佈在每個桶的比例差異,最後加總成一個單一數值。業界的標準判讀是:PSI < 0.1 表示分佈穩定,無需擔心;0.1 ≤ PSI < 0.2 表示分佈有輕微偏移,需要留意;PSI ≥ 0.2 表示分佈已明顯偏移,需要立即調查是否重新訓練。PSI 的優點是直覺、易懂、有業界公認的閾值;缺點是對分桶方式敏感。
KS 檢定(Kolmogorov-Smirnov Test):這是一個統計假設檢定,比較兩個分佈的累積分佈函數(CDF)的最大距離,並給出「兩個分佈是否顯著不同」的 p 值。KS 檢定對分佈的形狀變化很敏感,不需要分桶,但對於類別型特徵無法直接使用(需改用卡方檢定)。
實際的監控系統通常同時計算多個指標,並為每個重要特徵分別建立監控基準線,而不是只看整體的「平均漂移」。
標籤延遲問題:最大的監控難點
監控最理想的方式當然是「直接觀察模型的準確率是否下滑」。但這在實務中面臨一個根本的困難:標籤延遲(Label Latency)。
以貸款違約預測模型為例,模型今天做出預測「這個人大概率不會違約」,但真正的標籤(他最終有沒有違約)要 6–12 個月後才知道。在這漫長的等待期間,你根本沒有辦法直接計算「現在的準確率是多少」。
解決方案有以下幾種:
代理指標監控(Proxy Metrics):使用和真實效能高度相關的業務指標作為代理。信用評分模型可以監控「核准的貸款中,30 天逾期率」作為短期代理(比等 12 個月快得多);推薦系統可以監控點擊率、購買率、退貨率等業務指標;醫療診斷模型可以監控「模型建議追蹤但後來被醫生推翻的比例」。代理指標不完美,但是你在等待真實標籤時唯一能做的事。
人工標記(Human-in-the-Loop):對於高風險決策,建立一個持續的人工抽樣標記流程——每天隨機抽取 1–2% 的預測結果,由人工給出正確標籤,這樣就能在小樣本上即時計算模型的真實準確率。成本較高,但提供了最直接的品質信號。
快速反饋設計:在系統設計時刻意縮短標籤延遲。例如電商商品評分預測,與其等用戶自願留評(可能幾週後),不如在購買後 3 天主動推送一個五星評分的快速問卷,把反饋週期壓縮到 3 天,讓監控更即時。
監控架構:四個層面缺一不可
完整的模型監控不能只看一個維度,而必須同時覆蓋四個層面:
輸入資料品質監控:缺失值比例是否異常升高?類別特徵是否出現訓練時未見過的新值(Unknown Category)?數值特徵的分佈是否偏移(PSI、KS 檢定)?這一層的問題通常是最快能偵測到的。
預測分佈監控:模型輸出的機率分佈是否改變?例如信用評分模型若突然輸出大量「極高風險」評分,可能不是真的違約風暴,而是模型接收到了品質異常的輸入資料。
業務效果監控:這才是最終關心的東西——轉換率、違約率、用戶滿意度等業務指標。業務指標的變化可能滯後(有延遲),但它是判斷「模型退化是否真的影響業務」的最終證據。
系統健康監控:推論延遲(P50、P95、P99 分位數)、吞吐量(QPS)、錯誤率、記憶體和 GPU 使用率。這一層和 MLOps 的 DevOps 面向高度重疊,但不可忽視——一個推論延遲從 50ms 突然升到 500ms 的模型服務,即使準確率沒下降,也會嚴重損害用戶體驗。
應用場景
| 場景 | 主要漂移類型 | 代理指標 | 監控頻率建議 |
|---|---|---|---|
| 電商推薦系統 | 資料漂移(用戶行為隨季節變化) | 點擊率、加購率、訂單金額 | 每小時 |
| 信用評分模型 | 概念漂移(宏觀經濟環境變化) | 30 天逾期率、核准率 | 每日 |
| 詐欺偵測系統 | 概念漂移(詐欺手法不斷演化) | 人工審核推翻率、漏報案例率 | 即時 / 每小時 |
| 醫療影像診斷 | 資料漂移(不同醫院設備差異) | 醫生覆核不一致率 | 每週(設備更換後立即) |
| 自然語言處理客服 | 概念漂移(用語和議題隨時間演變) | 人工轉接率、客戶滿意度 | 每日 |
| 廣告出價模型 | 資料漂移(競爭對手行為、市場競價環境) | ROAS、CPA | 每小時 |
| 搜尋排名模型 | 概念漂移(用戶搜尋意圖和期望演化) | 零結果率、用戶重新搜尋率 | 每日 |
常見誤區
誤區 1:「只監控準確率,準確率沒掉就沒問題」
這是最危險的監控盲點。準確率是一個落後指標(Lagging Indicator)——等到準確率明顯下滑時,模型已經在錯誤地服務用戶很長一段時間了,尤其在有標籤延遲的場景(如信用評分、醫療診斷)中,你可能要等 6–12 個月後才能觀察到準確率退化,但模型實際上早在 3 個月前就已經開始失準了。
更完整的監控策略必須包含領先指標(Leading Indicators):輸入特徵分佈的 PSI 指標異常(在準確率退化之前就會發出信號),預測分佈的突然偏移(模型突然開始給出大量高信心錯誤預測),業務代理指標的輕微惡化(在用戶大量投訴之前,可能先看到退款率微升)。理想的監控體系應該是「在準確率下滑前 1–3 個月就收到警告」,而不是「準確率已經掉到不可接受的程度才被發現」。
此外,「準確率」本身也可能掩蓋問題。一個詐欺偵測模型的整體準確率是 99%,但如果它把所有欺詐案例都漏掉了(召回率 = 0),整體準確率還是因為「99% 的交易本來就是正常的」而顯得很高。分層的指標(按照用戶群、地區、時間段分別看)比全局準確率更能發現局部問題。
誤區 2:「設定一個固定的告警閾值就好了,超過就發警報」
靜態閾值(Static Threshold)聽起來很簡單直覺,但在實際應用中往往導致兩種問題:要麼告警太靈敏(每到週末或假日就觸發,因為用戶行為本來就和工作日不同),要麼閾值設得太寬鬆(真正的問題被忽略,因為閾值是按「最壞的正常情況」設定的)。
電商的轉換率在雙 11 當天比平時高 300%,在隔天又回落到正常水準——如果你的告警是「轉換率比過去 7 天平均值低 10% 就警報」,雙 11 過後的正常回落每年都會觸發誤報。
正確的做法是使用動態基準線(Dynamic Baseline):用統計模型對指標的正常波動建模,考慮周期性效應(週一到週日各有不同的正常範圍)、節日效應、長期趨勢,然後在「超出正常波動範圍的統計顯著程度」時才觸發告警。這類方法稱為異常偵測(Anomaly Detection),可以用簡單的移動平均 ± N 個標準差,也可以用 Prophet 等專門的時序預測模型來建立動態基準。此外,告警應該設置不同的嚴重程度(Info、Warning、Critical),避免所有告警都用同樣的方式通知,導致「告警疲勞(Alert Fatigue)」讓工程師開始忽略告警。
誤區 3:「影子模式測試通過了,新模型就可以直接 100% 上線」
影子模式(Shadow Mode)是一種非常有用的測試方式:讓新模型接收真實流量、做出預測,但預測結果不影響任何真實決策,只記錄下來和現有模型做比較。這個方法能發現很多在離線評估中沒有暴露的問題(如特定邊緣情境下的極端預測、未見過的輸入格式導致的系統異常)。
但影子模式有一個根本的侷限:它無法測試「部署後用戶行為的反饋迴路」。舉例來說,推薦系統的新模型在影子模式下生成的推薦列表,用戶從未真正看到,所以你無法知道用戶會不會點擊這些推薦——而用戶是否點擊,正是評估推薦模型最重要的信號。影子模式測試「模型的技術運行是否正常」,但不能測試「模型的業務效果是否如預期」。
因此,正確的新模型上線流程是:影子模式(確認技術運行無問題)→ 金絲雀部署(5–10% 流量,觀察業務指標)→ 逐步擴大(25%、50%、100%)→ 搭配回滾機制(若業務指標惡化立即切回舊模型)。直接從影子模式跳到 100% 上線,跳過了金絲雀部署這個最重要的「實際用戶反饋」驗證環節,風險遠比想像的高。
小練習
練習 1:設計監控方案
你的公司剛上線了一個電商商品「動態定價」模型,根據需求、庫存、競爭對手價格等 15 個特徵,每 10 分鐘自動調整商品售價。模型在上線三個月後,業務團隊反映「最近轉換率下滑,懷疑定價太高」。
請設計一個完整的模型監控方案,說明:
- 需要監控哪些指標(至少包含四個層面)?
- 哪個指標應該要最早發現問題(領先指標)?
- 如何判斷是「模型漂移」還是「競爭對手降價導致的正常商業反應」?
練習 2:解讀監控告警
你收到以下監控告警,請逐一判斷每個告警的可能原因,並排列處理的優先順序:
| 告警 | 告警內容 |
|---|---|
| A | 特徵「用戶年齡」的 PSI = 0.35(昨天還是 0.08) |
| B | 模型預測的「高風險比例」從平均 5% 突然升到 40% |
| C | 模型推論延遲 P99 從 80ms 升到 2,500ms |
| D | 轉換率比過去 30 天平均低 2%(今天是週一,上週週一是平均值) |
| E | 訓練特徵「商品類別」出現了 127 個之前未見過的新類別值 |