機器學習流水線(machine learning pipeline)
/ muh-SHEEN LUR-ning PYPE-line /
機器學習流水線,是把原始資料變成一個能用、已部署的模型,並讓它持續好用的那一整串步驟。流行印象裡,機器學習就是模型「學會」的那一刻,可那個訓練步驟,只是一條長鏈中的一環。把它想成開餐廳:端上桌的那道菜是看得見的部分,可在它背後,是採購食材、備料、烹飪、擺盤,以及事後的洗刷。任何一道工序被跳過或搞砸,整件事就垮了。
典型的各個階段大致是這樣。第一,收集並清洗資料——糾錯、處理缺失值、去重。第二,準備特徵——挑選、變換並縮放模型將要讀取的那些輸入。第三,把資料切分成訓練集、驗證集和測試集,好讓你誠實地調參、公平地評判。第四,訓練模型並調它的超參數。第五,在那份從未碰過的測試集上評估它。第六,部署它,讓它能在即時資料上做預測。第七——初學者會忘掉的一步——監測並維護它,因為世界在漂移,去年還準的模型今年可能就悄悄爛掉了。
有兩條真相賦予了流水線它的分量。第一,在真實專案裡,那些不起眼的前期階段——收集與清洗資料——通常吞掉大半的時間與精力,遠多於建模本身。第二,流水線是一條鏈,而鏈條的強度取決於它最弱的那一環:切分步驟裡的一次資料洩漏,或是某個特徵在訓練時與部署時演算法不同,都能悄無聲息地毀掉一個本來出色的模型。從整條流水線、而不只是模型來思考,正是「一個演示」與「一套人們敢信賴的系統」之間的分水嶺。
搭建一個詐騙偵測器:拉來半年的交易、清掉格式損壞的記錄、造出諸如「相對該客戶平日的消費」之類的特徵、切分成訓練/驗證/測試三份、訓練並調好模型、在留出的測試集上檢驗、把它上線去給即時支付打分,然後逐週盯著它的準確度——因為騙子在不斷改變手法。
訓練只是其中一環;資料準備、評估、部署與監測,才讓整條鏈完整。
現實中的經驗法則:收集與清洗資料,通常比搭模型耗費多得多的精力。一條流水線的可信度,只取決於它最弱的那個階段——訓練與測試資料之間哪怕一次洩漏,都能讓下游的一切作廢。