導讀
當你把一個模型投入生產,它就開始退化,那這個時候,我們該怎么辦呢。
由于意外的機器學習模型退化導致了幾個機器學習項目的失敗,我想分享一下我在機器學習模型退化方面的經驗。實際上,有很多關于模型創建和開發階段的宣傳,而不是模型維護。
假設機器學習解決方案一旦投入生產,無需維護就能完美運行,這是一個錯誤的假設,是企業將其首款人工智能(AI)產品推向市場時最常見的錯誤。
當你把一個模型投入生產,它就開始退化
為什么機器學習模型會隨著時間退化?
你可能已經知道,數據是成功的ML系統中最重要的組成部分。有一個相關的數據集為你提供準確的預測是一個很好的開始,但是這些數據提供準確的預測能持續多久呢?
在所有ML項目中,預測數據將如何隨時間變化是關鍵。在一些項目中,我們低估了這一步,并且很難交付高精確度。在我看來,一旦你在PoC階段之后對你的項目有信心,就應該制定一個計劃來保持模型的更新。
事實上,在開始使用它之前,你的模型的準確性將處于最佳狀態。這一現象被稱為概念漂移,盡管在過去的20年里學術界對其進行了大量的研究,但在行業最佳實踐中它仍然經常被忽略。
概念漂移:表示模型試圖預測的目標變量的統計特性隨著時間以不可預見的方式發生變化。這導致了一些問題,因為隨著時間的推移,預測的準確性會降低。
關鍵是,與計算器相比,ML系統確實與現實世界交互。如果你使用ML來預測你的商店的需求和價格,你最好考慮一下本周的天氣、日歷和你的競爭對手在做什么。
在概念漂移的情況下,我們對數據的解釋隨時間而變化,而數據的一般分布則沒有變化。這導致最終用戶將模型預測解釋為隨著時間的推移,對相同/相似數據的預測已經惡化。數據和概念都可能同時漂移,使問題更加棘手。
我注意到,依賴于人類行為的模型可能特別容易退化。顯然,風險可以根據項目的性質進行預測。在大多數情況下,必須制定定期的模型評審和再訓練計劃。
此外,大多數模型只能捕獲反映它們所看到的訓練數據的模式。一個好的模型捕獲了這些數據的基本部分,而忽略了不重要的部分。這創建了泛化的性能,但是任何模型都有一定程度的局限性。
泛化:指的是你的模型能夠適當地適應新的、以前未見過的數據,這些數據來自于用于創建模型的相同分布。這與過擬合的概念密切相關。如果你的模型過擬合,那么它就不能很好地泛化。
泛化性能的最佳測試是查看模型在很長一段時間內對真實數據的執行情況。這個過程至少有兩個主要元素。
如何防止模型退化?
這聽起來可能很明顯,但是在部署之后監視ML性能非常重要。如果監視所有特征聽起來像一項耗時的任務,那么我們可以監視一些關鍵特征,這些特征的數據分布變化可能會嚴重影響模型結果。我強烈建議你在投入生產之前為這個過程創建一個策略(通過識別正確的元素)。
模型監控是一個持續的過程
如果你觀察到模型性能下降,那么是時候重新構造模型設計了。棘手的部分不是刷新模型和創建一個重新訓練的模型,而是考慮額外的特征,這些特征可能會提高模型的性能,使其更加可靠和準確。
完成上述步驟之后,就可以使用新的或修改過的一組特征和模型參數重新創建模型了。在這一點上,我們的目標是確定一個最優的模型,該模型能夠提供最佳的精度,這很好地概括了一些數據漂移。
我注意到,在某些情況下,模型的重新創建并不能提高模型的性能。在這些情況下,分析模型出錯的例子并尋找當前特征集之外的趨勢可以幫助識別新特征。基于這些知識創建新特征可以給模型提供新的學習經驗。
手工學習
我們經常使用新數據來維護模型的一個解決方案是,使用我們最初用于構建模型的相同流程來訓練和部署我們的模型。我們稱之為手工學習。你可以想象這個過程會很耗時。我們多久對模型進行一次再訓練?每周?每天嗎?答案取決于你的ML應用。
當我們手工對模型進行再訓練時,我們可能會發現一種新的算法或一組不同的特征,可以提高精確度。事實上,定期回顧你的處理過程可能是個好主意。正如我前面提到的,你可能會找到一種不同的算法或一組新的特征來改進你的預測,而這并不是連續學習系統所擅長的。
也許你可以每個月或者每年用之前收集的數據來更新模型。
這還可能涉及對模型進行反向測試,以便在重新擬合靜態模型時選擇適當數量的歷史數據。
給數據加權重
另一個解決方案可能是給數據加權重。事實上,有些算法允許你權衡輸入數據的重要性。
使用與數據年齡成反比的加權系統可能會很有趣,這樣會更多地關注最近的數據(權重更高),而較少關注最近的數據(權重更小)。
持續學習
我最喜歡的方法是擁有一個能夠持續評估和重新訓練模型的自動化系統。持續學習系統的好處是它可以完全自動化。
一般來說,合理的模型監控與周密的模型檢查計劃相結合,對于保持生產模型的準確性是至關重要的。對關鍵變量進行優先級檢查,并為發生更改時設置警告,這將確保你不會對環境的更改感到意外,而環境的更改會破壞你的模型的有效性。
對于數據點具有高度獨立性的輸入變量,可以使用統計過程控制中使用的控制圖來檢測過程的變化。
處理模型漂移
我堅持這一點,但你的ML成功也取決于你計劃如何維護你訓練有素的模型。在幾個項目中,我意識到缺乏模型工作經驗的商業領袖可能無法預料到這種需求。
一個產品化的模型包括監視和維護
應該定期評估新數據集上的模型性能。應該定期對這些性能跟蹤進行可視化和比較,以便您可以確定何時進行干預。有幾個度量ML性能的指標。
模型退化的原因可以被明確地發現和建模??梢匝芯俊⒗斫夂屠弥芷谛詴r間效應。一旦模型收集了足夠的性能指標,數據科學團隊就可以處理這個項目。假設你一直在跟蹤他們。
定期考慮性能指標并觸發重新訓練或重建模型的過程也是必要的,因為沒有它,你將能夠看到性能損失,但沒有適當的系統來解決它。
投入&團隊
除了技術方面,我強烈建議你在項目投入生產后,將最好的數據科學家和工程師留在項目中。與經典的軟件項目不同,在部署之后,你的操作團隊處理它,工程師繼續構建下一個大項目,ML和AI系統中的許多技術挑戰是保持它們的準確性。
你還需要投入資源,以保持你的客戶使用的機器學習產品和服務的準確性。這意味著與傳統軟件相比,ML產品的運營邊際成本更高。
維護成本
為了維護高質量的模型,應該在每次數據交付時對算法進行再訓練。另一方面,為了優化成本,應該盡可能少地去做。
顯然,某些機器學習開發實踐需要更多的技術債,因此需要比其他實踐更多的未來維護。特定于機器學習的發展債風險因素是多種多樣的。它們包括無數的概率變量、數據依賴、遞歸反饋循環、管道流程、配置設置,以及加劇機器學習算法性能不可預測性的其他因素。
這些復雜性越多,就越難以進行有效維護所需的根源分析。
你無法完全自動化地解決維護負擔。在任何情況下,傾向于機器學習模型都需要仔細檢查、批判性思維和手工工作,而這些只有受過高度訓練的數據科學家才能提供。
-
機器學習
+關注
關注
66文章
8408瀏覽量
132575
發布評論請先 登錄
相關推薦
評論