拍不完的脑袋:推荐系统打压保送重排策略
文 | 水哥
源 | 知乎
saying
1.懂模型不只是要知道模型能干什么,更要知道它不能干什么
2.在從業(yè)一段時(shí)間后應(yīng)該有一次“轉(zhuǎn)職”,如果你相信模型無(wú)所不能,你應(yīng)該走科研路線;如果你對(duì)模型不是很放心,那你應(yīng)該成為一名工程師
3.舍棄一些眼前利益是短痛,把平臺(tái)的活力做沒(méi)了就是長(zhǎng)痛了
4.我們要把模型看作是一個(gè)喜歡敷衍甩鍋的人,時(shí)時(shí)刻刻要防止它在我們給定的任務(wù)上作弊偷懶
5.做模型好看是好看,但是慧極必傷。只有拍腦袋才是永恒(誤)
在這一講開(kāi)始之前,我們先回答上一講留下的問(wèn)題(幾千閱讀都沒(méi)有人回答下的嘛。。。)
Q:為什么我們需要多路召回,而不是一個(gè)主路就把所有的情況都涵蓋了?
A:由于之前講過(guò)的原因,召回是時(shí)延負(fù)擔(dān)最大的地方,這個(gè)客觀條件使得我們?cè)O(shè)計(jì)的模型都相對(duì)簡(jiǎn)單。在這樣的情況下,模型能力比較弱,不太可能做到“涵蓋所有情況”。
Q:
為什么刷單對(duì)商家有利可圖?
它符合我們這兩講中的哪一條性質(zhì)?
刷單這種手段是否可以檢測(cè)出來(lái)?涉及到哪一類(lèi)算法?
A:刷單就是漏斗的后面環(huán)節(jié)。訂單,購(gòu)買(mǎi)等行為是較強(qiáng)的正樣本,根據(jù)前面講的正反饋性質(zhì),這一系列正樣本會(huì)使得商家在模型的預(yù)估和排序上更靠前(不論是推薦中還是搜索中都有可能)。這個(gè)手段涉及的算法是反作弊,舉個(gè)例子就是下單行為總是集中在某幾個(gè)賬號(hào),或者有個(gè)下單行為連商品都沒(méi)看完一路直搗黃龍就付款了可能會(huì)被標(biāo)記。
這一講中,我們要講一講模型之外的環(huán)節(jié)。這些環(huán)節(jié)看起來(lái)并不高大上,但是他們的重要性一點(diǎn)也不低。在推薦的整過(guò)程中穿插著許多策略環(huán)節(jié)來(lái)輔助。這些策略有些是為了推薦的結(jié)果更好,有些則是為了某種長(zhǎng)期規(guī)劃或者營(yíng)利訴求。
剛畢業(yè)的同學(xué)可能會(huì)覺(jué)得模型很高級(jí),寫(xiě)ifelse很low。我個(gè)人不提倡大家這樣想問(wèn)題,因?yàn)樵谇髮W(xué)階段我們天天面對(duì)的都是模型,所以會(huì)不自覺(jué)的帶著“模型即世界”這樣的思維慣性。我們跳出這個(gè)視角,現(xiàn)在的主流模型無(wú)非就是一些MLP,transformer啊,mmoe之類(lèi)的。你要說(shuō)這些新模型距離線性回歸變化大,那當(dāng)然是很大。但是你要說(shuō)現(xiàn)在的模型無(wú)所不能了,那顯然也還差的遠(yuǎn)。有很多的策略,機(jī)制都是在彌補(bǔ)模型能力的欠缺。當(dāng)我們稱為一名工程師的時(shí)候,除了知道模型能做什么之外,還需要想想模型不能做什么。
我一直說(shuō)相對(duì)于模型,策略其實(shí)是一個(gè)更有門(mén)檻的領(lǐng)域:模型研究的是客觀規(guī)律,而策略可能研究的是人心。研究模型易,讀懂人心難。在本講我們介紹幾種最常見(jiàn)的策略環(huán)節(jié)。
上面的圖展示了策略可能在模型附近出現(xiàn)的環(huán)節(jié)(當(dāng)然做活動(dòng)撒幣之類(lèi)的都算策略,不過(guò)些我們可以留到運(yùn)營(yíng)篇再慢慢講),其中黃色標(biāo)出來(lái)的部分都是策略部分。可以看到,策略本身就可以成為一路召回,比如前面講的按照熱度或者精品池召回。策略可以強(qiáng)行在排序的過(guò)程中保送一部分內(nèi)容,還可以在輸出結(jié)果后進(jìn)行重組。
本講具體介紹下面幾種策略:
根據(jù)標(biāo)簽區(qū)分對(duì)待
標(biāo)簽系統(tǒng)高度滲透在整個(gè)推薦的流程中。標(biāo)簽系統(tǒng)最重要的功能,是對(duì)用戶進(jìn)行分層。根據(jù)當(dāng)前用戶是屬于活躍或者非活躍,是老用戶還是新用戶,是哪一個(gè)年齡段的用戶,都要制定具體的策略。許多產(chǎn)品,運(yùn)營(yíng)同學(xué)的第一課,就是一定要學(xué)會(huì)分層的看待用戶,針對(duì)性的優(yōu)化每一種群體的體驗(yàn)。這就需要我們通過(guò)用戶的歷史行為,或者調(diào)查問(wèn)卷等信息來(lái)進(jìn)行判別。我們先忽略如何得到用戶的標(biāo)簽,討論下有了用戶的標(biāo)簽之后怎么用。
假如有一個(gè)金幣的補(bǔ)貼策略,意思是說(shuō)用戶做了任務(wù)之后會(huì)有獎(jiǎng)勵(lì)。這個(gè)任務(wù)可能是看視頻,點(diǎn)關(guān)注,分享之類(lèi)的。我們當(dāng)然不能對(duì)所有的用戶都一視同仁了(發(fā)金幣本身是要算虧損的,最后要評(píng)估得到的收益是不是值得這樣的虧損),一方面,這個(gè)活動(dòng)的主要點(diǎn)當(dāng)然是在刺激那些看視頻不是很多的用戶,那一個(gè)本來(lái)就會(huì)看很多視頻的用戶激勵(lì)自然就沒(méi)必要那么多。除此之外,在不活躍的用戶里面,還要區(qū)分敏感與不敏感的用戶。有的用戶很喜歡這種激勵(lì),本來(lái)沒(méi)什么熱情,你一發(fā)金幣他馬上就看得多了起來(lái)。但是有的用戶可能很佛系,你發(fā)了他也不怎么受到鼓勵(lì),那我們就會(huì)傾向于給那些容易受到激勵(lì)的用戶多發(fā)金幣。這個(gè)例子中,判別用戶是不是活躍,是不是容易受到激勵(lì)就是非常重要的。這是標(biāo)簽系統(tǒng)指導(dǎo)策略的一個(gè)例子。
標(biāo)簽系統(tǒng)的另一個(gè)要點(diǎn)是要突破“語(yǔ)義鴻溝”。比如說(shuō)當(dāng)我搜索“盤(pán)古七星”的時(shí)候,我可能不是要看這個(gè)酒店的客房,而是看內(nèi)部的商戶,或者周邊有什么吃的(盤(pán)古七星,打錢(qián)!)。但是周?chē)纳虘舻牡昝豢赡芏紟е@四個(gè)字。這個(gè)時(shí)候內(nèi)部的標(biāo)簽可以給它們打上“盤(pán)古七星周邊美食”這樣一個(gè)標(biāo)簽,就可以把它們展示出來(lái)。這種用途非常關(guān)鍵,其作用也非常提升用戶體驗(yàn)。
打壓與保送
并非所有的生產(chǎn)內(nèi)容,在平臺(tái)看來(lái)都是平等的。有的內(nèi)容是政府要傳達(dá)的重要精神,那就算點(diǎn)擊率不高,也要放出去。有的內(nèi)容雖然吸引人,但是很容易消耗掉用戶的興趣,所以要控制度。因此,有的內(nèi)容我們要打壓,有的則要保送。
需要打壓的一般有這么幾種情況:第一種是觀感容易引起不適的,比如各種皮膚病廣告。這種內(nèi)容的密度需要控制,不然天天推這種東西誰(shuí)頂?shù)米“ 5诙N是存在政策風(fēng)險(xiǎn)的,比如某些擦邊球內(nèi)容,平臺(tái)可能不會(huì)強(qiáng)制取消,但是不敢放任,不然容易被警告。第三種是不合時(shí)宜的類(lèi)型,比如時(shí)效性很強(qiáng)的新聞,奧運(yùn)已經(jīng)過(guò)去一個(gè)多月了就應(yīng)該少出現(xiàn)這類(lèi)內(nèi)容了。需要保送的一般則有這些情況:最直接的就是掏錢(qián)了,那我們就往前排。這樣的例子就有淘寶直通車(chē)。也沒(méi)什么別的理由,就是可以創(chuàng)收唄。另一種是平臺(tái)已經(jīng)欽定了,比如說(shuō)我這個(gè)APP就要走高端名媛風(fēng),那這類(lèi)內(nèi)容就得多多推送,我也不在乎不喜歡的用戶怎么想,我的人設(shè)就這樣。
打壓和保送的決定一般很早就出現(xiàn)了,比如我們要給哪種item加量;但是實(shí)際操作一般是在精排出結(jié)果之后,按照他們的標(biāo)簽(就是上面的標(biāo)簽系統(tǒng))偷偷做點(diǎn)手腳。操作時(shí)可以直接對(duì)輸出分?jǐn)?shù)做boost,加偏置或者乘一個(gè)系數(shù)。
探索與利用:含淚(笑?)承損
探索和利用本身是一個(gè)很大的方向,這里所涉及的也是在精排輸出之后的一個(gè)環(huán)節(jié)。其實(shí)在這里操作,本身也是打壓保送的一種情況。但是探索與利用這里想強(qiáng)調(diào)的是,它是一個(gè)較為長(zhǎng)期的規(guī)劃,而且可能要承受一定的損失。
探索與利用全稱是Exploration and Exploitation,也叫做EE問(wèn)題。大概可以理解為,當(dāng)我有一個(gè)機(jī)會(huì)的時(shí)候,我可以選擇一個(gè)未知的東西拿來(lái)試試,我也可以選擇一個(gè)已知的東西來(lái)獲取收益,如何操作,才能使得利益最大化?
這樣揪心的選擇往往出現(xiàn)在item冷啟動(dòng)的環(huán)節(jié)。新視頻我們往往要進(jìn)行保送,有的時(shí)候即使其他視頻預(yù)估的結(jié)果更好,甚至它實(shí)際上也會(huì)更好,我們也要把新視頻推出去。一方面,把新視頻推出去我們能獲得更加豐富的數(shù)據(jù),另一方面,不把它推出去我們也不知道它到底好不好。最重要的是,新視頻的多少?zèng)Q定了整個(gè)平臺(tái)的活力,永遠(yuǎn)有新的內(nèi)容出現(xiàn),才是一個(gè)生命力旺盛的產(chǎn)品。這個(gè)東西很像現(xiàn)在的國(guó)乒。即使馬龍打的好,小胖沒(méi)有贏過(guò)他,大比賽也可能把名額給年輕人。從成績(jī)的角度來(lái)講,當(dāng)然可能會(huì)承受風(fēng)險(xiǎn),因?yàn)槟闩伤礁叩娜四锚?jiǎng)更穩(wěn),但是這是有隱患的。因?yàn)轳R龍年紀(jì)已經(jīng)比較大了,如果年輕人沒(méi)有很好的接班,以后的國(guó)家隊(duì)水平會(huì)不會(huì)倒退?新視頻老視頻也是這樣的。有一些老視頻我們當(dāng)然知道他好,但是必須舍棄這個(gè)機(jī)會(huì)給新視頻。否則有一天用戶發(fā)現(xiàn)平臺(tái)上全是老內(nèi)容,就可能會(huì)覺(jué)得索然無(wú)味,然后離開(kāi)平臺(tái)。如果不愿意付出短期的一點(diǎn)小損失,會(huì)導(dǎo)致未來(lái)的重大損失。
實(shí)現(xiàn)這種控制的做法一般有兩種,一種是區(qū)分新老隊(duì)列,也就是上面圖上所畫(huà)出來(lái)的情況,保送隊(duì)列里面只有新視頻,那么一直到最終決策之前,新視頻都只和新視頻競(jìng)爭(zhēng)。另一種做法是強(qiáng)制比例,比如我就要我的內(nèi)容10%是新的,那么每次推送都會(huì)看一眼,如果新視頻比例不夠,我就根據(jù)差多遠(yuǎn)給新視頻加權(quán)重,反之就減權(quán)重。
EE問(wèn)題的難點(diǎn)是如何把控短期收益和長(zhǎng)期收益的關(guān)系。就像上面這個(gè)例子,投放新視頻短期內(nèi)可能是有損的,但是這個(gè)損失是多大,長(zhǎng)期的收益怎么衡量,我又怎么知道我所謂的長(zhǎng)期收益值得現(xiàn)在的付出呢?這些問(wèn)題是很難解決的,可能也區(qū)分一個(gè)決策者的水平。
重排序:生態(tài)控制
重排序一般來(lái)說(shuō)要做這么幾件事情:
控制展示內(nèi)容的多樣性。含義就是,我可能一次輸出n個(gè)結(jié)果,這n個(gè)結(jié)果不能都講的是同一件事情。否則對(duì)用戶體驗(yàn)的傷害極大。不知道有沒(méi)有同學(xué)記得大概17年底某資訊軟件A被停了三天,那幾天我下載了其他幾個(gè)資訊軟件BC,但是一刷就發(fā)現(xiàn)每次出來(lái)的n個(gè)內(nèi)容雖然不是同一個(gè)人所寫(xiě),但是講得都是同一件事情。很快我就又把它們刪掉了。
去重復(fù)。用戶已經(jīng)看過(guò)的,或者類(lèi)似的進(jìn)行去除,這個(gè)很好理解。
強(qiáng)插,和上面講的打壓保送類(lèi)似,這里的做法更加直接,強(qiáng)插的內(nèi)容可能是不需要經(jīng)過(guò)前面環(huán)節(jié)的。
在這個(gè)部分,我們要說(shuō)明的一件事情是,策略能做到的一些事情,模型可能很難做到。
這里以圖文內(nèi)容和視頻的混排做一個(gè)例子。具體來(lái)說(shuō)就是有的APP上,既有圖文內(nèi)容,也有視頻。放到同一個(gè)模型里面預(yù)估當(dāng)然是可行的。但是實(shí)踐中往往會(huì)出現(xiàn)偏差。視頻內(nèi)容和圖像內(nèi)容比起來(lái),很有可能在很多指標(biāo)上都是領(lǐng)先的。當(dāng)這個(gè)領(lǐng)先到一定程度,模型就會(huì)說(shuō):啊,我發(fā)現(xiàn)了,視頻就是比圖文好啊,于是它直接把所有視頻的預(yù)估都提高。這樣下來(lái)模型就沒(méi)有達(dá)到當(dāng)初我們給他的設(shè)想,我們認(rèn)為理論上他能分別學(xué)習(xí)圖文和視頻的規(guī)律,理論當(dāng)然是對(duì)的,但是機(jī)器學(xué)習(xí)沒(méi)有理所當(dāng)然的事情。實(shí)踐中往往會(huì)退化到簡(jiǎn)單的一刀切結(jié)果上。為了糾正他,我們可能又要在數(shù)據(jù)采樣,loss設(shè)計(jì)上花很多功夫。這樣下來(lái),不僅目的很難達(dá)到,解決方案還會(huì)變的很丑。
其實(shí)這樣的問(wèn)題用一個(gè)策略就可以很好地解決:我們先看看總共有多少視頻,多少圖文,然后按照比例,從各個(gè)隊(duì)列里面抽就行了。一個(gè)探究黑盒模型能力上限的問(wèn)題用幾行ifelse就能極大的緩解。
類(lèi)似的一個(gè)策略在美團(tuán)的公開(kāi)資料中也存在[1]:比如美食可以分為兩種,一種是根據(jù)用戶過(guò)往行為預(yù)估出來(lái)的喜好,一種是根據(jù)用戶所處的位置的推薦。這兩種我們都需要留一些空間,如果把它們都丟進(jìn)一個(gè)模型去排序,很可能會(huì)形成一邊倒的結(jié)果。
這里的策略其實(shí)和模型的邊界不是那么嚴(yán)格的。在重排列這塊,也會(huì)有人用模型來(lái)做,我們后面也會(huì)講到。
策略必須存在
策略必須存在,一個(gè)理由就是上面所說(shuō)的模型能力不足。另一個(gè)理由是可解釋性,在有的場(chǎng)景下,可解釋性的重要性是要大于性能的。比如在廣告投放中,你可能可以做到把某個(gè)環(huán)節(jié)替換為模型,但是廣告主馬上就要問(wèn)他的素材為什么投不出去了,你的模型是不是對(duì)他有意見(jiàn)。這個(gè)時(shí)候就很難解釋。與其惹了金主爸爸不開(kāi)心,還不如老老實(shí)實(shí)寫(xiě)ifelse。當(dāng)你有一套策略的時(shí)候,你就可以告訴他,他們的素材哪里哪里不夠好,在什么地方根據(jù)什么規(guī)則吃虧了。
到了這里,我們這個(gè)專(zhuān)欄的第一個(gè)篇章,基本就結(jié)束了。這個(gè)篇章是對(duì)整個(gè)推薦系統(tǒng)的概述。我們稱之為“總覽篇”。在這個(gè)部分我們其實(shí)沒(méi)有把重點(diǎn)放在某一種具體的算法,或者某一篇具體的論文上,而是放在推薦系統(tǒng)的各個(gè)需要聯(lián)合,相互影響的環(huán)節(jié)上。換句話說(shuō),在這一篇希望強(qiáng)調(diào)的是某種“大局觀”。寫(xiě)這個(gè)部分的時(shí)候我也注意到很多的產(chǎn)品,運(yùn)營(yíng)同學(xué)點(diǎn)了關(guān)注,這也是我覺(jué)得很好的一件事情。
下一個(gè)篇章是“模型篇”,在模型篇里面我們會(huì)涉及具體的模型。會(huì)按照一種模型整體介紹其進(jìn)展以及優(yōu)缺點(diǎn)等。
ps:如果您覺(jué)得學(xué)到了一點(diǎn)東西,請(qǐng)一鍵三連呀~
下期預(yù)告
精排之鋒(1):簡(jiǎn)單復(fù)讀機(jī)LR
后臺(tái)回復(fù)關(guān)鍵詞【入群】
加入賣(mài)萌屋NLP/IR/Rec與求職討論群
后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)】
獲取ACL、CIKM等各大頂會(huì)論文集!
?
[1]. 旅游推薦系統(tǒng)演進(jìn) https://tech.meituan.com/2017/03/24/travel-recsys.html
總結(jié)
以上是生活随笔為你收集整理的拍不完的脑袋:推荐系统打压保送重排策略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 卖萌屋新闻联播栏目,倾情上线~
- 下一篇: 专心做搜索也能登顶CLUE分类榜?在快手