提綱
過(guò)去八九年在廣告、生活服務(wù)、電商等領(lǐng)域從事大數(shù)據(jù)及推薦系統(tǒng)相關(guān)工作,近來(lái)打算對(duì)過(guò)去的工作做一個(gè)系統(tǒng)性的梳理。一方面幫自己查缺補(bǔ)漏、進(jìn)行更深入的學(xué)習(xí);另一方面也希望能通過(guò)博客結(jié)交同好,增進(jìn)交流。
這一博客系列以介紹推薦系統(tǒng)為主,會(huì)少量涉及廣告系統(tǒng)。本篇文章作為該系列的第一篇,主要對(duì)推薦系統(tǒng)、數(shù)據(jù)框架等進(jìn)行整體介紹,不涉及過(guò)多技術(shù)細(xì)節(jié)問(wèn)題。
推薦系統(tǒng)簡(jiǎn)史
在互聯(lián)網(wǎng)信息爆炸的今天,推薦系統(tǒng)是我們身邊一個(gè)無(wú)法躲避存在。在淘寶上瀏覽商品,在抖音上刷視頻,以及無(wú)處不在的小廣告…可以說(shuō),只要你開始上網(wǎng)沖浪,你就會(huì)被推薦系統(tǒng)包圍。事實(shí)上,大規(guī)模推薦系統(tǒng)正是隨著信息過(guò)載而產(chǎn)生。以新聞場(chǎng)景為例,我們可以將早期的報(bào)紙或者雜志看作是一種簡(jiǎn)易人工推薦系統(tǒng),它是由編輯來(lái)遴選最合適的內(nèi)容,展現(xiàn)給所有讀者。但隨著大量用戶自主創(chuàng)建內(nèi)容的產(chǎn)生,依靠有限的人力來(lái)篩選推薦并不現(xiàn)實(shí)。同時(shí),由于互聯(lián)網(wǎng)載體的特殊性,不同的人能夠看到不同的內(nèi)容,因此,針對(duì)用戶進(jìn)行精準(zhǔn)的個(gè)性化推薦就成了必需。根據(jù)用戶以往的興趣、愛好、行為習(xí)慣,為其推薦個(gè)性化的視頻、商品、廣告等,能夠極大地增加用戶黏性,商品銷量和廣告轉(zhuǎn)化。
推薦系統(tǒng)在學(xué)術(shù)上的起源可以追溯到1992年, 美國(guó)明尼蘇達(dá)大學(xué)GroupLens研究組推出的GroupLens系統(tǒng),提出了協(xié)同過(guò)濾思想。1998年,當(dāng)貝佐斯發(fā)現(xiàn)他們提供了近百萬(wàn)圖書時(shí),單純依靠人力推薦已經(jīng)不現(xiàn)實(shí)了,之后Amazon平臺(tái)上線了基于物品的協(xié)同過(guò)濾算法 (ItemCF算法),這一技術(shù)機(jī)制的革新產(chǎn)生了良好的效果,Amazon銷售額號(hào)稱提高了35%左右,這是推薦算法商業(yè)化的一次典范應(yīng)用。2006年10月,在線DVD租賃公司Netflix舉辦了一個(gè)大獎(jiǎng)賽,任務(wù)之一要求參賽者在大概包含1億匿名電影評(píng)分?jǐn)?shù)據(jù)集上建立一個(gè)系統(tǒng),能夠正確預(yù)測(cè)用戶的評(píng)分。這一競(jìng)賽吸引了大量的研究者加入,極大的促進(jìn)了推薦系統(tǒng)的發(fā)展,提高了推薦系統(tǒng)在學(xué)術(shù)界和商業(yè)界的受關(guān)注度。
隨著推薦系統(tǒng)的深入發(fā)展,目前國(guó)內(nèi)外一般中大型網(wǎng)站都已應(yīng)用了推薦系統(tǒng),資訊類如今日頭條、小紅書;電商類如淘寶、亞馬遜、京東等;視頻類如抖音、B站、Netflix等;生活服務(wù)類如美團(tuán)、攜程等;另外社交類應(yīng)用也在逐步應(yīng)用推薦系統(tǒng)進(jìn)行朋友信息推薦,如微信、Facebook等。不同領(lǐng)域里,推薦的目標(biāo)并不相同。信息流領(lǐng)域較為關(guān)注如留存率、用戶滿意度、用戶時(shí)長(zhǎng)等指標(biāo);電商領(lǐng)域更關(guān)注訂單量、訂單轉(zhuǎn)化率、復(fù)購(gòu)率等;社交領(lǐng)域則比較關(guān)注用戶活躍度、用戶黏性、用戶互動(dòng)比例等;廣告領(lǐng)域則更為復(fù)雜,在考慮廣告點(diǎn)擊轉(zhuǎn)化率的同時(shí)還要考慮廣告競(jìng)價(jià)策略、預(yù)算的限制等。針對(duì)不同業(yè)務(wù)場(chǎng)景,推薦系統(tǒng)的目標(biāo)設(shè)計(jì)不盡相同,但有許多通用思路和技術(shù)架構(gòu)可以互相借鑒。
推薦系統(tǒng)本質(zhì)上是一個(gè)過(guò)濾系統(tǒng),是將海量的信息進(jìn)行逐步過(guò)濾,最終為用戶(user)在特定場(chǎng)景(context,比如內(nèi)容上下文是金融財(cái)經(jīng)類,周邊環(huán)境是夜晚、地鐵站附近等)呈現(xiàn)他最可能喜歡的東西(item,比如休閑游戲)。事實(shí)上所有的推薦系統(tǒng)都是圍繞著用戶、場(chǎng)景及物品這三點(diǎn)來(lái)做文章。無(wú)論是推薦、電商抑或是廣告系統(tǒng),都是在充分利這三點(diǎn)信息的情況下,最大程度地去逼近各自的目標(biāo)(留存、點(diǎn)擊、GMV等)。
推薦系統(tǒng)的架構(gòu)
由于推薦系統(tǒng)是架構(gòu)于海量數(shù)據(jù)之上的,為了保證推薦的實(shí)時(shí)性和高效性,必須要有一套強(qiáng)有力的技術(shù)架構(gòu)做支撐。其基本結(jié)構(gòu)如下圖所示:
我們分?jǐn)?shù)據(jù)和計(jì)算兩部分來(lái)介紹系統(tǒng)架構(gòu)。
數(shù)據(jù)層
離線數(shù)據(jù)
離線數(shù)據(jù)通常是按日存儲(chǔ)更新的海量數(shù)據(jù),它有兩個(gè)作用:1、支持模型的離線訓(xùn)練;2、為線上服務(wù)提供離線數(shù)據(jù)(需導(dǎo)入服務(wù)友好的數(shù)據(jù)訪問(wèn)系統(tǒng));
從用戶、場(chǎng)景及item的角度來(lái)看,離線數(shù)據(jù)包括:1、用戶相關(guān)數(shù)據(jù),主要為用戶標(biāo)簽數(shù)據(jù),包含用戶年齡、性別、長(zhǎng)短期愛好、常駐地理位置、消費(fèi)水平等等;2、場(chǎng)景數(shù)據(jù):根據(jù)不同業(yè)務(wù),可能會(huì)包含時(shí)間、數(shù)據(jù)來(lái)源、訪問(wèn)頁(yè)面特征、GPS等等,場(chǎng)景數(shù)據(jù)在線上預(yù)估時(shí)往往需要實(shí)時(shí)獲取,因此離線場(chǎng)景數(shù)據(jù)通常僅用來(lái)做離線模型訓(xùn)練;3、物品數(shù)據(jù),這部分?jǐn)?shù)據(jù)基于不同業(yè)務(wù)有較大差異,以社區(qū)消息信息流推薦而言,通常會(huì)包括物品id、物品標(biāo)簽、類目屬性、發(fā)布者相關(guān)信息,以及該物品上的用戶行為統(tǒng)計(jì)性信息,如過(guò)去若干天被點(diǎn)贊收藏?cái)?shù)量等等;4、交互行為數(shù)據(jù),通常是為離線模型準(zhǔn)備的樣本訓(xùn)練數(shù)據(jù),如點(diǎn)擊率模型所需要的展現(xiàn)點(diǎn)擊數(shù)據(jù);多目標(biāo)模型可能還需要根據(jù)業(yè)務(wù)定制的點(diǎn)贊、收藏、時(shí)長(zhǎng)等數(shù)據(jù)。離線作業(yè)往往不是一蹴而就,有些離線任務(wù)是在為下游離線任務(wù)準(zhǔn)備中間結(jié)果,如文章的分詞結(jié)果,矩陣分解的中間向量等。它們會(huì)作為輸入再次在離線任務(wù)中流轉(zhuǎn)。
為了獲得結(jié)構(gòu)化的上述數(shù)據(jù),通常需要線下對(duì)數(shù)據(jù)進(jìn)行清洗、過(guò)濾及存儲(chǔ)。如下圖所示。
離線處理數(shù)據(jù)主要使用Hadoop,Spark等技術(shù),數(shù)據(jù)經(jīng)過(guò)清洗處理后,存入以HDFS為典型代表的離線存儲(chǔ)系統(tǒng),供離線模型讀取使用;同時(shí)會(huì)將其中部分?jǐn)?shù)據(jù)導(dǎo)入到Redis、Tair這種線上可實(shí)時(shí)訪問(wèn)的系統(tǒng)(如用戶畫標(biāo)簽、物品特征等)用于線上進(jìn)行實(shí)時(shí)計(jì)算。
離線數(shù)據(jù)由于對(duì)存儲(chǔ)要求限制低,可以存儲(chǔ)大量精細(xì)化特征,從而能支持復(fù)雜模型的構(gòu)建。但是,由于離線的時(shí)滯性,使得數(shù)據(jù)所表達(dá)的實(shí)時(shí)性不強(qiáng),比如線上用戶看了奧運(yùn)的新聞,接著搜索奧運(yùn)相關(guān)信息,但由于用戶的興趣轉(zhuǎn)瞬即逝,使用前一天的離線數(shù)據(jù)就無(wú)法捕獲到當(dāng)前萌發(fā)的興趣點(diǎn),也就無(wú)法推薦出用戶實(shí)時(shí)感興趣內(nèi)容。
因此,近年來(lái)隨著實(shí)時(shí)數(shù)據(jù)處理技術(shù)的深入,實(shí)時(shí)特征及實(shí)時(shí)模型獲得迅猛發(fā)展,
近線數(shù)據(jù)
近線數(shù)據(jù),是指時(shí)效性較高,但非完全實(shí)時(shí)化的數(shù)據(jù)。通常時(shí)間間隔在秒級(jí)到小時(shí)級(jí),因此可以捕獲用戶及上下文環(huán)境近期的變化,包括實(shí)時(shí)興趣,地理位置變化等;同時(shí)近線數(shù)據(jù)處理技術(shù)的發(fā)展也為模型的實(shí)時(shí)線上更新帶來(lái)了可能。由于系統(tǒng)可以捕獲用戶及物品近期特征,因此可以在離線模型基礎(chǔ)上,對(duì)線上模型進(jìn)行實(shí)時(shí)增量更新,以提升模型的時(shí)效性。
近線計(jì)算從消息隊(duì)列里訂閱數(shù)據(jù)(如Kafka,MQ,F(xiàn)lume等),對(duì)于數(shù)據(jù)的處理主要使用Storm、Flink、SparkStreaming等技術(shù)。其中,SparkStreaming本身還是批處理的方式,是將數(shù)據(jù)流按照時(shí)間單位切分,再通過(guò)分布式數(shù)據(jù)集來(lái)進(jìn)行批量處理,是一種偽實(shí)時(shí)。相較而言,Storm則是基于單條數(shù)據(jù)驅(qū)動(dòng)的實(shí)時(shí)處理系統(tǒng),而Flink則是基于事件驅(qū)動(dòng),是面向流的處理系統(tǒng),因此這二者都是純實(shí)時(shí)框架,可達(dá)到毫秒級(jí)響應(yīng)。但是,SparkStreaming本身又具有超越其他實(shí)時(shí)處理系統(tǒng)的高吞吐量、高容錯(cuò)性的優(yōu)勢(shì),因此實(shí)時(shí)流處理框架的選擇要根據(jù)業(yè)務(wù)情況進(jìn)行取舍,后續(xù)的大數(shù)據(jù)相關(guān)博客中我們?cè)龠M(jìn)一步詳述。
近線數(shù)據(jù)通常也會(huì)存入服務(wù)訪問(wèn)友好數(shù)據(jù)系統(tǒng),供線上訪問(wèn)。近年來(lái)比較火的lambda架構(gòu),便是由離線數(shù)據(jù)計(jì)算與近線數(shù)據(jù)計(jì)算共同構(gòu)成。由離線作業(yè)寫入存儲(chǔ),再由近線計(jì)算增量更新,以完成海量數(shù)據(jù)的低延遲處理。
實(shí)時(shí)數(shù)據(jù)
實(shí)時(shí)數(shù)據(jù)主要是指用戶在實(shí)時(shí)訪問(wèn)時(shí)拿到的各種數(shù)據(jù),如廣告系統(tǒng)中廣告請(qǐng)求發(fā)起時(shí)的時(shí)間,數(shù)據(jù)源,頁(yè)面特征,地理位置等各種因素。這部分?jǐn)?shù)據(jù)通常是用于模型的實(shí)時(shí)預(yù)估。推薦模型所依賴的輸入特征,不僅取決于用戶的離線長(zhǎng)期興趣,也與當(dāng)前的動(dòng)態(tài)環(huán)境有關(guān),實(shí)時(shí)數(shù)據(jù)可以提供相關(guān)的實(shí)時(shí)特征。
以信息流推薦系統(tǒng)為例,來(lái)看一下實(shí)時(shí)數(shù)據(jù)的使用場(chǎng)景。一般來(lái)說(shuō),實(shí)時(shí)數(shù)據(jù)主要來(lái)自于實(shí)時(shí)請(qǐng)求,通過(guò)對(duì)當(dāng)下數(shù)據(jù)的收集及結(jié)構(gòu)化處理,統(tǒng)一裝配成業(yè)務(wù)需要的數(shù)據(jù),傳入模型,完成模型計(jì)算。
請(qǐng)求發(fā)起時(shí),系統(tǒng)所收集到的實(shí)時(shí)數(shù)據(jù)將會(huì)用于模型預(yù)估。請(qǐng)求完成后,用戶的交互行為會(huì)產(chǎn)生新的實(shí)時(shí)數(shù)據(jù)。這部分?jǐn)?shù)據(jù)會(huì)存入系統(tǒng),最終以近線或離線形式存儲(chǔ)下來(lái),用于后續(xù)的模型訓(xùn)練,或者是報(bào)表展示。
綜上,推薦系統(tǒng)所依賴的數(shù)據(jù)是由離線、近線和實(shí)時(shí)數(shù)據(jù)三部分組成。這三部分?jǐn)?shù)據(jù)又互相滲透,彼此交互,共同組成推薦系統(tǒng)的數(shù)據(jù)支持體系。
一個(gè)例子
我們以一個(gè)例子來(lái)看待一個(gè)具體的用戶行為數(shù)據(jù)是如何在這個(gè)數(shù)據(jù)系統(tǒng)中流轉(zhuǎn)的。為了更好地展現(xiàn)數(shù)據(jù)的流轉(zhuǎn)過(guò)程,此處不摻入復(fù)雜的機(jī)器學(xué)習(xí)算法,僅以用戶標(biāo)簽系統(tǒng)來(lái)舉例說(shuō)明。假設(shè)我們構(gòu)建的是一個(gè)信息流推薦系統(tǒng),以各類生活化信息為主。今天中午來(lái)了一位男用戶,他最近買了個(gè)大house,準(zhǔn)備裝修,所以來(lái)搜索裝修信息。他搜索了“上海 裝修”,并查看了裝修相關(guān)的幾篇文章。這樣,用戶行為記錄里便有了如下幾條日志:
user_id: a_123; item_id:1100; action: view; ts: 2021-11-30:11:12:30
user_id: a_123; item_id:1111; action: view; ts: 2021-11-30:11:21:11
user_id: a_123; item_id:1111; action: click; ts: 2021-11-30:11:22:13
user_id: a_123; item_id:2221; action: view; ts: 2021-11-30:11:29:22
user_id: a_123; item_id:2221; action: click; ts: 2021-11-30:11:30:02
實(shí)際的日志存儲(chǔ)更為復(fù)雜,通常還會(huì)包含如頁(yè)面特征、點(diǎn)擊位置等上下文信息,另外點(diǎn)擊日志與展現(xiàn)日志也是分開處理的,為了便于說(shuō)明,此處進(jìn)行了簡(jiǎn)化處理,以kv形式展示,同時(shí)僅保留用戶id,物品id,行為類型及時(shí)間戳。
用戶及其所訪問(wèn)的物品,會(huì)有其對(duì)應(yīng)的特征數(shù)據(jù)(一般離線和在線都會(huì)存儲(chǔ)),如下:
item_id | item_tag | item_class |
---|---|---|
1100 | 上海,裝修,歐式 | 生活/裝修 |
1111 | 板材,環(huán)保 | 電商/裝修/板材 |
2221 | 裝修,日式,小清新 | 生活/裝修 |
事實(shí)上,對(duì)于物品,除了確定其類目,通過(guò)nlp技術(shù)提取其關(guān)鍵詞外,還可以做更多的處理,提取出更多相關(guān)特征,比如:文章主題抽取,知識(shí)圖譜構(gòu)建,語(yǔ)義概率模型生成以及用戶交互行為類標(biāo)簽,如文章熱度、作者被關(guān)注度,關(guān)聯(lián)文章id,同類文章等等;從中可以窺探出,數(shù)據(jù)固然重要,但只有有效地處理和表達(dá)數(shù)據(jù),才能最大程度地發(fā)揮它的價(jià)值,這也正是算法的魅力所在。
用戶對(duì)物品的交互行為,聯(lián)合物品特征、用戶畫像等內(nèi)容,會(huì)在離線處理過(guò)程中進(jìn)行規(guī)范化繼而落盤保存,如下:
user_id | view_item | click | item | item_tag | item_class | user_profile |
---|---|---|---|---|---|---|
a_123 | 1100 | 0 | 1111 | 上海,裝修,歐式 | 生活/裝修 | {性別:男,地域:上海,愛好:電影:0.9、旅游:0.5} |
a_123 | 1111 | 1 | 1121 | 板材,環(huán)保 | 電商/裝修/板材 | {性別:男,地域:上海,愛好:電影:0.9、旅游:0.5} |
a_123 | 2221 | 1 | 2221 | 裝修,日式,小清新 | 生活/裝修 | {性別:男,地域:上海,愛好:電影:0.9、旅游:0.5} |
注意,這里我們加入了該用戶的畫像,其中電影:0.9是權(quán)重系數(shù),表達(dá)的是該標(biāo)簽在用戶身上的重要程度(一般會(huì)根據(jù)時(shí)間間隔長(zhǎng)短和用戶行為強(qiáng)度進(jìn)行計(jì)算)。我們將表達(dá)用戶興趣的點(diǎn)擊文章標(biāo)簽進(jìn)行處理,將其整合進(jìn)用戶興趣體系:
user_id | user_profile |
---|---|
a_123 | {性別:男,地域:上海,愛好:電影:0.85、裝修/環(huán)保:0.8,日式:0.7,旅游:0.3} |
我們可以看到,隨著時(shí)間的流逝,不同的興趣權(quán)重存在一定程度的增強(qiáng)或減弱。用戶畫像經(jīng)過(guò)數(shù)據(jù)交換系統(tǒng),也會(huì)流入Redis,變成實(shí)時(shí)標(biāo)簽。
此時(shí),我們就對(duì)用戶有了大概認(rèn)知,第二天當(dāng)這個(gè)用戶再次到來(lái)時(shí),就可以基于標(biāo)簽為他推薦“裝修”相關(guān)的內(nèi)容了。
這個(gè)例子展示了一個(gè)用戶標(biāo)簽是如何在數(shù)據(jù)系統(tǒng)里流轉(zhuǎn),并參與推薦的。對(duì)于復(fù)雜的機(jī)器學(xué)習(xí)模型乃至深度學(xué)習(xí)模型來(lái)說(shuō),雖事殊術(shù)異,但其數(shù)據(jù)處理的框架與思想是完全相類的。只要把握住這個(gè)思路,就可以化用到任何推薦業(yè)務(wù)場(chǎng)景里的任何數(shù)據(jù)處理模式了。
模型訓(xùn)練
模型訓(xùn)練通常也分成兩部分:線下全量訓(xùn)練和線上增量更新。
線下訓(xùn)練
用戶多日的行為數(shù)據(jù)(一般以月為單位,一個(gè)月到半年不等)經(jīng)清洗后,進(jìn)入模型訓(xùn)練。一般機(jī)器學(xué)習(xí)模型可用spark實(shí)現(xiàn)(其本身有強(qiáng)大的機(jī)器學(xué)習(xí)包),深度學(xué)習(xí)則使用Tensorflow或Pytorch實(shí)現(xiàn)。但一般大公司會(huì)自研機(jī)器學(xué)習(xí)平臺(tái)(如阿里的PAI,百度的飛槳等),一般都會(huì)提供完善的訓(xùn)練框架,可以支持多種模型的實(shí)現(xiàn)和集成,同時(shí)可以較方便地支持線上預(yù)測(cè)部署。
對(duì)于召回、排序等不同階段,需要訓(xùn)練不同的模型,如協(xié)同過(guò)濾、LR、樹模型、深度學(xué)習(xí)模型等。這些模型可以同時(shí)在線上存在(多路召回,或進(jìn)行AB實(shí)驗(yàn))。
線上更新
離線模型保證了模型的精準(zhǔn)性,但由于實(shí)時(shí)性不強(qiáng),因此近年來(lái)推薦系統(tǒng)一直在往實(shí)時(shí)化方向演進(jìn)。實(shí)時(shí)化包括兩方面:特征的實(shí)時(shí)更新及模型的實(shí)時(shí)更新,都是通過(guò)線上實(shí)時(shí)增量樣本來(lái)完成。特征實(shí)時(shí)更新解決的是如用戶線上出現(xiàn)實(shí)時(shí)興趣時(shí),為其推薦相關(guān)物品的問(wèn)題,比如用戶看了一部偵探電影,那么可以馬上為其推薦相關(guān)主題(或主演)的電影;實(shí)時(shí)模型解決的是捕獲用戶實(shí)時(shí)行為模式的問(wèn)題,對(duì)于場(chǎng)景商品發(fā)生快速變化的情況尤其適用(如電商大促等場(chǎng)景,大量新商品上線的場(chǎng)景),比如熱門商品的更新,同好人群最新感興趣的物品等。
線上推薦
用戶端發(fā)起一次請(qǐng)求后,線上系統(tǒng)開始運(yùn)作。海量物品經(jīng)歷召回、粗排序、精排序、重排序這幾個(gè)環(huán)節(jié),最終展現(xiàn)一條(廣告)到十幾條、幾十條信息給用戶(信息流推薦)。
從圖中可以看出,模型預(yù)估雖然是推薦系統(tǒng)中的重中之重,但是真正支撐模型運(yùn)作起來(lái),需要強(qiáng)大的工程系統(tǒng)??梢哉f(shuō),線上系統(tǒng)是推薦系統(tǒng)中最為復(fù)雜的部分,它要承擔(dān)諸多任務(wù):接收請(qǐng)求,收集實(shí)時(shí)數(shù)據(jù),進(jìn)行模型預(yù)估,將請(qǐng)求結(jié)果返回給用戶,對(duì)于用戶反饋進(jìn)行收集發(fā)送給后端,用于實(shí)時(shí)報(bào)表系統(tǒng)及近線數(shù)據(jù)收集等。
召回階段是面向全量信息庫(kù),檢索出用戶最可能感興趣的成百上千條信息。作為線上模型運(yùn)作的第一步,召回的策略是多種多樣的,但核心都是需要保證快速?gòu)暮A繑?shù)據(jù)中得到一個(gè)用戶感興趣的物品集合。想象一下搜索引擎是如何運(yùn)作“召回”這一步的?用戶輸入查詢?cè)~(query),然后搜索引擎去數(shù)據(jù)庫(kù)中檢索出標(biāo)題或者內(nèi)容中帶有query的全部記錄。推薦場(chǎng)景下沒有意向query,推薦引擎該如何做呢?從某種角度講,沒有用戶的明確輸入,既是好事,也是壞事。好在用戶沒有限定條件,那么“法無(wú)禁止即可行”,算法可以任意發(fā)揮想象空間,從各種角度來(lái)召回(基于用戶歷史興趣、基于用戶當(dāng)下興趣、基于好友推薦、基于上下文、甚至是基于天氣、基于地理位置等等都可以);壞在用戶沒有表達(dá)明確意向,那么召回的結(jié)果中可能含有不是特別相關(guān)的內(nèi)容,這個(gè)就要靠后續(xù)的排序模塊來(lái)進(jìn)一步篩選了。
粗排序階段是將召回的成百上千條信息按照一定指標(biāo)進(jìn)行排序(通常包括粗排序和精排序兩個(gè)階段),篩選出頭部的幾條到幾十條信息,用于后續(xù)展現(xiàn)。粗排序模型主要通過(guò)快速排序,將幾百上千條的信息進(jìn)行過(guò)濾,剩下幾十條給精排序模型,這一階段的排序要求是要足夠快速,精準(zhǔn)度要求不高(也有的推薦系統(tǒng)會(huì)直接省略這一步)。
精排序模型就是常說(shuō)的CTR模型,因?yàn)樵缙趶V告系統(tǒng)強(qiáng)依賴于CTR(點(diǎn)擊率)指標(biāo),因此預(yù)估CTR的高低是排序的重要標(biāo)準(zhǔn)?,F(xiàn)如今的無(wú)論廣告還是信息流排序多考慮綜合指標(biāo),如廣告轉(zhuǎn)化率;信息流的觀看時(shí)長(zhǎng)、點(diǎn)贊收藏率等,因此,多目標(biāo)排序系統(tǒng)是推薦系統(tǒng)所關(guān)注的重要方向。此外,CTR模型從最早的LR(邏輯回歸),到樹模型(以GBDT為典型代表),再到如今的深度學(xué)習(xí)模型(如阿里的DIN,MIND等),也在逐漸往精深方向演進(jìn)。
重排序階段主要根據(jù)實(shí)際業(yè)務(wù)對(duì)信息進(jìn)行重新排序,如廣告會(huì)考慮競(jìng)價(jià)因素,信息流會(huì)考慮運(yùn)營(yíng)、新穎度、驚喜度等因素,此外,還包括對(duì)新上線信息的保護(hù)機(jī)制,以及一些運(yùn)營(yíng)邏輯的加入等一系列業(yè)務(wù)因素,都會(huì)在重排序階段里進(jìn)行綜合考慮。
AB實(shí)驗(yàn)
AB實(shí)驗(yàn)是廣告推薦領(lǐng)域里一個(gè)老生常談的問(wèn)題。試想對(duì)于快消品類,比如寶潔打算新研發(fā)一款洗發(fā)水,但是不確定檸檬味兒還是香草味兒會(huì)更受歡迎,它會(huì)怎么做?它可能讓一小群用戶去同時(shí)嘗試兩種氣味的產(chǎn)品,然后告知他們更喜歡哪種;它也可以把這群用戶分成兩組,每組嘗試一種氣味的產(chǎn)品,然后比較兩組的接受率。顯然第一種方案更好,因?yàn)樗谕瑯拥挠脩羧?,比較更為公平。
推薦系統(tǒng)能否在同一批用戶上進(jìn)行兩種不同的實(shí)驗(yàn)?zāi)兀吭囅脒@樣一個(gè)場(chǎng)景,一個(gè)用戶近期打算旅游,并通過(guò)搜索表達(dá)了興趣,但是當(dāng)他去看信息流推薦時(shí),一會(huì)兒看到的都是旅游相關(guān)的信息,一會(huì)兒又看到都是游戲相關(guān)的信息(可能是基于他既往興趣);或者更有甚者,對(duì)于前端樣式的實(shí)驗(yàn),用戶一會(huì)兒看到的都是圖文,一會(huì)兒看到的都是視頻,用戶的感受更多的是驚喜還是驚嚇?可以想見,這樣的實(shí)驗(yàn)會(huì)極大程度地削弱用戶的把控感,從而帶來(lái)糟糕的體驗(yàn)。因此,為了保持用戶體驗(yàn)的一致性,一般來(lái)說(shuō)AB實(shí)驗(yàn)會(huì)在同一時(shí)段內(nèi)針對(duì)不同用戶群進(jìn)行。
除了上述原因外,這種設(shè)計(jì)其實(shí)也體現(xiàn)了一種哲學(xué)思想,即“人不能兩次踏進(jìn)同一條河流”,針對(duì)同一用戶的兩次不同推薦,因?yàn)闀r(shí)間、場(chǎng)景、用戶心理等發(fā)生變化,其實(shí)也是不能完全公平比較的。那么對(duì)于兩批不同用戶,在時(shí)間等其他因素盡量控制的情況下,只要用戶樣本量足夠,篩選足夠隨機(jī),其實(shí)驗(yàn)效果反倒是較可信的。
AB實(shí)驗(yàn)框架最早來(lái)自于谷歌的研究,主要針對(duì)廣告效果而進(jìn)行的實(shí)驗(yàn)分流。通常情況下,一個(gè)新模型在上線之初會(huì)先選取少量的人群進(jìn)行AB實(shí)驗(yàn)(一般5%-10%),當(dāng)實(shí)驗(yàn)效果足夠好且足夠穩(wěn)定,為了保證實(shí)驗(yàn)效果并非是由于小樣本波動(dòng)所帶來(lái)的,之后可以將流量進(jìn)行擴(kuò)大觀察,直至最后將其部署在全量人群上為止(通常情況下,還會(huì)保留一小部分基線實(shí)驗(yàn)來(lái)進(jìn)行長(zhǎng)期對(duì)比觀察)。上圖展示了一個(gè)召回服務(wù)層上的分流實(shí)驗(yàn),可以看到,這個(gè)服務(wù)在同時(shí)進(jìn)行兩個(gè)實(shí)驗(yàn),分別在實(shí)驗(yàn)一中增加了模型四,及實(shí)驗(yàn)二中增加了模型五,后續(xù)實(shí)驗(yàn)效果會(huì)與同樣流量比例的基礎(chǔ)實(shí)驗(yàn)進(jìn)行指標(biāo)比較。至于如何設(shè)計(jì)實(shí)驗(yàn)分流,以及如何能最大限度地復(fù)用現(xiàn)有流量,同時(shí)進(jìn)行多個(gè)不同的分層實(shí)驗(yàn),這個(gè)問(wèn)題我們以后再展開討論。
推薦系統(tǒng)的演進(jìn)
隨著推薦系統(tǒng)所依賴的周邊資源逐步發(fā)展,推薦系統(tǒng)近十年來(lái)也經(jīng)歷了不小的變化。計(jì)算架構(gòu)上,從離線計(jì)算到模型和特征的實(shí)時(shí)在線更新;模型上,則從早期的邏輯回歸到如今的大規(guī)模深度學(xué)習(xí)。如今,以圖學(xué)習(xí)和強(qiáng)化學(xué)習(xí)為方向的研究正引領(lǐng)推薦系統(tǒng)的潮流。技術(shù)的價(jià)值在于能夠?yàn)闃I(yè)務(wù)而服務(wù),而業(yè)務(wù)所遇到的瓶頸會(huì)反過(guò)來(lái)推動(dòng)技術(shù)進(jìn)一步發(fā)展,如今,在線旅游、外賣、社群、線下買菜等業(yè)務(wù)也在逐漸被推薦系統(tǒng)入侵,可以想見,未來(lái)隨著業(yè)務(wù)場(chǎng)景的更加多樣化,推薦技術(shù)也一定會(huì)出現(xiàn)新的改變。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-425937.html
參考文獻(xiàn):
【1】超詳細(xì):完整的推薦系統(tǒng)架構(gòu)設(shè)計(jì) https://xie.infoq.cn/article/e1db36aecf60b4da29f56eeb4文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-425937.html
到了這里,關(guān)于深入淺出推薦系統(tǒng)(一):推薦系統(tǒng)基本架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!