天天看點

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

​作者 | 龍楚、丹鷗、晨甯、元涵

一、背景與意義

使用者模組化是搜尋與推薦模型的核心技術。淘寶搜尋排序算分的對象是 三元組,我們從樣本特征表達的角度上來看,item是比較稠密而且穩定的部分,在大樣本的環境下,大部分資訊都能夠被id embedding所表達,相反user是三者中比較稀疏的部分,是以對于user的描述,需要大量的泛化特征。

從模型分類的角度上來看,使用者與商品的靜态特征作用在于增強模型的泛化性,而使用者實時行為的引入與模組化,可以大大增強樣本之間的區分性,顯著地提升模型的分類精度。我們把使用者模組化的過程看作是對使用者的資訊抽象和資訊組織的過程。

資訊抽象方面我們不斷地優化與豐富模組化方式:

  1. user profile用來表征使用者的靜态屬性資訊;
  2. 偏好标簽的挖掘,從行為上預測使用者的一般性偏好;
  3. 實時行為模組化,更細粒度的對目前請求下的興趣刻畫與描述。

資訊處理方面,我們從行為周期和行為内容方面對使用者行為資料進行合理的組織:

  1. 從行為周期上,我們将行為序列劃分成中短期和長期,分别使用不同的時間跨度,描述不同粒度的興趣;
  2. 從行為内容次元上,直接行為回報商品和曝光商品分别被用來顯式和隐式的表達使用者意圖,與此同時,我們也将使用者行為資料從傳統的電商商品,延伸到一些泛内容資訊。
搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

使用者行為模組化也是推薦,廣告等很多團隊在研究的方向(比如廣告團隊的DIN,DIEN,Practice on Long Sequential User Behavior Modeling,推薦團隊的MIND,DSIN,等等非常好的工作),我們力求從實際應用出發,和大家分享我們在搜尋場景中使用者模組化的一些實踐經驗。同時将我們所觀察到的現象、問題寫出來,歡迎大家多讨論交流。文章後續包含的内容如下:

  1. 簡要介紹大模型的整體模型結構。
  2. 使用者資料與行為序列的組織與處理;
  3. 模型結構的改進;
  4. 模型的實驗和分析,相關實際問題的研究與讨論。

二、模型結構

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

我們的模型結構大緻所圖所示,使用者畫像、多個使用者行為序列特征、待打分的商品特征和一些其他的實時上下文特征(天氣、網絡、時間等特征),最終concat之後,進入DNN的分類器。使用者行為序列模組化是模型中最重要的部分之一,對于實時刻畫使用者興趣尤其重要。我們這裡采用self atten和atten pooling的方式來做序列模組化,self atten刻畫行為之間的互相關系,atten pooling對行為進行比對激活并實作combine。這是我們一個通用化的序列模組化元件。下面将基于該模型架構,進一步介紹我們今年的優化工作及其實作細節。

三、使用者資料與模型

user profile 僅僅是一些比較靜态的使用者特征,這些靜态特征作為對user_id的補充和泛化。近來以session-based recommendation為代表的了解使用者實時興趣的模型,越來越受到廣泛的研究,大量實驗表明其能夠顯著提升推薦的準确率。特别是使用者目前越短期的行為,越能代表使用者目前的興趣狀态。使用使用者有過行為的商品來表征使用者,有助于我們實時的捕獲使用者興趣的動态性。另外,以Graph的角度來看,由user-item組成的圖中,item是稠密結點,user是稀疏結點,稠密結點适合用來對稀疏結點進行表達。

我們定義統一的行為schema如下圖:

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

包含兩個部分,商品自身的屬性特征和使用者對商品的行為特征。屬性特征包括item_id, seller_id等一系列對商品進行描述的特征。行為特征包括使用者對商品的行為類型,行為時間,序列位置等特征。

3.1 中短周期

資料與特征: 在去年星艦項目中,我們針對使用者中短期,不同行為類型的行為進行了全局模組化,該序列包含了使用者全網實時的點選 加購 收藏 購買等行為。鑒于使用者曆史行為非常豐富,而我們的序列長度有上限(L_max=50),是以我們通過query的預測類目來甄選出與目前意圖類目更相關的曆史行為。使用者主動輸入query,這是搜尋和推薦最大的差別。關于query方面,query了解團隊已經做了大量的工作。在此,我們利用query了解的結果,使用query的預測葉子類目,對使用者行為序列做篩選。

模型結構:

