自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淘寶推薦場(chǎng)景的利器:融合復(fù)雜目標(biāo)且支持實(shí)時(shí)調(diào)控的重排模型

人工智能 算法
本文主題為融合復(fù)雜目標(biāo)且支持實(shí)時(shí)調(diào)控的重排模型在淘寶流式推薦場(chǎng)景的應(yīng)用,其中第一個(gè)關(guān)鍵詞是重排模型,有兩個(gè)定語(yǔ),一是支持復(fù)雜的目標(biāo),二是目標(biāo)之間的權(quán)重可以實(shí)時(shí)調(diào)節(jié),今天主要討論這樣的重排模型在手淘信息流式場(chǎng)景的應(yīng)用。

一、信息流場(chǎng)景面臨的挑戰(zhàn)與重排模型的獨(dú)特優(yōu)勢(shì)

對(duì)于重排很多同學(xué)可能感到陌生,下圖是工業(yè)界中推薦系統(tǒng)一個(gè)常見的 pipeline。當(dāng)用戶來(lái)到手淘時(shí),會(huì)從億級(jí)的候選池中先召回萬(wàn)級(jí)的寶貝,然后把萬(wàn)級(jí)的寶貝交給粗排模型打分之后再?gòu)闹芯x出千級(jí)的寶貝給精排模型,然后精排模型會(huì)交付幾十上百的寶貝到重排模型進(jìn)一步打分。

圖片

從打分量和效率角度來(lái)講,前序的模塊打分量非常大,對(duì)其效率要求也非常高。依次往后打分量減少,效率也會(huì)慢慢降低,這里的效率指的是單個(gè)寶貝打分所需要消耗的計(jì)算量。正是因?yàn)橄牧烁嘤?jì)算量,后續(xù)模型的打分精準(zhǔn)度也會(huì)變高。

重排是由阿里巴巴莊濤在 18 年首次正式提出的概念,從字面意義來(lái)說(shuō)就是重新再排一遍。除了打分量和精準(zhǔn)度之外,跟前序模型相比,重排模型的一個(gè)顯著的區(qū)別是會(huì)顯示建模寶貝之間的相互影響,稱為 context information。

圖片

比如把上圖的寶貝在手淘上展示給用戶時(shí),由于中間的寶貝跟周邊的寶貝在顏色、大小上有著顯著差別,用戶就會(huì)以更高的概率去點(diǎn)擊這個(gè)寶貝,這就是非常經(jīng)典的context information 的應(yīng)用。

下圖是目前復(fù)雜信息流場(chǎng)景所面對(duì)的挑戰(zhàn),以及重排的獨(dú)特優(yōu)勢(shì)。

圖片

右邊兩張截圖是手機(jī)淘寶,在推薦按鈕位置稍微往下滑,就可以看到【猜你喜歡】的業(yè)務(wù),它的產(chǎn)品形態(tài)是一個(gè)雙列流。所謂流就是用戶可以不停地下滑,隨著流的下滑可以接收到更多信息,這種產(chǎn)品形態(tài)稱為信息流。之所以稱它復(fù)雜,是因?yàn)樗镞呌兄辈?、商品、圖文、視頻,還會(huì)間或的有一些用研相關(guān)的內(nèi)容。在推薦旁邊有一個(gè)關(guān)注按鈕,這個(gè)流里邊展示的是用戶在手淘關(guān)注的店鋪或者達(dá)人相關(guān)的內(nèi)容,是一個(gè)大卡的單列流,如果是商品通常是以商品列表的形式展出。

后續(xù)分享的實(shí)驗(yàn)結(jié)果均來(lái)自“關(guān)注”流,這兩個(gè)場(chǎng)景不像其它一些簡(jiǎn)單目標(biāo)的推薦場(chǎng)景,比如說(shuō)同店的六宮格寶貝推薦,以促進(jìn)成交為唯一目標(biāo)。在這樣復(fù)雜的信息流場(chǎng)景中,面臨著非常多的挑戰(zhàn)。

  • 第一點(diǎn)是要打散,要求滿屏的內(nèi)容,店鋪不能扎堆,類目品類不能扎堆,不能滿屏都是連衣裙,展現(xiàn)樣式也不能扎堆,不能滿屏都是直播。
  • 第二點(diǎn)是會(huì)有流量控制,舉例來(lái)說(shuō),為了撬動(dòng)商家的供給,或者保持商家生產(chǎn)內(nèi)容的積極性,通常都會(huì)有冷啟助推計(jì)劃,比如商家主動(dòng)發(fā)布了新內(nèi)容,在三天之內(nèi)會(huì)確保有 100 個(gè)曝光,這部分內(nèi)容就叫做冷啟內(nèi)容,通常會(huì)確保里邊有一定冷啟內(nèi)容的占比。
  • 第三點(diǎn)是多種形態(tài)的混合,如直播、商品、圖文以及視頻,這種混合流的困難一方面體現(xiàn)在每一種供給背后的表征是對(duì)不齊的,或者說(shuō)直播跟商品拿到的特征對(duì)不齊,當(dāng)特征維度不一樣的時(shí)候,如何做一個(gè)混合流是一個(gè)難點(diǎn)。不同內(nèi)容的曝光帶給用戶的價(jià)值也是不一樣的,如何做統(tǒng)一的價(jià)值衡量又是另外一個(gè)難點(diǎn)。
  • 第四點(diǎn)挑戰(zhàn)是多路供給融合,供給的概念是指這一部分有不同的生產(chǎn)鏈路,或者獨(dú)立的召回打分鏈路,跟內(nèi)容形態(tài)不一定強(qiáng)耦合。比如說(shuō)都是直播,可能是達(dá)人直播,也可能是店鋪直播,背后有不同的生產(chǎn)鏈路。
  • 第五點(diǎn)挑戰(zhàn)是多目標(biāo),同店商品的推薦只會(huì)有一個(gè)目標(biāo)就是成交,而關(guān)注信息流里我們每天緊盯著的指標(biāo)就有幾十個(gè),展開可能上百個(gè),大體可以分為用戶的體驗(yàn)指標(biāo)、效率類指標(biāo)、商家生態(tài)指標(biāo)以及子業(yè)務(wù)的目標(biāo)。比如直播和商品背后可能是兩個(gè)業(yè)務(wù)團(tuán)隊(duì),他們的業(yè)務(wù)目標(biāo)之間有重合的部分,也有不同的部分,需要通過(guò)推薦分發(fā)做到共贏。

Context 信息的感知與控制能力是應(yīng)對(duì)這些挑戰(zhàn)的殺手锏。以第一個(gè)挑戰(zhàn)打散為例,當(dāng)想在某個(gè)位置放入某個(gè)商品時(shí),重排模型會(huì)去看周邊的內(nèi)容都是來(lái)自哪些店鋪,這叫做 context 的感知。在放商品的時(shí)候可以避開這些商家,以確保店鋪是不扎堆的,這個(gè)稱為重排模型對(duì) context 的控制能力。

圖片

傳統(tǒng)方案通常是用 pipeline 的方案串聯(lián)一系列內(nèi)容與功能相對(duì)單一的模塊。比如每一路供給精選出了最好的寶貝后,先融合完再做一個(gè)店鋪打散。如果冷啟占比不夠會(huì)隨機(jī)性地插入一些冷啟的內(nèi)容,還會(huì)有置頂?shù)沫h(huán)節(jié),根據(jù)業(yè)務(wù)需要把某些內(nèi)容放在整個(gè)推薦結(jié)果的最頂部。僅是三個(gè)模塊就可能牽扯出很多愛(ài)恨情仇,前后耦合,很容易相互踩腳。比如打散后店鋪是不扎堆的,但插入的冷啟內(nèi)容可能跟周圍的店鋪是重復(fù)的,就打破了前序的結(jié)果。如果插入的時(shí)候還要看是否滿足店鋪打散這個(gè)需求,又可能導(dǎo)致冷啟內(nèi)容插不進(jìn)去了。冷啟和置頂之間也是類似情況。

還有一個(gè)問(wèn)題是這種模式下每個(gè)模塊功能相對(duì)單一,但在系統(tǒng)層面卻缺少聯(lián)合優(yōu)化的可能,導(dǎo)致整個(gè)系統(tǒng)最后推薦的結(jié)果是次優(yōu)的。有同學(xué)說(shuō)會(huì)不會(huì)是模塊之間的順序不對(duì)?也有可能,但我的理解是不存在一個(gè)真正好的序能夠消除各個(gè)模塊相互之間的踩腳,今天要分享的就是如何使用重排模型徹底推翻這種 pipeline 推薦范式。

圖片

基于復(fù)雜目標(biāo)的重排方案,在每一路供給精選出候選集后,把候選集全扔進(jìn)重排模型就會(huì)直接生成最終的推薦序列。主要優(yōu)勢(shì)體現(xiàn)在兩點(diǎn):

  • 一是基于重排模型強(qiáng)大的 context 感知與控制能力,可以兼顧到前文提到的全部挑戰(zhàn);
  • 二是它本身是一個(gè)深度神經(jīng)模型,可以在大數(shù)據(jù)的驅(qū)動(dòng)下給出 end to end 的聯(lián)合最優(yōu)解。

二、重排模型的建模范式總結(jié)

重排模型大致可以分成三種建模范式,簡(jiǎn)稱為 V1,V2 和 V3。

V1 版的特點(diǎn)是嘗試捕獲輸入 item 之間的相互影響,即部分捕捉 context 信息,有部分 context 感知能力,單點(diǎn)打分,貪婪排序。

圖片

比如有 5 個(gè)候選寶貝,來(lái)自綠色店鋪和黃色店鋪兩家。重排模型 V1 版可能是通過(guò) RNN 或者 Transformer 的結(jié)構(gòu)去捕獲建模它們之間的相互影響和相互關(guān)系,給每個(gè) item 單獨(dú)打一個(gè)排序分,按照這個(gè)分?jǐn)?shù)從大到小的順序排列,再截取 top 寶貝透出作為最終的結(jié)果。

這版模型存在一個(gè)問(wèn)題就是對(duì)于這些寶貝是否來(lái)自一家店鋪沒(méi)有控制能力。如果想確保來(lái)自不同店鋪,就要加入店鋪打散的邏輯,反過(guò)來(lái)看這個(gè)重排模型就不是輸出最后的結(jié)果了。所以 V1 版重排模型缺少對(duì) context 的控制能力。

圖片

V2 的特點(diǎn)是在 V1 版的基礎(chǔ)上加上了序列選取 item 的模式。具體來(lái)說(shuō),會(huì)通過(guò) encoder 去拿整個(gè) context 的 embedding,之后會(huì)逐個(gè)選取 item。舉例來(lái)說(shuō),在這個(gè) case 中,已經(jīng)選取好前 n 個(gè) item,希望選取第 n + 1 item。該模型會(huì)先計(jì)算出一個(gè) state  變量表示當(dāng)前這個(gè)位置應(yīng)該怎么選寶貝,然后會(huì)拿 state 跟各個(gè)候選 item 算 attention,attention 的值跟 item 選取概率高度相似,大體上會(huì)根據(jù) attention 值的大小來(lái)選擇一個(gè)寶貝放在當(dāng)前這個(gè)位置。每選出一個(gè)寶貝后 state 都會(huì)馬上更新,所有的 attention 值會(huì)重新計(jì)算。這種建模范式下,就實(shí)現(xiàn)了對(duì) context  的控制能力。

當(dāng)選擇第 n +1 個(gè)寶貝的時(shí)候,因?yàn)榍靶?n 個(gè)寶貝已經(jīng)選定了,他們來(lái)自哪個(gè)店鋪也確定了。選 n +1 的時(shí)候,通過(guò)看前面的寶貝避免有重復(fù)的店鋪出現(xiàn)就可以了,所以對(duì) context 有比較強(qiáng)的控制能力。

圖片

但 V2 版重排模型的瓶頸在于需要手動(dòng)給出每一步的最優(yōu)選擇作為 label,因?yàn)樵撝嘏拍P褪腔诒O(jiān)督學(xué)習(xí)的范式來(lái)訓(xùn)練的。給定候選集寶貝、用戶當(dāng)前的實(shí)時(shí)狀態(tài)和前序 n 個(gè)寶貝的選擇,需要告訴模型這一步的最優(yōu)選擇是什么才可以讓模型訓(xùn)練。

但問(wèn)題是給出這么多前序設(shè)置怎么知道這一步應(yīng)該選什么呢?監(jiān)督訓(xùn)練在推薦系統(tǒng)中用得很多,特別是精排模型。拿到用戶特征和商品特征,輸入一個(gè) CTR 點(diǎn)擊精排模型去進(jìn)行點(diǎn)擊率預(yù)估。線上這個(gè)寶貝透給用戶,能真實(shí)知道用戶有沒(méi)有點(diǎn)擊,很容易回收一個(gè)點(diǎn)擊或者不點(diǎn)擊的 label,訓(xùn)練時(shí)最小化預(yù)測(cè)值和實(shí)際值的距離就可以做好模型訓(xùn)練。

但要把監(jiān)督訓(xùn)練套用到重排模型就不成立了。比如說(shuō)有用戶特征,有 m 個(gè)商品和它們的特征,喂入一個(gè)重排模型預(yù)估了一個(gè)最優(yōu)序列,比如 12345,需要給出最優(yōu)序列當(dāng)作 label,比如這個(gè) case 里邊最優(yōu)的序列應(yīng)該是 34125,通過(guò)最小化這兩個(gè)變量之間的距離來(lái)做模型訓(xùn)練。

