推薦系統(11)—— 多目標排序應用實踐_快手


1、推薦場景

  快手主要的流量形態 有 4 個頁面:在這些流量分發的場景中,推薦算法是起着核心主導作用,直接決定了用戶的體驗。

① 發現頁:致力於讓用戶看見更大的世界,分為單列和雙列兩種形態。

  • 雙列 點選模式,給用戶提供選擇的自由

  • 單列 上下滑瀏覽,給用戶沉浸式的瀏覽體驗

② 關注頁:一個半熟人半陌生人的社區,是私域流量的入口,比如和自己的好友互動,瀏覽關注訂閱的生產者作品。

③ 同城頁:帶給用戶身邊觸手可及的生活。

  快手短視頻推薦的主要優化目標是提高用戶的整體的 DAU,讓更多的用戶持續使用快手,提升用戶留存。在具體的排序建模過程,提升使用時長/正向反饋,減少負向反饋,可以提高用戶留存。從上圖中部曲線可見,留存提升在累計一段時間后會帶來 DAU 的置信顯著提升。此外,在推薦中,用戶反饋分四類:

① 隱式正反饋,用戶行為稠密,如用戶在無意間的行為——播放時長、有效播放、播放完成率、完播、復播等;

② 顯示正反饋,需要用戶有意識地做出反饋,不同用戶間的行為密度差異比較大,如收藏、下載、關注、點贊,發表正向評論等;

③ 隱式負反饋,用戶行為稠密,如短播放、用戶終止一次 session 等;

④ 顯示負反饋,需要用戶顯式表達,如不感興趣、負向評論、舉報等。

  而推薦的目標是提高正向反饋、減少負向反饋,提高用戶體驗。推薦分召回、粗排、精排、重排幾個環節;在排序階段,模型預估用戶對內容的個性化偏好,比如,對上述各種用戶反饋的預估值,然后,用機制策略將預估值融合成一個排序分,對視頻排序。

2、多目標精排

  粗排/精排的個性化多任務學習模型,能預估 20 多個不同的預估值,如點擊率、有效播放率、播放時長、點贊率、關注率等,那如何用它來排序呢?從多任務學習到多目標排序,中間有一個過渡,即如何把這些預估值融合成一個單一的排序分?快手推薦追求時長、點贊、關注、分享等多種目標,以及減少不感興趣等負向反饋。

  從固定參數->xgb進行預估->神經網絡->端到端的網絡;

  (1)樹模型規則 Ensemble 融合:使用 GBDT 擬合組合 label,該方法的缺點是樹模型表達能力有限,且無法 online learning。

  (2)DNN 類的網絡模型:相當於通過學習線性加權的超參數去擬合最終的組合收益。其次,用戶特征選用了一種比較輕量級的方式,比如對用戶划分不同的時間窗口:過去 1 分鍾、5 分鍾、15 分鍾、...、2 小時,每個時間窗內,對推薦給他的視頻,根據用戶的反饋拼接成一個向量,這些反饋包括有效播放、點贊、關注、分享、下載、觀看時長等,最后,將各時間窗口對應的反饋向量和 ID 類特征一起輸入到用戶側網絡。

 

   (3)端到端的 DNN 模型:

  對於 Pointwise 形式,把 user_id、行為序列等都作為原始輸入特征,同時,融入 pXtr 特征,使用精排模型來學習最終的組合收益。因為這種方式支持更復雜的特征抽取和網絡結構,如 attention 結構,所以模型的表達能力更強。

   該融合方法存在的問題是不同 Score 之間含義、量級和分布差異較大;顯式反饋如點贊率等在不同用戶間差異巨大,難以適應統一權重;並且依賴模型預估值絕對大小,預估值分布變化時需重新調節或校准。在此基礎上,嘗試在各子項分內做 Normalize 的優化,如把子項分轉化為序。具體地,把用戶的個性化預估點贊率從小到大排序,把每個具體的值映射成它的序,再把序折合成一個分數,不同的序映射到不同的分數,這與 GAUC 目標一致。該做法把不同量綱且分布差異巨大的分數 Normalize 到同樣維度,可兼容含義差異巨大的子項分,保證各子項分權重在同一量級調節,並且隱式反饋的預估分在不同用戶上做到了某種自適應調節。同時,這種序和 AUC 的預估值也是一致的,能很好地和線上模型的效果保持一致性。通過以上的方式把多種不同的打分策略融合在一起,適用於快手線上復雜的業務場景。

  (4)在線自動調參

  上述 Ensemble Sort 里的線性加權系數主要依賴手動調參,優點是簡單輕量且可解釋性好,缺點是效率低且依賴工程師經驗,解決上述問題的一種方式是 Learn2Rank,即用一個模型離線學習各反饋的組合權重。

  • 優點是這是一種 off-policy 方法;數據利用率高,100%的樣本都可以被使用,模型的自由度和復雜度較高,比如 Learn2Rank 可以容納 item embedding,並使用稀疏特征,可訓練千億規模的參數。

  • 缺點是優化的離線 AUC 無法直接對標業務指標。因為這個過程做了很多的簡化,比如從精排到最終吐給用戶,中間還有重排、多樣性的影響,還有后面的一些和其他如商業化/運營流量的融合等等,所以該方式難以考慮到線上復雜多模塊間的完整影響。此外,線下訓練數據和線上也存在不一致性。

  上述離線方法都有具有和 Learn2Rank 類似的缺陷,為了解決該問題,我們這邊開發了在線自動調參框架。自動在線調參的工作機制如上圖左下角所示,即在基線附近探索生成 N 組參數,傳給推薦系統后獲得這 N 組參數對應的展現給用戶的差異化排序結果,從而獲得用戶不同反饋,收集這些反饋日志並做 Reward 統計,最終輸給 CEM/ES/BayesOpt 等調參算法產生下一組更好的參數。經過不停迭代,參數即可逐漸向一個多目標協調最優的方向前進。

  調參算法主要開發了離線優化使用的各種超參優方法,包括交叉熵算法(Cross-Entropy Method,CEM)、進化策略(Evolutionary Strategy,ES)、貝葉斯優化(Bayes Optimization)、高斯過程回歸(Gaussian-Process Regression,GPR)。這里,主要介紹下實踐中常用的 CEM 算法,右側圖例給出了該算法的工作流程:從參數初始的高斯分布出發,一般均值選為線上基線參數,方差手動設置,然后根據該高斯分布隨機生成 N 組參數,每組參數都做在線 AB 測試、收集反饋、計算 Reward,選擇 Reward 最好的 TopK 組參數,並統計着 K 組參數的均值和方差,並對方差做微小擾動(防止過早陷入局部最優)后得到新的高斯分布,根據新高斯分布繼續采樣獲取新樣本...經過若干次迭代,最終會收斂到一組較好的參數。該算法的優點是簡潔、高效,超參很少;0 階方法,TopK 選取只依賴 Reward 的序,不需要對 Reward 的數值大小進行建模,對噪聲更近魯棒;參數通過高斯分布擾動探索,偏離基線越多的參數選中的概率越小,線上指標相對平穩。

  在實踐中,困擾比較多的是噪聲。噪聲主要來源是數據稀缺和稀疏 label。比如把 5%的流量分 100 組,相當於十萬量級的用戶幾小時的樣本量只能生成一個樣本點,並且每組參數只相當於線下 1/2000 的流量,這么小的流量做 AB 測試方差會比較大。上圖右側展示了“隨着分組數的增加,不同互動類型的波動”,如播放量波動范圍 0.4~1.2%,點贊量的波動會更大一些,因為稀數 label 的波動性可能會更大一些。相應地,降噪方法包括:增加探索組的流量、減少分桶數;增加每次累計的樣本量,如從兩個小時的累計樣本量增加到四個小時的累計樣本量;用 PV 粒度替換 UV 粒度分桶,因為一個組 UV 可能就幾百萬,而每個用戶每天會有幾十刷,使用 PV 樣本量就翻很多倍,所以使用 PV 的方差也更小,圖中紅線給出了按 PV 采樣分桶得到的方差,可以看到,方差都更小些。

  除個性化排序場景外,我們也在其余更多場景嘗試了超參優化方法,比如,召回源配額分配時,主要調控召回源的數量多少、耗時及總收益的最大化;粗排和精排的排序權重參數;Ensemble Sort 的排序權重;重排的多樣性權重參數等。在線多場景聯合調參,精細尋找系統最優。此外,考慮人群和上下文的個性化和場景化調參,比如通過一個廣義線性模型來根據特征計算參數,類似 Contextual Bandit;引入用戶畫像特征,比如年齡、年齡段、性別;還有上下文特征,比如一天的上午、中午、晚上 來刻畫這些參數的變化。這樣,需要調節的參數 就從個性化的權重參數 變成了各個特征的權重。

3、重排

  介紹完精排,接下來介紹重排序相關部分。相比精排,重排序最大的特點是需要考慮視頻之間彼此的影響,即用戶可能因為看了 A 視頻對 B 視頻可能會促進、也可能會有損,比如看了一個風景的視頻,緊接着再看一個風景的視頻,它的效用就會降低,而如果看一個差異較大的互補的視頻,有可能會提高它的效用。 

  (1)首先,采用類似 Learn2Rank 的學習方案:對精排層返回的 Top6 視頻做 Rerank,使用 transformer 進行建模,刻畫視頻間相互影響:把 6 個視頻做特征抽取后,經過 transformer 層的 encoder 得到 embedding 表示,再經過評估層得到輸出,損失函數采用 Weighted Logloss。實踐中,前序視頻對后序視頻的播放和效用有影響,比如在上下滑場景,看了前面的視頻可能會對后面的視頻有影響,但看了后面的視頻不會對前面的視頻有影響。但作為一個組合收益,需要前后組合決定總收益。比如把五個愛看的視頻和五個不太愛看的視頻放在一起,如果前五個全是愛看的,而后面五個全是不愛看的,可能用戶翻到第七個視頻時,就會退出;但如果把愛看和不愛看的夾雜着放,有可能用戶能看完十個視頻,可能還會從之前五個不愛看的視頻里探索出一個新的興趣,即這種組合的收益會有更大的提升空間。對於離線效果評估,我們對比統計了“做 transformer 后推薦結果的 AUC”和“DNN 基線,即精排模型給出排序結果的 AUC”,從上圖左下角表格可見:在不同位次上,從第 1 位到第 6 位,隨着位次增加 AUC 逐漸提升。即考慮前序視頻對后序視頻的影響,能改善后序視頻的推薦體驗。

 (2)強化學習

  具體做法是從精排后的 Top50 里選出 Top10,通過序列決策的過程,從前向后依次貪心的選擇動作概率最大的視頻。比如上圖左上角表示的過程:有 4 個候選集 a、b、c 和 d,先選出排序分最大的 b,把它作為一個上下文特征;然后選出第二大的 c,然后把選出的 b 和 c 作為上下文特征;再選第三個視頻......選擇視頻時,reward 會兼容相關性、多樣性及一些約束項。根據序列決策的思想,上圖右側給了一個 LSTM 網絡結構來建模前序視頻對后序視頻的影響。DNN 網絡同時輸出 Policy 和狀態值函數 Value,這里 Policy 是通過 Softmax 計算選擇每個候選視頻(Action)的概率后,選擇概率最大的視頻。Policy 具體實現上,在挑選每個位置的視頻時,把前序視頻的作用編碼成一個 embedding 向量,對候選集的每個視頻做預估和 softmax 變換,最后會選擇最大的。

 

參考文獻:

  1. 多目標排序快手推薦

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM