最近,谷歌研究人員發表了一篇論文,並在RecSys 2019(丹麥哥本哈根)的論壇上公布,論文中對他們的視頻平臺Youtube用戶視頻推薦方式進行了闡述。在這篇文章中,筆者將試著總結我閱讀這篇論文後的發現。
解決的問題
當用戶在Youtube上觀看視頻時,一個用戶可能會喜歡的推薦視頻列表會以一定的順序顯示出來。該論文的研究目標主要有兩個:
·需要優化不同的目標;確切的目標功能沒有定義,但是目標被劃分為參與目標(點擊、耗費時長)和滿意度目標(喜歡、不喜歡)。
·減少系統隱含的選擇偏差,因為用戶更有可能點擊第一個推薦,儘管位置較低的視頻可能產生更高的參與度和滿意度。
註:如何有效、高效地學習減少這種偏差是一個懸而未決的問題。
採用的方法
圖1:模型的完整架構
這個論文中所描述的模型主要針對兩個目標。該團隊使用了一個廣度和深度(Wide & Deep)模型架構,它結合了廣度線性模型(記憶)和深度神經網絡(歸納)的力量。Wide & Deep模型將為每個定義的目標(包括參與度和滿意度)生成預測。目標分為二分類問題(即是否喜歡某個視頻)和回歸問題(即對某個視頻的評價)。這個模型的頂部會添加一個單獨的排名模型。這只是輸出向量的一個加權組合,輸出向量即不同的預測目標。這些權重是手動調整的,以實現不同目標的最佳性能。為了提高性能,該團隊提出了一些先進的方法,如成對的或基於列表的方法,但是由於計算時間的增加,這些方法並沒有被應用到生產中。
圖2:用MMoE替換shared-bottom層
在Wide & Deep模型的Deep部分,採用了MMoE模型(Multi-gate Mixture of Experts)。將當前視頻的特性(內容、標題、主題、上傳時間等)和正在觀看的用戶(時間、用戶檔案等)作為輸入。MMoE模型背後的概念是基於在不同目標上有效地共享權重。shared-bottom層被分成多個Expert,這些Expert都被用來預測不同的目標。每個目標都有一個gate函數。該gate函數是一個具有原始共享層和不同Expert層輸入的softmax函數。這個softmax函數將確定哪些Expert層對於不同的目標是重要的。如圖3所示,不同的Expert會對於不同的目標更加重要。如果與 shared-bottom架構相比,不同的目標具有較低的相關性,則MMoE模型訓練受到的影響更小。
圖3:YouTube上的多任務專家應用
該模型的Wide部分是減少系統中推薦視頻位置引入的選擇偏差。這個Wide部分被稱為「淺塔」(shallow tower),它可以只是一個簡單的線性模型,使用簡單的功能,如視頻點擊位置和用來觀看視頻的設備。淺塔的輸出與MMoE模型的輸出相結合,MMoE模型是Wide & Deep模型體系結構的關鍵組成部分。這樣一來,模型就會更關注視頻的位置。在訓練中,會設置10%的丟失率被用來防止位置特徵在模型中變得太重要。如果您不使用Wide & Deep的架構,並將位置作為一個單一的特性來添加,那麼模型可能根本不會關注該特性。
結果如何
該論文的結果表明,用MMoE替換shared-bottom層可以提高模型的參與度(觀看推薦視頻的時長)和滿意度(調查反饋)。增加MMoE中的Expert層數量和乘法的數量進一步提高了模型的性能。但由於計算上的限制,這個數字不能在現場設置中增加。
進一步的結果表明,通過減少由於使用淺塔而導致的選擇偏差,參與度度量得到了改善。與只在MMoE模型中添加輸入特性相比,這是一個較為顯著的改進。
值得一提
·雖然谷歌有一個很好的計算基礎設施,但他們仍然需要注意訓練和服務成本。
·通過使用Wide & Deep模型,您可以在設計一個網絡時預先定義對您很重要的一些特性。
·當您需要一個具有多個目標的模型時,MMoE模型是有效的。
·即使擁有一個強大而複雜的模型架構,人們仍然是手動調整最後一層的權重,根據不同的客觀預測來確定實際的排名。
原文作者:Tim Elfrink