但問(wèn)題是在復(fù)雜情景中,比如有多種內(nèi)容供給、多種目標(biāo)、多種業(yè)務(wù)需求情況下,如何知道最優(yōu)序列是什么呢?如果已知最優(yōu)序列,為什么還需要訓(xùn)練一個(gè)模型呢?在相關(guān)研究中,大家會(huì)提出一些尋找最優(yōu)序列的探索方式。比如把購(gòu)買的寶貝放在第一個(gè),點(diǎn)擊的寶貝次之,其他的隨便排,這里其實(shí)是人為構(gòu)造出一個(gè)最優(yōu)序列。但在這種訓(xùn)練模式下,構(gòu)造出來(lái)的序列好壞直接決定了重排模型的上限。基于上述原因,提出了重排 V3 的建模范式,其特點(diǎn)是在 V2 的基礎(chǔ)上加了 reward 驅(qū)動(dòng)訓(xùn)練。

圖片

首先有一個(gè) actor,給出一個(gè)用戶和候選商品序列時(shí),它負(fù)責(zé)生成一個(gè)序列。另一個(gè)重要模塊叫做 evaluator,當(dāng)一個(gè)序列給到它時(shí),它會(huì)對(duì)這個(gè)序列做出評(píng)估,reward 分反饋給 actor,actor 就會(huì)根據(jù) reward 的大小來(lái)調(diào)節(jié)生成序列的策略。

基本的思路是如果模型看到了一個(gè)大 reward 分的序列,當(dāng)以后再遇到相似的情況下,模型就會(huì)以更大的概率生成當(dāng)前這個(gè)序列。

reward 有兩個(gè)非常突出的優(yōu)勢(shì):

  • 一是它無(wú)需 label。生成一個(gè)序列后,evaluator 只要能對(duì)當(dāng)前這個(gè)序列做評(píng)估就可以了,至于最優(yōu)序列和其 reward 是什么無(wú)需要知道。
  • 二是它無(wú)需可導(dǎo)。在信息檢索領(lǐng)域,通常用 NDCG 來(lái)評(píng)估推薦的結(jié)果,但訓(xùn)練時(shí)絕大部分工作不會(huì)直接優(yōu)化 NDCG 指標(biāo),一個(gè)重要原因就是 NDCG 不可導(dǎo)沒(méi)有辦法計(jì)算梯度,沒(méi)法做深度模型訓(xùn)練。但 reward 不需要可導(dǎo),從而可以在 reward 里邊非常靈活地加入各種各樣的計(jì)算。比如店鋪打散,結(jié)果序列中店鋪的個(gè)數(shù)就是一個(gè)很好的 reward,雖然它顯然不可導(dǎo)。

三、有機(jī)融入多目標(biāo)的重排模型

在這個(gè)建模范式下的重排模型都可以很優(yōu)雅地融入各種業(yè)務(wù)目標(biāo)。

圖片

基于 V3 版的設(shè)計(jì)如上圖。輸入是一個(gè) user,m 個(gè) candidate item,分別是 C到 Cm,一個(gè) reward function Rw。R是把 w 當(dāng)做參數(shù),進(jìn)行線性求和,求和的項(xiàng)是 w 乘以 utility function U。U 可以是點(diǎn)擊、冷啟內(nèi)容的占比等各種各樣的業(yè)務(wù)目標(biāo),w 是業(yè)務(wù)目標(biāo)的融合權(quán)重。

希望 output 能滿足 argmax R條件,給出 user 以及目前的候選集,在候選集里邊的寶貝拼出來(lái)的任意序列中,挑選 Rw 最大的標(biāo)星序列,記為 Lw*。模型的任務(wù)就是在這個(gè)序列存在的前提下找到 Lw*,如果有多個(gè)那么返回任意一個(gè)都可以。

完成這個(gè)任務(wù)的最基本的思想就是訓(xùn)練一個(gè) actor,當(dāng)給定一個(gè) item candidate 集合的時(shí)候,actor 跑一遍正向運(yùn)算,然后會(huì)給出一個(gè)最優(yōu)序列。充分訓(xùn)練之后,就會(huì)認(rèn)為它生成的這個(gè)序列趨近于 Lw*。

圖片

序列生成器 actor 本身是一個(gè) encoder 加 decoder 結(jié)構(gòu)。給出 input items 和user,會(huì)首先選用一個(gè) DeepSet encoder,拿到整個(gè) context 的 embedding,然后逐個(gè)選取寶貝,選取寶貝的是一個(gè) PointerNet decoder,整個(gè)結(jié)構(gòu)大致上來(lái)說(shuō)跟 v2 版模型是一致的。每選取一個(gè)寶貝 state 就會(huì)立刻更新,attention 值也會(huì)全部更新。正因如此,重排模型的計(jì)算量比較大。

圖片

序列生成器的 encoder 選用的是 DeepSet,也就是用 deep network 去建模一個(gè)set,set 中的元素之間是不存在序的。重排模型只要知道 user 和 candidate item 的相關(guān)信息就夠了,不需要有一個(gè)初始序。因?yàn)樵趶?fù)雜情況下,如果生成了一個(gè)很糟糕的初始序,很有可能傷害重排模型的表現(xiàn),所以最后放棄了給模型一個(gè)初始序,就而是把 user 和 candidate items 直接交給重排模型。

具體的做法是,輸入 user 特征和 item 特征。首先會(huì)做一個(gè) item 的 feature augmentation,這里新加的特征可能是這個(gè) item 的 price 在所有 item candidates 之間的排序;也有可能是它的店鋪在 item candidates 中重復(fù)了幾次,類似于這樣的特征。

之后通過(guò)一個(gè) embedding lookup,把一些 ID 類的特征轉(zhuǎn)換成 item embedding 來(lái)參與數(shù)值計(jì)算。把 user 的embedding 和每個(gè) candidate 的 embedding 進(jìn)行拼接跑幾層 MLP。這些 MLP 是幾層 DNN,每一個(gè)單獨(dú)跑,再把每一個(gè) item embedding sum 起來(lái),再過(guò)幾層 MLP。

圖片

序列生成器中的 decoder 是一個(gè) PointerNet 的 decoder。拿到了 context 的embedding 后,開始逐步選取寶貝。首先把 embedding 當(dāng)做 RNN 的初始 hidden state 喂入 RNN,一開始會(huì)喂入一個(gè)特別的 TOKEN start,然后 RNN 計(jì)算的 output 當(dāng)作 stage。拿到key 之后,會(huì)跟每一個(gè) item 計(jì)算 attention,這邊用的是 local context enhanced attention。

拿到每個(gè)item attention 后,會(huì)做 masking 操作,主要有兩個(gè)原因:一是如果一個(gè)寶貝的前序已經(jīng)被選擇了,就不能被重復(fù)選擇,所以這樣的寶貝的 attention 值會(huì)被 mask 成 0;二是如果業(yè)務(wù)要求把這個(gè)寶貝放在這一位,會(huì)把除了這個(gè)寶貝之外的其它寶貝的 attention 值全部置0,在接下來(lái)的 sample 過(guò)程中就一定會(huì)選擇這個(gè)寶貝。

