搜索推薦系統中,重排模塊的定位以及常見策略

2 評論 5981 瀏覽 44 收藏 13 分鐘

在推薦搜索系統中,我們常??梢砸姷街嘏拍K,那么你知道重排模塊的作用是什么嗎?在本篇文章里,作者就介紹了重排模塊的作用,以及常見的重排策略,一起來看看吧,或許會對想了解搜索推薦系統的你有所幫助。

很多人在最開始了解搜索推薦系統時,不明白為什么還需要單獨設立一個重排模塊,重排模塊和精排模塊能不能進行合并。本篇我們就詳細介紹一下重排模塊的作用以及常見的重排策略。

一、推薦系統常見架構

我們先介紹一下目前行業里先進的推薦系統架構是什么樣的,分別介紹各個功能模塊的定位。

上圖是目前工業界常見的推薦系統架構,整體系統鏈路上至少分為以下5層:

  1. 召回層:從億級別的物料中初篩出用戶感興趣的物料,輸出的物料在萬級別,大幅降低物料量級,減少后續系統中的性能壓力。一般都是多路召回架構,接近20路的召回策略。
  2. 粗排層:針對召回層返回的物料,預估召回點擊率再進行排序,篩選出千級別的物料。
  3. 過濾層:基于一些硬規則過濾掉最后不能在前端露出的物料,比如內容領域命中了黑詞、電商領域無庫存的商品等。過濾層也可以放在粗排層之前。
  4. 精排層:將過濾層返回的所有物料進行CTR預估,然后按照Pctr進行排序,輸出百級別的物料給到下一層。
  5. 重排層:重排層會基于全局最優和相關業務規則等對于精排返回的物料順序進行再次調整,一般都只是微調。最終一次請求中返回在百級別以內的物料給到前端。

每一個模塊都有自己的定位,早期的推薦系統就只有一個最簡單的排序模塊,發展到現在推薦系統架構已經非常精細化,不同模塊各司其職。

二、重排模塊的定位

在搜推系統的眾多模塊中,重排模塊主要實現以下三個目標:全局最優 + 流量調控 + 用戶體驗。

1. 全局最優

精排實現的是單點最優,但是用戶實際在瀏覽推薦信息流時是連續瀏覽多個商品。不同商品之間的排列組合將影響用戶整體的點擊率。

就如同人穿搭衣服一樣,精排模塊的視角,是單點為用戶選擇最好看的上衣、褲子和鞋子。

而重排模塊是站在整體視角,為用戶選擇既好看然后風格又匹配的最優的上衣、褲子和鞋子的組合,所以重排模塊最終需要在精排的排序基礎上,按照用戶的瀏覽行為為其挑選出最優的一組商品或者內容組合。

2. 流量調控

重排模塊是對物料的最后一道排序環節,很多時候業務的特殊流量訴求都是在重排模塊進行干預。比如電商場景中對于新品的扶持,淘寶當年做直播生態時對于直播內容進行加權。這些特殊的流量訴求需要干預整體排序時,最好的實現方式都是在重排模塊進行干預。

3. 用戶體驗

精排和重排整體的排序邏輯還是基于模型預估的CTR,但是有時候完全按照CTR大小來進行排序的內容會比較極端,比如連續多坑都是同一種類型的商品或者內容,導致用戶審美疲勞,這種就是線上的問題案例,解決這類case都需要在重排模塊做一些頻控策略。

電商推薦里需要針對同三級類目、同品牌、同封面圖的商品進行打散,內容推薦場景里需要針對同類型、同封面圖、同作者的內容進行打散。打散可以有效防止用戶審美疲勞化,同時有利于探索和捕捉用戶的潛在興趣,對用戶體驗和長期目標都很關鍵。

三、常見的重排策略

針對上述介紹的三大類目標,我們分別介紹實現三大類目標常用的策略。

1. 全局最優-List Wise策略

List Wise本身不是一個具體的算法或者模型,只是一個模型的優化目標或者是損失函數的定義方式,List Wise關注整個列表中物料之間的順序關系,需要結合上下文的信息。List Wise整個策略分為兩個步驟:

1)序列生成

第一步是序列生成。假設用戶在瀏覽淘寶APP首頁”猜你喜歡“時,平均每次瀏覽4個商品,那么我們設定每個序列的長度為4。序列生成模型基于精排模型返回的商品數量進行排列組合。假設單次請求中精排模型返回12個商品,那么序列生成模型理論上可以生成:

