蜻蜓 FM 實時推薦系統的發展和演進

分享嘉賓:雷鳴 蜻蜓 FM 算法專家

內容來源:作者原創投稿

出品平臺:DataFunTalk

**導讀:**本⽂主要是分享蜻蜓 FM 最近⼏年在推薦系統中的發展和演進,從離線推薦逐步過渡到實時推薦後,作者在實際開發⼯作中,⾯對⼀些痛點和難點時,是如何進⾏思考和解決的,如何更好的將⾃⼰的業務場景特點和算法模型進⾏結合,深度理解⽤戶⾏爲和業務場景,優化⽤戶收聽體驗,以及提升流量分發效率所做出的努⼒和嘗試,推動特徵⼯程和算法模型的微服務化,特別是最近兩年全公司算法相關業務開始逐步 All In 深度學習後,如何⼀步步打造出業內領先的推薦系統。

01

背景簡介

1. 關於我們

蜻蜓 FM——中國移動互聯⽹⾳頻的領跑者, 國內⾸家⾳頻媒體平臺,以敏銳獨到的視⻆傳播世界的聲⾳業內⾸創 PUGC 專業主播⽣態,打造品質感的⾳頻內容體系上架 10 年,突破 4.5 億⽤戶,⽣態流量⽉活躍⽤戶量 1.3 億。

2. 推薦業務場景

⽬前推薦場景分佈⾸⻚ feeds 流,超級會員⻚猜你喜歡、頻道⻚ feeds 流,我聽⻚猜你喜歡等多種場景,涵蓋專輯、節⽬、聽單、直播間等多種形態。

02

推薦系統的演進

推薦系統是幫助⽤戶可以⾼效率的找到⾃⼰感興趣的內容,在我們的推薦場景的定位是幫助⽤戶更快更好的發現新的內容,⽽且保證千⼈千⾯,⽤戶在平臺在追的專輯回溯源頭基本是發⽣在⾸⻚ feeds, ⾸⻚ feeds 承接着平臺絕大部分的流量,所以⾸⻚ feeds 推薦系統的好壞⾄關重要,蜻蜓 FM 推薦系統經過⼏年的⼯程和算法不斷迭代和更新,推薦⾸⻚樣式從固定模塊推薦變爲 feeds 流推薦,推薦效率逐漸完成了從天級別的離線推薦、到分鐘級別的近實時推薦和 ms 級別的實時推薦的轉變,召回策略也逐漸從常規個性化模型到深度召回模型進⾏轉變,排序模型也從樹模型替換爲複雜的深度學習模型,並在線上取得了⼤幅的指標的提升。

03

實時推薦系統架構

什麼是⼀個好的實時推薦系統,應該⾄少滿⾜以下四點:

我們整個推薦系統由主要有四個部分組成,包括 offline 層,Pipeline 層、Online 層,業務層,其中業務層包括多個推薦場景,其中⼤部分場景使⽤的是同⼀套推薦框架,如何快速⾼效地遷移部署到其他推薦場景,是我們需要考慮的問題,每層各司其職,如何保證各⾃任務的穩定性以及保證推薦系統的實時性是⾄關重要的。

04

召回層回顧

在傳統的實時推薦系統中,存在着⼀個級聯結構,在我們的推薦場景下包括專輯池、召回、精排、重排四個模塊,他們像是⼀個漏⽃⼀樣不斷篩選出⽤戶感興趣的專輯,其中召回模塊是⽐較重要的⼀個模塊,它是通過⼀些算法策略從⼗萬量級的專輯池篩選出數百量級的⽤戶感興趣的專輯投⼊到精排進⾏排序,通過減⼩專輯的量級,從⽽減輕線上排序服務性能的壓⼒。

召回層⼀般有多路召回融合⽽成,需要同時兼顧熱度、覆蓋度、相關度和新鮮度,還需要基於對業務的理解,獲取⽤戶的⻓短期的興趣,按照演變過程分爲常規個性化召回策略和深度個性化召回策略,常規個性化召回策略是指通⽤的,模型較爲簡單的,可以通過並⾏化計算得到結果的策略,⽽深度個性化召回策略需要藉助深度學習複雜模型和 GPU 平臺,以及淺層神經⽹絡、GNN, Attention, GraphEmbedding,⽂本語義等模型框架,獲取到的模型化 Embedding 結果的策略,這些策略相⽐傳統的個性化策略來說,具有更強的表徵能⼒和泛化能⼒。蜻蜓 FM 推薦系統通過最近兩年的迭代,逐漸從常規的 CF、ALS 等召回策略逐步過渡到 EGES、SRGNN,DSSM 等深度召回模型框架,不但極⼤地豐富了我們的召回來源,⽽且也從多個維度更好挖掘出⽤戶的興趣。

