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