搜索推薦系統(tǒng)中,重排模塊的定位以及常見策略
在推薦搜索系統(tǒng)中,我們常??梢砸姷街嘏拍K,那么你知道重排模塊的作用是什么嗎?在本篇文章里,作者就介紹了重排模塊的作用,以及常見的重排策略,一起來看看吧,或許會(huì)對(duì)想了解搜索推薦系統(tǒng)的你有所幫助。
很多人在最開始了解搜索推薦系統(tǒng)時(shí),不明白為什么還需要單獨(dú)設(shè)立一個(gè)重排模塊,重排模塊和精排模塊能不能進(jìn)行合并。本篇我們就詳細(xì)介紹一下重排模塊的作用以及常見的重排策略。
一、推薦系統(tǒng)常見架構(gòu)
我們先介紹一下目前行業(yè)里先進(jìn)的推薦系統(tǒng)架構(gòu)是什么樣的,分別介紹各個(gè)功能模塊的定位。
上圖是目前工業(yè)界常見的推薦系統(tǒng)架構(gòu),整體系統(tǒng)鏈路上至少分為以下5層:
- 召回層:從億級(jí)別的物料中初篩出用戶感興趣的物料,輸出的物料在萬級(jí)別,大幅降低物料量級(jí),減少后續(xù)系統(tǒng)中的性能壓力。一般都是多路召回架構(gòu),接近20路的召回策略。
- 粗排層:針對(duì)召回層返回的物料,預(yù)估召回點(diǎn)擊率再進(jìn)行排序,篩選出千級(jí)別的物料。
- 過濾層:基于一些硬規(guī)則過濾掉最后不能在前端露出的物料,比如內(nèi)容領(lǐng)域命中了黑詞、電商領(lǐng)域無庫(kù)存的商品等。過濾層也可以放在粗排層之前。
- 精排層:將過濾層返回的所有物料進(jìn)行CTR預(yù)估,然后按照Pctr進(jìn)行排序,輸出百級(jí)別的物料給到下一層。
- 重排層:重排層會(huì)基于全局最優(yōu)和相關(guān)業(yè)務(wù)規(guī)則等對(duì)于精排返回的物料順序進(jìn)行再次調(diào)整,一般都只是微調(diào)。最終一次請(qǐng)求中返回在百級(jí)別以內(nèi)的物料給到前端。
每一個(gè)模塊都有自己的定位,早期的推薦系統(tǒng)就只有一個(gè)最簡(jiǎn)單的排序模塊,發(fā)展到現(xiàn)在推薦系統(tǒng)架構(gòu)已經(jīng)非常精細(xì)化,不同模塊各司其職。
二、重排模塊的定位
在搜推系統(tǒng)的眾多模塊中,重排模塊主要實(shí)現(xiàn)以下三個(gè)目標(biāo):全局最優(yōu) + 流量調(diào)控 + 用戶體驗(yàn)。
1. 全局最優(yōu)
精排實(shí)現(xiàn)的是單點(diǎn)最優(yōu),但是用戶實(shí)際在瀏覽推薦信息流時(shí)是連續(xù)瀏覽多個(gè)商品。不同商品之間的排列組合將影響用戶整體的點(diǎn)擊率。
就如同人穿搭衣服一樣,精排模塊的視角,是單點(diǎn)為用戶選擇最好看的上衣、褲子和鞋子。
而重排模塊是站在整體視角,為用戶選擇既好看然后風(fēng)格又匹配的最優(yōu)的上衣、褲子和鞋子的組合,所以重排模塊最終需要在精排的排序基礎(chǔ)上,按照用戶的瀏覽行為為其挑選出最優(yōu)的一組商品或者內(nèi)容組合。
2. 流量調(diào)控
重排模塊是對(duì)物料的最后一道排序環(huán)節(jié),很多時(shí)候業(yè)務(wù)的特殊流量訴求都是在重排模塊進(jìn)行干預(yù)。比如電商場(chǎng)景中對(duì)于新品的扶持,淘寶當(dāng)年做直播生態(tài)時(shí)對(duì)于直播內(nèi)容進(jìn)行加權(quán)。這些特殊的流量訴求需要干預(yù)整體排序時(shí),最好的實(shí)現(xiàn)方式都是在重排模塊進(jìn)行干預(yù)。
3. 用戶體驗(yàn)
精排和重排整體的排序邏輯還是基于模型預(yù)估的CTR,但是有時(shí)候完全按照CTR大小來進(jìn)行排序的內(nèi)容會(huì)比較極端,比如連續(xù)多坑都是同一種類型的商品或者內(nèi)容,導(dǎo)致用戶審美疲勞,這種就是線上的問題案例,解決這類case都需要在重排模塊做一些頻控策略。
電商推薦里需要針對(duì)同三級(jí)類目、同品牌、同封面圖的商品進(jìn)行打散,內(nèi)容推薦場(chǎng)景里需要針對(duì)同類型、同封面圖、同作者的內(nèi)容進(jìn)行打散。打散可以有效防止用戶審美疲勞化,同時(shí)有利于探索和捕捉用戶的潛在興趣,對(duì)用戶體驗(yàn)和長(zhǎng)期目標(biāo)都很關(guān)鍵。
三、常見的重排策略
針對(duì)上述介紹的三大類目標(biāo),我們分別介紹實(shí)現(xiàn)三大類目標(biāo)常用的策略。
1. 全局最優(yōu)-List Wise策略
List Wise本身不是一個(gè)具體的算法或者模型,只是一個(gè)模型的優(yōu)化目標(biāo)或者是損失函數(shù)的定義方式,List Wise關(guān)注整個(gè)列表中物料之間的順序關(guān)系,需要結(jié)合上下文的信息。List Wise整個(gè)策略分為兩個(gè)步驟:
1)序列生成
第一步是序列生成。假設(shè)用戶在瀏覽淘寶APP首頁(yè)”猜你喜歡“時(shí),平均每次瀏覽4個(gè)商品,那么我們?cè)O(shè)定每個(gè)序列的長(zhǎng)度為4。序列生成模型基于精排模型返回的商品數(shù)量進(jìn)行排列組合。假設(shè)單次請(qǐng)求中精排模型返回12個(gè)商品,那么序列生成模型理論上可以生成:
11880種組合,這個(gè)數(shù)字過于龐大了。為了減輕系統(tǒng)的計(jì)算負(fù)擔(dān)和考慮到模型的耗時(shí)影響,實(shí)際工作中我們不可能窮舉所有的序列類型,一般情況下我們還是會(huì)從精排模型中排序靠前的候選集中進(jìn)行挑選,然后再設(shè)置一些策略性的篩選條件去大幅降低序列的候選集。假設(shè)我們就從精排返回排名前6的商品中,進(jìn)行序列生成:
360組合。我們基于這360種組合再進(jìn)行效果評(píng)估。
2)序列評(píng)估
第二步就是對(duì)生成的序列候選集進(jìn)行效果預(yù)估,首先需要構(gòu)建一個(gè)序列評(píng)估模型,目前序列評(píng)估模型中常用的算法是RNN(Recurrent Neural Networks,循環(huán)神經(jīng)網(wǎng)絡(luò))。
RNN模型的一大特點(diǎn)是以序列數(shù)據(jù)為輸入, 通過神經(jīng)網(wǎng)絡(luò)內(nèi)部的結(jié)構(gòu)設(shè)計(jì)可以有效捕捉序列之間的關(guān)系特征。所以RNN模型非常適合作為序列評(píng)估模型來實(shí)現(xiàn)List Wise。
首先序列評(píng)估模型的輸入是每一個(gè)序列以及精排模型預(yù)估的CTR值,模型融合當(dāng)前商品上下文,也就是排序列表中其它商品的特征,來從列表整體評(píng)估效果。序列評(píng)估模型最終是針對(duì)單個(gè)序列里的每一個(gè)商品輸出一個(gè)對(duì)應(yīng)的預(yù)估CTR,然后將每個(gè)序列里各個(gè)商品的CTR在一起加權(quán)最終得到一個(gè)綜合的CTR分?jǐn)?shù)進(jìn)行排序。
如上圖所示,將四個(gè)相同長(zhǎng)度的不同序列輸入到評(píng)估模型中,模型針對(duì)序列中的每個(gè)商品重新給出新的Pctr,然后將單個(gè)序列里的Pctr進(jìn)行相加得到綜合分?jǐn)?shù),最終取得分最高的序列返回給到前端,如上圖所示得分最高的為序列3。
需要注意的是序列評(píng)估模型仍然是預(yù)估CTR,只是此時(shí)的CTR預(yù)估是結(jié)合了上下文信息,而不是像精排模型那樣僅是單點(diǎn)的CTR預(yù)估。不過序列預(yù)估模型也是對(duì)精排模型的Pctr進(jìn)行微調(diào),不會(huì)大幅調(diào)整精排模型輸出的Pctr。
2. 流量調(diào)控—?jiǎng)討B(tài)調(diào)權(quán)
流量調(diào)控的策略實(shí)現(xiàn)方式一般就一種,直接在重排層上針對(duì)需要獲得更多曝光的內(nèi)容比如新品、新內(nèi)容等進(jìn)行相應(yīng)權(quán)重的調(diào)整,原本預(yù)估的CTR再乘以更高的系數(shù)分比如1.2,使其得分更高。加權(quán)可以快速讓某一類型物料得到更多曝光。
有時(shí)候也可以在召回模塊進(jìn)行調(diào)整,比如針對(duì)某一類物料單獨(dú)設(shè)計(jì)一路召回策略,提升召回側(cè)的供給。但是畢竟召回側(cè)離最終展現(xiàn)還需要經(jīng)歷很多個(gè)模塊,無法確保最終一定可以展現(xiàn)以及展現(xiàn)量,所以一般都是召回和重排層同時(shí)做策略。
但是加權(quán)策略不能一直在整個(gè)流量分發(fā)機(jī)制中存在,當(dāng)實(shí)現(xiàn)了業(yè)務(wù)目標(biāo)后,我們需要重新審視線上的各種加權(quán)策略,然后下線一些加權(quán)策略,不然長(zhǎng)久會(huì)破壞系統(tǒng)整體的生態(tài)。
3. 用戶體驗(yàn)—滑窗打散策略
用戶體驗(yàn)里我們主要介紹滑窗打散策略。目前市場(chǎng)上主流的打散策略都是基于硬規(guī)則的打散,也有基于用戶個(gè)性化興趣的打散方式,但是還是容易出Bad Case。
下面我們以電商同三級(jí)類目商品打散來進(jìn)行舉例,假設(shè)平臺(tái)要求連續(xù)4坑同一三級(jí)類目商品最多只能有2個(gè),連續(xù)8坑同一三級(jí)類目商品最多只能有4個(gè)。針對(duì)這類打散我們一般使用滑動(dòng)窗口法。
如上圖所示,我們構(gòu)建兩個(gè)窗口,一個(gè)長(zhǎng)度為4,一個(gè)長(zhǎng)度為8,每個(gè)圓圈代表一個(gè)商品,不同類目的商品用不同顏色來表示。
兩個(gè)窗口全部從第一個(gè)商品開始往后移動(dòng),首先判斷窗口1和窗口2里的商品是否符合規(guī)則要求,如果符合則繼續(xù)滑動(dòng)窗口,經(jīng)過第一次移動(dòng)后我們可以看到窗口1里面商品的類目分布已經(jīng)不符合規(guī)則要求,按照順序?qū)⒑竺娣弦蟮纳唐吠耙苿?dòng)進(jìn)行替換。
按照上述流程一直進(jìn)行窗口滑動(dòng),對(duì)位于窗口內(nèi)不符合要求的商品進(jìn)行順序調(diào)換。
滑動(dòng)窗口法容易出現(xiàn)末尾扎堆的情況,因?yàn)橐恢痹谟煤罄m(xù)的物料去滿足前序的規(guī)則,將不滿足規(guī)則的物料進(jìn)行后移,最終可能會(huì)導(dǎo)致末尾物料的順序無法調(diào)整,因?yàn)橐呀?jīng)沒有后續(xù)候補(bǔ)物料可供調(diào)整了。
上述就是對(duì)于搜索推薦系統(tǒng)中重排模塊的整體介紹,重排模塊以其獨(dú)特的定位為搜索推薦系統(tǒng)的精細(xì)化運(yùn)作發(fā)揮重要作用。
專欄作家
King James,公眾號(hào):KingJames講策略,人人都是產(chǎn)品經(jīng)理專欄作家。算法出身的搜廣推策略產(chǎn)品專家。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
大佬,請(qǐng)問你用的是什么畫圖工具?
PPT