在訓(xùn)練的時(shí)候一定要有 sample 的過(guò)程,因?yàn)?sample 過(guò)程引入了隨機(jī)性,讓 actor 會(huì)去嘗試不同的序列生成策略,最終能夠找到一個(gè)好的策略。圖中所示的 case 選擇第一個(gè) item ,會(huì)把它喂入 RNN,迅速更新 state 或者 context 信息,然后再去選擇下一個(gè)寶貝。

黃色部分是 local context enhanced attention,除了 item embedding 和 state,還有一個(gè)針對(duì) state 和 item 的 local context。左邊的 Vector 是手搓出的一系列特征,如第一個(gè)特征是目前為止冷啟內(nèi)容的占比是多少,第二個(gè)是當(dāng)前這個(gè) item 在前序有沒(méi)有重復(fù),幫助重排模型做好店鋪打散。整體來(lái)說(shuō),這一系列加工的特征可以幫助模型快速捕捉業(yè)務(wù)意圖。

這里的建模思想是有些變量之間的關(guān)系,只能依靠數(shù)據(jù)模型以及訓(xùn)練去捕捉擬合,但這樣的關(guān)系應(yīng)該限制在那些復(fù)雜且無(wú)法表達(dá)的變量關(guān)系。如果有一些清晰明確的規(guī)則,應(yīng)該盡量清晰表達(dá),而不是靠模型摸索。一是沒(méi)有必要,二是這樣做是低效的,所以添加了一個(gè) local context enhance 的參數(shù)模塊。

圖片

序列評(píng)估器 evaluator 對(duì)模型離線訓(xùn)練時(shí)生成的序列進(jìn)行評(píng)估。比如這一整頁(yè)會(huì)不會(huì)有用戶點(diǎn)擊,點(diǎn)擊概率的預(yù)估只能依靠模型。拿到 user 和 item 之后,會(huì)跟 actor 里邊一樣做特征預(yù)處理,拿到每個(gè) item 的 embedding,concat 起來(lái)作為整個(gè)序列的表征。然后用 5 個(gè) channel 分別去從不同角度提取這個(gè) list 當(dāng)中的特征,包括常見的 multihead attention、RNN 等。之后會(huì)把這些 channel 捕捉的特征結(jié)果 concat 起來(lái),再過(guò) MLP 輸出最后的 prediction,比如用戶會(huì)不會(huì)點(diǎn)擊這一頁(yè)上的任意一個(gè)商品或者點(diǎn)擊數(shù)是多少。其他的 channel 就不詳細(xì)展開了。

圖片

 evaluator 模型用的是標(biāo)準(zhǔn) loss。比如想訓(xùn)練這一頁(yè)推薦結(jié)果用戶會(huì)不會(huì)有點(diǎn)擊這樣一個(gè)點(diǎn)擊率預(yù)估模型,會(huì)用一個(gè) 0,1 的 label,用標(biāo)準(zhǔn)的交叉熵 loss 去訓(xùn)練 evaluator。充分訓(xùn)練 evaluator,然后鎖死,再開始訓(xùn)練 actor。

這邊用到強(qiáng)化學(xué)習(xí)的一些算法。目前用的是 REINFORE based Algorithm,這個(gè) REINFORE 是非常經(jīng)典的一個(gè) RL 算法,在它的基礎(chǔ)上加了一些小而常用的 trick。

訓(xùn)練 Generator 的 loss 有兩部分內(nèi)容,一部分是 reward 相關(guān)的,一部分是模型生成這個(gè) list 的 probability。給定一個(gè) user 和 candidates,generator 會(huì)生成一個(gè)序列,這個(gè)序列喂進(jìn) evaluator ,或者是 reward function,可以拿到一個(gè) reward 的評(píng)估。然后減去 baseline 也就是減去線上真實(shí)曝光的那個(gè) list,因?yàn)殡x線訓(xùn)練的數(shù)據(jù)是通過(guò) log 獲取的,所以線上真實(shí)知道當(dāng)時(shí)的曝光序列是什么,這個(gè)序列也進(jìn)入 reward function 拿到一個(gè) reward 值,對(duì)它們進(jìn)行一個(gè)減的操作,希望生成高于線上或者優(yōu)于線上序列的結(jié)果。

第二部分是乘一個(gè) probability 項(xiàng),給定 user 和 candidates,計(jì)算 generator 生成這個(gè)序列的 probability 。訓(xùn)練的核心思想就是 reward 得分高的序列應(yīng)該有更大的概率被生成。

比如有 4 個(gè) candidate items,生成一個(gè)長(zhǎng)度為 4 的序列。第一步計(jì)算每個(gè) item 的 attention 值,在這一步的時(shí)候,選擇了第一個(gè) item。第二步會(huì)更新 context,計(jì)算剩下三個(gè) item 的 attention 值大小,比如這一步選擇了 0.8 的這一個(gè)。接下來(lái)走到第三步的時(shí)候,就只剩兩個(gè) candidate 了,這一步選擇了 0.4,注意這里是有采樣的一個(gè)動(dòng)作的,所以不一定選到 0.6 的這一個(gè)。到第四步的時(shí)候,就只有一個(gè) item 可選了,則該 item 的 tension 是 1。

在這個(gè)case 里邊,generate 模型生成這個(gè)序列的概率是 0.5*0.8*0.4*1,就把這個(gè)概率值放在這個(gè)位置,模型只要去不停地 minimize 這個(gè)loss,就可以讓高 reward 的序列有高的生成概率。

我們的論文中對(duì)線上的一些業(yè)務(wù)目標(biāo)做了總結(jié),分成了四大類,每一類都介紹了如何將它有機(jī)地融入重排模型,比如說(shuō) reward 或者 utility 應(yīng)該怎樣設(shè)計(jì)。感興趣的同學(xué)可以去看 paper,里面都有比較詳細(xì)的論述。這樣就設(shè)計(jì)好了一個(gè)重排模型,可以有機(jī)的融入多種優(yōu)化目標(biāo)。

接下來(lái)探討如何靈活調(diào)節(jié)多目標(biāo)之間的權(quán)重。

四、基于超網(wǎng)絡(luò)的實(shí)時(shí)可控重排模型

圖片

實(shí)時(shí)可控多目標(biāo)之間的權(quán)重的設(shè)計(jì)動(dòng)機(jī)是:首先有一個(gè) assumption,reward function 是線性加權(quán)求和的形式,把這一部分 term 稱為 utility function。一個(gè) utility function 就是從一個(gè)維度去評(píng)估序列,比如用戶點(diǎn)擊率、多樣性、新鮮度和新穎性等。無(wú)論這邊是需要模型預(yù)估的utility,還是可以手寫出公式的 utility,當(dāng)訓(xùn)練 actor 的時(shí)候,都認(rèn)為 utility 是一個(gè)固定的 function,所以整個(gè) reward function 里面可以變的參數(shù)就只有 w,而這個(gè) w 又表示了對(duì)各個(gè)目標(biāo)之間的一個(gè)傾向。

