阿里 1688 直播推薦算法實踐

分享嘉賓:王修充 阿里巴巴 算法專家

編輯整理:張文君

出品平臺:DataFunTalk

**導讀:**近年來,電商呈現內容化的趨勢,以直播和短視頻爲首,內容化提升了用戶體驗,增加了平臺收益。作爲電商的重要流量入口,推薦算法除了應用於商品,現在也被應用於直播場景。我們將以阿里的 B 類電商網站 1688 爲例,分享直播推薦相比於商品推薦所面臨的核心問題和難點。今天的分享圍繞四個方面:

01

核心問題介紹

推薦系統從推薦的物料量級來說,分爲百萬級的召回,萬級的粗排和千級的精排,本文主要聚焦於三個精排中的核心問題:

02

直播排序模型迭代

1688 的直播推薦排序模型迭代了三次,共有四個版本。

V1:基於特徵工程與機器學習的排序模型

第一版模型是一個基於推薦特徵工程和機器學習的排序模型,重點在於實時特徵和打點體系的建立。

① 直播排序特徵

我們用到的特徵包括了推薦系統中非常經典的三方面的一些特徵體系,也就是 item 側,用戶側,用戶和 item 側交叉的特徵體系。

第一是直播的實時和歷史的統計特徵,包括實時以 30 分鐘,3 天,7 天,15 天爲窗口的開播次數,曝光數,點擊數,CTR,CVR 等特徵。第二是內容側特徵,包括封面圖和標題的 embedding。第三是商家畫像特徵,靜態信息有商家等級和店鋪交易數據,B 類信息有商家工廠能力。

用戶側特徵裏,我們一方面採用了網站的用戶畫像,包括網站的身份,等級,來訪頻次等,另一方面採用直播畫像,包括偏好,訪問天數,下單數,RFM 等特徵。

用戶和直播的交叉特徵,以非常好地反映用戶對直播的偏好程度。我們分別用到了用戶在 item 的序列和用戶在 live 序列在不同的時間和次數窗口上與直播間的商品,以及直播間本身的一些交叉的次數,點擊率和轉化率的特徵。

② 模型與結果

第一版中,我們採用的模型是一個以 CTR 爲目標的 GBDT point-wise 模型,因爲我們的業務要同時兼顧轉化率,停留時長等多目標,我們也基於轉化率和停留時長 的樣本,對其做了基於樣本權重的賦權。模型上線之後,轉化率和停留時長分別增長了 10% 和 30%

V2:深度模型時代:異構行爲序列 Attention 模型

① Embedding+MLP 深度學習時代的範式

在第一版模型得到非常好的效果驗證之後,也得益於我們在商品推薦上積累的一些深度學習的經驗,我們正式進入深度學習模型時代。第二版模型爲基於異構行爲序列的 Attention 模型。深度學習做推薦排序的範式爲 Embedding 加 MLP。其中 Embedding 是將用戶行爲序列的 ID 特徵以及商品的 ID 特徵經過 Embedding 層變成一個稠密的向量,拼接後基於多層的全連接神經網絡做對應的任務,比如 CTR 任務的預估。在深度學習推薦模型的迭代中,YouTube 的 DNN 和 DIN 是兩個非常經典的工作。

② 模型啓發

YouTube 的 DNN 爲 Recsy16 年的一篇文章,它首次提出加入用戶行爲序列的特徵。在將用戶看過看過的一些視頻的 ID 變爲 Embedding 後,取 Average Pooling,即平均池化,將其變爲一個固定長度的向量來表徵用戶行爲序列建模的向量,再與一些統計特徵包括播放次數等做歸一化、log 處理,之後與 Embedding 做拼接,最後加入到 MLP 中做 CTR 預估。總之,Youtube 的 DNN 模型首次建模了用戶的行爲,但方法比較簡單粗暴,僅僅使用平均池化,用一個向量來表達用戶的一個興趣。但用戶的行爲是非常多樣性的,僅用一個向量來表示不夠準確,在這樣的背景下,阿里巴巴在 18 年提出了 DIN 深度模型。

在對候選品做預估時,我們應該只關注與該候選品相關的用戶行爲,因此我們引入推薦系統中非常重要的 target attention 概念。我們以候選打分的產品爲 Query,去跟用戶行爲序列的每一個 item 計算一次 Attention 的權重。得出的結果再經過該用戶多個行爲 attention 的 sum pooling,針對不同候選品,我們將得到不同的用戶行爲序列建模的表徵,這樣得到的表徵與品相關性更強,能預測出更高的點擊率。DIN 首次引用了 Target attention 的概念,建模用戶對不同品的基於行爲的興趣。