我們之前的召回⽅案路線是根據⽤戶的⻓短期興趣、熱度、標籤等開發多路召回策略,根據各個召回策略在線上的表現優劣分爲不同的優先級,然後以集合(topK)爲建模⽬標,按照優先級進⾏多路召回的融合,這種⽅法的優點是速度快、算⼒⼩,缺點也很明顯,從 10 萬量級到數百量級,這樣的篩選漏⽃過⼤,帶來的信息損失也⽐較⼤,⽽且我們所有融合的策略都是基於⼀些⼈⼯經驗進⾏主導,從⽽會導致召回的準確率的不⾜。

難點和挑戰:

如何提升召回階段的準確率⼀直是⼀個難點,也是我們需要解決的問題。

05

粗排層回顧

⾯對召回階段的挑戰,這邊我們的解決思路是在召回模塊和精排模塊添加⼀個名叫粗排的模塊,我們的⽬的是通過模型代替⼈⼯經驗進⾏篩選,從⽽帶來準確率提升,粗排模塊我們採⽤的是根據 DSSM 深度學習模型進⾏改進的雙塔模型,其中它的⽹絡特點是整個⽹絡結構是由⽤戶塔和物品塔組成,每個塔都有各⾃輸⼊特徵和⽹絡結構,然後通過最後⼀層輸出固定維度的 embedding 向量,然後進⾏內積計算,在線上部署時,我們可以將相對靜態的專輯 embedding 向量異步寫⼊到向量索引庫⾥,通過線上實時獲取相對動態的⽤戶 embedding 向量,然後從專輯向量索引庫中召回 topK 的相關專輯列表。

它的優點有很多:

線上收益:

模型部署到我們⾸⻚ feeds 個性推薦後,帶來了⽐較⼤的指標提升,其中⼀級指標,包括⽤戶⼈均收聽提升了 5.44%,有效 UV-PTR 提升了 3.26%,⼆級指標包括⼈均點擊次數、ItemCTR,會員專輯 UV-PTR、PV-PTR 也帶來了不同程度的提升。

難點和挑戰:

雙塔模型的解耦的模型特點導致了它⽆法更好地使⽤⽤戶和物品的交叉特徵,從⽽限制了它的泛化和表達能⼒,接下來計劃嘗試的解決⽅案有:

06

排序層回顧

上線基於 DeepFM 的深度學習排序模型:

最近兩年我們的線上排序主⼒模型⼀直是 Xgboost 模型,它具有特徵⼯程簡單,效果優秀,⽀持並⾏訓練,跨語⾔跨平臺部署的優點,我們在 Xgboost 的基礎上,迭代了⼏版,在線上指標也取得了很⼤提升,但是呢,隨着特徵維度變得越來越⼤,模型也變得越來越複雜,以及隨着我們推薦場景的不斷豐富,需要在線預測的地⽅越來越多,在線預測的性能壓⼒變得越來越⼤,性能優化的成本與我們線上獲得的收益不再是成正⽐的關係,線上性能越來越成爲我們的瓶頸,這時我們急需⼀種新的模型框架進⾏替代。

新模型替換 XGboost 同樣⾯臨着不同的困難與挑戰:

通過⼀段時間的調研,我們決定採⽤ deepFM 深度學習排序模型,它是 2017 年華爲諾亞⽅⾈實驗室和哈⼯⼤共同推出的算法模型,⽬前已經成功應⽤在各⼤⼀線互聯⽹的推薦系統中,業界有⽐較多的成熟經驗參考,deepFM 整個算法框架主要分爲兩個部分組成,其中 FM 部分可以理解爲⼀個淺層的神經⽹絡層,它具有⼀定特徵交叉的能⼒,它使模型具有⼀定的記憶能⼒,DNN 部分可以使特徵進⾏更⾼維度的交叉,這使得模型具有⼀定的泛化能⼒,不但可以⼀定程度減⼩⼈⼯特徵挖掘的⼯作量,⽽且這兩部分的 Embedding ⽹絡層是共享的,這就⼤⼤減⼩了模型的複雜度,它更擅⻓處理⼤規模的 ID 類稀疏特徵,像我們⼏⼗萬個的專輯 ID,其實也可以作爲⼀種特徵加⼊模型中進⾏訓練,這些都是 deepFM ⽐ xgboost 有優勢的地⽅。⽽且我們也同時做了其他⽅⾯的優化的嘗試:

線上收益:

