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