實際工作環境機器學習系統:監控管道

恭喜!您已部署 unicorn 模型。 您的模型應全天候執行,不會出現任何問題。為了確保工作順利執行 您必須監控機器學習 (ML) 管道

撰寫資料結構定義以驗證原始資料

如要監控資料,請持續檢查資料是否符合預期 編寫資料必須符合的規則,以便計算統計值。這個最愛 稱為「資料架構」定義資料結構定義的方法如下: 步驟如下:

  1. 瞭解功能的範圍和分佈情形。類別專用 屬性,瞭解可能的值集合。

  2. 將所學知識編碼成資料結構定義。以下是 規則:

    • 確定使用者提交的評分一律介於 1 到 5 之間。
    • 檢查 the 這個字詞是否出現頻率最高 (例如英文文字) 特徵)。
    • 檢查每個類別特徵是否設為固定組合的值 可能的值
  3. 根據資料結構定義測試資料。結構定義應擷取資料 錯誤,例如:

    • 異常狀況
    • 類別變數的未預期值
    • 未預期的資料分佈情形

撰寫單元測試以驗證特徵工程

雖然原始資料可能會通過資料結構定義,但模型並不會訓練 對原始資料的影響而是使用已輸入資料的特徵做為模型訓練 才有意義舉例來說,模型會透過正規化的數值特徵進行訓練 而非原始數值資料因為特徵工程資料 與原始輸入資料不同的是 您必須先檢查特徵工程資料 來獨立處理原始輸入資料的檢查。

依據您對特徵工程資料的理解撰寫單元測試。 舉例來說,您可以撰寫單元測試來檢查 包括:

  • 所有數值特徵都會經過縮放,例如介於 0 和 1 之間。
  • One-hot 編碼 向量只能包含一個 1 和 N-1 零
  • 轉換後的資料分佈情形符合預期。 舉例來說,如果您已使用 Z 分數進行正規化, Z 分數應為 0。
  • 離群值 處理速度和回應依據包括資源調度裁剪

查看重要資料區塊的指標

成功的各個部分有時會阻礙失敗的子集。也就是 即使模型的整體指標表現優異, 或在特定情況下。例如:

您的獨角獸模型整體成效良好,但如果 為撒哈拉沙漠做出預測

如果您覺得工程師滿意整體的 AUC 也許你沒有在撒哈拉沙漠中發現模型的問題如果 對「所有」地區而言,良好的預測品質都很重要,您必須追蹤 確保效能資料子集,例如相對應的 撒哈拉沙漠,稱為「資料切片」

找出感興趣的資料切片。 然後比較這些資料片段的模型指標 整個資料集確認模型在所有資料片段中都能正常運作 有助於消除偏誤詳情請見 公平性:評估偏誤 瞭解詳情

使用實際指標

模型指標不一定能評估模型的實際影響。 例如,變更超參數可能會增加模型的 AUC 這項異動是否會影響使用者體驗?如要評估實際影響,您需要 定義個別指標舉例來說,您可以對模型的使用者進行問卷調查 以確認模型預測他們確實有看到獨角獸 實際做法。

檢查訓練/應用偏差

訓練/應用偏差 代表訓練期間輸入的資料 所用的輸入資料下表說明 兩種重要的偏差類型

類型 定義 範例 解決方法
結構定義偏差 訓練和提供服務的輸入資料不符合相同的結構定義。 放送資料的格式或分佈情形 持續使用舊資料訓練模型 使用相同的結構定義來驗證訓練和提供資料。 請務必另外檢查 例如遺漏值的比例
特徵偏差 訓練和提供方式的資料有所不同。 特徵工程程式碼在訓練和提供作業中有所不同 以產生不同的工程資料 與結構定義偏差類似,在所有訓練中套用相同的統計規則 並提供工程資料追蹤號碼 模型偵測到的偏差特徵,以及每個特徵的偏斜樣本比率。

訓練/應用偏差的原因可能很小。 進行預測時,請務必考量模型能使用哪些資料。 在訓練期間,請僅使用您在訓練期間可用的功能,

,瞭解如何調查及移除這項存取權。

練習:隨堂測驗

假設您有一家網路商店 每一天能賺取的收益金額您的機器學習目標是每天 將客戶人數視為功能來衡量收益

你可能會遇到什麼問題?
按一下這裡查看解答

檢查標籤是否外洩

標籤外洩是指 要搭配的真值標籤 不小心輸入了訓練特徵唱片公司 洩漏事件有時非常難以偵測

練習:隨堂測驗

