推薦系統模塊一般如上圖所示,先通過召回模塊,將候選集召回,然后經過粗排、精排、重排等排序方式,將排序靠前的候選集推送給用戶。
推薦系統本身很成熟,但是在落地過程當中,仍然會有很多困難。通過經歷幾個大型推薦系統項目,總結一些經驗,幫助大家避坑。
(資料圖片)
推薦系統模塊一般如上圖所示,先通過召回模塊,將候選集召回,然后經過粗排、精排、重排等排序方式,將排序靠前的候選集推送給用戶。
1. 埋點
個人觀點:
埋點不難,用埋點的數據構造樣本比較難,特別是實時社交比如直播。
理想的樣本:
用用戶id把用戶所有行為串起來;可以回溯用戶過去看直播間的行為,比如評論、打賞等。實際上面臨的困難:
埋點的數據不準確,是臟數據;埋點數據排查困難:前端代碼工程復雜,很容易出問題。但是前端的同學的主要工作也不是數據上報,所以數據出了問題,也不會實時排查,非常容易導致數據臟;回溯模型也很復雜;非常耗資源。綜上,將用戶對應的行為,拼成樣本,需要花費很多精力。
2. 用戶畫像
包括用戶的基礎畫像和興趣畫像。興趣畫像來源于兩個部分:用戶的離線畫像、用戶的實時畫像。其中,離線畫像又分為長期離線畫像、中期離線畫像、短期離線畫像。
3. 內容結構化
根據內容信息的不同,內容結構化方式不同,比如電商領域,內容為商品,商品的結構化信息包括分類、品牌、價格、規格等。
個人****觀點:
多模態要是應用到推薦系統來,是個難點。
耗費資源:圖片轉化為向量,信息量太大,計算起來太耗資源?,F有的電商算法大多基于行為做描述,而多模態從內容上對商品做描述,怎么結合到一起,需要考慮。所以目前多模態性價比不高,討論較多,但是用的較少。
特征工程,將結構化的信息轉換成模型支持的數據格式。
特征選取的優劣,會最終影響到用戶體驗。所以特征工程及特征組合的自動化,一直是推動實用化推薦系統技術演進最主要的方向之一。
1. 特征內容
2. 特征生成
個人觀點:
(1)特征生成過程有什么難點?
樣本拼接:在特征生成過程中,樣本拼接也比較難。一些臟數據的識別。如2.1埋點所說,埋點的數據很容易出問題,數據清洗和處理非常耗精力。(2)有什么熱門的特征提取方式?
用Embedding(可以理解為稠密向量)進行特征交叉。
(3)特征工程的趨勢:
序列特征:用戶歷史的行為、瀏覽行為、點擊行為,過去看的直播間、視頻,前提就是比較基礎的特征做好了上下文特征Embedding(4)用在召回的特征提取,和用在排序的特征提取,有什么不同?
① 特征有差別:
召回模型大多是雙塔模型,用戶、商品用雙塔模型召回,沒有交叉特征精排需要交叉特征,比如用戶和物品的交叉、屬性的交叉等② 樣本有差異:
召回面向全量精排面對的是召回后的候選集③ 做召回的時候,要考慮精準性和效率,精排要用到所有考慮到的特征。所以召回特征是精排特征的子集。
(5)特征抽?。?/strong>
特征需要結合業務場景去抽取特征,每個場景涉及的都不一樣。要涉及到對推薦場景有一個很深的認知,才能抽到好的特征。因為每個場景輸入的維度不同。推薦涉及人貨場三個方面的特征。有了基礎特征之后,就做特征交叉,人貨場中任意兩三者去做交叉。目前專家所在的大廠某業務,是一個大模型,所有的行業的輸入都是同源的。專家認為這是不合理的,所以他認為趨勢是,分行業去挖掘特征,每個行業做小的特征,而不是所有行業用一套特征。從全量信息集合中觸發盡可能多的正確結果,并將結果返回給排序模塊。
個人觀點:
數據決定模型的上限。召回決定了推薦的上限,因為精排的候選集是召回出來的。
1. 召回的要點
處理數據量大速度要夠快模型不能太復雜使用較少特征2. 召回的難點
召回怎么樣和后鏈路做一個耦合的學習。會有一種情況,排序很適合之前召回算法的商品,排序的非常好,換了召回算法,出一批新的商品,排序算法就不一定排的很好。評估離線指標和線上指標的一致性:這是基礎工作,因為離線評估指標漲了,線上不一定也漲了。指標主要看Hit rate。注:Hit rate,在top-K推薦中,HR是一種常用的衡量召回率的指標.分母是所有的測試集合,分子是每個用戶top-K推薦列表中屬于測試集合的個數的總和。
舉例:三個用戶在測試集中的商品個數分別是10,12,8,模型得到的top-10推薦列表中,分別有6個,5個,4個在測試集中,那么此時HR的值是 (6+5+4)/(10+12+8) = 0.5。
3. 哪一種召回方式用的多?
召回的方式特別多,而且每種類型不一樣,差異特別大,不同的召回方式數據集差異也比較大。雙塔用的最多,雙塔包含很多種雙塔模型,是成熟期了。圖神經網絡不能用雙塔模型。一般有幾十種召回算法同時在用,多路一起召回,包括雙塔、ebadding、專家策略、知識圖譜召回(用的少,其他廠用的多)、圖上的傳統召回、知識召回、表示召回、匹配召回幾種都用。專家策略效果也可以,只是可能沒有那么多,而且每一步都有策略,不像雙塔訓練好就行。4. 召回的趨勢和新算法有哪些?
圖神經網絡召回;很有前景的值得探索的方向,信息在圖中的傳播性,所以對于推薦的冷啟動以及數據稀疏場景應該特別有用。知識圖譜召回:知識圖譜有一個獨有的優勢和價值,那就是對于推薦結果的可解釋性。因果推斷。5. 因果推斷算不算召回的新算法?召回是怎么用因果推斷的。
因果推斷實現方式:在深度學習加一些embedding,對因果關系做一些建模。因果推斷是一個理念,在召回中容易給熱門內容打高分,形成馬太效應,因果推斷的理念指排除掉因為馬太效應出現,而是因為相關性被召回。這是一個比較大的領域,最近研究的人比較多,是一個熱點。在精排里試效果一般。6. 在做召回時,主要考慮的因素和性能指標有哪些?
每一路召回算法,在后面精排曝光的占比。快、相應速度快,能在全量物品庫找用戶喜歡的東西。每一路召回算法的點擊率也是看的。畢竟所有的優化都是為了線上提效,所以一般看線上的指標。點擊率是最明顯指標的指標。有時候也看用戶轉化(是否電話聯系)。算法是否上線,也要結合線上的指標看。根據提前設定的目標,對信息進行打分,使評分高的信息優先展示給用戶。排序環節是推薦系統最關鍵,也是最具有技術含量的部分,目前大多數推薦技術其實都聚焦在這塊。
1. 排序算法
個人觀點:
(1)粗排
粗排輸出的結果要給精排用,粗排的打分商品多,比如粗排打兩萬個,精排打top5k個,粗排打分空間更大。粗排的樣本選取和精排不能用同樣的樣本。粗排是所有商品,精排是在粗排的結果中選擇樣本。粗排的要求是高效輸出,一般也是雙塔,因為要快,不能用太復雜的模型,都是基于一些簡單的策略,截斷topN,給到精排。(2)精排
精排更集中于top商品,用有曝光的樣本去訓練。優中選優。難點是在特征工程做的很好的情況下,設計模型結構,得到更好的結果。大部分公司用的阿里巴巴提供的din,一個開源的算法包。2. 多目標優化
多目標優化最關鍵的有兩個問題。第一個問題是多個優化目標的模型結構問題;第二個問題是不同優化目標的重要性如何界定的問題。
如何設定不同目標權重,能夠盡量減少相互之間的負面影響,就非常重要。這塊貌似目前并沒有特別簡單實用的方案,很多實際做法做起來還是根據經驗拍一些權重參數上線AB測試,費時費力。
而如何用模型自動尋找最優權重參數組合就是一個非常有價值的方向,目前最常用的方式是采用帕累托最優的方案來進行權重組合尋優。
個人觀點:
(1)精排的多目標優化用的比較多,比如總的目標是成交gmv,就會分成點擊率和轉化率兩個目標。
(2)多目標訓練的好處:
點擊率和轉化率如果分開訓練,打分就會有延時,消耗的計算資源也會更大。還有一個好處,多個目標可以相互借鑒,特別是數據量稀疏的情況下。(3)至于多目標優化,也有一些自動化的方式調權重,但是一般是人工拍。拍很多組權重,不同組權重的模型,在同一份測試集上出效果。
(4)多目標優化一般用PLE(Progressive Layered Extraction),騰訊CGC出的模型,一直沒有被超越。新出的目標關系之間的建模,db-mtl,esmm等,都不如PLE。
(5)經典的還有Mmoe。
3. 多模態融合
在對專家的訪談中,發現業界對多模態的定義有兩種:
推薦的內容同時有多種形式,比如文字、圖片、視頻等。推薦的內容同時有多種業務線,比如新房、二手房、租房等。個人觀點:
多模態,比較讓人頭疼。
比如首頁推薦,內容包括帖子、視頻,排序的時候怎么排,很難用統一的模型,因為帖子、視頻分屬于不同的業務線,很多特征在這條業務線上有,其他業務線上沒有。所以沒有好的統一的召回模型和統一的精排模型,只能偏人工策略。
某大廠采用的方法是,先算首頁有多少個坑位,基于流量價值和用戶喜歡哪條業務線,人工給權重,分給每個業務線多少個坑位,再將業務線中的商品按照推薦算出來的排序填充坑位。
4. 重排序
根據用戶最終的使用體驗及運營需求,進行排序結果的重新排序。
個人觀點:
(1)難點
① 如何保證用戶滿意度最高的同時,也保證創造者能夠得到流量。
對創造者進行新手扶持,冷啟動階段會給高一些的權重。但是更加考慮用戶的滿意度。所以如果創造者內容質量低,也有可能不給流量。② 用戶產品和商業產品的平衡:
有商業的產品,要保證收入。所以用戶產品排完序之后,要把商業產品排到前面去。具體商業產品的排序,要多種權重,不斷權衡,嘗試商業產品排序掉一點,商業價值不掉。如果商業價值不變,但是整個模型數據提高,就可以上線。1. 推薦系統的冷啟動
個人觀點:
冷啟動的解決辦法太多了。
① 類協同過濾的,找和新用戶基礎屬性相似,又行為豐富的人,推薦這樣的人喜歡的商品給新用戶。
② 通過ml的方法,因為冷啟動行為少,先利用之前的數據,訓練好一個模型,直接賦給冷啟動的用戶,這樣用少量數據,模型也可以快速收斂。
③ 通過業務的規則去做。什么場景下,給用戶推薦什么內容。
④ 圖神經網絡。對物品冷啟動有很好效果。
⑤ 用戶的冷啟動,可以收集跨域信息,比如去其他業務線包括二手房、商業地產收集用戶信息。
⑥ 還可以通過提示是否喜歡一些標簽,來獲取用戶數據。
⑦ 冷啟動的基本原則是老物品給新用戶,新物品給老用戶。
老物品給新用戶,指基于流行度,選擇熱門商品,給新用戶,做新用戶興趣的探索。老用戶給新物品,老用戶已經有行為,新物品與老用戶行為過的已有物品有關系,就推給老用戶,度過新物品的冷啟動周期。2. 推薦系統的評估指標
個人觀點:
離線評估指標:不同環節,不同指標。
召回和粗排中,使用hitrate。精排中:是auc,NDCG。業務場景中:
① 推薦系統評估使用工具:ab測試平臺。
② 使用指標:CTR、CVR、人均使用時長、信息相關性等;
③ 也會關注留電率,但是這種線下數據太稀疏了,所以還是主要看CTR、CVR。
④ 平臺在不同階段關注的不同:
平臺在前期追求點擊率;相對長的時間段,關注用戶觀看時長;更長期:關注用戶的留存率。個人觀點:
推薦系統在不同的界面(比如首頁、購買成功頁、商品詳情頁)等,推薦系統的算法邏輯差異比較大。
在商品列表頁的推薦,主要是根據歷史行為推薦;在商品詳情頁的推薦,主要是根據當前商品推薦。1. 推薦系統在業務上的難點
不同的公司目標不一樣,選用什么樣的數據模型來完成公司的戰略意圖。比如公司現在想要用戶的真實互動和分享,推薦系統應該把分享多的內容推薦給用戶,但是這樣會導致誘導分享的內容更容易被推薦。
如何判斷優質內容,從而更好地把優質內容推薦給用戶,是推薦系統在業務上的難點。
2. 精準性和驚喜性的平衡
推薦系統的精準性現在很容易做,基于上述全鏈路的算法,再配合好的特征,那么能得到一些好的商品。但是會面臨問題:推薦商品很單一。比如點了很多連衣裙相關的,會不斷推連衣裙。推薦系統具有滯后性,只會推用戶已經行為過這些東西。雖然用戶可能也會點擊,但是這樣對于一個推薦系統,是不夠優秀的。
如果用戶有多種興趣:連衣裙、小吃等,會有打散策略,給她推多種興趣的商品,這樣問題還小一點。
如果用戶興趣單一,推薦系統就會只推她喜歡的那個興趣,就是推薦系統不夠好。
好的推薦系統,要為用戶提供驚喜性、發現性,要推薦用戶恰好想要的。精準性和發現性需要兼顧,做一個平衡。
3. 沒有數據是最難的。不斷會有新的場景出來,新場景的數據不足。
**4. 推薦系統給新的內容生產者的流量:**沒有看到一些很好的保量的算法?,F在用的多的是pid,比例微分積分。投放速度快,就限制一些,投放速度慢,就減慢一些。
**5. 推薦對業務的價值:**怎么讓推薦對整個業務起到作用,讓整體業務增長。
**6. 推薦所需的環境和條件:**數據、abtest、線上工程,都能具有非常好的魯棒性。
標簽: