如今的推薦系統(tǒng)在互聯(lián)網(wǎng)中隨處可見,無論是刷抖音、逛淘寶還是看新聞背后都有強大的推薦系統(tǒng)的支持。音頻行業(yè)的內(nèi)容如何分發(fā)?如何提高用戶發(fā)現(xiàn)音頻內(nèi)容的效率?蜻蜓FM作為國內(nèi)首家互聯(lián)網(wǎng)音頻媒體平臺,在音頻行業(yè)深耕了10年,對此也有一些沉淀和經(jīng)驗想要和大家分享。
主要內(nèi)容包括:
- 蜻蜓首頁場景怎樣從人工運營演進到個性化推薦
- 蜻蜓信息流推薦由哪些算法組成,彼此怎么配合
- 整體推薦系統(tǒng)架構(gòu)及算法模型如何部署到線上
- 蜻蜓信息流推薦場景后續(xù)發(fā)展的一些思考
01場景
1. 人工推薦時期
早期蜻蜓首頁流量的分發(fā)是以模塊形式展示,每個模塊可配置橫排和豎排的個數(shù)。此時只有個性推薦模塊的內(nèi)容由推薦算法生成,其他模塊則是由運營人工維護。模塊中的內(nèi)容需要運營定期進行更換,展示內(nèi)容的更新完全依賴人工,效率顯得很低。
為了提高運營人工工作效率,我們引入了策略推薦。
2. 策略推薦時期
策略推薦時期運營的工作由之前每天更新模塊中的內(nèi)容,變成了為模塊綁定內(nèi)容庫和選擇合適的排序策略。內(nèi)容庫中的內(nèi)容是由配置的分類、屬性動態(tài)生成和更新,運營為單個模塊的配置基本可以做到了一勞永逸。
模塊之間怎么排序?模塊中的內(nèi)容排序策略怎么選才能收益最大化?成了新的挑戰(zhàn)。
3. 個性推薦時期
通過數(shù)據(jù)發(fā)現(xiàn)個性推薦模塊效率高于其他策略推薦的模塊,首先嘗試了擴大個性推薦模塊中內(nèi)容的數(shù)量,由3個變6個。驗證了對首頁整體效果有提升后,把多個模塊合并成一個信息流的個性化推薦的想法應(yīng)運而生,線上AB實驗結(jié)果表明信息流的個性化推薦各項指標(biāo)均高于多個模塊的策略推薦。信息流的形態(tài)是單排還是雙排?經(jīng)過AB實驗,最后選擇了效果更優(yōu)的雙排。
個性推薦時期運營對于少數(shù)專輯依然會有流量扶持、推廣的的述求,在個性化推薦的基礎(chǔ)上增加了投放系統(tǒng)。投放系統(tǒng)中還支持通過不同標(biāo)題、封面對單個投放計劃生成多個創(chuàng)意,多個創(chuàng)意之間數(shù)據(jù)表現(xiàn)好的沉淀下來推廣到更多的場景中。運營不再局限于選擇內(nèi)容,更為重要的是重新組織創(chuàng)造了內(nèi)容,充分發(fā)揮出了運營在想象力、創(chuàng)造力上的價值。
4. 小結(jié)
首頁場景經(jīng)歷人工推薦、策略推薦、個性推薦三個階段。策略推薦基本解決了人工效率問題,個性推薦進一步解放人力的同時也帶來了數(shù)據(jù)指標(biāo)的顯著提升。
02算法
伴隨著首頁場景的演進,蜻蜓的推薦算法也在不斷的完善和迭代。
1. 推薦算法流程
推薦算法的流程大致如下:內(nèi)容池中達到推薦標(biāo)準(zhǔn)的內(nèi)容的有幾十萬個,召回層從中選出用戶可能喜歡的幾千個進入粗排層,召回層的覆蓋度決定了整體推薦內(nèi)容的覆蓋上限。粗排層從召回結(jié)果中挑選出幾百個給到精排層,粗排層主要為了減小在線算力減輕精排的壓力。精排層選幾十個給到重排層,精排層專注于推薦的準(zhǔn)確性。最后,重排層對推薦結(jié)果進行重新排序給到用戶,這一層兼顧準(zhǔn)確性的同時還需要保證多樣性。
級聯(lián)結(jié)構(gòu)簡單,分工明確。兼顧了覆蓋度、性能、準(zhǔn)確性和多樣性。
2. 多路召回
熟悉了推薦的算法的大致流程后,首先,我們來了解一下多路召回。多路召回在蜻蜓主要分為三類:基于內(nèi)容、協(xié)同過濾和Embedding向量召回。基于內(nèi)容的召回包括熱門、屬性、上新策略的召回;協(xié)同過濾包括User Based和Item Based;Embedding向量召回有Word2vec和Bert。召回環(huán)節(jié)處理的數(shù)據(jù)量大,復(fù)雜度不能太高,多路召回的設(shè)計可以方便加入新的策略或者算法。我們在實踐中發(fā)現(xiàn),早期建立完善指標(biāo),追蹤每路召回的效果,有助優(yōu)勝劣汰;召回的效果并不是召回算法越復(fù)雜越好,不同的業(yè)務(wù)特點不一樣適合的召回也可能不一樣,比如蜻蜓當(dāng)下表現(xiàn)最優(yōu)的召回來自ItemCF和熱門;隨著召回的算法越加越多,新的召回需要與現(xiàn)有召回有差異性、互補才會有存在的價值。召回環(huán)節(jié)還會承載業(yè)務(wù)及平臺建設(shè)的使命比如用戶和物品的冷啟動、業(yè)務(wù)流量扶持等,召回環(huán)節(jié)的好壞直接決定了后續(xù)環(huán)節(jié)的上限。
3. 粗排
接著是粗排,早期的推進系統(tǒng)中粗排常常用簡單的融合策略進行,實踐中發(fā)現(xiàn)粗排中引入算法是值得的。策略的組合較多測試周期長,雙塔模型的應(yīng)用既解決了多路召回組合的效率問題,又避免了精排的性能問題。
雙塔模型擴展性好便于自由添加自定義的網(wǎng)絡(luò),User和Item塔解偶,同時點積的計算所需算力小。在蜻蜓為了保障粗排推理數(shù)據(jù)的實時性,User向量的生成及點積的計算都是實時的。粗排的加入在數(shù)據(jù)指標(biāo)指標(biāo)上也獲得了不錯的收益,其中信息流UV收聽轉(zhuǎn)化率增加了3.54%,人均收聽時長增加了5.44%。
4. 精排
然后是精排,精排往往在推薦系統(tǒng)中最受關(guān)注,精排直接對準(zhǔn)確性負(fù)責(zé),相對容易拿到直接的收益。我們在精排的投入相對較大,從中獲得的收益也相對頗多。蜻蜓的精排經(jīng)歷了三個階段:線性模型的邏輯回歸和FM、樹模型的XGBoost以及神經(jīng)網(wǎng)絡(luò)模型的DeepFM。
XGBoost迭代時間最久,其中模型參數(shù)的調(diào)優(yōu)、特征挖掘(包括交叉特征和實時特征的引入)、日志數(shù)據(jù)的準(zhǔn)確性優(yōu)化以及實時排序,這些整體給在線收聽數(shù)據(jù)帶來了近35%的提升。XGBoost之后我們嘗試過許多模型包括XGBoost+LR,Wide&Deep等均沒有取得預(yù)期的收益,在DeepFM上的嘗試探索則獲得了9.3%收聽相關(guān)指標(biāo)的提升。DeepFM順理成章地成為了精排模型的主力,也開啟了蜻蜓推薦算法在深度學(xué)習(xí)道路上的大門。
5. 重排
最后是重排,重排跟召回一樣承載了很多業(yè)務(wù)向的目標(biāo)和期許。這里主要講一下多樣性,提升多樣性一方面希望打破推薦系統(tǒng)的信息繭房,另一方面也希望提升用戶的長期使用體驗。開始是通過打散策略實現(xiàn),當(dāng)前主要是MMR和DPP兩個算法在嘗試迭代,實驗中MMR表現(xiàn)優(yōu)于DPP,這里簡單介紹一下。MMR(Maximal Marginal Relevance)最大邊際相關(guān)性算法,保證相關(guān)性的同時提高多樣性。通過λ參數(shù)來調(diào)節(jié)多樣性和相關(guān)性的權(quán)重,λ越大相關(guān)性越高,λ越小則多樣性越高。
MMR算法中有兩個相似度,用戶和物品的相似度用精排的打分值來表示,物品之間的相似度基于協(xié)同過濾的物品相似度。重排的預(yù)期是達到帕累托最優(yōu),在其他指標(biāo)都不降低的情況下,提升多樣性指標(biāo)。
最終也達到了預(yù)期,人均曝光專輯數(shù)量增加8.84%,人均收聽二級分類數(shù)量提升7.06%。
03架構(gòu)
1. 整體架構(gòu)
推薦系統(tǒng)能高效穩(wěn)定地運作,離不開優(yōu)秀的架構(gòu)支持。蜻蜓的推薦架構(gòu)是典型的三層架構(gòu),即離線、近線、在線三層。離線層負(fù)責(zé)數(shù)據(jù)的處理、模型的訓(xùn)練以及數(shù)據(jù)報表;近線層實時特征處理、召回、粗排;在線層承載了用戶請求響應(yīng)、精排、重排以及投放系統(tǒng)等業(yè)務(wù)邏輯。
2. 算法模型部署
算法模型如何高效地部署到線上?是算法和工程同學(xué)共同面臨的挑戰(zhàn)。開始的時候我們的模型預(yù)測服務(wù)和推薦API都是用Golang實現(xiàn),特征的獲取處理在推薦API測完成,模型預(yù)測服務(wù)負(fù)責(zé)加載模型并對對獲取的數(shù)據(jù)進行預(yù)測。在線特征拼接處理使用Golang,離線特征拼接處理使用Scala,跨語言的對齊與校驗耗費了開發(fā)很多的時間。離線和在線能否公用一套算子進行特征的拼接與處理?為此我們將模型預(yù)測服務(wù)切換成了Scala的Play框架,基于Scala開發(fā)出了一個feature獲取處理的庫,給Spark和Play共同使用,保證了特征處理邏輯層面的一致性。同時,模型預(yù)測服務(wù)中增加了對多模型、多版本的支持以及模型的自動更新進一步提高了模型部署的效率。
04展望
首頁信息流推薦從0到1建立起來,迭代、優(yōu)化、完善到現(xiàn)在取得了不錯的增長,面向未來還有許多工作需要我們?nèi)L試和探索。內(nèi)容方面,如何幫助新品內(nèi)容一步一步變成曝款,產(chǎn)品、研發(fā)、運營如何合作建立出完善的內(nèi)容生態(tài)系統(tǒng);業(yè)務(wù)方面,信息流支持的業(yè)務(wù)越來越多包括專輯、直播、聽單、節(jié)目、廣播等,多業(yè)務(wù)如何更好的融合在一起也是一個挑戰(zhàn);用戶方面,新用戶的冷啟動,沉默用戶、潛在流失用戶如何激活還有很長的路要走;算法方面,模型的訓(xùn)練如何做到更加實時,多目標(biāo)的排序是否有望代替單目標(biāo)排序。這些都將是我們接下來探索的方向。
今天的分享就到這里,謝謝大家。
—— 歡迎在線投稿 ——
特別提示:關(guān)注本專欄,別錯過行業(yè)干貨!
PS:本司承接 淘寶逛逛 / 小紅書 / 抖音 / 百度系 / 知乎 / 微博/大眾點評 等 全網(wǎng)各平臺推廣;
咨詢微信:139 1053 2512 (同電話)
首席增長官CGO薦讀:
更多精彩,關(guān)注:增長黑客(GrowthHK.cn)
增長黑客(Growth Hacker)是依靠技術(shù)和數(shù)據(jù)來達成各種營銷目標(biāo)的新型團隊角色。從單線思維者時常忽略的角度和高度,梳理整合產(chǎn)品發(fā)展的因素,實現(xiàn)低成本甚至零成本帶來的有效增長…
本文經(jīng)授權(quán)發(fā)布,不代表增長黑客立場,如若轉(zhuǎn)載,請注明出處:http://gptmaths.com/quan/38678.html