召回粗排精排-级联漏斗(下)
文 | 水哥
源 | 知乎
saying
召回區分主路和旁路,主路的作用是個性化+向上管理,而旁路的作用是查缺補漏。
推薦系統的前幾個操作可能就決定了整個系統的走向,在初期一定要三思而后行。
做自媒體,打廣告,漏斗的入口有多大很重要。美妝,游戲,籃球入口都非常大,做刷題的自媒體會把自己餓死(說的就是我自己)。
召回這里稍微有些復雜,因為召回是多路的。首先我們要解釋主路和旁路的差別,主路的意義和粗排類似,可以看作是一個入口更大,但模型更加簡單的粗排。主路的意義是為粗排分擔壓力。但是旁路卻不是這樣的,旁路出現的時機往往是當主路存在某種機制上的問題,而單靠現在的這個模型很難解決的時候。舉個例子,主路召回學的不錯,但是它可能由于某種原因,特別討厭影視劇片段這一類內容,導致了這類視頻無法上升到粗排上。那這樣的話整個系統推不出影視劇片段就是一個問題。從多路召回的角度來講,我們可能需要單加一路專門召回影視劇的,并且規定:主路召回只能出3000個,這一路新加的固定出500個,兩邊合并起來進入到粗排中去。這個栗子,是出現旁路的一個動機。這個過程我們可以用下圖來表示:
在上面的圖中,梯形的大小表示透出率的大小。
典型的召回都有哪些?
第一種召回,是非個性化的。比如對于新用戶,我們要確保用最高質量的視頻把他們留住,那么我們可以劃一個“精品池”出來,根據他們的某種熱度排序,作為一路召回。做法就是新用戶的每次請求我們都把這些精品池的內容當做結果送給粗排。這樣的召回做起來最容易,用sql就可以搞定。
第二種召回,是i2i,i指的是item,嚴格意義上應該叫u2i2i。指的是用用戶的歷史item,來找相似的item。比如說我們把用戶過去點過贊的視頻拿出來,去找畫面上,BGM上,或者用戶行為結構上相似的視頻。等于說我們就認為用戶還會喜歡看同樣類型的視頻。這種召回,既可以從內容上建立相似關系(利用深度學習),也可以用現在比較火的graph來構建關系。這種召回負擔也比較小,圖像上誰和誰相似完全可以離線計算,甚至都不會隨著時間變化。
第三種召回是u2i,即純粹從user和item的關系出發。我們所說的雙塔就是一個典型的u2i。在用戶請求過來的時候,計算出user的embedding,然后去一個實現存好的item embedding的空間,尋找最相似的一批拿出來。由于要實時計算user特征,它的負擔要大于前面兩者,但這種召回個性化程度最高,實踐中效果也是非常好的。
召回的學習目標
一般來說,個性化程度最高的雙塔,都會成為主路。它的學習目標,可以類比粗排和精排的關系去學習召回和粗排的關系。而基于graph或者圖像相似度的召回,則有各自自己的學習目標。
召回的評估方式
主路召回,我們可以采用粗排的方式,以粗排的序計算NDCG,或者TopN重疊率。但是旁路召回在線下是比較難以評估的。如果采用一樣的方式評估旁路,那旁路的作用豈不是和主路差不多?那旁路存在的意義是啥呢?不如把改進點加到主路里面去好了。在實際中,旁路召回雖然線下也會計算自己的AUC,NDCG等指標。但是往往都是只做一個參考,還是要靠線上實驗來驗證這路召回是不是有用。
在線上,除了AB需要看效果以外,有一個指標是召回需要注意的:透出率,指的是最終展示的結果中,有多少比例是由這一路召回提供的。如果我們新建了一路召回,他的透出率能達到30%,AB效果也比較好,那我們可以說這一路召回補充了原有系統的一些不足。反過來,如果你的透出率只有1點幾,2點幾,那不管AB是漲是跌,我都很難相信結果和這一路召回有關系,似乎也沒有新加的必要。
多路的結果如何融合?
多個召回之間的結果綜合的時候,要進行去重,可能有多個路返回了用樣的item,這時候要去掉冗余的部分。但是,去重的步驟比較是需要經過設計的。有以下幾種方法來進行融合:
先來先到:按照人為設計,或者業務經驗來制定一個順序,先取哪一路,再取哪一路。后面取得時候如果結果前面已經有了,就要去掉。
按照每一路打分平均:比如第一路輸出A=0.6,B=0.4,第二路輸出B=0.6,C=0.4,那么由于B出現了兩次,B就需要平均一下,最后得到,A=0.6,B=0.5,C=0.4
投票:和上面的例子類似,但是B出現了兩次。我們認為B獲得了兩個方面的認可,因此它的排序是最靠前的。
注意上面的item最后留下的是哪一路的,透出率就算在誰頭上。
召回的問題
假設我們有三路召回ABC,在我們這個時空,業務部署的順序是A-B-C;在另一個平行時空,業務的部署順序是C-B-A。問:其他變量都不變的情況下,最終業務的收益是一樣的嗎?
我個人的理解是,幾乎不會一樣。先部署的召回會影響整個系統,后來的不管是什么方案,都要在不利于自己的情況下“客場作戰”。舉一個極端的例子,A是一個特別喜歡土味視頻的召回,我們第一版實現的是它。結果A上線以后,不喜歡土味視頻的用戶全都跑路了。在迭代的過程中我們就會想,唉是不是我們也可以加一路B來專門召回高雅類型視頻啊。這時候上線一做,并沒有正向,因為喜歡高雅的用戶已經沒了。這就是部署順序給整個系統帶來后效性的一個極端例子。如果我們一開始換一種做法,先上一路中規中矩的召回C,然后把AB當做補充的旁路加進來,效果是有可能更好的。
因此在最初的時候的操作一定要小心。否則會對算法同學帶來很大的后續負擔,比如上面這個例子,有一天領導說哎我們現在不夠高雅你來搞一個,那你就只能為初期的不正確決定買單了。這個問題并不是說粗排,精排就不會出現。而是在實踐中召回這里更容易出現。因為召回的某些方法實現很快,同學很可能一看有收益就推上去了。
入口的規模至關重要
前面講的漏斗都是針對于item篩選這個角度。從生產者的角度也存在這么一個漏斗:
一開始是吸引所面向的人群,然后一部分人會點擊,點擊的人中,一部分人會轉化,可能后面會有深度轉化等等。最終目的是廣告主的獲益。這里要說明一下,深度轉化是相對于某些行業才有的,比如說電商里面轉化了就是購買行為發生了,那已經獲利了就不需要后面環節了。而對于游戲,轉化一般指的是下載,用戶后續氪金了叫深度轉化,對于游戲行業這個時候才算獲利。
這個漏斗中有兩個因素決定最終獲利的大小,一個是入口的規模,一個是梯形的斜率。其實在圖中,梯形的斜率就可以表示點擊率和轉化率的大小。如果你的產品很好,這兩個指標很高,那留下來的就更多,越能獲利。
但是點擊率轉化率這些東西很難優化(雖然大品牌都有專門的團隊來負責)。更多的生產者選擇了更簡單的那個變量:賽道決定的漏斗入口大小。
我們可以以現在這個專欄做一個例子:一般來說,評論是一個很稀疏的行為,假設每10個點贊有1個評論(這樣評論率就是10%,這已經是一個非常高的比例了),每10個瀏覽有1個點贊。我們現在這個專欄的文章,想要獲得100個評論,就至少需要10000個對推薦系統感興趣的讀者,這可能都要把知乎上和推薦相關的讀者一網打盡了。這就是門檻很高,導致的漏斗的入口很小。但是如果面向的對象是所有學生,那入口就會大很多。
所以這就形成了自媒體的一個現象:選擇低門檻。我們可以發現自媒體,往往選擇美妝,籃球這樣的領域進行創作。因為漏斗的入口足夠大,哪個女生不想好看呢?看看籃球又不需要上場去打,也不需要什么思考,門檻也很低。入口足夠大,才能保證在鏈路的最后還有人剩下來。鏈路的最后往往可能是恰飯,比如說球的可以給球鞋做廣告之類的。
最后留兩道思考題
第一
為什么我們需要多路召回,而不是一個主路就把所有的情況都涵蓋了?
第二
刷單,指的是店家付款請人假扮顧客,用以假亂真的購物方式提高網店的排名和銷量獲取銷量及好評吸引顧客。刷單,一般是由賣家提供購買費用,幫指定的網店賣家購買商品提高銷量和信用度,并填寫虛假好評的行為。通過這種方式,網店可以獲得較好的搜索排名……
--來自《百度百科》
為什么刷單對商家有利可圖?
它符合我們這兩講中的哪一條性質?
刷單這種手段是否可以檢測出來?涉及到哪一類算法?
想到答案的同學可以寫在評論里,我們在下一講的開頭會先分析一下這兩個問題。
下期預告
推薦系統全鏈路(4):打壓保送重排-模型之外
往期回顧
1.召回 粗排 精排,如何各司其職?
2.拍不完的腦袋:推薦系統打壓保送重排策略
3.簡單復讀機LR如何成為推薦系統精排之鋒?
4.召回粗排精排-級聯漏斗(上)
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的召回粗排精排-级联漏斗(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: embedding亦福亦祸?XGBoos
- 下一篇: 谈谈怎样提高炼丹手速