假設您建構了一個二元分類模型來預測 新醫院病患會患有癌症。模型所使用的特徵如下:

  • 病患年齡
  • 病患性別
  • 之前的疾病
  • 醫院名稱
  • 生命徵象
  • 測試結果
  • 遺傳

標籤如下:

  • Boolean:患者是否罹患癌症?

仔細分割資料,確保訓練集良好 獨立於您的驗證集和測試集。模型會執行 驗證集和測試集的良好。指標分別是 太棒了不幸的是,這個模型會對新病患進行地域 實際體驗

為什麼這個模型在測試集上表現出錯? 實際體驗?
按一下這裡查看解答

在整個管道中監控模型存在時間

如果供應資料會隨時間進化,但模型未定期重新訓練 模型品質就會下降追蹤模型上次停用後經過的時間 重新訓練新資料,並設定快訊的門檻。除了監控 您應監控整個管道的運作時間 攔截管線的缺陷

測試模型權重和輸出內容是否達到數值穩定

在模型訓練期間,權重和圖層輸出內容不得為 NaN (非數字) 或 Inf (無限)。 編寫測試來檢查權重和圖層輸出的 NaN 和 Inf 值。 此外,也測試在圖層的輸出內容中,是否超過半數不是零。

監控模型效能

你的獨角獸外觀預測指標比平常更受歡迎!您 可取得大量預測要求和更多訓練資料你認為 這點非常好 還有時間訓練您決定按照下列方式監控模型成效: 步驟如下:

  • 按版本、模型和資料追蹤模型成效。這類追蹤 可協助您找出效能降低的確切原因。
  • 測試新模型版本的每秒訓練步數 上一個版本,並依據固定門檻進行比較
  • 設定記憶體用量門檻,捕捉記憶體流失。
  • 監控 API 回應時間並追蹤百分位數。雖然 API 回應 則回應速度緩慢可能會導致 成效不佳的實際指標
  • 監控每秒回應的查詢數量。

根據放送的資料測試即時模型的品質

您已驗證模型。不過,如果是在現實生活中遇到的情況 (例如獨角獸) 行為,在記錄驗證資料後發生變化?接著 提供的模型則會降低不過,測試服務的服務品質並不容易 實際資料不一定都會加上標籤如果放送資料未加上標籤 請考慮以下測試:

  • 使用人工評估工具產生標籤

  • 調查預測出現統計偏誤的模型。詳情請見 分類:預測 偏誤

  • 追蹤模型的實際指標。例如,您要分類 垃圾訊息,比較預測查詢字串與使用者檢舉的垃圾郵件。

  • 透過下列方式減少訓練和提供資料之間的潛在落差: 並在部分查詢中提供新的模型版本。驗證身分時 新的服務模型,逐步將所有查詢改為新版本。

使用這些測試時,請記得監控 Google 預測品質

隨機

讓資料產生管道能重現。假設您想要新增一項功能 看看對模型品質有何影響為了公平的實驗,您的資料集 除了這項新功能以外 基於這個原因,請務必確保資料產生作業能進行所有隨機處理 確定性:

  • 種子隨機號碼產生器 (RNG)。播種可確保 RNG 每次執行時都會以相同的順序輸出相同的值,重新建立 資料集
  • 使用不變體的雜湊鍵。 雜湊是分割資料的常見方式 或樣本資料您可以對每個範例進行雜湊處理,然後使用產生的整數來 並決定要將範例放在哪個分割中。雜湊函式的輸入內容 不應在每次執行資料生成程式時變更。請勿使用 目前時間或雜湊中的隨機數字;舉例來說,如果您想 視需要重新建立雜湊。

上述方法適用於取樣和分割資料。

雜湊的注意事項

假設您再次收集到搜尋查詢及使用雜湊功能 納入或排除查詢。如果雜湊鍵只使用查詢 再納入多天的資料,你一律會納入 或「一律」排除該查詢。一律包含或一律排除 查詢無效的原因如下:

  • 您的訓練集看到的查詢組合會較不多元。
  • 評估集會比較難處理,因為 與訓練資料重疊事實上,廣告放送時 看到訓練資料中的部分即時流量 會反映這一點

反之,您可以對查詢 + 日期進行雜湊處理,否則會產生不同的雜湊 。

 

圖 7. 動畫示意圖,顯示純粹透過
            查詢會導致資料每天都歸入同一個值區,但雜湊處理
            查詢時間加上查詢時間會導致資料進入
            值區。三個區間分別為「訓練」、「評估」和
            已忽略。
圖 7. 針對查詢與查詢時間進行雜湊處理。