11880種組合,這個數字過于龐大了。為了減輕系統的計算負擔和考慮到模型的耗時影響,實際工作中我們不可能窮舉所有的序列類型,一般情況下我們還是會從精排模型中排序靠前的候選集中進行挑選,然后再設置一些策略性的篩選條件去大幅降低序列的候選集。假設我們就從精排返回排名前6的商品中,進行序列生成:

360組合。我們基于這360種組合再進行效果評估。

2)序列評估

第二步就是對生成的序列候選集進行效果預估,首先需要構建一個序列評估模型,目前序列評估模型中常用的算法是RNN(Recurrent Neural Networks,循環神經網絡)。

RNN模型的一大特點是以序列數據為輸入, 通過神經網絡內部的結構設計可以有效捕捉序列之間的關系特征。所以RNN模型非常適合作為序列評估模型來實現List Wise。

首先序列評估模型的輸入是每一個序列以及精排模型預估的CTR值,模型融合當前商品上下文,也就是排序列表中其它商品的特征,來從列表整體評估效果。序列評估模型最終是針對單個序列里的每一個商品輸出一個對應的預估CTR,然后將每個序列里各個商品的CTR在一起加權最終得到一個綜合的CTR分數進行排序。

如上圖所示,將四個相同長度的不同序列輸入到評估模型中,模型針對序列中的每個商品重新給出新的Pctr,然后將單個序列里的Pctr進行相加得到綜合分數,最終取得分最高的序列返回給到前端,如上圖所示得分最高的為序列3。

需要注意的是序列評估模型仍然是預估CTR,只是此時的CTR預估是結合了上下文信息,而不是像精排模型那樣僅是單點的CTR預估。不過序列預估模型也是對精排模型的Pctr進行微調,不會大幅調整精排模型輸出的Pctr。

2. 流量調控—動態調權

流量調控的策略實現方式一般就一種,直接在重排層上針對需要獲得更多曝光的內容比如新品、新內容等進行相應權重的調整,原本預估的CTR再乘以更高的系數分比如1.2,使其得分更高。加權可以快速讓某一類型物料得到更多曝光。

有時候也可以在召回模塊進行調整,比如針對某一類物料單獨設計一路召回策略,提升召回側的供給。但是畢竟召回側離最終展現還需要經歷很多個模塊,無法確保最終一定可以展現以及展現量,所以一般都是召回和重排層同時做策略。

但是加權策略不能一直在整個流量分發機制中存在,當實現了業務目標后,我們需要重新審視線上的各種加權策略,然后下線一些加權策略,不然長久會破壞系統整體的生態。

3. 用戶體驗—滑窗打散策略

用戶體驗里我們主要介紹滑窗打散策略。目前市場上主流的打散策略都是基于硬規則的打散,也有基于用戶個性化興趣的打散方式,但是還是容易出Bad Case。

下面我們以電商同三級類目商品打散來進行舉例,假設平臺要求連續4坑同一三級類目商品最多只能有2個,連續8坑同一三級類目商品最多只能有4個。針對這類打散我們一般使用滑動窗口法。

如上圖所示,我們構建兩個窗口,一個長度為4,一個長度為8,每個圓圈代表一個商品,不同類目的商品用不同顏色來表示。

兩個窗口全部從第一個商品開始往后移動,首先判斷窗口1和窗口2里的商品是否符合規則要求,如果符合則繼續滑動窗口,經過第一次移動后我們可以看到窗口1里面商品的類目分布已經不符合規則要求,按照順序將后面符合要求的商品往前移動進行替換。

按照上述流程一直進行窗口滑動,對位于窗口內不符合要求的商品進行順序調換。

滑動窗口法容易出現末尾扎堆的情況,因為一直在用后續的物料去滿足前序的規則,將不滿足規則的物料進行后移,最終可能會導致末尾物料的順序無法調整,因為已經沒有后續候補物料可供調整了。

上述就是對于搜索推薦系統中重排模塊的整體介紹,重排模塊以其獨特的定位為搜索推薦系統的精細化運作發揮重要作用。

專欄作家

King James,公眾號:KingJames講策略,人人都是產品經理專欄作家。算法出身的搜廣推策略產品專家。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自 Unsplash,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 大佬,請問你用的是什么畫圖工具?

    來自廣東 回復
    1. PPT

      來自北京 回復