Transformer模型在NLP領域取得了非常好的效果,它通過使用self atten機制,捕捉到了序列内部的依賴關系,同時它可以并行計算,提高訓練和預測的速度。在CTR模型中,我們廣泛地使用self atten來處理商品sequence。我們在現有self-atten的基礎上進行如下兩點改進。

我們采用了cosine + scale up代替原來的點乘+scale down(也可以通過加入layer norm),來計算K和Q的相似度,提升softmax logits輸出值的區分度。因為在套用原來的self-atten時,我們發現了一些問題:(1). softmax logits值非常小,導緻atten的權重一直處于均值狀态;(2). atten結構出現梯度彌散,導緻幾乎不能被學習。我們的CTR模型embedding從0初始化,而不是随機初始化,過小的梯度導緻self atten很難被學習。為此,我們使用cosine值代替點乘,計算K與Q的距離。如下圖所示:

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

對self-atten的輸出結果我們進行了一個query_atten_pooling。雖然我們的中短期序列盡量保證了與目前意圖的類目一緻性,但為了進一步保證query一緻性,這裡對中短期序列進行一個query_atten_pooling,激活與目前query意圖和語義一緻的曆史行為;後續實驗部分也會進一步分析為什麼這裡不使用通用的target attention。

整個中短期行為模組化的模型結構如下圖所示,self atten + query atten pooling:

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

其中,Context Masked Embedding作e1+c1的操作。

3.2 長周期

資料與特征:中短周期的行為序列, 在有限長度的行為裡,兼顧了使用者在全網中短期的多種行為。很自然的我們可以想到,對于使用者早期的行為很可能不在該序列中。在去年星艦的項目中,我們通過離線統計一個使用者長期偏好的靜态特征來補充這部分資訊,但這種方法無法結合使用者目前的意圖和上下文來選出相關的偏好資訊。

我們希望能end2end的對使用者長期的行為進行模組化,一方面能引入使用者的長期偏好;二是基于目前意圖來對長期行為模組化,而不是靜态的抽取偏好标簽;三是長期行為能引入去年同季資料 解決換季個性化冷啟動等問題。

我們對使用者長周期行為作如下定義:使用者最近兩年的成交行為;點選等其他類型暫不考慮,一是相對成交資料而言,其他類型的行為置信度較低,噪音較大,例如一般來說使用者隻會記得去年買過什麼,而不記得去年點過什麼,二是其他類型資料過多。

具體地,我們對兩年的行為資料按照季度劃分成8個季度序列,每個季度序列是長度為N的子序列,確定每個季度的行為都能被保留,如果直接按時間和個數進行截斷,都有可能導緻某個季度的行為資訊被全部過濾掉,不能盡可能保留使用者多方位的資訊;同時我們并沒有對序列做一個類目相關的過濾,相對短期行為而言,長期行為更着重在對品牌 店鋪 term等上的偏好。

如下圖所示,首先對長期行為item_level embedding特征用context_level embedding進行add_mask,即e1+c1。然後用一個多層模組化方式,先在季度序列内通過優化後的self atten進行特征抽取和子序列的atten_pooling,得到目前季度的使用者偏好表達。最後對不同季度進行concat(也嘗試過atten_pooling,效果比concat稍微差一點),得到使用者最終的長期偏好表達。這樣做的好處在于,對于季節敏感的搜尋意圖,能更好的抽取與目前季度更比對的偏好資訊。

這裡的atten_pooling是用shortseq_vec來作為查詢Query的; Shortseq_vec是一個綜合了使用者意圖和使用者實時偏好的表達,比直接用原始搜尋詞(僅能表達使用者搜尋意圖), 能更加全面評估曆史trigger對目前搜尋的重要性;同時short seq也屬于序列,向量空間上也比較接近。

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

3.3 端上點選

前面兩部分分别從長、短期捕獲使用者的行為商品以及對應的上下文資訊,但實際使用者的行為遠遠不止點選、購買這些;在搜尋結果頁面,商品清單曝光,使用者發生浏覽、滑屏;在商品詳情頁,使用者觀看視訊,對比參數等;使用者有非常豐富的行為沒有被我們關注到,一方面某些特征通過服務端日志無法擷取,另一方面某些特征通過ut日志延遲很多,使得線上比較難以利用;是以我們利用端計算的優勢,在用戶端把這些資料特征收集到,傳給服務端,同時也能把rt降低到ms以内;後面兩部分我們将分别介紹端上的點選序列和端上的曝光序列模組化;

