【IT168技術(shù)】機(jī)器學(xué)習(xí)模型的訓(xùn)練,通常是通過學(xué)習(xí)某一組輸入特征與輸出目標(biāo)之間的映射來進(jìn)行的。一般來說,對(duì)于映射的學(xué)習(xí)是通過優(yōu)化某些成本函數(shù),來使預(yù)測(cè)的誤差最小化。在訓(xùn)練出最佳模型之后,將其正式發(fā)布上線,再根據(jù)未來生成的數(shù)據(jù)生成準(zhǔn)確的預(yù)測(cè)。這些新數(shù)據(jù)示例可能是用戶交互、應(yīng)用處理或其他軟件系統(tǒng)的請(qǐng)求生成的——這取決于模型需要解決的問題。在理想情況下,我們會(huì)希望自己的模型在生產(chǎn)環(huán)境中進(jìn)行預(yù)測(cè)時(shí),能夠像使用訓(xùn)練過程中使用的數(shù)據(jù)一樣,準(zhǔn)確地預(yù)測(cè)未來情況。
當(dāng)我們將模型部署到生產(chǎn)中時(shí),往往會(huì)假設(shè)未來將使用到的數(shù)據(jù)會(huì)類似于過去模型評(píng)估期間所使用的數(shù)據(jù)。具體來說,我們可能會(huì)假設(shè),特征和目標(biāo)的分布將保持相當(dāng)?shù)暮愣?。但是這種假設(shè)通常不成立。趨勢(shì)會(huì)隨著時(shí)間的推移而變化,人們的興趣會(huì)隨著季節(jié)的變化而變化,股票市場(chǎng)會(huì)起伏不定。因此,我們的模型必須適應(yīng)這些變化。
世界是持續(xù)變化的,因此模型部署應(yīng)視為一個(gè)連續(xù)的過程,而不是完成第一次部署之后就扭頭去開展下一個(gè)項(xiàng)目。如果機(jī)器學(xué)習(xí)團(tuán)隊(duì)的工程師發(fā)現(xiàn)數(shù)據(jù)分布與原始訓(xùn)練集的數(shù)據(jù)分布有明顯出入,則需要重新訓(xùn)練模型。這個(gè)現(xiàn)象——通常被稱為模型漂移(model drift)——可以緩解,但是會(huì)帶來額外的開銷,如監(jiān)視基礎(chǔ)設(shè)施、監(jiān)督和流程等等。
在本文中,筆者想對(duì)模型漂移下定義,并討論如何去識(shí)別和跟蹤模型漂移。然后,我將描述如何重新訓(xùn)練模型,來減輕漂移對(duì)預(yù)測(cè)性能的影響,并對(duì)應(yīng)多久重新訓(xùn)練一次模型做出建議。最后,我將介紹啟用模型重新訓(xùn)練的幾種方法。
什么是模型漂移?
模型漂移是指,由于環(huán)境的變化違反了模型假設(shè),而導(dǎo)致模型的預(yù)測(cè)性能隨時(shí)間而降低。模型漂移有點(diǎn)用詞不當(dāng),因?yàn)樽兓牟皇悄P停悄P瓦\(yùn)行的環(huán)境。因此,概念漂移(concept drift)一詞實(shí)際上可能是一個(gè)更好的用詞,不過兩個(gè)術(shù)語都描述了相同的現(xiàn)象。
請(qǐng)注意,筆者對(duì)模型漂移的定義實(shí)際上包括幾個(gè)可以更改的變量。預(yù)測(cè)性能將下降,它將在一段時(shí)間內(nèi)以某種速率下降,并且這種下降會(huì)歸因于違反建模假設(shè)的環(huán)境變化。在確定如何診斷模型漂移以及如何通過模型再訓(xùn)練糾正模型漂移時(shí),應(yīng)考慮這些變量中的每一個(gè)。
如何跟蹤模型漂移?
目前業(yè)內(nèi)已有多種識(shí)別和跟蹤模型漂移的技術(shù)。在介紹這些技術(shù)之前,值得一提的是,并沒有一種萬能的方法。不同的模型問題需要不同的解決方案,您可能有、也可能沒有相應(yīng)的基礎(chǔ)架構(gòu)或資源來利用某些技術(shù)策略。
模型性能降級(jí)
識(shí)別模型漂移的最直接方法是明確預(yù)測(cè)性能是否已下降,同時(shí)量化這種下降。測(cè)量實(shí)時(shí)數(shù)據(jù)上已部署模型的準(zhǔn)確性是一個(gè)眾所周知的難題。之所以出現(xiàn)這種困難,部分原因是我們需要訪問生成的模型的預(yù)測(cè)和基本事實(shí)信號(hào)。出于以下這些原因,這可能無法實(shí)現(xiàn):
·預(yù)測(cè)的數(shù)據(jù)在生成后沒有存儲(chǔ)——?jiǎng)e讓這種事發(fā)生在你身上。
·預(yù)測(cè)已存儲(chǔ),但是您無法訪問基本事實(shí)標(biāo)簽。
·預(yù)測(cè)和標(biāo)簽均可用,但不能結(jié)合在一起。
即使預(yù)測(cè)和標(biāo)簽可以合并在一起,也可能需要一段時(shí)間才能使用標(biāo)簽。例如一個(gè)可以預(yù)測(cè)下一季度收入的財(cái)務(wù)預(yù)測(cè)模型。在這種情況下,只有在該季度過去之后才能觀察到實(shí)際收入,所以直到那個(gè)時(shí)候你才能夠量化模型的效果。在此類預(yù)測(cè)問題中, 回填預(yù)測(cè)(即訓(xùn)練模型,并根據(jù)過去的歷史數(shù)據(jù)生成預(yù)測(cè))可以幫助您了解模型性能下降的速度。
正如Josh Wills 指出的那樣,在部署模型之前您可以做的最重要的事情之一就是試圖了解離線環(huán)境中的模型漂移。數(shù)據(jù)科學(xué)家應(yīng)想辦法回答以下問題:“如果我使用六個(gè)月前的數(shù)據(jù)對(duì)這組特征進(jìn)行訓(xùn)練,并將其應(yīng)用于今天生成的數(shù)據(jù),那么這個(gè)模型比我一個(gè)月前未經(jīng)訓(xùn)練而創(chuàng)建并應(yīng)用到今天的模型差多少呢?”。離線執(zhí)行此分析,您可以估計(jì)模型性能下降的速度以及需要重新訓(xùn)練的頻率。當(dāng)然,這種方法的前提是要有一臺(tái)“時(shí)光機(jī)”來訪問過去任何時(shí)候的實(shí)時(shí)數(shù)據(jù)。
檢查訓(xùn)練和實(shí)時(shí)數(shù)據(jù)的特征分布
由于隨著輸入特征的分布逐漸偏離訓(xùn)練數(shù)據(jù)的分布,模型性能會(huì)下降,因此比較這些分布是推斷模型漂移的好方法。請(qǐng)注意,這里說的是推斷而不是檢測(cè)模型漂移,因?yàn)槲覀儧]有觀察到預(yù)測(cè)性能的實(shí)際下降,而是“預(yù)計(jì)”會(huì)出現(xiàn)下降。在由于數(shù)據(jù)生成這一過程的性質(zhì),而無法觀察到實(shí)際基本事實(shí)的情況下,這會(huì)非常有用。
每個(gè)特征需要監(jiān)視許多不同的東西,包括:
可能值的范圍
值直方圖
該功能是否接受NULL,如果是,則預(yù)期的NULL數(shù)量
能夠通過控制界面快速監(jiān)控這些分布,是朝正確方向邁出的一步。當(dāng)特征差異很大時(shí),可以通過自動(dòng)跟蹤訓(xùn)練服務(wù)偏差并在特性差異顯著時(shí)發(fā)出警告,進(jìn)一步實(shí)現(xiàn)這一點(diǎn)。
檢查特征之間的關(guān)聯(lián)
許多模型會(huì)假定特征之間的關(guān)系必須保持固定。因此,您還需要監(jiān)視各個(gè)輸入特征之間的成對(duì)關(guān)聯(lián)。如您的ML測(cè)試分?jǐn)?shù)是多少?ML生產(chǎn)系統(tǒng)的規(guī)范等等,可以通過以下方法實(shí)現(xiàn):
監(jiān)視特征之間的相關(guān)系數(shù)
訓(xùn)練具有一兩個(gè)特征的模型
訓(xùn)練一組模型,每個(gè)模型都刪除其中一個(gè)特征
檢查目標(biāo)分布
如果目標(biāo)變量的分布發(fā)生顯著變化,那么模型的預(yù)測(cè)性能幾乎一定會(huì)變差?!稒C(jī)器學(xué)習(xí):技術(shù)債務(wù)高息信用卡》的作者指出,一種簡(jiǎn)單而有用的診斷方法是跟蹤目標(biāo)分布。與訓(xùn)練數(shù)據(jù)的偏差可能意味著需要重新評(píng)估部署模型的質(zhì)量,但請(qǐng)記住,“這絕不是一項(xiàng)全面的測(cè)試,因?yàn)樗梢酝ㄟ^空模型來滿足,該模型可以簡(jiǎn)單地預(yù)測(cè)標(biāo)簽出現(xiàn)的平均值,而無需考慮輸入特征?!?/p>
模型再訓(xùn)練到底是什么意思?
模型再訓(xùn)練似乎是一個(gè)超負(fù)荷的操作,它是否只涉及到尋找現(xiàn)有模型架構(gòu)的新參數(shù)?對(duì)于更改超參數(shù)搜索空間怎么樣?如何搜索不同的模型類型(RandomForest,SVM等)?我們可以包括新特征還是可以排除以前使用的特征?這些都是很好的問題,因此盡可能明確這些問題是非常重要的。要回答這些問題,重要的是直接考慮我們要解決的問題——也就是說,減少模型漂移對(duì)我們部署的模型的影響。
在將模型部署到生產(chǎn)數(shù)據(jù)之前,科學(xué)家需要經(jīng)過嚴(yán)格的模型驗(yàn)證過程,其中包括:
匯編數(shù)據(jù)集–收集來自不同來源(例如不同數(shù)據(jù)庫)的數(shù)據(jù)集。
特征工程–從原始數(shù)據(jù)中提取列,提高預(yù)測(cè)性能。
模型選擇–比較不同的學(xué)習(xí)算法。
錯(cuò)誤估計(jì)–在搜索空間上進(jìn)行優(yōu)化,找到最佳模型并估計(jì)其泛化誤差。
此過程會(huì)產(chǎn)生一些最佳的模型,然后將其部署到生產(chǎn)中。由于模型漂移具體是指所選模型的預(yù)測(cè)性能由于特征/目標(biāo)數(shù)據(jù)分布的變化而下降,因此模型再訓(xùn)練不應(yīng)該帶來不同的模型生成過程。確切地說,重新訓(xùn)練只是指在新的訓(xùn)練數(shù)據(jù)集上重新運(yùn)行生成先前選擇的模型的過程。功能、模型算法和超參數(shù)搜索空間都應(yīng)保持相同。可以這樣想,再訓(xùn)練不涉及任何代碼更改,只涉及改變訓(xùn)練數(shù)據(jù)集。
這并不是說模型的未來迭代不應(yīng)包含新特征或不考慮其他算法類型/體系結(jié)構(gòu)。只是說,這些類型的更改會(huì)產(chǎn)生完全不同的模型——在部署到生產(chǎn)環(huán)境之前,應(yīng)該對(duì)它們進(jìn)行不同的測(cè)試。根據(jù)您的機(jī)器學(xué)習(xí)團(tuán)隊(duì)的成熟程度,理想情況下,此類更改將與A / B測(cè)試一起引入,以測(cè)量新模型對(duì)預(yù)先確定的興趣指標(biāo)(例如用戶參與度或保留率)的影響。
應(yīng)該多久重新訓(xùn)練一次模型
到目前為止,我們已經(jīng)討論了什么是模型漂移以及識(shí)別它的多種方法。于是問題就變成了,我們?cè)撊绾窝a(bǔ)救?如果模型的預(yù)測(cè)性能由于環(huán)境變化而下降,解決方案是在反映當(dāng)前實(shí)際情況的新訓(xùn)練集上對(duì)模型進(jìn)行重新訓(xùn)練。那么,您應(yīng)該多久重新訓(xùn)練一次模型?如何確定新的訓(xùn)練集?對(duì)于最困難的問題,答案是視情況而定。但如何視情況而定呢?
有時(shí)機(jī)器學(xué)習(xí)問題本身會(huì)給出何時(shí)需要重新訓(xùn)練模型的建議。例如,假設(shè)您正在一家大學(xué)招生辦工作,并負(fù)責(zé)建立一個(gè)可以預(yù)測(cè)學(xué)生下學(xué)期是否會(huì)回來的學(xué)生流失模型。該模型將在期中后直接用于對(duì)當(dāng)前學(xué)生群體進(jìn)行預(yù)測(cè)。被確定有流失風(fēng)險(xiǎn)的學(xué)生將自動(dòng)被納入輔導(dǎo)課程或其他干預(yù)措施。
下面我們思考一下這種模型的時(shí)間范圍。由于我們每學(xué)期一次批量生成預(yù)測(cè),因此沒有必要再頻繁地重新訓(xùn)練模型,因?yàn)槲覀儗o法訪問任何新的訓(xùn)練數(shù)據(jù)。因此,在觀察上學(xué)期的哪些學(xué)生退學(xué)后,我們可能選擇在每個(gè)學(xué)期開始時(shí)重新訓(xùn)練我們的模型。這就是定期再訓(xùn)練計(jì)劃的一個(gè)示例。從這個(gè)簡(jiǎn)單的策略開始,往往是一個(gè)好辦法,但是您需要確定重新訓(xùn)練的頻率??焖俑牡挠?xùn)練集可能需要您每天或每周進(jìn)行一次訓(xùn)練。較慢的發(fā)行版本可能需要每月或每年進(jìn)行重新訓(xùn)練。
如果您的團(tuán)隊(duì)已經(jīng)具備了監(jiān)控上一節(jié)中所討論的度量標(biāo)準(zhǔn)的基礎(chǔ)設(shè)施,那么將模型漂移的管理自動(dòng)化可能是有意義的。這個(gè)解決方案需要跟蹤診斷,然后在實(shí)時(shí)數(shù)據(jù)上的診斷與訓(xùn)練數(shù)據(jù)診斷不同時(shí)觸發(fā)模型再訓(xùn)練。但這種方法也有其自身的挑戰(zhàn)。首先,您需要確定一個(gè)發(fā)散的閾值,它將觸發(fā)模型再訓(xùn)練。如果閾值太低,則您可能會(huì)過于頻繁地進(jìn)行再訓(xùn)練,從而帶來高計(jì)算成本。如果閾值過高,則可能會(huì)因?yàn)椴唤?jīng)常進(jìn)行再訓(xùn)練,而導(dǎo)致生產(chǎn)中的模型偏劣質(zhì)。這比看起來要復(fù)雜得多,因?yàn)槟惚仨毴ゴ_定,要收集多少新的訓(xùn)練數(shù)據(jù),才能代表世界的新狀態(tài)。在世界已經(jīng)發(fā)生改變時(shí),用一個(gè)訓(xùn)練集太小的模型來代替現(xiàn)有的模型也是沒有意義的。
如果您的模型已經(jīng)在對(duì)抗性環(huán)境中運(yùn)行,則需要特別考慮。在諸如欺詐檢測(cè)這樣的設(shè)置中,對(duì)抗方會(huì)改變數(shù)據(jù)分布以使自己獲利。這些問題可以從在線學(xué)習(xí)中受益,在這之中,模型隨著新數(shù)據(jù)的出現(xiàn)而不斷更新。
如何重新訓(xùn)練模型?
最后,但并非最不重要的一點(diǎn),我們需要討論如何重新訓(xùn)練模型。您用于模型再訓(xùn)練的方法與您決定再訓(xùn)練的頻率直接相關(guān)。
如果您打算定期去重新訓(xùn)練模型,那么批量進(jìn)行重新訓(xùn)練就完全足夠了。這種方法涉及使用工作調(diào)度程序(例如Jenkins或Kubernetes CronJobs)定期地調(diào)度模型訓(xùn)練過程 。
如果您具有自動(dòng)模型漂移檢測(cè)功能,那么在識(shí)別出漂移時(shí)觸發(fā)模型重新訓(xùn)練就很有意義。例如,您可能有定期的工作,將實(shí)時(shí)數(shù)據(jù)集的特征分布與訓(xùn)練數(shù)據(jù)的特征分布進(jìn)行比較。當(dāng)識(shí)別出明顯的偏差時(shí),系統(tǒng)可以自動(dòng)安排模型再訓(xùn)練以自動(dòng)部署新模型。同樣,這可以通過諸如Jenkins的作業(yè)調(diào)度程序或使用 Kubernetes Jobs來執(zhí)行。
最后,利用在線學(xué)習(xí)技術(shù)更新當(dāng)前正在生產(chǎn)的模型可能也是有意義的。這種方法依賴于使用當(dāng)前部署的模型去“播種”一個(gè)新模型。隨著新數(shù)據(jù)的產(chǎn)生,模型參數(shù)將使用新的訓(xùn)練數(shù)據(jù)進(jìn)行更新。
結(jié)論
一般情況下,將模型部署到生產(chǎn)環(huán)境時(shí),機(jī)器學(xué)習(xí)模型的預(yù)測(cè)性能往往都會(huì)下降。因此,工程師必須通過設(shè)置特定于ML的監(jiān)視解決方案和工作流來啟用模型重新訓(xùn)練,從而為性能下降做好準(zhǔn)備。雖然重新訓(xùn)練的頻率因具體問題而異,但ML工程師可以從簡(jiǎn)單的策略開始,隨著新數(shù)據(jù)的到來,該策略會(huì)定期對(duì)模型進(jìn)行重新訓(xùn)練,并發(fā)展為對(duì)模型漂移進(jìn)行量化和做出反應(yīng)的更復(fù)雜的過程。
原文作者:Luigi Patruno
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )