成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淘寶推薦場景的利器:融合復雜目標且支持實時調控的重排模型

人工智能 算法
本文主題為融合復雜目標且支持實時調控的重排模型在淘寶流式推薦場景的應用,其中第一個關鍵詞是重排模型,有兩個定語,一是支持復雜的目標,二是目標之間的權重可以實時調節,今天主要討論這樣的重排模型在手淘信息流式場景的應用。

一、信息流場景面臨的挑戰與重排模型的獨特優勢

對于重排很多同學可能感到陌生,下圖是工業界中推薦系統一個常見的 pipeline。當用戶來到手淘時,會從億級的候選池中先召回萬級的寶貝,然后把萬級的寶貝交給粗排模型打分之后再從中精選出千級的寶貝給精排模型,然后精排模型會交付幾十上百的寶貝到重排模型進一步打分。

圖片

從打分量和效率角度來講,前序的模塊打分量非常大,對其效率要求也非常高。依次往后打分量減少,效率也會慢慢降低,這里的效率指的是單個寶貝打分所需要消耗的計算量。正是因為消耗了更多計算量,后續模型的打分精準度也會變高。

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

圖片

比如把上圖的寶貝在手淘上展示給用戶時,由于中間的寶貝跟周邊的寶貝在顏色、大小上有著顯著差別,用戶就會以更高的概率去點擊這個寶貝,這就是非常經典的context information 的應用。

下圖是目前復雜信息流場景所面對的挑戰,以及重排的獨特優勢。

圖片

右邊兩張截圖是手機淘寶,在推薦按鈕位置稍微往下滑,就可以看到【猜你喜歡】的業務,它的產品形態是一個雙列流。所謂流就是用戶可以不停地下滑,隨著流的下滑可以接收到更多信息,這種產品形態稱為信息流。之所以稱它復雜,是因為它里邊有直播、商品、圖文、視頻,還會間或的有一些用研相關的內容。在推薦旁邊有一個關注按鈕,這個流里邊展示的是用戶在手淘關注的店鋪或者達人相關的內容,是一個大卡的單列流,如果是商品通常是以商品列表的形式展出。

后續分享的實驗結果均來自“關注”流,這兩個場景不像其它一些簡單目標的推薦場景,比如說同店的六宮格寶貝推薦,以促進成交為唯一目標。在這樣復雜的信息流場景中,面臨著非常多的挑戰。

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

Context 信息的感知與控制能力是應對這些挑戰的殺手锏。以第一個挑戰打散為例,當想在某個位置放入某個商品時,重排模型會去看周邊的內容都是來自哪些店鋪,這叫做 context 的感知。在放商品的時候可以避開這些商家,以確保店鋪是不扎堆的,這個稱為重排模型對 context 的控制能力。

圖片

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

還有一個問題是這種模式下每個模塊功能相對單一,但在系統層面卻缺少聯合優化的可能,導致整個系統最后推薦的結果是次優的。有同學說會不會是模塊之間的順序不對?也有可能,但我的理解是不存在一個真正好的序能夠消除各個模塊相互之間的踩腳,今天要分享的就是如何使用重排模型徹底推翻這種 pipeline 推薦范式。

圖片

基于復雜目標的重排方案,在每一路供給精選出候選集后,把候選集全扔進重排模型就會直接生成最終的推薦序列。主要優勢體現在兩點:

  • 一是基于重排模型強大的 context 感知與控制能力,可以兼顧到前文提到的全部挑戰;
  • 二是它本身是一個深度神經模型,可以在大數據的驅動下給出 end to end 的聯合最優解。

二、重排模型的建模范式總結

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

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

圖片

比如有 5 個候選寶貝,來自綠色店鋪和黃色店鋪兩家。重排模型 V1 版可能是通過 RNN 或者 Transformer 的結構去捕獲建模它們之間的相互影響和相互關系,給每個 item 單獨打一個排序分,按照這個分數從大到小的順序排列,再截取 top 寶貝透出作為最終的結果。

這版模型存在一個問題就是對于這些寶貝是否來自一家店鋪沒有控制能力。如果想確保來自不同店鋪,就要加入店鋪打散的邏輯,反過來看這個重排模型就不是輸出最后的結果了。所以 V1 版重排模型缺少對 context 的控制能力。

圖片

V2 的特點是在 V1 版的基礎上加上了序列選取 item 的模式。具體來說,會通過 encoder 去拿整個 context 的 embedding,之后會逐個選取 item。舉例來說,在這個 case 中,已經選取好前 n 個 item,希望選取第 n + 1 item。該模型會先計算出一個 state  變量表示當前這個位置應該怎么選寶貝,然后會拿 state 跟各個候選 item 算 attention,attention 的值跟 item 選取概率高度相似,大體上會根據 attention 值的大小來選擇一個寶貝放在當前這個位置。每選出一個寶貝后 state 都會馬上更新,所有的 attention 值會重新計算。這種建模范式下,就實現了對 context  的控制能力。

當選擇第 n +1 個寶貝的時候,因為前序 n 個寶貝已經選定了,他們來自哪個店鋪也確定了。選 n +1 的時候,通過看前面的寶貝避免有重復的店鋪出現就可以了,所以對 context 有比較強的控制能力。

圖片

但 V2 版重排模型的瓶頸在于需要手動給出每一步的最優選擇作為 label,因為該重排模型是基于監督學習的范式來訓練的。給定候選集寶貝、用戶當前的實時狀態和前序 n 個寶貝的選擇,需要告訴模型這一步的最優選擇是什么才可以讓模型訓練。

但問題是給出這么多前序設置怎么知道這一步應該選什么呢?監督訓練在推薦系統中用得很多,特別是精排模型。拿到用戶特征和商品特征,輸入一個 CTR 點擊精排模型去進行點擊率預估。線上這個寶貝透給用戶,能真實知道用戶有沒有點擊,很容易回收一個點擊或者不點擊的 label,訓練時最小化預測值和實際值的距離就可以做好模型訓練。

但要把監督訓練套用到重排模型就不成立了。比如說有用戶特征,有 m 個商品和它們的特征,喂入一個重排模型預估了一個最優序列,比如 12345,需要給出最優序列當作 label,比如這個 case 里邊最優的序列應該是 34125,通過最小化這兩個變量之間的距離來做模型訓練。

但問題是在復雜情景中,比如有多種內容供給、多種目標、多種業務需求情況下,如何知道最優序列是什么呢?如果已知最優序列,為什么還需要訓練一個模型呢?在相關研究中,大家會提出一些尋找最優序列的探索方式。比如把購買的寶貝放在第一個,點擊的寶貝次之,其他的隨便排,這里其實是人為構造出一個最優序列。但在這種訓練模式下,構造出來的序列好壞直接決定了重排模型的上限。基于上述原因,提出了重排 V3 的建模范式,其特點是在 V2 的基礎上加了 reward 驅動訓練。

圖片

首先有一個 actor,給出一個用戶和候選商品序列時,它負責生成一個序列。另一個重要模塊叫做 evaluator,當一個序列給到它時,它會對這個序列做出評估,reward 分反饋給 actor,actor 就會根據 reward 的大小來調節生成序列的策略。

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

reward 有兩個非常突出的優勢:

  • 一是它無需 label。生成一個序列后,evaluator 只要能對當前這個序列做評估就可以了,至于最優序列和其 reward 是什么無需要知道。
  • 二是它無需可導。在信息檢索領域,通常用 NDCG 來評估推薦的結果,但訓練時絕大部分工作不會直接優化 NDCG 指標,一個重要原因就是 NDCG 不可導沒有辦法計算梯度,沒法做深度模型訓練。但 reward 不需要可導,從而可以在 reward 里邊非常靈活地加入各種各樣的計算。比如店鋪打散,結果序列中店鋪的個數就是一個很好的 reward,雖然它顯然不可導。

三、有機融入多目標的重排模型

在這個建模范式下的重排模型都可以很優雅地融入各種業務目標。

圖片

基于 V3 版的設計如上圖。輸入是一個 user,m 個 candidate item,分別是 C到 Cm,一個 reward function Rw。R是把 w 當做參數,進行線性求和,求和的項是 w 乘以 utility function U。U 可以是點擊、冷啟內容的占比等各種各樣的業務目標,w 是業務目標的融合權重。

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

完成這個任務的最基本的思想就是訓練一個 actor,當給定一個 item candidate 集合的時候,actor 跑一遍正向運算,然后會給出一個最優序列。充分訓練之后,就會認為它生成的這個序列趨近于 Lw*。

圖片

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

圖片

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

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

之后通過一個 embedding lookup,把一些 ID 類的特征轉換成 item embedding 來參與數值計算。把 user 的embedding 和每個 candidate 的 embedding 進行拼接跑幾層 MLP。這些 MLP 是幾層 DNN,每一個單獨跑,再把每一個 item embedding sum 起來,再過幾層 MLP。

圖片

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

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

在訓練的時候一定要有 sample 的過程,因為 sample 過程引入了隨機性,讓 actor 會去嘗試不同的序列生成策略,最終能夠找到一個好的策略。圖中所示的 case 選擇第一個 item ,會把它喂入 RNN,迅速更新 state 或者 context 信息,然后再去選擇下一個寶貝。

黃色部分是 local context enhanced attention,除了 item embedding 和 state,還有一個針對 state 和 item 的 local context。左邊的 Vector 是手搓出的一系列特征,如第一個特征是目前為止冷啟內容的占比是多少,第二個是當前這個 item 在前序有沒有重復,幫助重排模型做好店鋪打散。整體來說,這一系列加工的特征可以幫助模型快速捕捉業務意圖。

這里的建模思想是有些變量之間的關系,只能依靠數據模型以及訓練去捕捉擬合,但這樣的關系應該限制在那些復雜且無法表達的變量關系。如果有一些清晰明確的規則,應該盡量清晰表達,而不是靠模型摸索。一是沒有必要,二是這樣做是低效的,所以添加了一個 local context enhance 的參數模塊。

圖片

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

圖片

 evaluator 模型用的是標準 loss。比如想訓練這一頁推薦結果用戶會不會有點擊這樣一個點擊率預估模型,會用一個 0,1 的 label,用標準的交叉熵 loss 去訓練 evaluator。充分訓練 evaluator,然后鎖死,再開始訓練 actor。

這邊用到強化學習的一些算法。目前用的是 REINFORE based Algorithm,這個 REINFORE 是非常經典的一個 RL 算法,在它的基礎上加了一些小而常用的 trick。

訓練 Generator 的 loss 有兩部分內容,一部分是 reward 相關的,一部分是模型生成這個 list 的 probability。給定一個 user 和 candidates,generator 會生成一個序列,這個序列喂進 evaluator ,或者是 reward function,可以拿到一個 reward 的評估。然后減去 baseline 也就是減去線上真實曝光的那個 list,因為離線訓練的數據是通過 log 獲取的,所以線上真實知道當時的曝光序列是什么,這個序列也進入 reward function 拿到一個 reward 值,對它們進行一個減的操作,希望生成高于線上或者優于線上序列的結果。

第二部分是乘一個 probability 項,給定 user 和 candidates,計算 generator 生成這個序列的 probability 。訓練的核心思想就是 reward 得分高的序列應該有更大的概率被生成。

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

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

我們的論文中對線上的一些業務目標做了總結,分成了四大類,每一類都介紹了如何將它有機地融入重排模型,比如說 reward 或者 utility 應該怎樣設計。感興趣的同學可以去看 paper,里面都有比較詳細的論述。這樣就設計好了一個重排模型,可以有機的融入多種優化目標。

接下來探討如何靈活調節多目標之間的權重。

四、基于超網絡的實時可控重排模型

圖片

實時可控多目標之間的權重的設計動機是:首先有一個 assumption,reward function 是線性加權求和的形式,把這一部分 term 稱為 utility function。一個 utility function 就是從一個維度去評估序列,比如用戶點擊率、多樣性、新鮮度和新穎性等。無論這邊是需要模型預估的utility,還是可以手寫出公式的 utility,當訓練 actor 的時候,都認為 utility 是一個固定的 function,所以整個 reward function 里面可以變的參數就只有 w,而這個 w 又表示了對各個目標之間的一個傾向。

在傳統的 preference weights 里這是一個靜態的模式,w 在模型訓練一開始就要指定。如果出于一些原因必須要調節 w,則必須重新訓練整個模型,就會非常費時費資源。有一系列工作在嘗試幫助如何尋找到最優 w,也有些工作會在訓練的過程中不停地去調節w,以達到最好的效果,我們的工作則跳出了這個框架,整體的思路不是去尋找某一個最優的 w,而是任意給一個 w,都能生成最好的序列,這種形式稱為動態指定 preference weights。

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

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

第三點也是我們認為對業務影響最大的一點,就是可能根本不存在一個最優的 w。對于不同的流量,最優的 w 就應該是不一樣的。比如對于新用戶,最重要的是讓用戶了解、喜歡這個場景,就會分發跟用戶相關性更高的一些內容。但對于成熟用戶,那可能希望更多給他帶來驚喜性與發現性,驚喜性與發現性的 w 就會調得更大。

綜上,業務上其實更合理的應該是運用分人群、分策略的 w 配置,或許還可以做分流量來源的策略,可以不停地分,做到千流量千策略,傳統模式下,每一次切分,就要訓練更多的模型,但在我們新提出的動態方案下,只需要一個模型。

圖片

目前這項工作發表在最新的 KDD2023 上,論文名是《Controllable Multi-Objective Re-ranking with Policy Hypernetworks》,整個技術方案的要點就是 Hypernet 和 conditional training。

下邊的框里是任意一個重排模型,上面的框是新加入的 Hypernet 的部分。線上 serving 部分,當一個用戶和他的 candidate item 來到場景時,可以實時指定一個認為正確的 w,交給 Hypernetwork,它會生成一組參數交給重排模型。藍色加黃色,是重排模型的參數,分為兩部分,一部分是 θw,是對 w 敏感的參數,比如重排模型 DNN 最后幾層的 w 和 b,也就是最后幾層的權重和 bias,是對 w 敏感的。而模型大多數的參數,認為是對 w 不敏感的。比如每個 item 的 embedding 表征對 w 應該是不敏感的。當線上 Hypernet 生成 θw 時,重排模型就可以用完整的 θ 去生成一個序列,因為這部分 θw 是跟著 w 走的,所以也認為生成的序列就是最接近 Lw* 的那個結果。這個是 Serving 時,網絡正向計算的過程。

當一個訓練的 sample 進來時,這里的一個 trick 會隨機采樣一個 w,采樣的范圍就是事先指定的一個 distribution,這里需要一些先驗知識來指定 w 的采樣分布,為每一個 sample 或者每一個訓練 batch 指定一個 w。走正向運算,當重排模型生成一個序列時,需要將它交付給 Evaluator 做評估。Evaluator 也會根據采樣出來的這個 w 對序列做出評估,這個 reward 可以轉化成一個 gradient,這個 gradient 就會流到 Hypernet 來 update 它的參數,同時也可以流到重排模型里面去 update 那些對 w 不敏感的參數。

Conditional training,借鑒了 Conditional GAN 中的一個技術,用到了重排模型的設計當中。

圖片

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

基于相同的思路,圖(b)展示的是冷啟內容的占比,圖(c)是店鋪的多樣性,圖(d)是組間排序的 utility,表示來自不同 group 的內容,大致要按照 group 的優先級排序。這四幅圖說明重排模型確實調得動。右邊是 online AB test 的結果,baseline 方案就是一開始提到的 pipeline 模式,實驗方案是實時可控的重排模型,用線上超參調節,調到一個比較好的位置。可以看到在用戶點擊、用戶看到的商家數量、冷啟占比、組間的排序、停留時長以及用戶看的內容的數量等方面都有著不同程度的提升。

五、結語

圖片

圖片

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

六、問答環節

Q1:線上每個用戶個性化的權重是怎么得到的?

A1:雖然從技術上來講可以支持每個用戶,甚至是每個用戶每次訪問的權重都可以是不一樣的。但是線上會把這個粒度打到人群,就像我剛才說的新人和老用戶是不太一樣的,是做到人群層級的。至于每個人群是怎么設置,這個主要取決于一些偏業務的要求,比如說需要多少的創新性和相關性,這個是業務上定的。而一些比如說冷啟的占比是通過算法確定的。

Q2:線上 serving 不同,不同流量權重不同,那離線訓練的時候權重也不同嗎?

A2:線上 serving 權重不同,離線訓練時的權重也不同。一個重排模型在線上能為一個權重生成好的序列,一定是因為它在離線訓練的時候就已經見過這套權重或者相似的權重了。所以在離線訓練的時候,對于每一個 training 的 sample 或者每一個 training 的 batch,都是采樣一個 w 做訓練的,因為不知道線上真實會遇到什么樣的 w,進行采樣。

Q3:w 選取是什么分布?

A3:這個確實是被問到比較多的一個問題。首先會有一些業務的輸入,就是專家的先驗知識,如果這個不 ok 再進行手調,比如說冷啟的這個權重基本上就是手調的。但在論文中,為了驗證這個算法是一個更加 general,不需要過多先驗知識的方案,把 w 的分布設置為從 0 到 1 的一個均勻分布,然后線上也是在這個范圍之內做調節的。

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

A4:因為做不了,各個模塊從左到右計算變得越來越復雜,重排的計算復雜度一般是 m 乘以n,m 是輸入的 item 數量, n 是需要返回的 item 數量,就是序列的長度,它的計算度是 m 乘以 n。通常來說,重排模型的輸入可能是 50,返回的序列可能是 10。但是精排模型的打分量級是千級,是 1000。如果說像重排這樣建模,它的復雜度就會變成 1000 乘以100,這個在線上是扛不住的。

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

A5:這是個好問題,其實業務需求里邊有些是硬規則,有些是軟規則。比如說有的時候某個 item 必須放在第一位,就是置頂的需求是強需求,一定要百分百保證實現的,用戶可能在其他的地方點了一個寶貝,一般會把這個寶貝稱為一個 trigger,這個 trigger 寶貝一定要做到所見即所得,它一定得是放在序列第一個的,所以是一個強規則,百分百得保證。但這個事情通過在 reward 里邊加 utility 是無法實現的,而通過使用 masking 可以實現,如果需要將某個 item 置頂,那會把其他所有的 item 的 attention 值置成 0,這樣選擇的結果一定是第一個 item,這是能百分百保證的。

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

用戶對于冷啟策略感知并不強烈,所以冷啟沒有后續的強制規則。通過調節權重,看冷啟任務完成度的指標調控。當然冷啟本身就有閉環調控,當前狀態冷啟的占比是有一個實時反饋鏈路的。冷啟的信號是有一個 PID 閉環控制信號,即使權重一樣,閉環調控的 PID 信號也有強有弱,如果冷啟發得不夠多,PID 控制信號就會變得更強。重排的 w 以及閉環調控的 PID 信號,兩個一起來保證冷啟完成度。

Q6:重排整體耗時,P99 指標大概多少?線上特征數量級以及線上處理耗時大概多少?

A6:大致是 20 多一點,應該不到 25 毫秒。基于精排模型打分,重排模型不需要使用太多特征就可以實現不錯的表現,所以目前特征使用得不多,這是耗時低的一個重要原因。

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

