如何構建,訓練,測試和部署機器學習模型

建立機器學習(ML)模型令人興奮。經過調整和更改以及不眠之夜之後,到達您認爲可以在現實世界中使用的東西可能會有所幫助。不幸的是,您剛剛創建的概念證明標誌着工作的開始,而不是結束。建立基準模型後,就該構建更全面的版本,測試,部署和維護該模型了。機器學習團隊的工作似乎從未完成。當您的團隊將其概念證明轉化爲實際應用時,有一些注意事項:模型是真實應用程序的引擎。

如果我們考慮行人的物體檢測模型,則可以逐步完成將概念轉化爲生產所需的各個步驟。在深入瞭解細節之前,團隊必須先同意一些基本知識。

您使用哪種編程語言?總是有新語言出現,例如Julia。許多人使用R或Python工作,因爲他們對ML框架的支持最大。
然後是可供選擇的大量現有框架。其中一些工具(例如TensorFlow)擁有龐大的用戶羣和現有的文檔集。其他人可能會提供一些與您的願景更加接近的東西,但提供的支持會更少。
您的團隊將在帶有GPU,某些嵌入式目標硬件的您自己的計算機上運行此模型,還是將其完全在雲中運行?
該模型需要什麼算法?在此示例中,團隊可能會選擇使用“您只看一次(YOLO)”實時對象檢測算法,因爲該算法是爲您團隊的明確目的而存在的。
這些並不是您開始時會問自己的唯一問題,但回答這些問題對您成功的事業至關重要。除了爲這些問題建立具體答案之外,理解如何得出答案也很重要。建立,測試和部署模型的方式將隨着您對解決相關業務問題的能力的信心而改變。有了可靠的流程,您的團隊就可以開始獲取數據,構建和訓練,並最終驗證您的模型。請記住,構建流程時要快速迭代,而不是一開始就擁有完善的端到端解決方案。

數據採集​​與收集

對於假設的物體檢測模型,首先,確定輸入和輸出。輸入是給定的圖像。輸出是帶有邊界框的圖像,邊界框是具有X / Y座標以及高度和寬度參數的行人周圍的框。爲了達到基本的輸入/輸出安排,模型將需要帶註釋的圖像以進行最終訓練。

但是,在使用帶註釋的數據訓練模型之前,您需要考慮該數據將駐留在何處。您的數據倉庫在哪裏?數據如何到達倉庫並轉移到模型中?當您最終開始在現實世界中使用模型時,這些輸入是否可用?在我們的示例中,如果我們使用高清圖像進行訓練,而在提供服務時獲得的圖像是在較低分辨率的相機中,則該模型很可能會失敗。您是否在訓練的預處理階段和爲模型使用相同的代碼庫?同樣,此刻還會出現一系列有關您的過程的問題,瞭解您如何回答這些問題很重要。

如果您已安排好數據存儲和移動架構,那麼現在該獲取所需的特定數據了。在這種情況下,我們正在尋找幾千條有行人的街道圖像。獲取構建模型所需的數據後,您必須通過隨機化將其分爲三個不同的集合。一個好的經驗法則是,將80%的訓練集保留下來,將10%的驗證和測試集保留下來。在這裏重要的是不要查看測試集。

目的是不使模型對任何一組數據過度擬合。如果您的模型在訓練中有效,但在驗證中無效,那麼它在生產中將無法正常工作。如果它可以用於訓練和驗證,但不能用於測試,則可能是該模型過度適合了訓練和驗證數據。接下來,我們將研究如何最好地進行培訓,測試和驗證。

構建,培訓,測試,驗證

如果將模型過度擬合到訓練圖像,則可能意味着模型僅在非常特殊的情況下識別行人。也許它可以檢測出在室外拍攝的照片中的行人,但無法檢測到從窗戶後面拍攝的照片中的行人。如果只有雨天的訓練數據,則該模型可能無法從您的驗證或測試集中檢測到晴天照片中的行人。爲此,重要的是要根據人類經驗爲您的數據建立基礎,以確保充分覆蓋每個數據集中的所有重要案例。

建立基本事實要求要求人類註釋您的某些數據集。由於人們將知道(無論照片是從何處拍攝的,無論從何處拍攝的)行人的樣子,因此一組註釋者將能夠比單獨的算法更準確地創建邊界框。通過將基本事實納入訓練數據中,您有可能避免出現過度擬合的問題。使用一組熟練的人工註釋者來創建基本事實,還將使您的模型達到一定的精度水平:目標是達到人工水平的精度,而不是100%的精度。

拆分數據並獲得人爲創造的地面真理之後,是時候開始使用帶註釋的數據來訓練模型了。通過模型發送訓練數據時,您必須確定所做的逐步改進是否值得投資。如果花更多的時間訓練模型,導致準確性提高百分之一,以後只會影響約一千個請求,那麼可能就不值得花額外的時間。如果花費更多的時間進行培訓,從而使一百萬用戶的收入增加了百分之一,或者改善了您的優勢案例,那麼即使是很小的改進也值得。

在通過培訓磨練模型時,偶爾會利用測試數據集作爲模型是否可以在生產中使用的基準。當您從測試數據(可以告訴您是否對模型進行了適當的訓練)到驗證數據(可以幫助確保您未過度擬合模型)工作時,您可能最終會對模型進行一些迭代更改。最終,該是時候將您的模型投入生產了。

在生產中服務模型

您已經測試並驗證了模型,並準備將其發送到現實世界以供使用。 ML部署平臺Seldon等工具提供了即用的服務功能。但是,這些類型的框架缺乏業務邏輯,這意味着您的團隊將必須建立規則以指定誰可以使用該模型或何時使用該模型,而不是您的組織可能使用的其他模型。

生產中的模型是需要不斷管理的模型。假設我們的物體檢測模型需要每週更新一次。要執行定期更新,您的團隊將需要適當的基礎架構來支持該過程。例如,您選擇的基礎結構應儘量減少加載和移動數據以進行分析,因爲生產中的模型將需要不斷改進。只有當您的團隊記錄模型活動以查找故障信號並結合分析以確保模型能夠滿足遇到的請求的需求時,這種不斷的改進纔有可能。

要監視和分析的一個主要問題是概念的漂移或偏移。當您的數據從訓練模型到在生產中實際提供時,數據發生變化時,就會發生漂移。爲了對此進行監視,您的團隊應跟蹤一個信號,以提醒您建模失敗。在生產中監視模型時,隨着調整和更改初始算法,最終將得到幾個不同的模型。當您獲得模型的每個成功變體時,它將成爲您的冠軍模型,您可以將其用作後續模型的基礎。您的冠軍模型已經在生產中進行了測試,驗證和監視,因此它代表了ML之旅的最有效版本。

最後,在從構建到投放的過程中,請記住模型的最終位置。如果我們的行人檢測模型將在嵌入式車載攝像頭中使用,那麼建立僅在高計算可用的軟件環境中僅能在高清圖像上運行的模型將是無用的。確保您具有正確的可用處理能力,並且您的體系結構和框架適合最終目標。

迭代與協作

建立和部署機器學習模型是一個反覆的過程。 從概念的驗證一直到部署的產品,這都是艱苦的工作,並且一路走來都要停下來。 有耐心並依靠您的團隊來進行真正的協作。 這是通過首先構建ML模型來實現設定的目標的唯一方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章