我們把新模型部署在了多個推薦場景,其中⾸⻚ feeds 的個性推薦場景,⼀級指標⽤戶收聽時⻓提升 10.94%,有效 UV-PTR 提升 9.26%,有效收聽 ItemPTR 提升 7.83%,其中⼆級指標也得到很⼤提升。

同時我們也把 deepFM 部署在⾸⻚的投放場景和頻道⻚的推薦場景,可以看到上線前和上線後的指標的提升幅度都很⼤。

07

節⽬推薦上線

爲了探索推薦系統更多的可能性,我們進⾏了節⽬推薦第⼀期的探索,⽬的是挖掘觸發推薦時進⾏節⽬⾼效率召回的⽅式,包括節⽬對節⽬,節⽬對專輯,專輯對節⽬的相互影響和發現。

節⽬召回:

針對節⽬推薦的特點,⽬前我們已經開發了以下⼏種召回策略:

線上收益:

同時線上我們進⾏了專輯和節⽬的不同形式的穿插,以及如何⾼效過濾, 節⽬推薦樣式的 AB 實驗, 最終取得了第⼀階段不錯的收益,其中專輯 + 節⽬的整體收益中,⼀級指標包括⼈均收聽時⻓提升了 5%、有效收聽 UVPTR 提升了 7%,其他指標均得到了⼤幅度的提升。

改進⽅向:

當前專輯召回和節⽬召回都是各⾃獨⽴構建同構圖,最終⽣成 Embedding 向量,後⾯會考慮將專輯和節⽬表徵到同⼀個向量空間,⽤ Metapath2vec 的⽅法共同構成異構圖,基於元路徑指導圖上節點的遊⾛,採樣出序列後,經過 skip-gram ⽣成 Metapath 語義下的表徵,最後對錶徵做⼀個融合,得到節點的最終表徵。

節⽬排序上線 MMoE:

最近我們通過分析發現,⽤戶的⼈均收聽時⻓,專輯完播率,收藏專輯次數和⽤戶留存率成正相關的關係,這些隱式⾏爲在⼀定程度上影響着⽤戶的留存,我們⽬前的建模是單⽬標的預測,⽬標是通過直接提升 PTR,來間接提升⽤戶收聽時⻓,這⾥有個問題就是假如只關注專輯是否播放,那麼⽤戶播放後,可能會發現不喜歡或者專輯質量差,覺得體驗太差,⽤戶可能流失,也有可能⽤戶很喜歡,願意加⼊收藏,等有時間接着聽,間接增加⽤戶粘性和回訪率,所以我們在提⾼ PTR 的同時,還需要提升專輯的收藏轉化率,這不但可以增加留存,還可以間接的推薦⾼質量的專輯給⽤戶,提升⽤戶體驗。

同樣的這也適⽤於節⽬排序,⼆期我們開發了基於 MMOE 的多⽬標排序,其中以是否播放和是否完播作爲我們的前期的預測⽬標,MMOE 相⽐ ESMM 這種基於 Shared-bottom 的模型,不同任務的 gating networks 可以學習到不同的組合 experts 的模式,捕捉到不同任務的相關性和區別,可以減⼩受到任務差異和數據分佈帶來的影響,所以 MMoE 作爲我們⾸選的多⽬標排序模型。

這邊我們選擇了三個 Expert ⽹絡,可以看到不同 Label 對於不同的 Expert 的依賴程度是不⼀樣的,⽬前來看,兩個 task 通過 Gate ⽹絡,分別獲取了對不同 expert ⽹絡的權重,其中 Label1 對 expert2 的依賴更⼤,Label2 對 expert1 的依賴更⼤。

線上收益:

在⾸⻚ feeds 上線⼀個⽉後,在專輯 + 節⽬的全局流量的⼀級指標中,包括 UV-PTR 和⼈均播放時⻓提升在 3% 左右。

改進⽅向:

08

重排層回顧

排序模型⼀般是按照 point-wise 的⽅式進⾏訓練,很容易造成相似內容扎堆的現象,考慮到提升⽤戶體驗和內容多樣性,我們也同時嘗試了⼏種提升多樣性的⽅法和策略:

1. 動態刷新

⽬前 feeds 個性化推薦結果,在⽤戶沒有產⽣觸發推薦⾏爲的時候,理論上⽤戶的整個推薦結果是不會產⽣變化的,從數據來看,大部分⽤戶停留在前 3 ⻚,所以⽤戶在觸發推薦之前,多次觸達⾸⻚,看到的內容可能是⼀樣的,這時推薦多樣性就會大打折扣,簡單粗暴的對曝光過的專輯進⾏過濾,可能會過濾⼀些產⽣⽆效曝光的專輯,⽽且過濾⼒度過⼤,還會造成沒有優質專輯可推的局⾯。