③ 電商直播場景:異構雙序列 Attention 模型

受 DIN 的啓發,我們迭代了第一版深度學習模型,因爲直播推薦模型是異構雙序列模型,異構雙序列指我們需要建模的用戶的行爲序列在電商直播裏包含兩種,一種是用戶在商品上的序列,第二種是用戶在直播上的序列。因此我們採用了兩個 Target Attention 的結構,分別基於用戶在 Item 上的序列與當前直播正在講解的商品做一個 Attention。也就是說,如果用戶的 Item 序列與當前直播的商品匹配程度比較高,模型即可捕捉對應的興趣。第二是我們會基於用戶歷史點過直播的序列與直播間的 ID 做一個 Attention。用戶如果歷史看的直播與當前直播間比較相似,模型也能捕捉到用戶對應的興趣,來提升預測 CTR 準確度。

第二,直播推薦裏面有大量統計特徵,在輸入進模型前需要繁瑣的特徵歸一化,否則訓練的時候梯度就會不太穩定。我們採用了 GBDT Embedding 的方法。首先基於統計特徵和機器學習版的數據去訓練一棵 GBDT 樹,然後在線上預測時,將統計特徵的樣本輸入到整個 GBDT 樹裏,即可獲得每個 GBDT 樹上的葉子節點的 ID,再將 id 經過 Dense 層或者 Max Pooling Dense 層,輸入到 DIN 的模型裏。這樣既實現了統計特徵的特徵歸一化,另一方面也完成了特徵交叉的工作,我們也可以利用上機器學習時代所遺留下來的統計徵。值得一提的是,如果將全連接層(Dense 層)換成單層 sigmoid,即退化爲 GBDT+LR 模型。,這樣的異構雙序列的 Attention 模型得到了非常好的效果,上線後,UV 點擊率(CTR)又提升了 5%,這也是我們深度學習時代的第一版模型。

④ 思考

第一版模型上線後,我們也對其有着一些思考。對於 1688 電商網站,大量的用戶只有關於商品(item)的行爲,缺少直播相關的行爲。因此用戶直播的序列的 Attention 結構就不會生效,只剩下用戶商品行爲序列和當前直播間講解的商品做對應的 Attention。而只用直播間當前講解的一個商品來表徵直播的信息是不太準確的,因爲直播的商品是很多變的,我們希望用歷史的商品和未來商品共同表徵直播的信息,於是我們希望可以實現從用戶的商品行爲序列來直接做到直播(live)的信息的激活,也就是希望能將直播和商品表徵到同一向量空間,即可用商品行爲序列直接預測對直播的興趣。

V3:HIN 異構網絡建模

我們採用的方案爲直播異構網絡 Heterogeneous Information Network (HIN) ,因爲在我們的直播業務中有着 “直播 - 用戶 - 商品” 的豐富異構網絡。包括用戶點擊直播,用戶點擊商品,直播間播放一些商品,商品和商品,直播和直播之間也有一些相關的關係,構建了一個非常豐富的網絡,我們可以在這樣的網絡中學習到每個節點的表徵,並把這些表徵預訓練加入到我們的排序模型裏,形成 item sequence 到 live 的 Attention 結構。

圖表徵的方法在同構圖中有 DeepWalk、Line、Node2vec、GCN、GAT,異構圖的方法主要爲 Metapath2vec,也是我們採用的方法。Metapath2vec 的主要思想爲先指定遊走元路徑,基於元路徑指導圖上節點的遊走,採樣出序列後,經過 skip-gran 生成 Metapath 語義下的表徵,最後對錶徵做一個融合,得到節點的最終表徵。具體來說,Metapath 融合網絡建模分爲四個步驟。

① 構建圖

首先第一步構建電商直播的圖。

② Metapath 選取

第二部分是 Metapath 的選取,分爲兩種方案:

例如 User-Item-User(user CF)或者 Item-user-item(item CF),item-user-item 相當於一個用戶同時點了兩個商品,這兩個商品就會較爲相似。但對於節點類型多,metapath 比較長的序列,效果不好,可解釋性較差。

第二種方案是我們使用的方案,就是在集合中取最優的方法。首先在圖中做 random walk,採樣出不同的序列,再做一些規則篩選,比如要求至少要覆蓋兩種不同的節點的類型。所以再用打分公式做一個打分,打分公式核心關注該 metapath 被採樣出了多少條不同的 ID 組合序列,條數越多說明這樣的 metapath 在圖中共性越高,同時我們會更關注核心節點,比如直播節點的出現次數,依此制定打分公式來選出對應三到五條 metapath 做採樣學習。

③ 圖遊走採樣

第三部分爲基於選出的 metapath 在圖中做遊走採樣,再用 Skip-Gram 訓練出 metapath 語義下的 Embedding。

④ Embedding 融合

第四部分是構建融合多個 Metapath Embedding 的語義網絡,具體訓練任務爲 link prediction,採用負採樣 loss。使用方法上,融合了一些 GCN 類的想法,加入一些臨界節點的信息,分別基於 Average Pooling 和 self attention 做最終融合,最後基於負採樣 loss 來訓練出整個融合的網絡,我們因此可以得到圖中每個節點的表徵,形成 item sequence 到 live 的結構。

⑤ 結果

模型上線後在日常的 CVR 和停留時長分別提升了 2.5% 和 3.9%,大促的轉化率提升了 10%,這也是因爲在大促中新人用戶更多,直播行爲缺失。同時異構圖上的表徵也可以用於直播召回,包括 user2live,item2live,live2live,作爲副產物提升召回效果。

V4:直播 Transformer 異構行爲建模

V3 的模型仍存在一些問題,其一它不是端到端模型,其二, T+1 更新無法表徵實時商品。於是我們採用的新方案:直播 transformer,一方面可以讓 HIN 融合多個商品表徵,另一方面可以引入實時直播正在講解的多個商品的信息。

① Transformer 模型

Transformer 方案中,直播表徵爲 m 個歷史核心商品加 k 個實時講解商品的集合序列,這 m 個商品是基於歷史銷售數據得出的核心商品。用戶的商品足跡爲用戶行爲序列。三組序列進行拼接輸入進 Transformer 後即可用來對任意用戶商品行爲足跡到直播間核心品或實時品進行建模。Transformer 層包括四部分:

② 輸入 Embedding

再 Transformer 模型中,Embedding 的構建十分關鍵。輸入的 Embedding 不僅包含了商品的 ID Embedding,還包含 Type 和 Position Embedding。

Type Embedding 表徵 self attention layer 中每個 token 的類型,比如用戶序列,直播間歷史品,或是實時品。同時用戶序列的商品分爲點擊,加購,下單商品三種類型。

Position Embedding 用來表徵一個序列時間或者空間上的先後順序,此處我們建模了三種不同的條件:一是用戶行爲序列長度,時間由近到遠,編號由 0 到 n-1;二是直播歷史核心商品,重要程度由強到弱,編號由 0 到 m-1;三是直播實時講解商品,當前商品爲 0,下一個商品爲 1,一直到 k-1。同時,position embedding 都是端到端的學習。重要性強的位置交叉,給予模型更強的信號。例如用戶某個最近的歷史行爲與當前直播的商品有較強的相關性,模型信號將會更強。

③ 結果

Transformer 方案使線上轉化率提升了 4.8%,但整體響應時間(RT)較高,相對增加了 13 毫秒,仍在可接受範圍內。

小結:

直播用戶行爲的建模如圖示,分爲三部分,首先商品行爲到候選直播的異構興趣,我們將其拆成了商品序列,直播歷史核心序列和直播實時商品的序列,經過 transformer 進行交叉建模。對於用戶直播行爲序列,我們採用 Target attention 結構做興趣建模。對於統計特徵和內容特徵,我們採用 GBDT Embedding 變成向量後再加入模型。後續經過全連接網絡來預測 CTR 或多目標任務。

03

多目標學習

第二部分是關於直播的目標學習框架,首先直播是一個非常經典的多目標學習的場景,優化目標包括直播背景頁面的點擊(CTR)、進入直播間後的停留時長(Stay Time)、轉換率(CVR)、互動率(CMR)、關注率(FLR)。業務往往需要同時優化多個目標,因此多目標學習是非常重要的技術。

1. Baseline Model

多目標學習的第一版模型是 Baseline 模型,是基於 shared bottom 的工業界標配模型,多目標之間底層共享,頂層各個目標由 MLP 分開。相比於每個任務學習一個模型有以下三個優點:

在 1688 直播實戰裏,我們以 CTR、CVR、Staytime 爲三個目標構建了第一版多目標的模型,我們也發現將單目標的模型升級爲多目標模型的效果提升明顯,因爲加入了很多新的 label 信息。在線上實驗中,UV 點擊率、轉化率和停留時長分別增長了 2%, 5% 和 17%。Shared Bottom 模型在工業界得到了廣泛應用,但仍存在一個缺點,即當需要優化的多個目標方向不一致時,效果並沒有那麼好。在這樣的背景下,谷歌在 18 的 KDD 中提出了 MMOE 模型。

2. MMOE Model

MMOE 的前生是 Mixture-of-experts(MOE)模型,在 input 之後,shared bottom 改進爲了多個 expert 專家網絡和一個 gate 網絡,基於用戶的不同來爲每個專家網絡分配權重,但這個網絡仍存在缺點,對於不同的任務,輸入還是相同的,多目標之間的輸入沒有任何區別。谷歌於是進行了下一步優化,得到 MMOE 網絡。MMOE 網絡仍有多個專家網絡,不同的是對於每一個 target 都有一個 gate 網絡來學習不同的權重,從而每個 task 都可以通過各自的 gate 獲取差異化的輸入。同時 gate 網絡的參數量很小,可以說 MMOE 採用了一個輕量級的 gate 網絡即實現了多目標輸入的差異性。實驗驗證中,點擊率、轉化率、關注率和停留時長的多任務的離線指標都是正向的,線上多目標平均提升 0.5%。MMOE 模型也是 1688 目前線上服務的多目標模型。

3. 實戰分析

下面介紹一下多目標的實戰經驗。分爲 Label 處理,Loss 和線上打分三個部分。

① Label 處理

第一就是 Label 的處理,因爲在做多目標學習時,我們往往會優化一個重要指標:用戶的停留時長,而停留時長作爲數值型的迴歸目標,數值波動較大,不易學習,據統計一般符合對數正態分佈。因此我們通常對其取 log 處理,使其數值更穩定且提高迴歸擬合效果。

② Loss

第二,多目標學習的 loss 爲各個目標的 loss 加權求和。

比如上圖公式中,我們把點擊率,轉化率和關注率的交叉商損失函數利率與停留時長 MSE 損失函數做一個加權的求和。不同的權重會影響模型的效果,代表訓練對不同任務的側重程度。一個任務的 loss 權重越大,模型更新的一個梯度就越受它影響。衝着優化它的方向來去優化整個模型的參數,對於別的任務可能會有所傷害。

我們的調參經驗爲:第一點將多目標收斂 loss 加權到同一量級,一定程度避免梯度的支配,保證多目標的同時優化。第二點提高核心任務的權重。第三點可以參考 19 年 Recsys 提出的基於帕累托最優的 PE-LTR 框架,以及 CVPR18 年的基於任務的不確定度確認 loss 權重。

③ 線上打分

第三,多目標模型訓練完成並上線時需要排序分數將多目標分數整合,常用方法爲拍公式和權重。排序公式如圖所示主要爲點擊率乘轉化率、停留時長等的加權求和。

權重中人工給定多組參數,再根據業務優先級選擇合適參數。

04

直播排序 Debias

第三部分工作爲直播排序的 Debias。Position Bias 是直播場景中最突出的 Bias,代表着位置越靠前的直播點擊率越高,rank 模型越趨向於給熱門主播打高分,進而獲得更大流量,形成 feedback loop 即數據循環。數據會造成兩個後果,一是模型預估不準確,用戶看到的結果都比較偏向於熱門,二是馬太效應增強,頭部主播流量進一步增強,腰尾部逐步減少,造成主播流失。直播業務背後是真人主播,考慮平臺的長期發展,更應該重視模型的 debias。因此我們的目標爲解決 position bias,不損失效能 (CTR、CVR) 下提升個性化程度、降低馬太效應。

於是我們引入兩個 Metrics,一是個性化指標,讓用戶間排序 top-L 的差異化佔比越大越好。二是馬太效應指標,頭部 T 個主播總曝光流量佔比越小越好。爲了優化這兩個指標,我們嘗試了幾種不同的方法,分別爲 as feature/ as model/ 多塔模型方案。。

1. As feature 方案

第一版方案,Position as feature,是業界經典方案,主要做法爲將 position 當作 feature 加入模型,模型即可學習到不同位置的偏置,線上預測時,將 position 取默認值(如 0),不同 item 在相同位置可得到對比,達到去偏的效果。線上實驗結果顯示該方法對於熱門直播去偏能力很強,但線上效能有下降。

2. As Model 方案

於是我們更新到第二版模型,position as model。訓練階段加入 Biasnet,估計出每個 position 的 bias logits。主網絡負責目標任務,例如 CTR 預測。兩個網絡的結果求和後經過 sigmoid 計算點擊率 loss。該模型優點在於 Biasnet 學習偏置,實現了主網絡的無偏效果。

Biasnet 建模中也加入了系統、場景 id 等特徵,建模不同區塊展示樣式的 bias。線上預測時我們可以摘除 Biasnet,只保留無偏主網絡。線上效果符合預期,個性化提高、馬太效應降低,效能也有提升 (預估更準)。待改進點爲 Biasnet 認定每個 position 的 bias 爲一個定值,無關於與用戶的相關性。

3. 多塔模型

因此,我們就提出了第三版模型,多塔位置敏感模型。該模型的出發點爲建模不同相關性的直播,在不同位置的位置 bias 的差異性,進而優化全局的排序效果。

① 特點

我們依此建模出的多塔模型有以下特點:

② 建模方法

在具體的建模方法中,我們將 position 1~9 作爲 9 個塔,position 大於 10 的作爲第十個塔。同時由於每條樣本只屬於一個 position,我們將每個塔的 loss 傳入 loss mask,保證只有對應的塔的梯度回傳。在線上服務中,多塔模型可以預測出商品在每一個位置的點擊率,可使用貪心選擇每個位置 CTR 最高的直播,構成推薦 list。

③ 模型優化探索

同時我們對於多塔模型也有一些優化和探索,首先它是一個多目標範式,因此可以做一些多目標優化。第二就是我們也希望強化建模不同塔對應 position 的 CTR 分佈(如 KL loss)。第三除貪心法外,我們也可以使用 list-wise 或者組合優化的推薦列表生成。

④ 1688 直播線上效果與原因

CVR 增加了 3.6%,staytime 增加了 3%,但個性化和馬太效應持平甚至負向,不符合預期。分析後原因有以下三點:

多塔模型消除了 position bias,但引入更嚴重的 selection bias,頭部訓練數據多爲熱門主播,冷門主播訓練不夠充分,點擊率不夠高。可以考慮引入隨機樣本、樣本單邊採樣等方法解決。

直播場景推薦物料較少,召回個性化較弱, 而對於短視頻 / 商品推薦等召回豐富的場景,多塔模型預期效果更好。

直播 Feeds 卡片會展示在線人數、熱度等,用戶更傾向於點熱度高的,這也加重了直播域的 Selection bias。

然後目前我們仍致力於解決這些問題,還在做一些技術的迭代。

05

總結

今天分享了基於用戶直播易構行爲建模的排序模型迭代,線上採用的是 Target Attention 加 Transformer 的方案,多目標學習的 shared bottom 和 MMOE 模型,和直播排序 Debias 的 As Feature,As Model,多塔模型。

我們的最終模型如上圖所示。在用戶行爲建模層,我們基於 transformer 建模 item 序列的異構興趣。對於用戶的直播序列,我們採用 target attention。對於其他特徵,我們採用 GBDT encoding。將三個結果進行 Embedding 和拼接,傳入頂層二分模型。一部分是無偏的 CTR 預估模型,在訓練中加入 Biasnet 並在線上預估時去掉達到 debias 效果。另一部分針對點擊後目標,包括停留時長、轉化率等,使用 MMOE 做多目標學習,同時我們也會將 CTR 任務加入模型作爲輔助模型,但是線上並不使用。最後融合多個目標結果得出排序結果。以上就是分享的全部內容。

分享嘉賓:

王修充

阿里巴巴 | 算法專家

王修充,阿里巴巴算法專家,碩士畢業於北京航空航天大學,先後在京東推薦算法、阿里巴巴 CBU 技術部推薦算法團隊工作,目前工作方向爲直播、短視頻推薦算法在電商場景的應用。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/JAZLAoJCPsri57prQZQwSw