資料與特征: 端上點選序列的模組化相對中短期序列中的點選行為有幾個差異,一是擷取使用者的點選行為更加實時,平均rt從分鐘級降到ms級;二是端上能擷取到更加詳細的使用者行為,使用者在詳情頁各個區塊的停留時間,點選了哪些按鈕;三是沒有對該序列做query相關性的過濾,是希望從跨類目行為引入一些有用資訊,作為做中短期序列的進一步補充,而不是重複;使用者的行為從instance_level來講,每一個行為都有一定的重要性,但是從feature_level來講,每個行為的重要性也取決于品牌、店鋪、term等特征與目标商品的比對程度,不僅僅在于強調行為與query的類目預測一緻;

模型結構: 端上點選序列的模組化方式和中短期序列的模組化方式類似,都是通過優化過的self atten+atten pooling捕獲使用者的偏好表達;同樣我們擷取到的詳情頁行為也可以作為context資訊,對item_level embedding進行add_mask;這裡的atten_pooling同樣也采取shortseq_vec作為查詢Query;

3.4 端上曝光

前面我們介紹了對使用者偏好的模組化,基本都是從使用者的主動行為出發,用使用者喜歡的商品去描述、了解一個陌生的使用者。那麼,我們能不能從使用者不喜歡的方面出發,來描述使用者呢。于是我們對使用者的曝光但未點選的商品進行采集,模組化,融入到我們的大模型中。差別于其他商品序列,曝光商品有一個非常重要的性質,它是目前user + query + context 下,所能實際搜出的最準确的商品。從某種程度上來說,曝光商品綜合了此次搜尋豐富的資訊,能夠有效的對user / query進行強有力的表達。

資料與特征:相比于使用者的點選和購買,pv曝光資料的體量非常之大,于是我們沒有選擇将其實時寫入igraph,然後進行讀取,而是分布在端上存儲,由端上請求搜尋的時候直接發送,繞開了存儲問題,也保證了資料的實時性。具體地,當一個使用者搜尋“連衣裙”時,用戶端會把該使用者最近搜尋”連衣裙“時,曝光但未點選過的50個商品資訊,上傳到服務端,例如在進行第二頁的排序時,就會拿到第一頁的曝光商品。

模型結構: 曝光序列的模組化方式比較簡單,通過mean pooling得到曝光表達。但是為了讓正向表達和曝光表達有所區分,我們先分别計算正向表達和曝光表達與目标商品的距離d1和d2,并添加輔助loss使得兩個距離之間符合以下條件:當目标商品對應是正樣本時 d1 + M < d2;當目标商品對應是負樣本時 d1 > d2 + M。模組化方式類似下圖方式。

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

四、實驗與分析

資料集:以線上的曝光、點選資料為樣本,以前N天的樣本為訓練樣本,訓練至收斂,以後一天的樣本為測試樣本。

評價名額:以後一天的樣本為測試樣本,主要評比在訓練集上的AUC,同時也觀測在訓練集上的AUC等名額。這裡的auc gap都是全量線上模型的auc提高。