我們的⽬的是保證⽤戶沒有觸發推薦的期間,每次打開⾸⻚ feeds,推薦結果都有⼀些變化,⼀定程度解決內容多樣性的問題。

在重排層加⼊動態刷新機制,在召回集基本不變的前提下,優先考慮在集合內部的排序上進⾏動態調整,也就是在排序打分的基礎上除以⼀個降權係數 weight,曝光次數較多的專輯,重排時後移,引⼊時間衰減,近期曝光的專輯更快後移,遠期曝光的專輯迴歸到正常序列。

2. MMR

MMR 是⼀種近似的貪⼼算法,全稱是最⼤邊緣相關模型(Maximal Marginal Relevance),第⼀個 Sim 代表是某個專輯的 rank score,第⼆個 Sim 代表該專輯與⽣成的結果集中專輯的相似度,λ越⼤,越接近原始的排序結果,λ越⼩,越強調多樣性。

同時,我們在計算結果和⼯程效率上也做了部分優化,⼀個是 mmr 是基於多輪迭代的策略,候選集個數越多,計算量越⼤,所以我們只選擇 rank score 在固定 topK 的候選集進⾏了 mmr 的計算,做了計算效率和多樣性效果的 trade-off,還有⼀個是爲了突出⽤戶興趣的實時性,我們對個別候選集進⾏了乘以 rate 係數的加權操作,將部分候選集進⾏多樣性打散後可以排在最前⾯。

3. DPP

⾏列式點過程 (Determinantal Point Process, DPP),  是⼀種基於⾏列式點過程的提升推薦多樣性的算法,並使⽤貪⼼算法推理最優的⾏列式點過程,並利⽤ Cholesky 加速⾏列式點過程的推理,我們使⽤已計算好的 word2vec 的 16 維的 embedding 向量進⾏核矩陣的構建,並做了部分⼯程上的優化。

線上收益:

經過⼀段時間的 ABtest,我們發現加權的 MMR 線上效果最好,它可以保證在其他轉化指標不下降的情況下,提升多樣性指標包括⼈均曝光⼀級類⽬、⼆級類⽬個數,均提升在 10% 以上。

改進點:

接下來會考慮使⽤ list-wise 的思路,從整體推薦列表的物品順序的⻆度進⾏考慮,融合當前物品上下⽂信息,也就是列表其他物品的特徵信息,利⽤ RNN 或者 Transformer 對每個輸⼊對應位置經過特徵融合,按照新預測的得分重新對物品排序,從⽽獲得整體列表的最⼤收益。

09

推動特徵⼯程與算法模型的微服務化

在通常的算法開發⼯作中,需要我們有快速迭代,快速試錯的能⼒,然⽽在以往的我們模型開發部署的過程中,我們經常會遇到部署效率的問題,原因是我們線上⼀般會同時部署多個模型多個版本進⾏ ABtest,每開發⼀個新的排序模型,後端同學都需要把離線的特徵拼接環節在線上進⾏復現⼀遍,其中我們的離線訓練是 scala 語⾔開發,線上是 go 語⾔開發,在這種跨語⾔跨平臺的場景下,特徵拼接極易出現線上線下不⼀致的問題,出現問題需要⼈⼯ review 逐步排查,費事費⼒不說,定位問題也⽐較困難,同時遷移部署到其他推薦場景時,還要徒增重複代碼,不但部署效率⼤⼤減低,⽽且還增加了出現問題的概率和隱患。

同樣的,解決這個問題會遇到⼀些困難和挑戰:

解決⽅案:

線上收益:

10

總結和展望

蜻蜓 FM 作爲國內⾳頻內容領域 top 級別的產品,推薦系統始終扮演着重要⻆⾊,我們也始終關注着推薦領域相關算法的前沿動態,並結合我們對於業務的深刻理解,從算法和⼯程⻆度出發,不斷進⾏摸索和實踐,並且取得了不錯的效果, 希望能給相關從業的同學以思考和啓發,同時也讓我們挖掘出很多改進的點,接下來我們也會從如何保證推薦系統的實時性、提⾼推薦內容的多樣性,保證推薦內容質量、以及提升⽤戶對推薦內容的滿意度,提升⽤戶留存等⼏個⽅向出發,不斷完善我們推薦系統和內容⽣態,以期爲⽤戶帶來更好的收聽體驗。

今天的分享就到這裏,謝謝大家。

在文末分享、點贊、在看,給個 3 連擊唄~

分享嘉賓:

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/3FN3Xi_h2UMfVW8bFR9-_w