在傳統(tǒng)的 preference weights 里這是一個(gè)靜態(tài)的模式,w 在模型訓(xùn)練一開始就要指定。如果出于一些原因必須要調(diào)節(jié) w,則必須重新訓(xùn)練整個(gè)模型,就會(huì)非常費(fèi)時(shí)費(fèi)資源。有一系列工作在嘗試幫助如何尋找到最優(yōu) w,也有些工作會(huì)在訓(xùn)練的過(guò)程中不停地去調(diào)節(jié)w,以達(dá)到最好的效果,我們的工作則跳出了這個(gè)框架,整體的思路不是去尋找某一個(gè)最優(yōu)的 w,而是任意給一個(gè) w,都能生成最好的序列,這種形式稱為動(dòng)態(tài)指定 preference weights。

當(dāng)用戶來(lái)到手淘時(shí)需要給他做推薦,在這個(gè)瞬間可以指定一套 w,模型就根據(jù)這套 w 生成最優(yōu)序列。這樣的好處:一是可以實(shí)現(xiàn)快捷的超參調(diào)節(jié),以冷啟占比為例,怎么知道其 w 應(yīng)該寫多大,實(shí)操中往往是上線不斷地嘗試,但如果需要重新訓(xùn)練模型即使是增量數(shù)據(jù)的訓(xùn)練,也可能需要幾個(gè)小時(shí)甚至幾天,而如果有了這種快捷的超參調(diào)節(jié)能力,只要調(diào)一調(diào)w,看一看線上的實(shí)時(shí)監(jiān)控是不是 OK ,如果不 OK 再調(diào)一調(diào),可能幾十分鐘,或者最多半天就可以完成了。

另外這種方式能更快速響應(yīng)流量變化,做到更精準(zhǔn)的流量控制。特別是在大促的時(shí)候,前五分鐘跟后五分鐘的流量都是不一樣的,我們要對(duì)流量的變化快速做出響應(yīng),即使是線上流式訓(xùn)練的模型其實(shí)都做不到這種 0 delay 的實(shí)時(shí)響應(yīng)速度。

第三點(diǎn)也是我們認(rèn)為對(duì)業(yè)務(wù)影響最大的一點(diǎn),就是可能根本不存在一個(gè)最優(yōu)的 w。對(duì)于不同的流量,最優(yōu)的 w 就應(yīng)該是不一樣的。比如對(duì)于新用戶,最重要的是讓用戶了解、喜歡這個(gè)場(chǎng)景,就會(huì)分發(fā)跟用戶相關(guān)性更高的一些內(nèi)容。但對(duì)于成熟用戶,那可能希望更多給他帶來(lái)驚喜性與發(fā)現(xiàn)性,驚喜性與發(fā)現(xiàn)性的 w 就會(huì)調(diào)得更大。

綜上,業(yè)務(wù)上其實(shí)更合理的應(yīng)該是運(yùn)用分人群、分策略的 w 配置,或許還可以做分流量來(lái)源的策略,可以不停地分,做到千流量千策略,傳統(tǒng)模式下,每一次切分,就要訓(xùn)練更多的模型,但在我們新提出的動(dòng)態(tài)方案下,只需要一個(gè)模型。

圖片

目前這項(xiàng)工作發(fā)表在最新的 KDD2023 上,論文名是《Controllable Multi-Objective Re-ranking with Policy Hypernetworks》,整個(gè)技術(shù)方案的要點(diǎn)就是 Hypernet 和 conditional training。

下邊的框里是任意一個(gè)重排模型,上面的框是新加入的 Hypernet 的部分。線上 serving 部分,當(dāng)一個(gè)用戶和他的 candidate item 來(lái)到場(chǎng)景時(shí),可以實(shí)時(shí)指定一個(gè)認(rèn)為正確的 w,交給 Hypernetwork,它會(huì)生成一組參數(shù)交給重排模型。藍(lán)色加黃色,是重排模型的參數(shù),分為兩部分,一部分是 θw,是對(duì) w 敏感的參數(shù),比如重排模型 DNN 最后幾層的 w 和 b,也就是最后幾層的權(quán)重和 bias,是對(duì) w 敏感的。而模型大多數(shù)的參數(shù),認(rèn)為是對(duì) w 不敏感的。比如每個(gè) item 的 embedding 表征對(duì) w 應(yīng)該是不敏感的。當(dāng)線上 Hypernet 生成 θw 時(shí),重排模型就可以用完整的 θ 去生成一個(gè)序列,因?yàn)檫@部分 θw 是跟著 w 走的,所以也認(rèn)為生成的序列就是最接近 Lw* 的那個(gè)結(jié)果。這個(gè)是 Serving 時(shí),網(wǎng)絡(luò)正向計(jì)算的過(guò)程。

當(dāng)一個(gè)訓(xùn)練的 sample 進(jìn)來(lái)時(shí),這里的一個(gè) trick 會(huì)隨機(jī)采樣一個(gè) w,采樣的范圍就是事先指定的一個(gè) distribution,這里需要一些先驗(yàn)知識(shí)來(lái)指定 w 的采樣分布,為每一個(gè) sample 或者每一個(gè)訓(xùn)練 batch 指定一個(gè) w。走正向運(yùn)算,當(dāng)重排模型生成一個(gè)序列時(shí),需要將它交付給 Evaluator 做評(píng)估。Evaluator 也會(huì)根據(jù)采樣出來(lái)的這個(gè) w 對(duì)序列做出評(píng)估,這個(gè) reward 可以轉(zhuǎn)化成一個(gè) gradient,這個(gè) gradient 就會(huì)流到 Hypernet 來(lái) update 它的參數(shù),同時(shí)也可以流到重排模型里面去 update 那些對(duì) w 不敏感的參數(shù)。

Conditional training,借鑒了 Conditional GAN 中的一個(gè)技術(shù),用到了重排模型的設(shè)計(jì)當(dāng)中。

圖片

上圖展示了線上的結(jié)果。左邊的實(shí)驗(yàn)是訓(xùn)練好的一個(gè)實(shí)時(shí)可調(diào)控的重排模型,線上也隨機(jī)采樣 w 做投放。比如第一張圖中,橫軸是點(diǎn)擊的 utility 的權(quán)重,而縱軸是線上真實(shí)回收出來(lái)的樣本的點(diǎn)擊平均值。例如圖(a)中,橫軸上是 0.5,這個(gè)點(diǎn)是把線上投放時(shí)候點(diǎn)擊的權(quán)重是 0.5 的那些 case 收集起來(lái),統(tǒng)計(jì)他們線上真實(shí)的點(diǎn)擊率是多少,逐一畫出這些點(diǎn)來(lái),就得到了藍(lán)色的折線。橙色的直線是一次擬合。可以看到,當(dāng)點(diǎn)擊的 utility 權(quán)重增大的時(shí)候,整體的點(diǎn)擊率或者說(shuō)點(diǎn)擊數(shù)量也有著明顯上升的趨勢(shì),說(shuō)明重排模型確實(shí)能夠依據(jù)給定的 w 生成不一樣的序列。

