全鏈路解析!推薦系統技術綜述
作者|陳祖龍 阿里巴巴
整理|DataFun
大家好,這裏是 NewBeeNLP。
今天給大家分享一下推薦系統在近年來的整體技術發展。文中的很多觀點和技術都參照於業界的論文以及一些外部的文章。
全文目錄如下:
-
推薦系統技術架構
-
用戶理解
-
召回技術
-
排序技術
-
其它推薦算法方向
-
評估
01 推薦系統技術架構
整個推薦技術,經過幾年的發展已經比較完善,上圖展示了推薦系統的一個整體架構,分爲數據和推薦模型兩層。
1. 數據層
數據層主要是通過客戶端以及服務端的實時數據,經過流處理的平臺,把用戶的信息、商品的信息、場景的信息以及端側的信息全部都收集全。
基於這些信息,再通過特徵工程的很多方法,如歸一化、離散化、非線性離散等很多的變換,把特徵處理成下游模型處理的方式。
處理完後一般會放在特徵存儲中,如 KV 存儲: Redis、阿里的 iGraph 等;
2. 模型層
通過離線訓練完後的模型一般會導到線上,通過線上服務的方式直接對整個推薦系統進行服務。
模型的訓練也有很多的方式,現在業界比較流行的有 TensorFlow 、 PyTorch 或者阿里巴巴的 PAI 都可以通過離線 + 在線實時訓練的方式對模型進行加工。
(1)全鏈路干預
模型加工完後,會對整個推薦鏈路從召回、到粗排、到精排、到重排進行全鏈路的干預。
其中在粗排階段,一致性、全鏈路、高性能這三個特點是整個粗排需要關注的。
重排階段是最近幾年發展起來的,由於整個技術棧都比較成熟,所以在端側可以部署準實時的模型,包括阿里這邊開源的 EdgeRec 。
除了整個的召回、粗排、精排和重排之外,還有很多的冷啓動策略、E&E 策略,包括很多適配的策略。
往往經過排序完之後的結果並不是整個推薦系統最終給用戶呈現的結果,這裏需要做多樣性的、信任性的、疲勞度的控制、分頁過濾等等,最終纔得到整個的推薦的結果。
後面的分享會圍繞召回、粗排、精排、重排以及用戶理解和特殊處理進行一些簡單的探討。
02 用戶理解
首先是用戶理解,這張圖展示了最近幾年來用戶理解的發展歷程。
1. 用戶理解可以從下往上分爲數據、洞察和理解三層
(1)數據層
數據層主要是要更全面、更實時、更準確地把用戶、場景、待推薦的物品等各個方面的數據特徵的收集全。這裏包含用戶的基礎信息、還有行爲信息、時空信息以及端的信息,需要有一些比較成熟的端的實時的框架來支持。
(2)洞察層
在數據層之上要做一些比較深入的洞察,包括:
① 關於用戶價值的洞察。
② 行爲模式的洞察。
③ 生命週期的洞察。
每一層的洞察又包含了很多標籤的建設:需求強度的建設、敏感度的建設以及行爲序列的模式等。
(3)理解層
在洞察之上會有一層更高抽象的理解。
2. 業界學術及實戰分類:顯式和隱式
通過業界的學術及實踐,可以分爲顯式和隱式兩類。
(1)顯式
① 對召回的用戶行爲做篩選:如物料和類目等;
② 標籤的抽取;
③ 羣體的理解:包括通過聚類、 Looklike 等方式;
④ 更高層面的意圖的推斷。
這種意圖的推斷主要集中在顯式的意圖的推斷,包括購買力的推測、類目、品牌屬性的預測。
⑤ 另外一個是最近比較興起的關於用戶生命週期的理解。
需要對用戶的整個行爲做理解,從用戶的瀏覽到購買到決策到結束整個生命週期,在整個生命週期內去推測用戶的意圖和偏好。
(2)隱式
除了顯式之外,另外一個是在學術界研究比較多的隱式。主要是對用戶的多個行爲做隱式的表達、做向量的表達,以及做一些模糊的表達。如單序列或者多模態的行爲表達,有短的、長的、超長的行爲序列的表達,還有超長生命週期的表達等等。
03 召回技術
有了用戶理解之後,就是召回的技術,召回技術可以分爲工程和召回算法兩部分。
1. 工程側
對於整個召回來說,工程側起到非常大的作用,因爲召回一般都是多通道的召回,這裏面對性能的影響會比較大,所以工程側需要一個更強的技術架構。
上圖左側是一個召回側的技術架構:
把用戶的特徵、商品特徵和行爲的特徵通過多種類型的召回模型,包括通過向量的方式、相似矩陣的方式,弱個性化方式等等幾十種召回通道之後,再通過向量檢索的方式或其他檢索的方式在線上做召回。
2. 召回算法
召回技術可以分爲傳統的召回、知識的召回、表示的召回、匹配召回四大類型,當然還有一些召回類型可能是這四種類型的融合體。
(1)傳統召回
最近幾年,傳統召回使用的比較少了,但是在整個推薦系統裏面,傳統召回一直佔據着一個比較主要的位置。對於一個推薦系統,傳統召回已經可以解決大部分問題了。
傳統召回裏面,可以分爲熱門召回,協同召回,還有基於內容的召回。
這裏有大家耳熟能詳的 SVD、Slim、gSlim、fSlim,還有大家經常用的 UserCF,以及包含它的 ItemCF、 Swing 等等,還有基於 UserCF、ItemCF 做的很多變種來去適配,召回率才能更好。還有大家最常見的內容召回,如屬性的召回。
(2)知識召回
最近幾年,隨着知識圖譜的發展,知識的召回顯得尤爲重要。知識召回有很多優勢:
① 第一個是知識召回的可解釋性比較強。
② 第二個是知識召回整個線上實現的邏輯會比較簡單,性能會比較好。
基於知識的召回主要是通過圖譜、或者通過一些規則標籤的方式建立。有了圖譜或者標籤之後,在上面可以做基於實體的召回、基於標籤的召回、基於路徑的推理,以及基於邏輯的表達。
(3)表示召回
表示召回是最近幾年整個學術界和工業界都在極力探索的,表示召回所帶來的提升是很大的,對整個工程的要求也比較高。
表示召回的發展從最簡單的雙塔模型,到最近一些年基於 Graph-base 模型的相關推理。
Graph-base 也經歷了一段時間,從基於簡單序列的,包括 DeepWalk、Node2Vec,到後面基於知識圖譜的知識的表達,類似於 TransE,KGAT,以及最近一些年基於 Graph 的表達。
表示的召回整體上可以分爲:
① 顯式行爲的建模。
② 隱式行爲建模。
③ 多興趣表徵。
④ 超長行爲的建模。
每一類其實都有一些代表性的算法,大家可以都去觀察一下。在顯式行爲建模裏面有 GRE4Rec、DUPN、BERT4Rec。隱式行爲建模裏面有 XDM。多興趣表徵裏面有 MIND、SASNet,還有超長行爲裏面的。
(4)匹配召回
相對於傳統的表示召回,匹配召回爲了更加精準的表徵各種行爲訓練,它對上層的模型的複雜度要求會更高一點。如傳統的 NCF,還有最近在阿里或者字節應用的比較成功的 TDM 和 DR。
TDM 和 DR 是從檢索、模型、索引三個方面來對整個召回鏈路做優化。要求有更加複雜的匹配模型,同時兼顧候選集大規模召回的時效性。
在整個召回技術的發展裏面,特別是基於表示的召回和匹配的召回都需要對很多的負樣本做比較精準的採樣。
04 排序技術
1. 粗排技術迭代
接下來是排序技術,首先粗排技術的發展:
(1)粗排模型的發展
粗排這張圖是參考了阿里媽媽這邊的一些論文,經歷了數代的發展。
① 初代模型
在初代,整個粗排模型主要還是基於人工規則或後驗概率統計的。
② 第二代模型
到了第二代之後,粗排模型就開始有 LR 的模型,或者基於 XFTRL 相關的一些簡單的模型的表達。
③ 第三代模型
到了第三代之後就有了一些雙塔模型或三塔模型或者 FSCD 模型,模型裏面主要是把用戶還有商品用來做表徵,表徵完了之後在上層再做一個匹配。
④ 第四代模型
到了第四代模型之後,性能要求更高,如 COLD 的模型、 AutoFAS 模型等。
整個模型把特徵和工程做了更加深入的優化。
模型的發展是從後驗統計、線性模型、雙塔模型,到輕量的高精度深度模型,到最近一些年大家都在深入研究的端到端深度粗排。
在端到端的更深度的粗排模型上,主要做了幾個方面:
① 一方面是怎麼與精排模型進行更好的深度的融合統一,包括粗排跟模型的蒸餾。
② 另外一方面是真正地將最終的優化目標跟一致性的粗排保證一致,這個其實是很難的。
③ 第三個就是隨着粗排模型越來越複雜,在性能上要求更高,所以需要比較強的工程效率優化 。
(2)粗排優化階段面臨的問題
特徵應該怎麼做交叉、性能應該怎麼去做、這裏還面臨着很多 SSB(嚴重的樣本選擇偏差)的問題。
2. 精排模型技術
接下來是精排技術的發展,這張圖也參考了很多的模型,在其基礎上又做了一些添加。
精排技術的發展可以分爲傳統模型時代和深度模型時代。
(1)傳統模型時代
在傳統模型時代,主要是基於 LR 展開。通過樣本分組做 MLR、通過特徵交叉做 FM,通過 FM 做序列,通過樹模型的 GBDT 相關序列,XGBOST 序列,有實時性的、 FTRL、XFTRL 等 。
(2)深度模型時代
最近幾年,模型在深度模型時代是迭代比較快的,主要是基於 MLP 做了很多的變換。
右邊這張圖按照上下兩部分 + 左右兩部分來看:
下面這部分其實大家很多場景都用過,就是基於 MLP 到 Wide 和 Deep,同時基於 Wide 和 Deep 側分別做改進,有 DCN 、DPFM、 AFM、NFM 等等,他們都是針對於某一個部分做了優化,
上面部分,主要是針對 MLP 裏面的很多東西引進了更加先進的 Attention 、Product Layer 還有 GNN 等等。
右側這部分主要是基於 AE 、強化學習或者 NCF 的變動。
左側這部分主要是在引入 Attention 相關演化出來的,基於 DIN、DIEN、MIMN、 DSIN,還有 SIM,分別對長序列等等建模。
整個排序技術的發展最終是要朝着多模塊、多任務、多目標還有多模態四個方向去做。
在多任務、多目標、多模態三個方面都有比較經典的模型,比如多任務階段有 MMOE 和 PLE,多目標階段有帕累托最優,多模態方面有 MMGCN、 LOGO 等。
(3)精排技術的模型演進方向
① 第一個是模型的目標:目標從一個要變成多個。
② 第二個是模型的表達:模型需要有更加成熟的,更加複雜的結構來增強表達。
③ 第三個是模型的容量:怎麼在特徵和信息擴充方面引入更多的特徵處理,還有外部的信息讓模型的容量變大。
05 其它推薦算法方向
其它的推薦技術,這裏選了幾個比較熱門的方向:冷啓動、偏置建模和可解釋性。
1. 冷啓動
冷啓動可以分爲:
① 基於後驗概率的羣體統計。
② 高效地利用屬性信息。
③ 充分利用少量的標註數據的啓發式的探索。
這裏也有很多經典的論文,在此不做贅述,大家可以去看一下。
冷啓動應該是現在業界很多的場景,如旅遊、視頻、商品等很多地方都會面臨的一個問題,在模型建模方面怎麼更好地利用全局的信息,羣體的信息,以及更好地利用少量的交互數據來去把用戶的行爲表徵得更準確。
2. 偏置建模
在模型層面有很多方式去做建模,偏置建模是最近幾年比較熱的一個 topic。
偏置建模主要可以分爲位置偏差、曝光偏差和熱度偏差。當然還有其他的偏差,這裏主要列舉了 3 個比較熱門的。
這三個偏差建模裏面也有很多經典的模型,包括 Click Model、曝光模型、基於正則化的和基於因果推斷的等等。
3. 可解釋
隨着推薦系統的發展,包括信息安全法,還有很多其他方面,對推薦系統的可解釋性要求也比較強。
推薦系統的可解釋可以分爲:
① 怎麼去基於其他用戶和基於商品去做可解釋。
② 怎麼基於文本和視覺做可解釋。
③ 怎麼通過社交的方式做可解釋。
可解釋推薦是在給用戶提供推薦的列表時,給用戶解釋爲什麼會這樣推。能夠幫助提升整個推薦系統的說服力,以及對用戶的表徵能力。
06 評估
最後,簡要介紹推薦系統 Metrics 的變化。
1. 整體指標
隨着視頻等行業的興起,指標方案也在發生變化,主要可以分爲:
① 轉化率的指標。
② 推薦類的指標,推薦質量類的指標。
③ 消費滿意度的指標。
這裏面有傳統的 CTR、CVR、ECPM、客單價、DAU 類,也有多樣性、新穎性等很多指標,還有留存、停留時長等等。
2. 分階段指標
推薦系統還是要以線上的 AB test + 離線指標兩者的融合纔能有更好的說服力。
推薦系統線上的指標是與所推薦的內容,包括場景密切相關的,所以說推薦系統的目標不一樣,所選擇的指標觀測也不一樣。
這張圖可以分爲離線和在線,上層的在線主要看的是整體指標,下面的離線主要是從召回、到粗排、到精排、到重排每個階段各個部分看的效果。
在召回階段,大家比較常用的一些 Recall、Precision、F1、NS-recall、NS-precision 還有 Hit Rate 等等,基於場景的不一樣,還有很多去看 KL 散度、長尾判斷。
在粗排階段,除了常用的 AUC、GUC、MAP 相關性指標之外,還有跟精排分數的一致性,這個是非常重要的,因爲最終粗排要優化的目標還是要跟精排打分的儘量保持一致性。
在精排和重排階段還是要面向場景化,除了要看正常的 AUC、GUC,還要看是不是要分類目去看 AUC、GUC,是不是要分人羣、分場景,都是需要深入動態做的。
以上就是今天分享的內容,感謝大家。
分享嘉賓
陳祖龍
阿里巴巴
高級算法專家
2013 年畢業東北大學,先後在百度知識搜索部,淘寶搜索與推薦,飛豬技術算法,一直在做搜索、推薦等相關工作,曾在 WWW,KDD,SIGIR,CIKM,ICDE 等多個國際期刊和會議上發表二十多篇論文。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/DugJBzc1tmvs8ujvA3WWjw