無需等待:電商領(lǐng)域重排模型在線學(xué)習(xí)可以先于用戶反饋
在當(dāng)前典型工業(yè)應(yīng)用推薦系統(tǒng) pipeline 中,重排作為最后一個環(huán)節(jié),決定最終的推薦結(jié)果,因此需要綜合考慮多樣的業(yè)務(wù)需求以及復(fù)雜物料的融合。經(jīng)典的在線學(xué)習(xí)依賴用戶反饋,在電商場景,用戶完成一次購買決策通常需要幾小時甚至幾天,這無法避免地限制著在線學(xué)習(xí)的實(shí)時性。本文將介紹一種新型的用于重排的在線學(xué)習(xí)方法,該方法不強(qiáng)依賴用戶反饋,能夠確保模型的實(shí)時性。該方法由阿里巴巴與中國人民大學(xué)共同提出。
一、Background:實(shí)時在線學(xué)習(xí)&重排模型基本概念
首先介紹一些實(shí)時在線學(xué)習(xí)和重排模型相關(guān)的基本概念。
1. 實(shí)時在線學(xué)習(xí)
一般的推薦系統(tǒng)或者機(jī)器學(xué)習(xí)的應(yīng)用系統(tǒng),會有天級或者周級的離線訓(xùn)練,訓(xùn)練結(jié)束后將模型推上線做線上 serving。實(shí)時在線學(xué)習(xí)指的是,在模型上線后,基于新產(chǎn)生的有效的 sample,實(shí)時更新模型的學(xué)習(xí)過程。主要目的是讓模型能夠更加快速地捕獲數(shù)據(jù)分布之間的變化,進(jìn)而做出更優(yōu)質(zhì)的推薦。
在電商推薦場景,實(shí)時在線學(xué)習(xí)的意義在于,電商推薦場景的數(shù)據(jù)分布存在顯著周期性變化,或受突發(fā)事件影響而發(fā)生突變,同時直播電商的興起也讓數(shù)據(jù)分布更加動態(tài)。實(shí)時在線學(xué)習(xí)的解決方案就是不停使用最新的樣本訓(xùn)練模型,以便模型快速適應(yīng)數(shù)據(jù)分布的變化。
實(shí)時在線學(xué)習(xí)會面臨三大挑戰(zhàn):
- 實(shí)時在線學(xué)習(xí)依賴于用戶反饋數(shù)據(jù)的實(shí)時性。比如在電商領(lǐng)域,用戶可能需要幾個小時至幾天才能完成一個購買決策,我們的模型也就不可避免地需要等待幾個小時甚至幾天。
- 實(shí)時在線學(xué)習(xí)還需要額外的工程支持。舉例來說,一個線上系統(tǒng)至少需要有實(shí)時的數(shù)據(jù)流支持,才有可能做到實(shí)時在線學(xué)習(xí)。
- 實(shí)時在線學(xué)習(xí)模型的穩(wěn)定性也受到了更大挑戰(zhàn)。
2. 重排模型
重排的概念是由莊濤在 2018 年提出的,圖示是一個非常經(jīng)典的工業(yè)級的推薦系統(tǒng)的 pipeline。大致會分為召回、粗排、精排以及重排 4 個步驟。從左到右是一個時間序,每個環(huán)節(jié)的打分量從大到小。召回處理億級的數(shù)據(jù),粗排萬級,精排千級,重排一般是百級甚至不滿百級。同時,從左到右打分精準(zhǔn)度不斷提升。
重排相對前序的模型來說,會顯式建模寶貝之間的相互影響,即 context information。例如一瓶飲料以上圖中的方式呈現(xiàn)給用戶,那么中間那瓶飲料的點(diǎn)擊率就會有所提升,因?yàn)槠涑叽绾皖伾济黠@區(qū)別于旁邊的兩瓶飲料,這就說明 context 會影響用戶行為。
重排的建模主要分為兩個流派。一是單點(diǎn)打分,即利用 context 信息給候選物品打更加精準(zhǔn)的排序分,再按照從高到低的順序排列,形成最后的推薦序列。二是序列生成,是模型直接輸出 candidates 序列,不存在 rank score 的概念。
重排的復(fù)雜性主要體現(xiàn)在 context 中包含著的巨大可能性。比如,手淘猜你喜歡和關(guān)注信息流,一方面是混合著各種物料(比如說直播、視頻、圖文、寶貝)的復(fù)雜信息流。另一方面,在這樣的場景中,除了需要提高點(diǎn)擊,提高停留時長這些指標(biāo)之外,還有很多的實(shí)際的業(yè)務(wù)目標(biāo)要去完成,比如說打散、流控等等。在我們以前的工作中,已經(jīng)介紹了如何將兩者有機(jī)融合進(jìn)重排模型中。這部分可以參看 paper(https://arxiv.org/abs/2306.05118) 和去年在 DataFun 的公開課(全名“融合復(fù)雜目標(biāo)且支持實(shí)時調(diào)控的重排模型在淘寶流式推薦場景的應(yīng)用”)。
二、Formal Introduction:重排的定義&解決方案
1. 重排學(xué)習(xí)問題定義
重排位于整個推薦系統(tǒng) pipeline 的最末端。上圖中以一個三排二的 case 解釋了重排問題的定義:當(dāng)前有三個寶貝候選來到了重排階段,要求輸出的序列長度為 2,三排二共可能有 6 種序列,這 6 種序列分別對應(yīng)了用戶/平臺/商家的反饋(用笑臉表示)。
為了后文理解方便,我們在三排二的 case 上聚焦于用戶反饋單一指標(biāo)。
在這樣的情況下,重排的問題就可以由一個 arg max reward 公式定義(如上圖中所示),尋找最優(yōu)序列。這個序列給到用戶后可以拿到更好的 feedback。Reward function 會同時考慮商家和平臺的訴求,在這里簡化為 feedback 越多 reward 越大。在這一例子中,重排的目標(biāo)就是尋找 L3。
注-數(shù)學(xué) notation: ①序列=L;②用戶反饋=y
2. 解決方案
在完成問題定義后,我們逐一破解 3 個落地時遇到的實(shí)際問題。
問題 1:線上預(yù)估時,需要考慮到 response time 的限制。
解決方案 1:我們使用 one shot solution,調(diào)用序列生成模型 generator。這意味著在給定一個 u 和 c 的情況下,通過調(diào)用 generator,就直接輸出 arg max reward 的結(jié)果,從而節(jié)省 response time。
問題 2:實(shí)際拿到的用戶反饋只有一個序列的反饋結(jié)果(紅色笑臉標(biāo)),雖然這條序列大概率來說是一條不錯的序列,但也大概率不是最優(yōu)的那條序列。
解決方案 2:解法來自新角色的引入,也就是 evaluator 評估器。評估器會給其他可能的序列預(yù)測用戶 feedback(藍(lán)色笑臉標(biāo))。Evaluator 的有效性已經(jīng)得到驗(yàn)證,具體的建模思路和評估參見去年的 paper 和 DataFun 大會分享。(同上)
在有了 evaluator 后,我們的訓(xùn)練過程就轉(zhuǎn)化為了通過調(diào)整 θ(Generator 的參數(shù))來實(shí)現(xiàn)在給定 u 和 c 的情況下,拿到 evaluator 最大化分?jǐn)?shù)。
問題 3:真實(shí)線上環(huán)境無法用剛剛展示的窮舉法,原因在于真實(shí)環(huán)境比三排二可能性多得多,候選序列組合基本是百萬~億級別的。
解決方案 3:流程是用 Actor/Generator 生成序列,用 Evaluator/Simulator 評估序列。如果評估出來 reward 大,那么 Actor/Generator 就調(diào)大生成當(dāng)前序列的概率;如果 reward 小,那么 Actor/Generator 就降低生成當(dāng)前訓(xùn)練的概率。
基本邏輯是預(yù)先訓(xùn)練 Evaluator/Simulator 模型。值得一提的是,在給定了 evaluation 之后,actor 的訓(xùn)練是無需直接的用戶反饋的。所以在線上不需要等待用戶的 feedback,就可以訓(xùn)練更新 actor。
三、New Proposal:Learning at Serving Time (簡稱 LAST)
1. 基礎(chǔ)架構(gòu)
經(jīng)典的在線學(xué)習(xí)的過程(左邊)是在初始模型 deployed model θ 的基礎(chǔ)上等待第一批帶著用戶反饋的樣本 Sample 1 with feedback 準(zhǔn)備好后,學(xué)習(xí)并更新模型至 deployed model θ1,但在等待樣本的過程中已經(jīng)等了用戶的購買決策的幾個小時。以此類推模型逐步更新至 θ2 。
而 LAST 學(xué)習(xí)的特點(diǎn)在于,在線上模型還是 θ2 的情況下,當(dāng)收到線上新請求 request 1 w/o feedback 的這一瞬間,我們會嘗試從 θ2 的基礎(chǔ)上去尋找一個偏移量 Δθ1,從而嘗試優(yōu)化對 request 1 的推薦結(jié)果。而這個對于當(dāng)次請求優(yōu)化的偏移量 Δθ1 僅僅只是針對當(dāng)次請求,在模型吐出結(jié)果后就被丟棄,不會回流到 deployed model 中。以上推理需要模型更新在 serving 的一瞬間完成,也就是 learning at serving time。
2. LAST 核心邏輯
接下來講解 LAST 中的核心,新請求來時需要更新的 Δθ 是如何來的?
Δθ 同一來源于最優(yōu)化問題(第三行)。在拿到 U0 和 C0 之后,我們會嘗試尋找一個 Δθ 使得 evaluate 分?jǐn)?shù)增大。跟 θ 優(yōu)化的核心區(qū)別是在于優(yōu)化針對的范圍的不同,θ 是對任意可行的 U 和 C 都希望拿到最優(yōu)的結(jié)果,為全局最優(yōu)化;而 Δθ 只為當(dāng)前請求的 U0 和 C0 去計算最優(yōu)結(jié)果,只為這一次請求最優(yōu)化。
3. LAST 方案對比傳統(tǒng)學(xué)習(xí)的亮點(diǎn)
- LAST 更新無需等待用戶反饋,在請求到達(dá)的一瞬間就可以更新模型。
- LAST 的優(yōu)化針對的是當(dāng)前請求的預(yù)估效果,源自于模型針對每一次請求時,模型都可以有針對當(dāng)前請求局部的優(yōu)化。
- LAST 定制程度高,有望實(shí)現(xiàn)千人千模,源自于 LAST 的優(yōu)化在全局最優(yōu)基礎(chǔ)上再加于局部最優(yōu)。
- LAST 不會影響已上線的模型,可以作為可插拔的插件使用,源自于 LAST 的 Δθ 是及拋的優(yōu)化。
- LAST 不依賴線上工程支持。
4. LAST 算法
LAST 設(shè)計了兩個版本,第一個是串行的版本,在給定一個 u 和 C 的情況下,首先調(diào)用 generator 打出一條序列,然后 evaluator 評估序列,再基于評估結(jié)果調(diào)高/低當(dāng)前序列生成的概率,重新嘗試打一個新的序列,然后再訪問 evaluator 評估結(jié)果,循環(huán)往復(fù)。但串行版本的問題還是反饋時間。在此基礎(chǔ)上,我們提出了并行的版本。并行版本從 gradient exploration 模塊出發(fā),它會輸出各種的 Δθ 的可能性,來自于調(diào)大/小當(dāng)前序列生成的概率,配合各種步長生成。然后 generator 在嘗試各種的可能性之后,產(chǎn)生各種的序列,每個序列去訪問 evaluator,最終我們從當(dāng)中選 evaluator 分?jǐn)?shù)最高的那一個 item 序列透出。
5. LAST 實(shí)驗(yàn)結(jié)果
考慮到經(jīng)典模型非 Evaluator-based 的對比公平性,第一個離線評估中用 NDCG,明顯看到最下方的兩個 generator-evaluator 的多序列方法效果最好,其中 LAST 最優(yōu)。
考慮到 NDCG 受頭部效應(yīng)的影響不夠接近于真實(shí)的預(yù)估水平評估,第二個離線評估中用 evaluator 去對比各個模型,還是能明顯看到 LAST 最優(yōu),對比最強(qiáng)的 baseline 有 1 個多點(diǎn)的提升。
實(shí)際線上實(shí)驗(yàn)在淘寶關(guān)注信息流場景。實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)是能在點(diǎn)擊數(shù)不變的情況下,帶來兩個點(diǎn)級別的成交筆數(shù)的提升。