基于相同的思路,圖(b)展示的是冷啟內(nèi)容的占比,圖(c)是店鋪的多樣性,圖(d)是組間排序的 utility,表示來(lái)自不同 group 的內(nèi)容,大致要按照 group 的優(yōu)先級(jí)排序。這四幅圖說(shuō)明重排模型確實(shí)調(diào)得動(dòng)。右邊是 online AB test 的結(jié)果,baseline 方案就是一開始提到的 pipeline 模式,實(shí)驗(yàn)方案是實(shí)時(shí)可控的重排模型,用線上超參調(diào)節(jié),調(diào)到一個(gè)比較好的位置??梢钥吹皆谟脩酎c(diǎn)擊、用戶看到的商家數(shù)量、冷啟占比、組間的排序、停留時(shí)長(zhǎng)以及用戶看的內(nèi)容的數(shù)量等方面都有著不同程度的提升。

五、結(jié)語(yǔ)

圖片

圖片

相關(guān)工作是由阿里巴巴以及人民大學(xué)合作完成的。我們來(lái)自大淘寶技術(shù)私域用戶算法團(tuán)隊(duì),負(fù)責(zé)手機(jī)淘寶商家私域產(chǎn)品,包括店鋪詳情關(guān)注的相關(guān)算法。通過(guò)對(duì)海量數(shù)據(jù)的分析與學(xué)習(xí),幫助億萬(wàn)用戶在商家私域高效地買和逛,輔助千萬(wàn)商家運(yùn)營(yíng)好用戶。同時(shí)我們也是一支注重創(chuàng)新、樂(lè)于分享的團(tuán)隊(duì),不少成果已經(jīng)整理發(fā)表在了 AAAI、SIGIR、WWW、KDD 等國(guó)際頂會(huì)上,這里有海量的數(shù)據(jù)、充足的計(jì)算資源以及豐富的應(yīng)用場(chǎng)景等著你來(lái)挑戰(zhàn)。想進(jìn)一步了解可以發(fā)送郵件到這個(gè)地址或者微信掃二維碼。

六、問(wèn)答環(huán)節(jié)

Q1:線上每個(gè)用戶個(gè)性化的權(quán)重是怎么得到的?

A1:雖然從技術(shù)上來(lái)講可以支持每個(gè)用戶,甚至是每個(gè)用戶每次訪問(wèn)的權(quán)重都可以是不一樣的。但是線上會(huì)把這個(gè)粒度打到人群,就像我剛才說(shuō)的新人和老用戶是不太一樣的,是做到人群層級(jí)的。至于每個(gè)人群是怎么設(shè)置,這個(gè)主要取決于一些偏業(yè)務(wù)的要求,比如說(shuō)需要多少的創(chuàng)新性和相關(guān)性,這個(gè)是業(yè)務(wù)上定的。而一些比如說(shuō)冷啟的占比是通過(guò)算法確定的。

Q2:線上 serving 不同,不同流量權(quán)重不同,那離線訓(xùn)練的時(shí)候權(quán)重也不同嗎?

A2:線上 serving 權(quán)重不同,離線訓(xùn)練時(shí)的權(quán)重也不同。一個(gè)重排模型在線上能為一個(gè)權(quán)重生成好的序列,一定是因?yàn)樗陔x線訓(xùn)練的時(shí)候就已經(jīng)見過(guò)這套權(quán)重或者相似的權(quán)重了。所以在離線訓(xùn)練的時(shí)候,對(duì)于每一個(gè) training 的 sample 或者每一個(gè) training 的 batch,都是采樣一個(gè) w 做訓(xùn)練的,因?yàn)椴恢谰€上真實(shí)會(huì)遇到什么樣的 w,進(jìn)行采樣。

Q3:w 選取是什么分布?

A3:這個(gè)確實(shí)是被問(wèn)到比較多的一個(gè)問(wèn)題。首先會(huì)有一些業(yè)務(wù)的輸入,就是專家的先驗(yàn)知識(shí),如果這個(gè)不 ok 再進(jìn)行手調(diào),比如說(shuō)冷啟的這個(gè)權(quán)重基本上就是手調(diào)的。但在論文中,為了驗(yàn)證這個(gè)算法是一個(gè)更加 general,不需要過(guò)多先驗(yàn)知識(shí)的方案,把 w 的分布設(shè)置為從 0 到 1 的一個(gè)均勻分布,然后線上也是在這個(gè)范圍之內(nèi)做調(diào)節(jié)的。

Q4:重排用這么復(fù)雜的模型為什么不在精排做?

A4:因?yàn)樽霾涣?,各個(gè)模塊從左到右計(jì)算變得越來(lái)越復(fù)雜,重排的計(jì)算復(fù)雜度一般是 m 乘以n,m 是輸入的 item 數(shù)量, n 是需要返回的 item 數(shù)量,就是序列的長(zhǎng)度,它的計(jì)算度是 m 乘以 n。通常來(lái)說(shuō),重排模型的輸入可能是 50,返回的序列可能是 10。但是精排模型的打分量級(jí)是千級(jí),是 1000。如果說(shuō)像重排這樣建模,它的復(fù)雜度就會(huì)變成 1000 乘以100,這個(gè)在線上是扛不住的。

Q5:打散規(guī)則和冷啟策略如何得到保證,然后有概率出現(xiàn)相同的店鋪嗎?

A5:這是個(gè)好問(wèn)題,其實(shí)業(yè)務(wù)需求里邊有些是硬規(guī)則,有些是軟規(guī)則。比如說(shuō)有的時(shí)候某個(gè) item 必須放在第一位,就是置頂?shù)男枨笫菑?qiáng)需求,一定要百分百保證實(shí)現(xiàn)的,用戶可能在其他的地方點(diǎn)了一個(gè)寶貝,一般會(huì)把這個(gè)寶貝稱為一個(gè) trigger,這個(gè) trigger 寶貝一定要做到所見即所得,它一定得是放在序列第一個(gè)的,所以是一個(gè)強(qiáng)規(guī)則,百分百得保證。但這個(gè)事情通過(guò)在 reward 里邊加 utility 是無(wú)法實(shí)現(xiàn)的,而通過(guò)使用 masking 可以實(shí)現(xiàn),如果需要將某個(gè) item 置頂,那會(huì)把其他所有的 item 的 attention 值置成 0,這樣選擇的結(jié)果一定是第一個(gè) item,這是能百分百保證的。

但是其他的像是店鋪打散、冷啟這些是軟規(guī)則,只要大概率實(shí)現(xiàn)就 OK 了。如果用戶當(dāng)前真的非常喜歡耐克,他就是想去買球鞋,那我給它連續(xù)出兩個(gè)耐克的 case 是可以接受的,沒(méi)有什么大問(wèn)題。打散規(guī)則也是一個(gè)軟規(guī)則,絕大概率說(shuō)是可以打散的。其實(shí)線上方案里重排模型后邊還有一系列的硬性用戶體驗(yàn)規(guī)則限制,如果不滿足這些用戶體驗(yàn)規(guī)則,重排模型輸出的結(jié)果就會(huì)被放棄。如果碰巧生成了一個(gè)對(duì)這個(gè)規(guī)則來(lái)說(shuō)特別糟糕的序列,比如說(shuō)連續(xù)四個(gè)店鋪都粘在一起,那這個(gè)結(jié)果會(huì)被后續(xù)的體驗(yàn)規(guī)則卡住,然后這個(gè)結(jié)果也會(huì)被棄置,會(huì)用備選的 baseline 方案。

用戶對(duì)于冷啟策略感知并不強(qiáng)烈,所以冷啟沒(méi)有后續(xù)的強(qiáng)制規(guī)則。通過(guò)調(diào)節(jié)權(quán)重,看冷啟任務(wù)完成度的指標(biāo)調(diào)控。當(dāng)然冷啟本身就有閉環(huán)調(diào)控,當(dāng)前狀態(tài)冷啟的占比是有一個(gè)實(shí)時(shí)反饋鏈路的。冷啟的信號(hào)是有一個(gè) PID 閉環(huán)控制信號(hào),即使權(quán)重一樣,閉環(huán)調(diào)控的 PID 信號(hào)也有強(qiáng)有弱,如果冷啟發(fā)得不夠多,PID 控制信號(hào)就會(huì)變得更強(qiáng)。重排的 w 以及閉環(huán)調(diào)控的 PID 信號(hào),兩個(gè)一起來(lái)保證冷啟完成度。

Q6:重排整體耗時(shí),P99 指標(biāo)大概多少?線上特征數(shù)量級(jí)以及線上處理耗時(shí)大概多少?

A6:大致是 20 多一點(diǎn),應(yīng)該不到 25 毫秒?;诰拍P痛蚍?,重排模型不需要使用太多特征就可以實(shí)現(xiàn)不錯(cuò)的表現(xiàn),所以目前特征使用得不多,這是耗時(shí)低的一個(gè)重要原因。

Q7:淘寶 feed 里不僅僅有商品,還有直播,這套框架如何考慮到題材一致性的?

A7:這個(gè)其實(shí)是整套設(shè)計(jì)最精髓的地方之一。我的答案就是我不考慮。因?yàn)楹茈y總結(jié)出來(lái)視頻下邊應(yīng)該放一個(gè)寶貝,還是視頻下邊應(yīng)該放一個(gè)直播?因?yàn)檎娴貌恢?,所以?yīng)該去避免主動(dòng)確認(rèn)這個(gè)問(wèn)題。把這些個(gè)視頻、直播、寶貝全部都給重排模型,然后重排模型就去看,可能今天這樣拼,明天這樣拼,但是他會(huì)不停地 get 到用戶的反饋。比如今天這樣拼用戶點(diǎn)得更多,那就嘗試?yán)^續(xù)這樣拼,如果大家不買賬,那以后就避免這樣拼,這個(gè)事情是靠 Generator,靠 RL 算法自己去探索出來(lái)的。

Q8:不同物料的特征怎么統(tǒng)一?例如直播物料和商品物料的特征差異會(huì)比較大,怎么做比較統(tǒng)一的特征?

A8:我認(rèn)為這也是重排模型來(lái)做混排的一個(gè)優(yōu)勢(shì),不需要統(tǒng)一物料特征。作為一個(gè)特征來(lái)講,如果這個(gè)特征真實(shí)包含了豐富的信息量,且是穩(wěn)定的,就是好特征。比如說(shuō)視頻內(nèi)容返回了特征 ABC,然后寶貝內(nèi)容返回的特征叫做 d、e、f,可以用統(tǒng)一表征,比如說(shuō)特征最后變成每一個(gè) feed 都用 ABCDE 去表征,只不過(guò)會(huì)有一半是 0,只要把這個(gè)拼起來(lái)的特征直接喂給重排模型即可。至于兩組特征怎么去做統(tǒng)一或者對(duì)齊,交給重排模型,交給大數(shù)據(jù),交給訓(xùn)練就 OK 了,不需要擔(dān)心的。

Q9:重排使用精排模型的分?jǐn)?shù),后續(xù)精排模型迭代的問(wèn)題怎么解決?

A9:精排模型非常重,可能一個(gè)精排模型不經(jīng)過(guò)壓縮就大幾百 g 了,這種規(guī)模的模型很難做一些類似于采樣、loss 設(shè)計(jì)等操作。所以精排模型的定位就是把核心的預(yù)估做準(zhǔn),預(yù)估的點(diǎn)擊率的分布應(yīng)該跟真實(shí)的點(diǎn)擊率非??拷?。精排稍稍調(diào)整一些模型結(jié)構(gòu),預(yù)估的 CTR 值的分布應(yīng)該是不會(huì)大變的。在這種情況下,前后耦合的問(wèn)題沒(méi)有那么強(qiáng)。

當(dāng)前序模型有比較重大的改變,比如說(shuō)從點(diǎn)擊率的預(yù)估變成了點(diǎn)擊數(shù)的預(yù)估,后續(xù)的重排模型是沒(méi)法直接應(yīng)用的。而精排模型可以額外預(yù)估點(diǎn)擊數(shù),但點(diǎn)擊率還是要傳到下游模型。有時(shí)精排如果做采樣策略的一些調(diào)整,預(yù)估的點(diǎn)擊率有可能發(fā)生明顯的改變,比如原來(lái)不做負(fù)采樣,現(xiàn)在隨機(jī)拋棄一半的負(fù)樣本,這種情況下會(huì)讓點(diǎn)擊率明顯比原來(lái)增加一倍。為了解決這個(gè)問(wèn)題業(yè)界經(jīng)常用的一個(gè)辦法是做校準(zhǔn),通過(guò)一系列的操作,把預(yù)估的點(diǎn)擊率錨定到真實(shí)點(diǎn)擊率含義上的那個(gè)物理值去,保證這個(gè)預(yù)估值到達(dá)重排模型的時(shí)候是穩(wěn)定的。

Q10:重排要生成的序列長(zhǎng)度大于最后的曝光序列,那目前序列中評(píng)估器序列長(zhǎng)度是最后的透出序列長(zhǎng)度嗎?輸入的是精排排序長(zhǎng)度是多少?沒(méi)有透出的商品在生成器 reward 是什么?

