創建出色的機器學習系統是一門藝術。

構建出色的機器學習系統時,需要考慮很多因素。但是經常發生的情況是,我們作為數據科學家只擔心項目的某些部分。

但是,我們是否曾經考慮過擁有模型後將如何部署模型?

我見過很多機器學習項目,但其中許多註定要失敗,因為它們從一開始就沒有制定生產計劃。

這篇文章是關於一個成功的ML項目的過程要求的-一個投產的項目。


1.在開始時建立基線

您實際上並不需要建立模型來獲得基準結果。

假設我們將使用RMSE作為時間序列模型的評估指標。我們在測試集上評估了模型,RMSE為3.64。

3.64是不錯的RMSE嗎?我們怎麼知道?我們需要基線RMSE。

這可能來自用於同一任務的當前使用的模型。或通過使用一些非常簡單的啟發式方法。對於時間序列模型,失敗的基準是最後一天的預測。即,預測前一天的數字。

或圖像分類任務如何。抽取1000個標記的樣本,並按人類分類。人為準確性可以成為您的基準。如果人類無法在任務上獲得70%的預測準確性,那麼您的模型達到類似水平時,您總是可以考慮使流程自動化。

學習:在創建模型之前,請先了解要獲得的結果。放出一些期望值只會讓您和您的客戶失望。


2.持續集成是前進的道路

您現在已經創建了模型。它的性能優於本地測試數據集上的基線/當前模型。我們應該前進嗎?

我們有兩個選擇-

  1. 進入無限循環以進一步改進我們的模型。
  2. 在生產環境中測試我們的模型,獲得更多有關可能出問題的見解,然後通過持續集成繼續改進我們的模型

我是第二種方法的粉絲。在他的真棒  第三場  命名構建學習機項目在Coursera  深度學習專業,安德魯·Ng表示-

「不要一開始就嘗試設計和構建完美的系統。取而代之的是,可能在短短几天內快速構建和訓練基本系統。即使基本系統離您可以構建的「最佳」系統相去甚遠,檢查基本系統的功能還是很有價值的:您將迅速找到線索,向您顯示最有價值的投資方向。」

完成比完美更重要。

學習:如果您的新模型比生產中的當前模型更好,或者新模型比基準更好,那麼等待上線是沒有意義的。


3.您的模型可能會投入生產

您的模型是否比基準更好?它在本地測試數據集上的性能更好,但總體上是否真的能很好地工作?

要測試您的模型優於現有模型的假設的有效性,可以設置A / B測試。一些用戶(測試組)看到來自模型的預測,而某些用戶(控制項)看到來自先前模型的預測。

實際上,這是部署模型的正確方法。您可能會發現實際上您的模型並不像看起來那樣好。

錯誤的確不是錯,錯誤的是不要期望我們會錯。

很難指出為什麼模型在生產環境中表現不佳的真正原因,但某些原因可能是:

  • 您可能會看到實時獲得的數據與訓練數據有很大的不同。
  • 或者您沒有正確完成預處理管道。
  • 否則您無法正確衡量性能。
  • 也許您的實現中存在錯誤。

學習: 不要全面投入生產。A / B測試始終是前進的絕妙方法。準備好要依靠的東西(也許是舊型號)。可能總會有可能無法預料的事情崩潰。


4.您的模型甚至可能無法投入生產

我創建了這個令人印象深刻的ML模型,它提供了90%的準確性,但是獲取預測大約需要10秒。

可以接受嗎?也許對於某些用例,但實際上沒有。

過去,有許多Kaggle比賽的獲勝者最終創造出了怪獸合奏,從而在排行榜上名列前茅。下面是一個特別的令人興奮的示例模型,該模型用於贏得Kaggle的Otto分類挑戰:

來源:第1級使用的33個模型和8個工程設計功能

另一個例子是Netflix百萬美元推薦引擎挑戰賽。 由於涉及的工程成本,Netflix團隊最終  從未使用成功的解決方案。

那麼如何在機器上使模型準確又容易呢?

老師—學生模型:來源

這是師生模型或知識蒸餾的概念。在知識蒸餾中,我們在已經訓練好的較大的老師模型上訓練了較小的學生模型。

在這裡,我們使用教師模型中的軟標籤/概率,並將其用作學生模型的訓練數據。

關鍵是老師正在輸出課堂概率–「軟標籤」而不是「硬標籤」。例如,水果分類器可能會說「 Apple 0.9,Pear 0.1」而不是「 Apple 1.0,Pear 0.0」。何必?因為這些「軟標籤」比原始標籤提供的信息更多-告訴學生,是的,特定的蘋果確實有點像梨。學生模型通常可以非常接近教師水平的表現,即使使用的參數減少了1-2個數量級!— 來源

學習:有時候,我們在預測時沒有很多可用的計算,因此我們希望有一個更輕便的模型。我們可以嘗試建立更簡單的模型,或者嘗試針對此類用例使用知識提煉。


5.維護和反饋循環

世界不是恆定不變的,您的模型權重也是如此

我們周圍的世界正在迅速變化,兩個月前可能適用的方法現在可能已不重要。在某種程度上,我們建立的模型是對世界的反映,如果世界在變化,我們的模型應該能夠反映這種變化。

模型性能通常會隨著時間而下降。

因此,我們必須從一開始就考慮在維護周期中升級模型的方法。

此周期的頻率完全取決於您要解決的業務問題。在廣告預測系統中,用戶往往會變幻無常,並且購買模式不斷出現,因此頻率需要非常高。在評論情緒分析系統中,頻率不必那麼高,因為語言不會改變其結構。

反饋迴路:來源

我還想承認反饋循環在機器學習系統中的重要性。假設您預測在狗對貓分類器中,特定圖像是狗的可能性很小。我們可以從這些低置信度的例子中學到什麼嗎?您可以將其發送到手動審閱,以檢查它是否可以用於重新訓練模型。這樣,我們就可以在不確定的實例上訓練分類器。

學習:考慮生產時,還要提出一個計劃,以使用反饋來維護和改進模型。


結論

在考慮將模型投入生產之前,這些都是我發現重要的事情。

儘管這並不是您需要考慮的事情的清單,也可能會出錯的事情的清單不完整,但無疑會在您下次創建機器學習系統時起到深思熟慮的作用。


本文轉自medium,原文地址