機器學習工程的最佳做法
馬丁辛卡維奇
本文件旨在協助熟悉機器知識的使用者 機器學習技術有助於充分運用 Google 的機器學習技術。這項服務 呈現的機器學習樣式,類似 Google C++ 樣式指南 和其他熱門程式設計指南。如果您曾參加過課程 或是建構或處理機器學習模型 具有閱讀這份文件所需的背景
術語
下列條款將在我們有效討論「有效」的討論中反覆出現 機器學習:
- 執行個體:也就是您要做什麼 預測結果例如,執行個體可能是您希望處理程式碼的網頁 歸類為「關於貓」或「與貓無關」
- 標籤:預測工作的答案,可能是 或機器學習系統提供的正確答案適用對象 舉例來說,網頁的標籤可能是「關於貓」。
- 特徵:預測工作中使用的執行個體的屬性。適用對象 舉例來說,網頁上可能會有「包含『貓』這個字」的功能。
- 特徵欄:一組相關功能,例如所有相關的特徵 使用者可能居住的國家/地區。示例中可能會有一或多項特徵 都會顯示在特徵欄中「特徵欄」是 Google 專用的術語 特徵欄稱為「命名空間」 安裝於 VW 系統 (Yahoo/Microsoft),或 field:
- 範例:執行個體 (及其功能) 和標籤。
- 模型:預測工作的統計表示法。用來訓練模型 這些範例接著使用模型進行預測
- 指標:您重視的數字。不一定會進行最佳化。
- 目標:演算法希望用來進行最佳化的指標。
- 管道:圍繞機器學習演算法的基礎架構, 包括從前端收集資料,並將資料用於訓練資料 訓練一或多個模型,以及將模型匯出至實際工作環境。
- 點閱率:點閱網頁的訪客百分比 連結。
總覽
如何製作優質產品:
「機器學習的工程師」能做到這點 機器學習專家則不適合。
實際上,您可能會遇到的都是工程問題。平均 不僅擁有優秀機器學習專家的所有資源 ,就不是精良的機器學習演算法基本版 方法如下:
- 請確保管道是穩固的端對端管道。
- 先設定合理的目標。
- 以簡單的方式新增常見特徵。
- 請確保管道維持穩定。
這種做法相當適合 設定目標只有在沒有其他狀況時,才要改採這種做法 再簡單不過的幾個簡單技巧增加複雜度會使日後推出的版本減緩。
完成幾個簡單的技巧後,最先進的機器學習技術 確實值得注意詳情請參閱 第 3 階段 和機器學習專案
本文件編排方式如下:
- 第一部分應可協助您瞭解 就很適合建構機器學習系統
- 第二部分是部署 第一個管道
- 第三部分是推出 同時為管道新增特徵及如何評估模型 和訓練/應用偏差
- 最後一部分 到達高原時該怎麼辦
- 系統隨後會列出相關工作和 附錄 並採取本文所述的簡單做法。
機器學習前
規則 #1:別害怕沒有機器學習技術也能推出產品。
機器學習很酷,但需要資料理論上,您可以將資料 再根據不同的問題調整模型,但還是 成效可能會不如預期 經驗法則。如果認為 機器學習技術會提高 100%,而經驗法則將提高 50% 目標放在 Android 中
舉例來說,假設您要在應用程式市集中排名應用程式,這時可以使用 將安裝率或安裝次數視為經驗法則。如果您偵測到垃圾內容, 過濾掉先前傳送垃圾郵件的發布商勇於利用人類 編輯任一行的內容如要排名聯絡人,請為最近使用的聯絡人排名 最高 (或依字母順序排列)如果希望機器學習 以便在沒有資料的情況下使用。
規則 2:首先,設計並導入指標。
正式定義機器學習系統的運作方式前,應盡可能追蹤 以及目前的系統這麼做的原因如下:
- 較容易及早取得系統使用者許可。
- 如果您覺得日後有點疑慮, ,現在更能取得歷來資料。
- 如果在設計系統時將指標檢測納入考量 的成效較佳 未來會有更多選擇具體而言,你不需要尋找自己在位的樣子 以便檢測您的指標!
- 您會注意到有哪些變化,而保持不變。舉例來說: 假設您想要直接最佳化單日活躍使用者。不過 開始操作系統時,您可能會注意到 大幅改變使用者體驗,並不會大幅改變這一點 指標。
Google+ 團隊會在每次閱讀時測量擴增內容、 每次讀取的轉貼數,加上每一則 讀取、留言/閱讀、每位使用者的留言、按使用者轉貼等 以計算貼文的良好性另請注意 實驗架構 可讓您將使用者分組 以比較有效的方式統計結果詳情請見 規則 12:
如果更自由地收集指標,您就能更全面地掌握 系統本身發現問題?新增指標即可追蹤!興奮 上個版本的量化變更?新增指標即可追蹤!
規則 3:選擇機器學習技術,而不是複雜的經驗法則。
簡單的經驗法則,能幫助你輕鬆宣傳產品。複雜的經驗法則 也無法維護。有了資料量和基本概念之後 接下來就進入機器學習和大多數軟體工程一樣 任務,就必須持續更新做法,無論是 或機器學習模型,您就會發現 機器學習模型的更新與維護更容易 (請參閱 規則 16)。
機器學習階段 1:您的第一個管道
將重心放在系統基礎架構上,以便建立第一個管道。趣味性 您會想著什麼充滿想像力的機器學習 要是沒有先信任「委任」 這種模型通常已開放原始碼 可以透過自訂筆記本或管線微調
規則 4:維持第一個模型的簡潔,讓基礎架構正常運作。
第一個模型可為產品提供最大助益,因此不需要 吸引客觀的但基礎架構問題可能會比您還要嚴重 您必須先 來判斷:
- 如何取得學習演算法的範例。
- 初次剪輯成「好」的片段和「不良」對系統的意義
- 如何將模型整合至應用程式。您可以 模型上線 離線針對範例預先運算模型,並將結果儲存在資料表中。 例如,您可能想要預先分類網頁並儲存結果 但可能會想將聊天室訊息分類。
選擇簡單的功能,可輕鬆確保:
- 這些功能會正確應用到學習演算法。
- 模型會學習合理的權重。
- 特徵會正確傳送至伺服器中的模型。
只要系統達到這三項目的,就能打造出可靠成果 大多數的工作簡單的模型會提供基準指標和 基準行為,可用來測試更複雜的模型。有些團隊的目標是 表示「中立」首次啟動:首次啟動,明確降低順位 機器學習技術的優勢,避免分心而分心。
規則 5:單獨測試基礎架構,與機器學習無關。
確保基礎架構可供測試,且學習部分 系統封裝完成,方便您測試周遭的所有情況。 詳細說明:
- 測試取得資料至演算法。檢查 應該填入的內容在隱私權許可的情況下,我們會以人工方式處理 檢查訓練演算法的輸入內容可能的話,請確認 管道中與相同資料統計資料相比的統計資料 並在其他位置處理
- 測試從訓練演算法取得模型。請確認 訓練環境中的模型會有與模型相同的分數 測試環境 (請參閱 規則 37)。
機器學習具有難以預測的要素 執行程式碼測試,以便建立訓練和提供範例 ,可在提供期間載入並使用固定模型。此外 解讀資料: 大型複雜資料集分析實用建議。
規則 6:複製管道時請謹慎處理捨棄的資料。
我們通常透過複製現有管道 (即 cargo cult 程式設計 ),而舊管道會捨棄新管道所需的資料。 例如 Google+ What’s Hot 管道 會捨棄較舊的貼文 (因為是為了排定新貼文的排名)。這個管道之前 改為用於 Google+ 訊息串,其中較舊的訊息 但管道仍在捨棄舊的文章。其他 通常只會記錄使用者看到的資料。因此,這項資料是 我們可以模擬使用者看不到某則訊息的原因 因為所有排除樣本都捨棄了發生類似問題: 遊玩、您使用 Play 應用程式首頁時建立了新的管道, 包含 Play 遊戲到達網頁的範例,不含任何功能 釐清每個範例的來源。
規則 7:將經驗法則轉化為特徵,或是對外處理。
通常機器學習嘗試解決的問題 全新概念現有的排名、分類系統或 想解決的難題也就是說 和經驗法則這些經驗法則能幫助您微調 借助機器學習技術。不論用什麼方法 造成這項資訊的原因有二首先,轉換至虛擬機器 讓學習系統變得更順暢第二,這些規則通常會包含大量資料 請思考不要丟掉的系統。這堂課程有四個 現有經驗法則:
- 使用經驗法則預先處理。如果這項功能太厲害了 您就可以選取這個選項舉例來說,在垃圾郵件篩選器中,寄件者 已列入黑名單,請勿嘗試重新瞭解「黑名單」為何 代表。封鎖該郵件。這種方法最適合用於二進位 分類任務
- 建立功能。根據經驗法則直接建立特徵是很好的做法。 舉例來說,如果您使用經驗法則來計算查詢的關聯性分數 結果,您可以將分數做為特徵的值。稍後觀看 不妨運用機器學習技術 (例如將值轉換為某一組有限值的一組有限值) 或與其他特徵組合),但先使用原始 產生的值
- 盡量減少經驗法則的原始輸入內容。如果應用程式有經驗法則 結合安裝次數、 也可以考慮將這些文字拆開來 並將這些輸入內容分別匯入到學習中一些技巧 適用本文所定義樣式 (請參閱 規則 40)。
- 修改標籤。當您感受到經驗法則,建議採用這個做法 擷取目前未包含在標籤中的資訊。例如: 您想盡量增加下載次數 那麼直接把標籤乘以 應用程式獲得的平均星星數。這裡的走道很多。 請參閱「您的第一個目標」。
在機器學習中使用經驗法則時,請留意會增加的複雜度 有些人會將 Cloud Storage 視為檔案系統 但實際上不是在新的機器學習演算法中使用舊經驗法則 有助於營造流暢的轉場體驗,但請先思考 達成相同效果
監控
一般而言,練習良好的警示健全度,如發出警示的可行性 並設定資訊主頁
規則 8:瞭解系統的時效性要求。
如果模型已建立一天,效能會降低多少?一週 幾歲?四分之一?這項資訊有助您瞭解優先考量 。如果重要產品不見了 就表示模型沒有更新 讓工程師持續觀看影片是合理的做法大部分的廣告 廣告放送系統會每天處理新的廣告,而且必須更新 每日執行。舉例來說 Google Play 搜尋尚未更新, 一個月內可能帶來負面影響一些「趣事」模型 Google+ 在模型中沒有貼文 ID, 他們可以 建議你避免經常匯出這些模型其他有貼文 ID 的模型 更新頻率高出許多另外請注意,更新間隔可能會隨時間而改變 在模型中新增或移除特徵資料欄時特別重要
規則 9:匯出模型前偵測問題。
許多機器學習系統都有一個階段,用來將模型匯出至 放送。如果匯出的模型發生問題,會發生這種問題, 問題。
先執行例行檢查再匯出模型。具體來說,務必確保 。或是 但請勿匯出模型。多個團隊 持續部署模型時,請檢查 ROC 曲線 (簡稱 AUC) 再匯出。未匯出模型的問題需要 電子郵件快訊,但如果是面向使用者的模型,可能需要頁面。這樣更好 才能影響使用者的問題
規則 10:留意是否出現靜音失敗情形。
這個問題比其他系統更常發生這個問題 可以提供幾種系統假設要彙整的特定資料表為 {0/}機器學習系統會調整設定 持續合理地衰退有時候,你可能會發現 表格的資料,再簡單重新整理就能提高成效 是當季應用程式上市的 2 倍之多! 特徵可能會隨實作變更而變動,例如特徵欄 我們有 90% 的樣本填入了 40% 的樣本 範例。玩這款遊戲的《紙牌遊戲》已有 6 個月的時間過時,然後不斷重新整理 光是表格就提高了 2% 的安裝率如果追蹤 以及有時手動檢查資料,並能降低 這類故障情形
規則 11:為特徵欄提供擁有者和說明文件。
如果系統規模龐大,而且有很多特徵欄,請知道是誰建立 還是要維護每個特徵欄如果看到 瞭解某個特徵欄即將離開,請確保有人知道 可能不準確或不適當雖然許多特徵欄都有描述性名稱,但最好 針對特定功能、用途 以及預期提供的協助
您的第一個目標
針對自己重視的系統提供許多指標或測量指標 但機器學習演算法通常需要一個目標、 表示演算法要「嘗試」的數字進行最佳化。我很區別這邊 指標是系統評估目標與指標間的任意數字 不一定重要其他參考資訊 規則 2:
規則 12:不要想太多要直接最佳化哪個目標,
您希望獲利、讓使用者滿意,讓世界變得更美好 。您重視的有很多指標,因此應該評估 (請參閱規則 #2)。不過 機器學習程序的初期階段就會發現 處理未直接最佳化的廣告例如,假設您在乎 點擊次數和網站停留時間。如果希望盡量爭取 應該就能看見花費的時間增加
因此,請依循簡單原則,不要太難在各指標之間取得平衡 因為你還是可以輕鬆增加所有指標也不要遵守這項規則 但千萬別誤以為你的目標 系統 (請參閱 規則 39)。 如果您發現自己直接將 但決定不要推出這個最佳化指標 應用程式。
規則 13:為第一個目標選擇簡單、可觀測且可歸因的指標。
您往往不知道真正的目標是什麼。你認為自己會這麼做 您都需要為舊系統和新機器學習 您發現想要調整目標此外,不同的團隊 成員通常無法對真正的目標達成共識機器學習目標: 方便衡量,也是代表「true」的。 實際上,通常沒有如此目標 (請見 Rule#39)。 以下內容 來訓練簡單的機器學習目標 並考慮建立「政策層」位於上方 可讓您新增其他邏輯 (可能非常簡單的邏輯) 最後排名
建立模型時,最簡單的做法是直接觀測到使用者行為,並歸因於 系統的動作:
- 這個排名連結會獲得點擊嗎?
- 這個排名物件已下載嗎?
- 這個排名物件是否會轉寄/回覆/傳送電子郵件?
- 這個排名物件是否獲得評分?
- 這個顯示的物件是否標示為垃圾內容/色情/令人反感的內容?
避免一開始就建立間接效果:
- 使用者是在隔天造訪嗎?
- 使用者造訪網站多久的時間?
- 每日活躍使用人數為何?
間接效應能帶來出色的指標,且可在 A/B 測試和發布期間使用 讓人們瞭解 AI 系統如何做出決策
最後,不要試圖讓機器學習瞭解:
- 使用者是否滿意產品?
- 使用者是否滿意?
- 產品是否改善使用者的整體身心健康?
- 這對公司整體健康有什麼影響?
這些都很重要,但也很難評估。而是改用 Proxy:如果使用者滿意,就會繼續留在網站上。如果使用者 ,明天就會再來到。Insofar 以及身心健康 擔心公司健康,需要人工審查 機器根據所售產品的性質學習目標 業務計畫
規則 14:先從可解釋的模型著手,這樣偵錯更容易。
線性迴歸、邏輯迴歸和 Poisson 迴歸都是直接的 這類模型以機率模型為導向。每項預測結果可解釋為 或預期值因此比模型更容易偵錯 並嘗試運用目標 (零一損失、各種轉軸損失等) 來 ,直接改善分類準確率或排名成效。適用對象 舉例來說,如果訓練機率與 或者檢查實際運作系統,而這個誤差 顯示問題
例如,在線性、邏輯或帕松迴歸中, 平均預測期望等於平均標籤 (1- 時間安排,或只校正)。前提是您沒有任何 以及你的演算法已收斂 傳回的結果如果您的特徵各為 1 或 0, 然後以 3 個例子校正特徵 1。此外, 每項範例都有 1 的功能,那麼所有範例的集合都是 校正。
使用簡單的模型,就能輕鬆處理意見回饋循環 (請參閱 規則 36)。 我們通常會使用這些機率預測做出決策,例如:排名 提高預期值 (亦即點擊/下載等機率) 的貼文。 不過,要選擇要使用的模式時, 決策的重要性高於模型提供資料的可能性 (請參閱 規則 27)。
規則 15:在政策層中分開篩選垃圾郵件和品質排名。
品質排名是一門藝術,但垃圾郵件篩選功能實在是戰爭。這類信號 您會優先選擇品質較高的貼文,讓使用這些內容的人會顯得 他們就會修改文章以取得這些屬性。因此, 品質排名應該著重於,為這類內容帶來正面評價 信託。請不要為了將垃圾內容排名提高品質評分者感到低落 。同樣地,「兒童不宜」內容應與品質團隊分開處理 排名。「垃圾留言篩選」是另一種情況。您必須預期 所有必要功能都會持續改變通常, 是您在系統中明確指定的規則 (如果文章的 三集垃圾投票等等,不要找它,等等)。任何學到的模型都會 就會每天更新創作者的聲譽 對內容的影響才大有助益
在某種程度上,這兩個系統的輸出內容都必須經過整合。保留 請注意,在搜尋結果中過濾垃圾郵件,可能就較帶有侵略性 比過濾垃圾郵件更多的垃圾郵件。此外,這種標準做法是 避免垃圾內容分類器的訓練資料
機器學習階段 2:特徵工程
在機器學習系統生命週期的第一階段 可以將訓練資料導入學習系統、 定義興趣指標及建立服務基礎架構使用後 您有一個能檢測單元和系統測試的端對端系統 第二階段開始。
第二階段裡有很多需要立即懸掛的水果,有許多 可以帶入系統的顯而易見功能因此,第二個 機器學習階段,需要盡可能導入最多功能 。在這個階段,所有指標 還是仍在上升中我們將推出許多新功能,而且現在正是時候 該集結了大量工程師,可以彙整您需要的所有資料 可以打造真正優質的學習系統
規則 16:規劃發布及反覆改進。
您目前使用的模型未必是 您會啟動模型,甚至導致模型停止運作因此 思考這次增加的複雜度是否會降低 許多團隊都已每季推出 近幾年也在眾多 年度業界獎項和報告中履獲認可推出新模型的基本原因有三:
- 即將推出新功能。
- 您正在調整正則化並以全新方式結合舊功能。
- 您正在調整目標。
無論如何,給模型一點的熱愛是不錯的做法:觀察資料 擷取到例子中可幫助我們找出新舊信號 服務。因此在建構模型時,請思考新增或移除模型的難易度 或重新組合功能重新撰寫 並驗證管道的正確性請思考能否 因此系統會同時執行兩到三個副本最後,不要擔心 看看功能 16 是否會加入這個版本的管道您 並在下一季解鎖
規則 17:先從直接觀察到和回報的功能著手,而不是從學到的功能著手。
這可能是個爭議性話題,但能避免許多陷阱。第 1 個 接著來說明什麼是功能。已學會的功能是一種 由外部系統 (例如非監督式分群法) 產生的 系統) 或學習者本身使用情境 (例如透過因式模型或深度學習)。 兩者都很實用,但可能有許多問題,因此 未採用第一個模型
如果您使用外部系統建立功能,請注意外部系統 每個系統都有自己的目標外部系統的目標可能只有弱點 與您目前的目標相關如從外部擷取 可能會過時如果您從 所代表的意義可能會改變如果使用外部系統 就需要注意這項功能,但必須特別小心
因子模型和深度模型的主要問題在於 非凸面因此,我們也無法保證最佳解決方案可以達成您的願景 且每次疊代時找到的當地 minima 都能 也不一樣因此難以判斷 對系統進行的變更是有意義或隨機的。也就是建立不含 深淺的特徵,因此可達到出色的基準成效。之後 基準線,您就可以嘗試更極端的做法。
規則 18:探索適合各種情境的內容功能。
機器學習系統通常只是大範圍的一小部分。適用對象 舉例來說,假設你認為某則貼文可能會用於「趣事」 系統會對訊息顯示 +1、轉貼或留言, 溫度偏高,如果將統計資料提供給學生,就能宣傳新貼文 但當您進行最佳化時就沒有任何資料 YouTube「接下來請看」專區會根據觀看次數, 觀看 (觀眾觀看一部影片後觀看的次數) 觀看) 來自 YouTube 搜尋。你也可以使用 使用者評分最後,如果您要將某個使用者動作當做標籤使用 以不同的方式檢視文件上的動作 而不是每個特徵的分數有了以上所有功能,您就能將新內容融入背景中。 請注意,這並不是個人化內容;如要瞭解其他人是否喜歡 然後決定比較喜歡該內容的使用者。
規則 19:請盡可能使用非常具體的功能。
使用大量資料,因此學習數百萬個簡單功能, 較複雜的功能所擷取文件的 ID,以及 標準化查詢不會提供廣泛的概括性,但將 和標籤在標頭查詢中的排名因此不必害怕 每項功能都只會套用至極少數資料 整體涵蓋率超過 90%您可以使用正則化 某些功能不適用於樣本
規則 20:結合並修改現有功能,以人類可理解的方式建立新特徵。
合併及修改特徵的方式有很多種。機器學習 TensorFlow 等系統可讓你透過 轉換。 兩種最標準的方法是「歧視」和「交叉點」
歧視行為包括持續性功能、 獨立功能考慮採用連續的特徵,例如年齡。你可以 同時建立一個功能,且年齡未滿 18 歲時則設為 1, 年齡介於 18 到 35 歲之間,則為 1。不要將重點放在 這些直方圖可以帶來最大影響
交叉符號會合併兩個以上的特徵資料欄。這個特徵欄位於 TensorFlow 的 術語是指一組性質的特徵 (例如,{male、male}、{US、 加拿大, 墨西哥} 等。交叉符號是全新的特徵欄,其功能為 例如:{male,male} × {US,Canada, Mexico}。這個新功能欄 會包含地圖項目 (男性、加拿大)。如果你使用 TensorFlow, 告訴 TensorFlow 為你建立這個交叉線,(加拿大男性) 功能 出現在代表加拿大男性的例子請注意 也就是用三、四或更多數十元以上的資料來學習模型 特徵資料欄
產生非常大型特徵欄的十字架可能會過度配適。舉例來說: 假設您正在執行某種搜尋 而且有一個特徵欄 特徵欄就會有特徵欄 文件。您可用十字可以併用多個值 功能 (請參閱規則 #21)。
處理文字時,有兩種替代方案。最忠實的劇情是 小品類產品。以最簡單的方式計算 查詢字詞與文件之間有共通的字詞至於 或分散的另一個方法是交錯組合:因此 而只有在「pony」這個字詞時才出現同時出現在文件中 另一個則會出現另一個功能,只有在字詞「the」兩字時才出現位於 文件和查詢
規則 21:在線性模式中學習的特徵權重數量,大致上與您擁有的資料量有正規的比例。
有關統計學習理論的結果,與 但本規則基本上是 所有相關資訊我先前的對話中有大家都懷疑 可從一千個樣本中學到什麼 需要超過一百萬個樣本 。關鍵在於擴大學習資料規模:
- 如果你使用搜尋排名系統 出現在文件中的不同字詞,而 您獲得了 1000 標籤範例時,應該在文件之間使用半形句號 以及查詢特徵 TF-IDF 還有一半的 接著介紹網際網路通訊層 包括兩項主要的安全防護功能1000 個範例,10 項功能。
- 如果您有百萬個樣本,請對文件和查詢進行交集 特徵分欄 (採用正規化) 和可能的特徵選項。 這樣您就能使用數百萬種功能 就會減少也許有 100 萬個功能,也許有一百萬個功能。
- 如有數十億或數千億個樣本 包含文件和查詢符記的特徵欄 (使用特徵選擇功能) 和正則化你有十億個樣本、1, 000 萬個樣本 接著介紹網際網路通訊層 包括兩項主要的安全防護功能統計學習理論很少有限制 入門指引的實用指南
最後,使用 規則 28 決定要使用的功能
規則 22:清除不再使用的功能。
未使用的功能會造成技術債。如果發現不是使用 導致無法與其他功能合併使用 再也不必擔心您希望基礎架構保持乾淨 大家都能盡快體驗最具潛力的功能。如果 必要時,其他使用者隨時可以加回你的地圖項目。
考慮要新增或保留哪些功能時,請考量涵蓋範圍。數量 功能中的例子?舉例來說 但只有 8% 的使用者俱有個人化功能 就會變得非常有效
同時,某些功能可能會超出其體重。舉例來說 您的功能只涵蓋 1% 的資料 只要具備正向的特徵,就會相當適合新增這項功能。
系統人為分析
進入機器學習的第三階段之前 專注於所有機器學習課程中尚未教授的知識:如何 參考並改進現有模型這可不只是藝術 科學的成果,但其實還有一些反面模式反而能避免
規則 23:您不是一般使用者。
這或許是團隊容易冷落的最簡單方式。在特定情況下 可以在團隊內部使用原型 進行 Dogfood 測試 (在公司內部使用原型) 時,員工必須 以及效能是否正確無誤雖然有明顯不佳的變革 任何在實際工作環境中看似合理的追蹤器, 並付費請聽眾回答 並透過群眾外包平台,或是針對實際使用者進行即時實驗
有兩個原因會造成這種情況。第一個原因是 再也不是件繁重乏味的工作您可能會在尋找文章的特定方面,或者 過度投入的情感 (例如確認偏誤)。其次是 時間寶貴考慮 9 名工程師同時享受 90% 的成本 會議,並想想在一個小時的情況下,購買多少件約定的人工標籤 群眾外包平台
如要提供使用者意見回饋,請善用使用者體驗 方法。建立使用者人物角色 (一項說明在 Bill Buxton 的 勾勒使用者體驗) 並執行可用性測試 請參閱 Steve Krug 的 別讓我思考)。 使用者職務角色 建立假想使用者舉例來說,如果你的團隊全是男性 設計 35 歲的女性使用者人物角色 有助於構思成形 並細看該工具產生的結果,而不是 10 筆 25 到 40 歲的男性。邀請實際觀眾觀看影片 參與可用性測試的網站 (本機或遠端) 也能讓您 以便做好準備 從自己的專業觀點進行討論
規則 #24:測量模型之間的差異。
評估成效最簡單也最實用的評估方式之一 來計算出 看過新模型的使用者 產生了新的查詢結果舉例來說,如果您有排名方面的問題 在整個系統查詢中同時執行兩個模型 結果的對稱差異大小 (按排名加權計算) 位置)。如果差異極小,不必執行 這種實驗會有微小的變化如果差異 ,則須確保變更品質良好。回顧 幫助您瞭解 改變的運作方式不過,請確定系統 以及穩定的品質比較模型時,請確認模型的 等同對稱差異。
規則 #25:選擇模型時,機能性效能勝過預測能力。
模型可能會嘗試預測點閱率。不過,最後的重點在於 就是您對該預測的處理方式如果你使用它來為網站排名 那麼最終排名的品質就比 模型本身如果您預測文件為垃圾內容的可能性 會決定要封鎖的內容,以及所允許內容的精確度 因此在大多數的情況下,這兩個項目應該都放在 如果他們不同意,將只會稍微利益提高因此,如果 其中有部分變更可以改善對記錄檔的遺失率,但會降低 尋找另一個功能當這種情況更頻繁發生時 就可以重新審視模型的目標
規則 #26:找出測量到的錯誤中的模式並建立新功能。
假設您看到模型收到「錯誤」的訓練範例。在 這個錯誤可能是偽陽性或偽陰性結果 在排名工作中,錯誤可能為一對,但正數的排名較低 而不是負數最重要的是,這個例子中的 機器學習系統知道這是誤判,且基於 商機。如果您為模型提供特徵可修正錯誤 模型就會嘗試使用
另一方面,如果您根據範例 如果系統未偵測到錯誤,就會忽略該功能。舉例來說: 假設在 Play 應用程式搜尋中,有人搜尋「免費遊戲」。假設 其中一項熱門結果是關聯性較低的差距應用程式。因此您會建立 「gag apps」。但若您想要盡量增加安裝次數 並在搜尋免費遊戲、「轉蛋應用程式」時安裝 Gag 應用程式精選內容 就不會獲得您所需要的效果
得出模型錯誤的例子後,請找出哪些趨勢 而未納入目前的特徵集舉例來說,假設系統 調降貼文長度,然後加入貼文長度。請不要太具體地說明 功能。加入貼文長度時,不要試圖猜測 就可以加入 12 個特徵,接著讓模型判斷該採取什麼行動 (請參閱 規則 21 )。以最輕鬆的方式取得所需資料。
規則 27:嘗試量化觀察到的不適當行為。
您的部分團隊成員即將對 並排除現有損失函式卻找不到的系統在 他們應該設法將手柄變成固體 數字。舉例來說,如果他們認為太多「gag 應用程式」顯示 由評分者識別 Google Play 搜尋中的 Google 作業。(您可以 則可以使用這個人工標籤資料,因為 流量比例佔了絕大部分查詢)。如果您的 您就可以開始把它們當做功能、目標 或指標一般規則是「先評估,再進行最佳化」。
規則 28:請注意,相同的短期行為並不代表完全相同的長期行為。
假設您有一個新系統可查看所有 doc_id 和 Exact_query, 然後針對每項查詢計算每份文件的點擊機率。 您發現在這兩個平台中,它的行為與目前的系統幾乎相同 並排測試和 A/B 測試 因此推出簡單又好用的功能 但您會發現不再顯示新的應用程式。這是因為嗯,因為 系統是根據該查詢本身的記錄來顯示文件, 表示應該顯示新文件
要瞭解這種系統如何維持長期運作,唯一的方法是確保 訓練時只使用模型發布時取得的資料相當適合 難以執行的程序
訓練/應用偏差
訓練/應用偏差是指訓練與 確保運作效能造成此偏差的可能原因如下:
- 您在訓練和提供管道中處理資料的方式不一致。
- 訓練和提供服務時的資料變更。
- 模型和演算法之間的意見回饋循環。
我們觀察到 Google 的生產機器學習系統有相關訓練: 放送偏差,因而對效能造成負面影響。最好的解決方式是 明確監控系統,以免發生系統和資料異動時出現偏差 完全不必被告知。
規則 29:確保訓練方式是確保訓練人員的正確方法,就是儲存服務期間使用的一組功能,然後將這些功能插入記錄中,以便在訓練期間使用這些特徵。
即使無法為每個範例進行這個步驟,也不妨讓小分數 可讓您驗證提供服務與訓練之間的一致性 (請參閱 規則 37)。施展這項任務的團隊 結果常令人感到驚訝 YouTube 首頁 以優異品質在服務期間切換至記錄功能 並降低程式碼複雜度,而且許多團隊都在改用 基礎架構
規則 30:重要性加權的取樣資料,請勿任意捨棄!
資料量太多時,您可能會想 1 到 12 個檔案 略過 13-99 檔案。答錯了。雖然資料 絕不會向使用者顯示,但重要性加權是最佳選擇 休息。重要性加權 表示您 決定 假設樣本 X 機率為 30%,權重為 10/3有了 重要性加權,以及上述所有校正屬性 規則 14 請保持不動
規則 31:請注意,如果在訓練和提供服務時彙整資料表中的資料,資料表中的資料可能會有所變更。
假設您將文件 ID 與內含這些文件功能 (例如 留言或點擊次數)。在訓練和提供時間之間, 資料表可能會有所變更模型對同一文件的預測結果可能會 訓練和提供時的差異避免這種狀況最簡便的方法 問題在於記錄服務期間的功能 (請參閱 規則 32 )。如果資料表: 還能選擇每小時或每天擷取一次資料表快照 關閉資料。請注意,這麼做還是無法完全解決 問題。
規則 32:盡可能在訓練管道和提供管道之間重複使用程式碼。
批次處理與線上處理不同。在線上處理中 您必須在收到每個要求後予以處理 (例如,您必須個別查詢 而在批次處理中,則可以結合工作 (例如 即可進行彙整)。提供服務時,您需要進行線上處理, 訓練是批次處理工作不過 重複使用程式碼舉例來說,您可以建立 專屬於您的系統,任何查詢或彙整的結果可以是 並以人類可讀的方式儲存,同時也能輕鬆測試錯誤。接著: 如果你在提供或訓練期間收集到所有資訊 執行常用方法來銜接人類可讀的物件 專屬於您的系統,以及機器學習系統的任何格式 符合預期這可消除訓練/應用偏差的來源。身為 我們可能不會在訓練之間使用兩種程式設計語言 並提供服務這項決定會讓大家幾乎不可能 再也不是件繁重乏味的工作
規則 33:如果您根據 1 月 5 日之前的資料產生模型,請使用 1 月 6 日及之後的資料測試模型。
一般而言,請根據資料後收集到的資料評估模型成效 訓練模型時,這更能反映系統 。如果您根據截至 1 月 5 日為止的資料產生模型,則請測試 用於產生 1 月 6 日的資料您預期成效 對新資料的影響不大,但資料不應該明顯降低。 由於可能有每日影響,因此可能無法預測平均點擊次數 轉換率或轉換率 而是曲線下的面積 給予正面範例的機率高於負數的可能性 例如合理關閉
規則 34:在篩選用二元分類 (例如偵測垃圾郵件或判斷有趣的電子郵件) 方面,僅稍微犧牲短期效能,讓資料完全乾淨。
在篩選工作中,標示為排除的範例不會顯示 使用者。假設您的篩選器會封鎖 75% 的排除樣本 執行要求您可能會想從 使用者看到的執行個體舉例來說,如果使用者將電子郵件標示為垃圾郵件,且 或許您會想瞭解
但這種做法會產生抽樣偏誤。您可以收集更明確的資料,但有以下情況: 而是將所有流量標示為「預留」 其實是在向使用者發送範例您的篩選器目前封鎖了至少 74% 排除範例這些保留的樣本可能會成為您的訓練資料。
請注意,如果您的篩選器封鎖了 95% 以上的負面範例, 就比較不可行不過,如果您想評估放送成效 也可以製作更細的樣本 (例如 0.1% 或 0.001%)。十 就能準確預估成效。
規則 35:注意排名問題固有的偏差。
大幅度地切換排名演算法後,會產生不同的結果 就表示演算法確實改變了 日後才會出現畫面上會出現這種偏差現象 因此您應該 模型方法有很多種,這些做法 運用所有方法妥善處理模型已看過的資料
- 針對包含較多查詢的特徵,採用較高的正則化方式 只對單一查詢開啟的功能如此一來 專為單一或數次查詢所設計的功能 一般化所有查詢這種做法 例如揭露到不相關的查詢請注意,這與 對特徵欄進行更正規化的傳統建議 提供更多不重複的值
- 僅允許特徵具有正權重。因此,任何良好功能 而不是「未知」的地圖項目
- 不提供僅為文件使用的功能。這是第 1 版的極端版本。適用對象 舉例來說,即使某個應用程式很受歡迎, 當然,你不想在所有地方都顯示內容沒有僅供文件使用 功能相當簡單您不想顯示具體資訊的原因 是全球最受歡迎的應用程式 將所有想使用的應用程式設為可連線狀態舉例來說,如果使用者搜尋 他們可能會下載「憤怒鳥」來下載「憤怒鳥」 與目的無關顯示這類應用程式或許能提高下載率,但 造成使用者需求終究不滿
規則 36:運用位置功能避免產生回饋循環。
內容位置會大幅影響使用者與廣告互動的可能性 。如果您將應用程式排在第一順位 這樣比較容易受到吸引其中一種做法是 來新增位置功能,例如 網頁中的內容。您可以使用位置特徵訓練模型 例如學習權重,例如特徵「1 位置」。您的模型 因此針對含有「1stposition=true」的範例,會得到的其他因素較少。 放送廣告時不要為任何例項提供位置功能 所有工具相同的預設功能,因為您在 決定要顯示的順序
請注意,位置功能應與 其他部分都因為訓練與測試之間有對稱 將模型做為位置特徵的函式總和 其他功能的用法也相當理想舉例來說,請勿跨越 以及支援各種文件功能的介面
規則 37:評估訓練/提供偏差。
在一般情況下,有幾個因素可能會造成偏差。 也可以分為以下幾個部分:
- 訓練資料與保留方面的成效差異 資料。一般來說,這種情況永遠存在,而且不一定糟糕。
- 保留資料與「次日」的成效差異 資料。再次提醒,這些資訊永遠存在。您應該將正規化 盡量提高次日成效。然而,效能卻大幅下滑 處於保留狀態和次日資料之間的落差,可能表示有些特徵 具時效性,且可能會導致模型效能降低。
- 「次日」的成效差異資料 資料。若您在訓練資料中 您應該會得到完全相同的結果 (請參閱 規則 5 )。 因此,如果兩者的資料有出入,可能表示發生工程錯誤。
機器學習階段 3:成長速度變慢、最佳化修正與複雜模型
某些跡象顯示第二階段正接近尾聲。 首先,您的每月收益會開始逐漸減少。您必須在 各指標之間的取捨:您會發現有些微不足道 實驗。這時候,相關領域就變得有趣了。因為增加的難度 機器學習必須更複雜注意事項:這 區段中包含比前面的章節更多的藍天規則。我們發現許多團隊 歷經了第 1 階段和第二階段的機器學習技術一階段 我們收到了 III,多個隊伍必須設法找到他們自己的路。
規則 38:如果目標難以達成共識,請別浪費時間開發新功能。
隨著評估停滯不前,您的團隊會開始觀察 不在您目前機器學習系統的目標範圍內。阿斯 說明如果現有演算法不適用 目標,您需要變更目標或產品目標。適用對象 例如最佳化點擊、加號或下載 有些根據評估人員做出決定
規則 39:上市決策是達成長期產品目標的主要動力。
Alice 的目標是減少預測安裝次數在物流方面的損失,她 新增一項功能物流損失。進行線上實驗時 安裝率會上升但當她查看上市產品時 我們發現每日活躍使用者人數減少 5%。 團隊決定不要推出模型。Alice 很失望 瞭解推出決策時須仰賴多個標準,只有其中一部分 都能直接使用機器學習最佳化處理
事實上,真實世界不是地下城,而不是龍與地下城 分」有助於識別產品的健康狀態我們的團隊必須使用 收集到的統計資料,嘗試有效預測 他們需要關注參與度、1 天活躍使用者 (DAU)、30 每日活躍使用者、收益和廣告客戶的投資報酬率。處於 A/B 版本測試本身的成效差異,只是長期趨勢 包括滿足使用者、增加使用者、提升合作夥伴品質,以及獲利 您只要考慮使用 Proxy 就能提供實用、高品質的服務 同時也幫助公司蓬勃發展
推出決策的唯一原因,在於當所有指標都有改善 (或至少 情況可能會越來越嚴重)如果團隊可以選擇精密的機器 以及簡單的經驗法則 如果簡單的經驗法則 該指標表現較好,應選擇經驗法則。再來,在那裡 沒有所有可能指標值明確的排名。具體來說,請考量 下列兩種情況:
實驗 | 每日活躍使用者人數 | 每日收益 |
---|---|---|
A | 100 萬 | $400 萬美元 |
B | 200 萬 | $200 萬美元 |
如果目前的系統是 A,團隊就不太可能調到 B。如果 那麼團隊就不太可能換到 A。這個 似乎與合理行為發生衝突;然而,預測會隨著 指標不一定會超出預期範圍,因此您需要 任何變更每項指標都會涵蓋團隊擔心的部分風險。
此外,沒有任何指標涵蓋團隊終極疑慮,也就是「我的產品在哪裡?」 「長達五年後」?
另一方面,個人往往希望達成一個目標 直接進行最佳化大部分的機器學習工具都偏好這種環境。一個 工程師在停用新功能時,即可在 環境。還有一種機器學習、多目標學習 開始處理這個問題例如 限制滿意度問題,且在各指標上設有下限。 會最佳化一些線性的指標組合。不過 這些指標都能輕鬆顯示為機器學習目標:如果文件 或是使用者安裝了應用程式,因為畫面上顯示了內容。但 就會難以判斷使用者造訪網站的原因。該如何預測 未來整體而言 AI 補全:跟電腦一樣困難 以及視覺或自然語言處理
規則 40:保持簡單明瞭。
採用原始功能並直接排名內容的整合式模型 以便偵錯及理解不過,模型通常相當豐富 ( 「模型」匯總其他模型的分數) 較好保留 每個模型都應該結合運用 其他模型或包含許多特徵的基礎模型,但兩者只能擇一。如果 搭配使用模型與單獨訓練的模型 可能會導致不良行為
使用簡單的模型來集中處理,只接收「基數」的輸出內容 做為輸入內容您也想對這些組合模型強制執行屬性, 例如,基礎模型產生的分數增加不應 降低整體分數此外,如果傳入的模型 可解釋性 (例如經過校正) 不會混淆組合模型此外,強制執行 某個基礎分類器的預測機率增加幅度 降低預測組合的可能性。
規則 #41:當成效停滯
您新增了使用者的部分客層資訊。您已新增一些 針對文件中的字詞提供進一步的資訊您已瀏覽過範本 並調整正則化你並未發現有更多內容推出的項目 短短幾季,主要指標的成效就有機會增加 1%以下提供一些入門指南
是時候開始建立完全不同的基礎架構了 功能,例如這位使用者在 或是其他資源的資料使用 維基資料 或公司內部的任何項目 (如 Google 的 「知識圖譜」)。使用深度 學習模式開始調整期望投資報酬率 並據此擴大投入範圍與任何 就必須衡量加入新功能的好處 以因應複雜作業增加的成本
規則 42:不要期望多元、個人化或關聯性與熱門程度相關。
豐富多樣的內容可以涵蓋許多層面, 是最常見的內容來源之一。「個人化」隱含的 也會取得自己的結果關聯性 是指特定的網站 比任何其他查詢更適合該查詢。因此,這 3 個 這些屬性與正常值不同
問題是,一般很難打敗。
請注意,如果系統要評估點擊、時間、觀看、+1 次數 轉貼次數等等,也是在評估內容的熱門程度。團隊 有時候會試著學習多元的個人模型可提供個人化內容 讓系統提供個人化資訊 (包括 使用者的興趣) 或多樣化 (可指出這份文件是否 與其他傳回文件相同的功能,例如作者或內容), 這些功能的體重也較低 (有時是不同的徵兆) 超乎預期的體驗
這不代表多元性、個人化或關聯性沒有價值。 如上一個規則所述,您可以進行後續處理來增加 多元性或關聯性。如果長期目標增加 除了人氣之外,聲明多元/關聯性也有價值。你可以 您就可以繼續使用後續處理作業,也可以直接修改 歸納出的策略
規則 43:您的朋友在不同產品中通常都相同。您的興趣通常不是。
Google 團隊曾採用 和某一項產品之間的聯繫 以及在其他產品上都能順利運作 您的朋友就是人格。另外,我已看過多個團隊 難以跨產品劃分的個人化功能。是,似乎 看看應該能正常運作但目前似乎不是如此。有時候 是運用來自某個屬性的原始資料來預測另一個屬性的行為。另外, 請注意,即使知道某位使用者擁有其他資源的記錄 的說明。舉例來說,有兩種產品的使用者活動可呈現 這裡的意義在於
相關作品
Google 有許多關於機器學習的文件,也對外提供。
- 機器學習密集課程: 機器學習應用簡介
- 機器學習:機率做法 。
- 優秀的資料分析: 是一種數據資料學方法 思考資料集的應用方式
- Ian 的深度學習 Goodfellow 等人為學習非線性模型
- Google 文件已開啟 提供許多通用建議
- Tensorflow 說明文件。
特別銘謝
感謝 David Westbrook、Peter Brandt、Samuel Ieong、Chenyu Zhao、Li Wei Michalis Potamias、Evan Rosen、Barry Rosenberg、Christine Robson、James Pine Tal Shaked、Tushar Chandra、Mustafa Ispir、Jeremiah Harmsen、Konstantinos Katsiapis、Glen Anderson、Dan Duckworth、Shishir Birmiwal、Gal Elidan、Su Lin Wu、Jaihui Liu、Fernando Pereira 和 Hrishikesh Aradhye 進行許多修正, 提供建議和實用範例此外,感謝 Kristen Lefevre、Suddha Basu 和 Chris Berg 協助推出較舊版本。不限 錯誤、疏忽,或 (太驚人) 不受歡迎的意見都是我自己的。
附錄
本文件有許多 Google 產品的相關參考資料,目的地: 詳細說明,我簡單說明最常見的例子 。
YouTube 簡介
YouTube 是串流影片服務,同時顯示 YouTube「接著看」和 YouTube 首頁 Page 團隊會根據機器學習模型,決定推薦影片的排名。「接下來請看」推薦的影片 正播完影片後接著觀看,首頁則是推薦 向瀏覽首頁的使用者顯示影片
Google Play 總覽
Google Play 有許多型號可以解決各種問題。Google Play 搜尋、Google Play 首頁的個人化推薦內容和「使用者也安裝了以下項目」應用程式全都使用 機器學習
Google+ 總覽
Google+ 在許多情況下採用了機器學習技術: 「串流」則顯示「趣事」排名則貼文 (貼文) 或排名等等Google+ 已於 2019 年關閉所有個人帳戶,並由 Google Currents 取代 企業帳戶。