A7:這個其實是整套設計最精髓的地方之一。我的答案就是我不考慮。因為很難總結出來視頻下邊應該放一個寶貝,還是視頻下邊應該放一個直播?因為真得不知道,所以應該去避免主動確認這個問題。把這些個視頻、直播、寶貝全部都給重排模型,然后重排模型就去看,可能今天這樣拼,明天這樣拼,但是他會不停地 get 到用戶的反饋。比如今天這樣拼用戶點得更多,那就嘗試繼續這樣拼,如果大家不買賬,那以后就避免這樣拼,這個事情是靠 Generator,靠 RL 算法自己去探索出來的。

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

A8:我認為這也是重排模型來做混排的一個優勢,不需要統一物料特征。作為一個特征來講,如果這個特征真實包含了豐富的信息量,且是穩定的,就是好特征。比如說視頻內容返回了特征 ABC,然后寶貝內容返回的特征叫做 d、e、f,可以用統一表征,比如說特征最后變成每一個 feed 都用 ABCDE 去表征,只不過會有一半是 0,只要把這個拼起來的特征直接喂給重排模型即可。至于兩組特征怎么去做統一或者對齊,交給重排模型,交給大數據,交給訓練就 OK 了,不需要擔心的。

Q9:重排使用精排模型的分數,后續精排模型迭代的問題怎么解決?

A9:精排模型非常重,可能一個精排模型不經過壓縮就大幾百 g 了,這種規模的模型很難做一些類似于采樣、loss 設計等操作。所以精排模型的定位就是把核心的預估做準,預估的點擊率的分布應該跟真實的點擊率非常靠近。精排稍稍調整一些模型結構,預估的 CTR 值的分布應該是不會大變的。在這種情況下,前后耦合的問題沒有那么強。

當前序模型有比較重大的改變,比如說從點擊率的預估變成了點擊數的預估,后續的重排模型是沒法直接應用的。而精排模型可以額外預估點擊數,但點擊率還是要傳到下游模型。有時精排如果做采樣策略的一些調整,預估的點擊率有可能發生明顯的改變,比如原來不做負采樣,現在隨機拋棄一半的負樣本,這種情況下會讓點擊率明顯比原來增加一倍。為了解決這個問題業界經常用的一個辦法是做校準,通過一系列的操作,把預估的點擊率錨定到真實點擊率含義上的那個物理值去,保證這個預估值到達重排模型的時候是穩定的。

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

A10:C 端用戶的體感是一個無限下翻的信息流,但實際從技術側來看推薦是分頁走的。比如說 10 個內容會先推一頁,用戶差不多把 10 個內容看完,再推薦下一頁。所以至少目前的方案里邊,評估器輸入的序列長度就是 10,這個是跟著每一頁的長度走的。

重排模型的 page size 是 10,重排序列生成的序列長度也是 10。目前訓練中評估用評估器訓練長度是最后透出序列的長度。重排模型輸入的序列長度一般是幾十,最多就上百這個量級。

沒有在線上真實透出的商品,也會埋下來再放在那個 candidate set 里邊,交給重排模型,重排模型是有可能選出原來沒有透出的內容的。也正是因為會透出原來線上沒有真實透出的寶貝,一旦出現了這種場面,除了用 Evaluator 之外,沒有其他的手段去判斷這個序列用戶會不會點擊,或者有幾次點擊,這個是沒有辦法的。極端情況下可能透出 10 個寶貝,線上沒有一個展現,那這個序列用戶到底會不會點擊,log 下來的數據是不會有這個信息的,只能用 Evaluator 做評估。

Q11:請問論文中有沒有 RL 訓練不穩定問題?

A11:RL 就是不穩定,數據不變,模型不變,隨機種子不一樣,可能這一次行,下一次不行,這也是 RL 難訓練的一個體現。如何能讓模型訓練得更穩定,是一個值得研究的問題,目前用一個簡單粗暴的辦法,這次垮掉了,那再試一次,多次嘗試后通常可以獲得較好的效果。它只要效果相差不大,上線之前會有檢測,如果垮掉了,那再試一次。模型目前是用精排的特征,所以整個模型不大,幾個鐘頭就訓練完了。

Q12:線上推理時 Generator 一次產生多少個序列,然后進行打分的。

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

后續在其他同學的工作下,上線了多序列重排模型,線上也可以開啟采樣,Evaluator 也推上線了,Generator 通過采樣生成多條序列,然后 Evaluator 再從中選優,透出最優的一條序列。現在線上全量推的是這個方案,不單是 generate 的輸出結果,也嘗試用其他手搓的序列,一起丟給 evaluator,從中選最優。

Q13:重排模型的離線指標看什么?

A13:實操當中離線模型的指標看的是獲取到的 evaluator 的 reward,還有一個指標是 better percentage。Better percentage 是同樣的情況下生成的重排序列,從 reward 上來講優于線上真實投放序列的概率。基本上認為這個數值應該至少得高于 50%。

Q14:入選重排候選內容池 50 條是如何選擇的?完全按照精排分嗎?還是會考慮一些其他業務需求,比如保量內容進入 50 條重排候選池。

A14:存在一些特別的 case,比如說用戶關注東西實在太少了,也會給他做全網推薦的內容。當時在全網推薦遇到過一個 case,推薦返回了 200 個寶貝。靠精排模型分截取的 200 個 feed,有 197 個都是同一種類型的feed,這個事情就很尷尬了。比如說業務規則要求一頁里邊最多只能出一個買家秀,如果有這樣的業務規則那 200 個返回的結果就大面積是廢的,所以一定要在返回之前先看 CTR,然后也要做 feed 內容類型的打散和商家的打散,這些操作一定程度來說是必要的。

責任編輯:姜華 來源: DataFunTalk
相關推薦

2022-01-12 14:40:49

推薦系統模型

2024-08-20 08:34:17

2023-04-11 07:28:39

2022-08-31 10:04:28

模型算法

2025-04-27 01:22:00

Visual開發

2023-04-26 07:56:45

大模型機器學習

2012-12-07 13:16:30

淘寶技術

2022-10-14 08:03:46

圖形數據庫系統

2022-05-11 11:25:49

模型方案

2024-06-04 08:30:32

2025-02-11 08:20:00

DeepseekAIOPS人工智能

2025-03-12 04:25:00

Linux系統優化應用

2012-11-14 10:51:28

淘寶技術

2010-10-13 09:17:22

Duplicity備份

2023-12-01 08:28:29

推薦系統跨域多目標建模

2023-07-28 08:08:09

大淘寶數據模型數據治理

2020-12-31 08:30:00

推薦系統MatRec計算機

2013-08-12 15:23:02

2023-01-12 13:03:00

數據開源

2022-05-27 18:04:49

技術淘寶
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄色av电影 | 亚洲精品国产电影 | 请别相信他免费喜剧电影在线观看 | 中文字幕一区二区三区乱码在线 | 黑人巨大精品欧美一区二区免费 | 国产欧美在线 | 国产在线精品免费 | 国产午夜亚洲精品不卡 | 日韩三级在线观看 | 久久国产视频网站 | h视频在线播放 | 欧日韩在线| 老司机精品福利视频 | 91免费入口 | 精品国产一区二区国模嫣然 | pacopacomama在线 | 欧美片网站免费 | 日韩欧美三级电影在线观看 | 欧美一区二区三区久久精品视 | 丁香五月缴情综合网 | 亚洲精精品 | 91伊人| 91麻豆精品国产91久久久久久久久 | 日韩男人天堂 | 欧美性a视频 | 乱码av午夜噜噜噜噜动漫 | 欧美电影在线 | 一区二区三区欧美在线 | 久久精品视频网站 | 97综合在线 | 99视频久| 精品啪啪| 久久不卡 | 欧美一区二区三区一在线观看 | 99在线免费观看视频 | 男女激情网站免费 | 精品国产欧美 | 成人高清视频在线观看 | 欧美片网站免费 | 黄色网毛片 | 国产综合av |