效果比較:我們與一些baseline進行比較實驗,其中 LSTM with Q/U/P Attention 為DUPN(kdd '18)。結果如下表所示:

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

效果分析:這裡的auc gap都是線上上收斂版本上的提高。行為序列模型的優化能帶來接近0.3%的auc提高;針對不同問題,引入新的序列特征,并進行對應的模組化優化,帶來接近0.7%的auc提高。

4.1 中短周期序列

Attention Weight分析:我們在tensorboard中,列印出Atten Map,方格(i, j)表示第i個商品,對第j個商品的atten權重。我們可以觀察到以下現象:

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

如圖所示,方格顔色越淺,表示權重越大,訓練的開始并不能展現self atten能夠捕獲商品序列内部關聯的作用,僅僅學到了一些行為資訊,即前面的商品(最近行為的商品)重要。随着訓練的進行,商品之間的關聯性逐漸展現,直接表現為對角線附近權重變大。最終呈現的是同時受到商品關聯性和行為資訊影響的attention map圖。另外,對于atten pooling層,我們監測序列在各個位置上的權重資訊,整體看來,商品序列位置從近到遠,依次遞減,符合預期。

Self Atten的作用:我們嘗試去掉Self Atten層,對seq直接做Atten Pooling,AUC絕對值穩定降0.001。我們了解Self Atten,從兩個方面:1. 如一般的解釋,它确實對商品序列内部的依賴關系進行了模組化,使得商品表達更為準确;2. 在Self Atten過程中,使用者最近行為的商品,作為使用者意圖最貼近的表示,作為Key,對整個序列進行了Atten,其得到的向量成為了在最後Atten Pooling中占比成份最大的資訊。

Why Not Target Atten in Search:Target Atten是在推薦場景中普遍使用的方法,在搜尋中我們也嘗試過,但最後還是沒有使用,有兩個原因:1.搜尋場景中使用者會主動輸入query,已經能夠很強的表示了使用者目前的意圖(比如類目意圖),這個時候再加入target item收益會變小很多,auc提升微弱。另外我們的使用者sequence也使用了query預測的行業/類目作了初步的篩選。2. 最後在精排時,Target Atten需要把Atten Pooling對每個doc計算一遍,會額外增加一定的計算開銷,而query atten隻用計算一次,性能更好。雖然在搜尋場景中收益較少,但在推薦場景,Target Atten依然是最有效的方式。

4.2 其他序列模組化

長周期序列實驗:

為了分析長周期是否能達到去年同季個性化冷啟動的作用,我們做一個簡單的實驗:把長周期的8個季度序列拼在一起,作為一個sequence序列,用self atten來觀察季度之間所有序列的的關聯性。如圖所示:橫軸是seq_index,顔色越淺表示權重越大,可以看到類似在中短周期行為序列裡的現象,最終呈現的是同時受到商品關聯和行為資訊影響的attention map圖,第一列是位置靠前的行為比較重要,第五列是和目前季度相同的行為,重要性次之,對角線表示與自己的atten值。

搜尋模型核心技術公開,淘寶如何做使用者模組化?一、背景與意義二、模型結構三、使用者資料與模型四、實驗與分析

端上點選序列實驗:

類似我們可以視覺化端上點選序列的atten map。如圖所示,剛開始訓練時,重要性主要受到行為context的影響,位置越靠前越重要;最終呈現的結果和中短周期序列稍有差異,最重要的是對角線以及周邊。對角線容易了解,其周邊顔色也比較淺,可以了解是前後被點選的商品之間也有明顯的關聯性。

曝光商品:從AUC的結果可以看到,将曝光商品作為特征的模型提升明顯,AUC絕對值+0.002。作為曝光未點選的商品,能在一定程度上能表達使用者不喜歡的商品。同時,作為目前query下能召回的商品,也是對query更充分的表達。

五、總結與展望

我們詳細介紹了淘寶搜尋CTR/CVR模型中的使用者模組化部分。我們全面的感覺使用者,用更多的使用者畫像、更全面而且實時的行為資料來描述使用者,我們更深刻的了解使用者,用更精細合理的模型來抽象使用者意圖。在主搜雙十一業務中,使用者模組化的工作作為擎天柱項目的一部分全量上線,相對算法基準桶 ,搜尋整體直接引導GMV取得了顯著提升。展望未來我們還有很多的工作要做,更細緻的使用者資料感覺,更科學的使用者資料組織,更合适的模型結構,都需要我們去探索和解決。

參考資料:

1.Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

2.Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Advances in Neural Information Processing Systems, pages 6000-6010.

3.Ni Y, Ou D, Liu S, et al. Perceive your users in depth: Learning universal user representations from multiple e-commerce tasks[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. ACM, 2018: 596-605.

4.Zhou G, Mou N, Fan Y, et al. Deep interest evolution network for click-through rate prediction[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2019, 33: 5941-5948.

5.Ren K, Qin J, Fang Y, et al. Lifelong Sequential Modeling with Personalized Memorization for User Response Prediction[J]. arXiv preprint arXiv:1905.00758, 2019.

6.Li C, Liu Z, Wu M, et al. Multi-Interest Network with Dynamic Routing for Recommendation at Tmall[C]//Proceedings of the 28th ACM International Conference on Information and Knowledge Management. ACM, 2019: 2615-2623.

7.Qi Pi, Weijie Bian, Guorui Zhou, Xiaoqiang Zhu, Kun Gai: Practice on Long Sequential User Behavior Modeling for Click-Through Rate Prediction. KDD 2019: 2671-2679

8.Ouyang, W., Zhang, X., Li, L., Zou, H., Xing, X., Liu, Z., & Du, Y. (2019). Deep Spatio-Temporal Neural Networks for Click-Through Rate Prediction. KDD.

繼續閱讀