谷歌的機器學習規則:關於機器學習工程的最佳實踐

幾天前谷歌的工程師們發佈了一份關於如何構建ML產品的手冊(順便說一下,這是關於coursera上gcp專門化的一個新的TensorFlow)。

【福利:完整的中文版詳情見文末】這些人在開發大型項目方面有很多經驗,他們已經寫下了他們的最佳實踐。唯一的問題是,這個文檔非常巨大,所以本文決定總結一下這裡的關鍵點。總共有43條規則,它們大致按照發展階段的順序進行,分為3個階段。讓我們開始吧。

谷歌的機器學習規則:關於機器學習工程的最佳實踐

第一階段:第一管道

如果一個簡單的啟發式或手動的工作可以完成工作,那麼先把ML放到一邊,直到你得到足夠的數據。

添加指標,然後添加更多的指標。跟蹤每件事,看看你的應用程序的每個部分是如何工作的。當你有問題或者只是不確定的時候——添加一個度量。

不要在啟發式上花費太多時間。一旦它變得複雜,切換到ML模型。這樣以後開發和維護更容易。

首先把重點放在基礎設施上。用一個簡單的模型構建一個管道,並確保整個過程運行良好。

將測試添加到管道的每個部分,測試您的基礎設施、數據、模型。當您在複製一個新項目的現有管道時,請確保不會丟棄可能有用的數據。

不要輕易放棄你的啟發式,它們可能為您的ML模型生成有用的特性。

保持新鮮的模型,跟蹤你的模型的性能如何隨著時間的推移而降低,並確保它不會在生產中腐爛。

在生產前跟蹤您的模型的性能,特別是當它是一個面向用戶的模型時。

測試你的數,再次,確保所有的功能都被收集,數據保持良好。

創建文檔的功能。它們來自哪裡,為什麼有用。

選擇正確的目標,它必須反映項目的主要目標的性能。

選擇正確的目標可能比較困難,所以選擇一個容易度量的度量指標,並且是“真實”目標的代理。

簡單的模型更容易調試,線性或邏輯迴歸可能是一個不錯的選擇。

單獨的垃圾郵件過濾和質量排名。這些模型經常以不同的方式使用。

第二階段:工程特性迭代計劃

您的特性和模型將隨時間而變化,所以請確保您已經準備好更新它。

從直接觀察到的特徵開始,為將來的更新留下學習的特性。

嘗試在上下文中泛化的特性,像“喜歡”這樣的指標在推薦、質量排名和其他模型中都很有用。

不要忘記添加非常具體的功能。即使他們沒有很好地推廣,他們仍然有價值。如果它們只適用於一小部分示例,那麼正則化將會過濾掉它們。

用人類可以理解的方式手工製作新特性,儘量不要過度思考。

您可以在線性模型中學習的特性權重的數量與您所擁有的只數據量大致成比例。有大約1000個例子——使用幾十個特性。擁有超過10億的功能就足夠了。

谷歌的機器學習規則:關於機器學習工程的最佳實踐

從管道中刪除未使用的特性。如果你發現某些功能並不能改善你的模型,那就扔掉它。

不要讓工程師做UX測試。通過一個眾包平臺,或者通過一個真實用戶的現場實驗來完成。

跟蹤多少模型不同。在進一步測試新模型之前,計算它的輸出與前一個模型的不同。

關注你的模型的效用,而不是預測能力。一個新的模型可能具有更高的準確性,但是在實踐中它是多麼有用、更重要。

查看模型的錯誤並創建新特性來修復它們。嘗試找出錯誤中的模式並添加各自的特性。

創建度量來跟蹤這些錯誤。當您擁有優化的指標時,優化變得更容易。

模型在長期內可能有非常不同的行為。即使在短期內,它也完全符合你的預期。

收集數據並在訓練期間使用它來測試模型。通過這種方式,您將確保模型在部署後會執行良好。

重要的採樣數據,不要隨意丟棄。

不要忘記,數據本身可能會在訓練和服務之間發生變化。有時候,你可以用每小時/每天/每週的快照來處理它。在訓練和生產管道之間儘可能多的共享代碼。

使用早期的數據進行訓練,稍後的數據進行測試。這將幫助您大致估計您的模型將來的性能。

為獲得乾淨的訓練數據,在二進制分類任務中只佔一小部分。向用戶顯示1%或0.1%的數據以獲得新的訓練數據。

使一般的特徵更加嚴格,並且只允許在排序任務中有正的權重。不要讓你的排名系統變得過於偏頗。避免使用位置特徵的反饋循環。在訓練期間將它們分開,在發球時避免使用。

測量您的模型在訓練、驗證、測試和實時數據上的執行情況。跟蹤他們的差異,並嘗試調整模型以減少差異。

階段3:細化和複雜模型

重新審視你的目標,確保它與你的產品目標一致。

發佈決策是長期產品目標的一個代表,通常一個決定會影響多個指標,所以不要匆忙做出決定。

保持你的基礎和集成模型分開。基礎模型只接受原始的輸入,整體只從基本模型中獲取輸出。

當您的性能停止增長時,尋找新的特性來源。不要太長時間專注於現有的工作。

多樣性、個性化和相關性非常重要,但不像受歡迎程度那麼高。

你的朋友在不同的產品上都是一樣的,你 的興趣可能會有不同。我們往往有著相同的聯繫,但我們的目標改變了。

谷歌的機器學習規則:關於機器學習工程的最佳實踐

作者認為在做ML項目的時候有這些指導方針是很好的。因為如果你不這樣做,你可能會進入技術債務。所以,不要忘記在工作中給它們加上書籤,並時不時地重溫一下。


分享到:


相關文章: