推薦系統(14)—— 快手推薦精排模型的發展史


1、參數個性化 CTR 模型 - PPNet

  2019 年之前,快手 App 主要以雙列的瀑布流玩法為主,用戶同視頻的交互與點擊,觀看雙階段來區分。在這種形式下, CTR 預估模型變得尤為關鍵,因為它將直接決定用戶是否願意點擊展示給他們的視頻。彼時業界主流的推薦模型還是以 DNN、DeepFM 等簡單的全連接深度學習模型為主。但考慮到某用戶個體和視頻的共建語義模式在全局用戶的共建語義模式基礎上會有個性化的偏差,如何在 DNN 網絡參數上為不同用戶學習一個獨有的個性化偏差成為了快手推薦團隊優化的方向。在語音識別領域中,2014 年和 2016 年提出的 LHUC 算法(learning hidden unit contributions)核心思想是做說話人自適應(speaker adaptation),其中一個關鍵突破是在 DNN 網絡中,為每個說話人學習一個特定的隱式單位貢獻(hidden unit contributions),來提升不同說話人的語音識別效果。借鑒 LHUC 的思想,快手推薦團隊在精排模型上展開了嘗試。經過多次迭代優化,推薦團隊設計出一種 gating 機制,可以增加 DNN 網絡參數個性化並能夠讓模型快速收斂。快手把這種模型叫做 PPNet(Parameter Personalized Net)。據快手介紹,PPNet 於 2019 年全量上線后,顯著的提升了模型的 CTR 目標預估能力。

  如上圖所示,PPNet 的左側是目前常見的 DNN 網絡結構,由稀疏特征(sparse features)、嵌入層(embedding layer)、多神經網絡層(neural layer)組成。右側是 PPNet 特有的模塊,包括 Gate NN 和只給 Gate NN 作為輸入的 id 特征。其中 uid,pid,aid 分別表示 user id,photo id,author id。左側的所有特征的 embedding 會同這 3 個 id 特征的 embedding 拼接到一起作為所有 Gate NN 的輸入。需要注意的是,左側所有特征的 embedding 並不接受 Gate NN 的反傳梯度,這樣操作的目的是減少 Gate NN 對現有特征 embedding 收斂產生的影響。Gate NN 的數量同左側神經網絡的層數一致,其輸出同每一層神經網絡的輸入做 element-wise product 來做用戶的個性化偏置。Gate NN 是一個 2 層神經網絡,其中第二層網絡的激活函數是 2 * sigmoid,目的是約束其輸出的每一項在 [0, 2] 范圍內,並且默認值為 1。當 Gate NN 輸出是默認值時,PPNet 同左側部分網絡是等價的。經實驗對比,通過 Gate NN 為神經網絡層輸入增加個性化偏置項,可以顯著提升模型的目標預估能力。PPNet 通過 Gate NN 來支持 DNN 網絡參數的個性化能力,來提升目標的預估能力,理論上來講,可以用到所有基於 DNN 模型的預估場景,如個性化推薦,廣告,基於 DNN 的強化學習場景等。

2、多目標方向-基於 MMoE 的多任務學習框架

  快手兼容雙列點選和單列上下滑的版本,旨在為用戶提供更好的消費體驗,加入更多元的消費方式。在新的界面下,有相當一部分用戶會既使用雙列也使用單列。用戶在這兩種頁面上的消費方式和交互形式都有很大的不同,因此在數據層面表示出來的分布也非常不同。如何將兩部分數據都用在模型建模里,而且用好,成為了快手推薦團隊一個亟待解決的問題。

  快手團隊發現,當單列業務的場景增多后,多任務學習更加重要。因為在單列場景下,用戶的交互行為都是基於show給用戶的視頻發生,並沒有像雙列交互那樣有非常重要的點擊行為。這些交互行為相對平等,而且這些行為數量多達幾十個(時長相關預估目標、喜歡、關注、轉發等)。

  隨着單列業務數據量越來越大,從模型層面,推薦團隊嘗試拆離出針對單列業務單獨優化的模型。

  • 具體表現在特征層面,可以完全復用雙列模型特征,只是針對單列的目標,額外添加個性化偏置特征和部分統計值特征
  • Embedding層面,因為前期單列數據量少,不能保證embedding收斂,最初使用雙列數據click行為主導訓練,后面改用單雙列用戶視頻觀看行為(有效播放、長播放、短播放)主導訓練embedding。
  • 網絡結構層面,主要基於shared-bottom網絡結構訓練,不相關目標獨占一個tower,相關目標共享同一tower頂層輸出,這能在一定程度上提升目標預估效果。

  這個模型上線后,起初有一定的效果,但很快暴露出了一些問題。首先,它沒有考慮到單雙列業務中embedding分布差異,造成了embedding學習不充分。其次,在多任務學習層面,單列場景下,用戶的交互都是基於當前視頻show的單階段行為,各個目標之間互相影響,模型單個目標的提升,不一定能帶來線上的整體收益。因此,如何設計一個好的多任務學習算法框架,讓所有預估目標都能提升變得非常關鍵。這個算法框架必須考慮數據、特征、embedding、網絡結構以及單列用戶交互特點。經過充分的調研和實踐,推薦團隊決定采用MMoE模型(Multi-gate Mixture-of-Experts)來改進當前模型。具體體現在,

  • 在特征層面,進行了語義統一,修正在單雙列業務中語義不一致特征,添加針對用戶在單列相關特征
  • 在Embedding層面,進行了空間重新映射,設計了embedding transform layer,直接學習單雙列embedding映射關系,幫助單雙列embedding映射到統一空間分布
  • 在特征重要性層面,設計了slot-gating layer,為不同業務做特征重要性選擇。

  通過以上3點的改動,模型將輸入層的embedding表示從特征語義,embedding在不同業務分布,特征在不同業務重要性三個層面做了歸一化和正則化,重新映射到統一的特征表征空間,使得MMoE網絡在此空間上更好的捕捉多個任務之間后驗概率分布關系。通過此項對MMoE的改進,模型所有的目標提升非常顯著。

2、短期行為序列建模-Transformer模型

  在快手的精排模型中,用戶歷史行為特征非常重要,對刻畫用戶興趣的動態變化有很好的表征。在快手的推薦場景下,用戶的行為特征非常豐富並且多變,其復雜度遠遠超過視頻類特征或者上下文的特征,因此設計一個能夠針對用戶行為序列有效建模的算法很有必要。

  目前業界上對於用戶行為序列建模主要分為兩種模式,一是對於用戶的歷史行為進行weighted sum,二是通過RNN之類的模型進行時序建模。在快手前期的雙列精排模型里,用戶行為序列只是簡單做sum pooling作為模型輸入。而在單列場景下,用戶被動接收快手推薦視頻,而且丟失掉封面信息后,用戶需要觀看視頻一段時間再做反饋,因此主動視頻選擇權降低,更加適合推薦系統對用戶的興趣做E&E(Exploit & Explore)。

  Transformer主要包括Encoder跟Decoder兩部分,其中Encoder部分對輸入語言序列進行建模,這部分跟用戶行為序列建模目標是非常類似的,因此快手借鑒其中算法結構並對計算量進行了優化。

  首先,快手推薦團隊使用用戶的視頻播放歷史作為行為序列。候選的序列有用戶長播歷史序列,短播歷史序列,用戶點擊歷史序列等,此類列表詳盡地記錄了用戶觀看視頻id,作者id,視頻時長,視頻tag,視頻觀看時長,視頻觀看時間等內容,完整描述用戶的觀看歷史。其次,對視頻觀看距今時間做log變換代替position embedding。在快手的推薦場景下,用戶短期的觀看行為跟當次預估更相關,長時間觀看行為更多體現用戶的多興趣分布,使用log變換更能體現這種相關性。最后,替換multi-head self-attention為multi-head target attention,並且使用當前embedding層的輸入作為query。這樣設計的目的有兩點,首先當前用戶特征,預估視頻特征和context特征比單獨的用戶行為序列提供更多信息。其次可以簡化計算量,從O(d*n*n*h)變換為O(d*n*h + e*d),其中d為attention的維度,n為list長度,h為head個數,e*d表征的是embedding層維度變換為attention維度所需的復雜度。改造后的Transformer網絡能顯著提升模型的預估能力,在離線評估上,用戶觀看時長類預估提升非常明顯,線上用戶觀看時長也顯著提升。

3、長期興趣建模

  長期以來,快手的精排模型都比較偏向於使用用戶最近的行為。上面已經說到,通過采用transformer和MMoE模型,快手的精排模型對用戶的短期興趣進行了精確的建模,取得了非常大的收益。之前的模型里,采用了用戶最近幾十個歷史行為進行建模。由於短視頻行業的特點,最近幾十個歷史行為通常只能表示用戶很短一段時間內的興趣。這就造成了模型過度依賴用戶的短期行為,而導致了對用戶中長期興趣建模的缺失。

  針對快手的業務特點,快手推薦團隊對於用戶長期興趣也進行了建模,使得模型能對於用戶長期的歷史記錄都有感知能力。快手推薦團隊發現,將用戶的交互歷史序列(播放、點贊、關注、轉發等)擴長之后,模型能夠更好的捕捉到一些潛在的用戶興趣,即使此類行為相對稀疏。針對該特點,推薦團隊在之前的模型基礎上設計並改進了用戶超長期興趣建模模塊,能夠對用戶幾個月到一年的行為進行全面的建模,用戶行為序列長度能達到萬級。此模型已經在全量業務推全並且取得了巨大的線上收益。

4、在線訓練和預估服務

  隨着模型的迭代,深度學習網絡的復雜度越來越高,模型中添加的特征數量也越來越多,模型特征規模的大小也制約了精排模型的迭代。這不僅會限制模型特征的規模,使得一部分特征被逐出,帶來模型收斂的不穩定性,同時還會導致模型更容易逐出低頻的特征,造成線上冷啟動效果變差(新視頻、新用戶),對於長尾的視頻或者新用戶不夠友好。

  為了解決這個問題,快手推薦和架構的同學針對訓練引擎和線上serving進行改進,做到離線訓練和線上serving的服務根據配置的特征量靈活擴展,可以支持精排模型離線跟線上有千億特征,萬億參數的規模。特別的,新模型對於新視頻跟新用戶的流量分發更加友好,在新用戶和新視頻的指標上有顯著的提升,踐行了快手推薦”普惠“的理念。目前快手的精排模型,總特征量超過1000億,模型總的參數量超過19000億。為了支撐推薦場景下千億特征模型的在線訓練和實時預估,推薦團隊針對訓練框架和線上預估服務的參數服務器(Parameter Server)進行了修改。在推薦模型的在線學習中,存儲Embedding的參數服務器需要能夠精准的控制內存的使用,提升訓練和預估的效率。為了解決這一問題,推薦團隊提出了無沖突且內存高效的全局共享嵌入表(Global Shared Embedding Table, GSET)的參數服務器設計。

  每個 ID 單獨映射一個Embedding向量很快就會占滿機器的內存資源,為了確保系統可以長期執行,GSET 使用定制的 feature score 淘汰策略以控制內存占用量可以始終低於預設閾值。傳統的緩存淘汰策略如 LFU、LRU 只考慮了實體出現的頻率信息,主要用以最大化緩存的命中率。feature score 策略考慮了機器學習場景下額外的信息來輔助進行特征淘汰。 在推薦系統的在線學習過程中,會有大量低頻 ID 進入系統,這些低頻 ID 通常在未來的預估中根本不會出現,系統接收了這些特征后可能很快又會再次淘汰他們。為了防止低頻 ID 無意義的進入和逐出對系統性能產生影響,GSET 中支持一些特征准入策略來過濾低頻特征。同時為了提升GSET的效率和降低成本,快手還采用了新的存儲器件 -- 非易失內存 (Intel AEP)。非易失內存能提供單機達到若干TB的近似內存級別訪問速度。為了適配這種硬件,推薦團隊實現了底層KV引擎NVMKV來支撐GSET,從而很好的確保了萬億參數模型的線上穩定性。

 

 參考文獻:

  1. 快手精排模型優化
  2. 宋洋博士介紹

 


免責聲明!

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



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