A10:C 端用戶的體感是一個(gè)無(wú)限下翻的信息流,但實(shí)際從技術(shù)側(cè)來(lái)看推薦是分頁(yè)走的。比如說(shuō) 10 個(gè)內(nèi)容會(huì)先推一頁(yè),用戶差不多把 10 個(gè)內(nèi)容看完,再推薦下一頁(yè)。所以至少目前的方案里邊,評(píng)估器輸入的序列長(zhǎng)度就是 10,這個(gè)是跟著每一頁(yè)的長(zhǎng)度走的。

重排模型的 page size 是 10,重排序列生成的序列長(zhǎng)度也是 10。目前訓(xùn)練中評(píng)估用評(píng)估器訓(xùn)練長(zhǎng)度是最后透出序列的長(zhǎng)度。重排模型輸入的序列長(zhǎng)度一般是幾十,最多就上百這個(gè)量級(jí)。

沒(méi)有在線上真實(shí)透出的商品,也會(huì)埋下來(lái)再放在那個(gè) candidate set 里邊,交給重排模型,重排模型是有可能選出原來(lái)沒(méi)有透出的內(nèi)容的。也正是因?yàn)闀?huì)透出原來(lái)線上沒(méi)有真實(shí)透出的寶貝,一旦出現(xiàn)了這種場(chǎng)面,除了用 Evaluator 之外,沒(méi)有其他的手段去判斷這個(gè)序列用戶會(huì)不會(huì)點(diǎn)擊,或者有幾次點(diǎn)擊,這個(gè)是沒(méi)有辦法的。極端情況下可能透出 10 個(gè)寶貝,線上沒(méi)有一個(gè)展現(xiàn),那這個(gè)序列用戶到底會(huì)不會(huì)點(diǎn)擊,log 下來(lái)的數(shù)據(jù)是不會(huì)有這個(gè)信息的,只能用 Evaluator 做評(píng)估。

Q11:請(qǐng)問(wèn)論文中有沒(méi)有 RL 訓(xùn)練不穩(wěn)定問(wèn)題?

A11:RL 就是不穩(wěn)定,數(shù)據(jù)不變,模型不變,隨機(jī)種子不一樣,可能這一次行,下一次不行,這也是 RL 難訓(xùn)練的一個(gè)體現(xiàn)。如何能讓模型訓(xùn)練得更穩(wěn)定,是一個(gè)值得研究的問(wèn)題,目前用一個(gè)簡(jiǎn)單粗暴的辦法,這次垮掉了,那再試一次,多次嘗試后通??梢垣@得較好的效果。它只要效果相差不大,上線之前會(huì)有檢測(cè),如果垮掉了,那再試一次。模型目前是用精排的特征,所以整個(gè)模型不大,幾個(gè)鐘頭就訓(xùn)練完了。

Q12:線上推理時(shí) Generator 一次產(chǎn)生多少個(gè)序列,然后進(jìn)行打分的。

A12:其實(shí)現(xiàn)在 generate 線上和訓(xùn)練的時(shí)候,是兩種工作狀態(tài),線下訓(xùn)練是采樣,推到線上后它會(huì)切換成貪婪形式,就是說(shuō)線上一定會(huì)在這一步選擇 attention 值最大的 item,所以它只需要輸出一條序列。

后續(xù)在其他同學(xué)的工作下,上線了多序列重排模型,線上也可以開啟采樣,Evaluator 也推上線了,Generator 通過(guò)采樣生成多條序列,然后 Evaluator 再?gòu)闹羞x優(yōu),透出最優(yōu)的一條序列?,F(xiàn)在線上全量推的是這個(gè)方案,不單是 generate 的輸出結(jié)果,也嘗試用其他手搓的序列,一起丟給 evaluator,從中選最優(yōu)。

Q13:重排模型的離線指標(biāo)看什么?

A13:實(shí)操當(dāng)中離線模型的指標(biāo)看的是獲取到的 evaluator 的 reward,還有一個(gè)指標(biāo)是 better percentage。Better percentage 是同樣的情況下生成的重排序列,從 reward 上來(lái)講優(yōu)于線上真實(shí)投放序列的概率?;旧险J(rèn)為這個(gè)數(shù)值應(yīng)該至少得高于 50%。

Q14:入選重排候選內(nèi)容池 50 條是如何選擇的?完全按照精排分嗎?還是會(huì)考慮一些其他業(yè)務(wù)需求,比如保量?jī)?nèi)容進(jìn)入 50 條重排候選池。

A14:存在一些特別的 case,比如說(shuō)用戶關(guān)注東西實(shí)在太少了,也會(huì)給他做全網(wǎng)推薦的內(nèi)容。當(dāng)時(shí)在全網(wǎng)推薦遇到過(guò)一個(gè) case,推薦返回了 200 個(gè)寶貝??烤拍P头纸厝〉?200 個(gè) feed,有 197 個(gè)都是同一種類型的feed,這個(gè)事情就很尷尬了。比如說(shuō)業(yè)務(wù)規(guī)則要求一頁(yè)里邊最多只能出一個(gè)買家秀,如果有這樣的業(yè)務(wù)規(guī)則那 200 個(gè)返回的結(jié)果就大面積是廢的,所以一定要在返回之前先看 CTR,然后也要做 feed 內(nèi)容類型的打散和商家的打散,這些操作一定程度來(lái)說(shuō)是必要的。

責(zé)任編輯:姜華 來(lái)源: DataFunTalk
相關(guān)推薦

2022-01-12 14:40:49

推薦系統(tǒng)模型

2024-08-20 08:34:17

2023-04-11 07:28:39

2023-04-26 07:56:45

大模型機(jī)器學(xué)習(xí)

2025-04-27 01:22:00

Visual開發(fā)

2022-08-31 10:04:28

模型算法

2012-12-07 13:16:30

淘寶技術(shù)

2022-05-11 11:25:49

模型方案

2022-10-14 08:03:46

圖形數(shù)據(jù)庫(kù)系統(tǒng)

2024-06-04 08:30:32

2025-02-11 08:20:00

DeepseekAIOPS人工智能

2025-03-12 04:25:00

Linux系統(tǒng)優(yōu)化應(yīng)用

2012-11-14 10:51:28

淘寶技術(shù)

2010-10-13 09:17:22

Duplicity備份

2023-12-01 08:28:29

推薦系統(tǒng)跨域多目標(biāo)建模

2023-07-28 08:08:09

大淘寶數(shù)據(jù)模型數(shù)據(jù)治理

2020-12-31 08:30:00

推薦系統(tǒng)MatRec計(jì)算機(jī)

2013-08-12 15:23:02

2023-01-12 13:03:00

數(shù)據(jù)開源

2022-08-19 10:27:39

系統(tǒng)模型
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)