天天看點

GNN在下拉推薦的應用

長尾QI的表達與樣本存儲優化

工作背景

GNN在下拉推薦的應用

圖 1.1 下拉推薦

下拉推薦屬于搜尋場景的導購産品,見圖 1.1 所示,其意義在于對使用者想搜的Query進行補全,以提高使用者的搜尋效率。近幾年下拉推薦排序模型更新到了深度模型,并進行了多次疊代優化,其中一個關鍵技術是使用者行為序列模組化。使用者行為序列模組化是搜尋推薦場景刻畫使用者興趣偏好變化的常用技術。從行為周期上,可以将行為序列劃分為中短期和長期,分别使用不同的時間跨度描述不同粒度的興趣。在下拉推薦場景,模型使用兩個中短期序列,近半個月行為過的Query序列和Item序列,分别與待排序的Query做Target Attention抽取與目前使用者意圖相關的偏好。與不使用序列的模型相比,離線AUC有多個pt的提升,由此可見序列模組化的重要性。最初下拉模型隻使用了長度為10的Item序列,後來擴充到長度為50的Query和Item序列,直覺上看,将序列加長可以包含更豐富的使用者曆史行為,但是也存在着以下幾點問題:

GNN在下拉推薦的應用

圖1.2 使用者活躍度分布(20210711)

▐  問題1:加長序列無法作用于曆史行為稀疏的不活躍使用者

目前下拉模型使用使用者近半個月的Query和Item序列,根據序列長度我們可以對使用者的活躍度進行劃分,詳情見圖 1.2所示,表示兩個序列的長度都落在某個範圍内。可以看到,隻有一半的使用者近半個月行為過的Query和Item都超過20個,大約有16%左右的使用者行為過的Query和Item都不滿20個。對于這些不活躍的使用者,我們無法加長他們的行為序列,預期模型也不能做出較好地預測。圖 1.3是Base模型在不同活躍度使用者上的AUC,字尾表示訓練樣本中行為序列的最大長度,可以看到,base_20和base_50在行為序列長度小于20的使用者上效果幾乎持平。對于那些可以加長行為序列的使用者,base_50則表現得比base_20好得多,符合預期。

GNN在下拉推薦的應用

圖 1.3 Base模型在不同活躍度使用者上的AUC(20210711)

▐  問題2:加長序列對曝光次數較少的長尾Query的效果較弱

在下拉場景馬太現象非常明顯,一小部分Query占據了絕大多數PV。長尾Query不僅訓練樣本比較少,在Query序列裡占比也比較低。加長序列可以包含更多的Query,使得Query Embedding被更充分地學習,但是對長尾Query效果相對有限。圖 1.4是Base模型在不同PV的Query上AUC,1-10表示PV從高到低,可以看到,相比較base_20,base_50在長尾Query上的提升遠不如高頻Query。

GNN在下拉推薦的應用

圖1.4 Base模型在不同PV的Query上的AUC(20210711)

▐  問題3:加長序列帶來的收益與巨大的存儲消耗之比不高

一方面,加長序列所帶來的收益具有邊際效應,通過可視化Attention值也能發現,序列中的有效成分主要集中在前20,如圖 1.5所示(顔色越淺Attention值越大)。另一方面,行為序列内是大量重複的Query、Item等,在目前的資料組織方式下有備援存儲的問題,是訓練資料和樣本中的存儲大頭。事實上,存儲資源緊張也是目前部門内的一個較為突出的問題。

GNN在下拉推薦的應用

圖 1.5Query序列Attention值熱力圖

既然加長序列存在着以上一些問題,是否存在更有效的拓展序列的方式?排序模型通過行為序列抽取使用者偏好,相當于在Item-User-Query異構圖中分别聚合1階Item和Query鄰居來表征使用者User,我們自然想到可以通過建構更加複雜的圖結構來為序列提效。例如,建構一張Query和Item之間的異構圖,通過GNN在圖中聚合鄰居結點,學習Query或Item的Graph Context資訊,用于表征使用者的寬泛的潛在的偏好。圖 1.6是一個例子,使用者搜過“西餐餐具”,在輸入“牛”字首時,由于“西餐餐具”的Graph Context資訊中包含了“牛排”的資訊(兩者在圖中是鄰居),模型就更可能把“牛排”排到“牛仔褲”的前面。可以看到,無論對于不活躍使用者還是長尾Query,都可以在圖中擷取到一些額外的資訊,并且通過鄰居間的互動促進對Embedding的學習。

GNN在下拉推薦的應用

圖 1.6 鄰居資訊

總的來說,針對上述三個問題,我們引入鄰居資訊,用圖神經網絡模組化,期望在更小的存儲消耗下更有效地拓展序列,并對不活躍使用者和長尾Query有較好的效果。同時結合實驗分析歸納出一些GNN在下拉場景的一般性的結論。全文按照實習工作的推進順序組織。

前期調研

下拉場景的資料具有兩個特點,一是資料規模龐大:每天有億級的使用者規模和億級的樣本規模;下拉底池Query的數量級為千萬級。二是資料類型複雜:使用者行為有點選、加購、成交等;行為對象有Query(查詢)、Item(商品)等。針對這兩個特點,在圖神經網絡方面着重調研了大規模和異構性兩個方向,在搜推的應用方面着重調研了工業界的一些工作。

▐  圖神經網絡的研究方面

GCN是從譜圖卷積ChebNet近似推導而來,包含消息傳遞和特征變換兩種操作。GAT考慮了鄰居結點的重要性,引入了可學習的自注意力機制。但是它們都隻适用于小規模,非異構的圖資料。針對大規模資料,GraphSage提出了Node-Wise的采樣方法:首先随機采樣出一個批量的結點,然後分别随機采樣固定數量的鄰居,不斷重複該過程。Node-Wise采樣的鄰居數量随層數指數增長;FastGCN提出了Layer-Wise的采樣方法,對于每一層獨立采樣固定數量的結點,采樣的鄰居數量随層數線性增長,但是結點之間是高度稀疏的;ClusterGCN提出了Subgraph的采樣方法,首先用Metis等算法将圖劃分為子圖,然後每個批次随機在某個子圖上訓練。子圖采樣可以預計算,但是容易産生不平衡子圖。針對異構性資料,RGCN根據邊的類型采用不同的變換矩陣,并且将中心結點和鄰居結點分開處理;HAN将GAT擴充到異構圖上,不僅考慮了不同鄰居結點的重要性,也考慮了不同語義的meta-path的重要性。

▐  GNN在搜推的應用方面

GC-MC将RGCN作為編碼器,雙線性點積作為解碼器,結點關系作為監督信号,将推薦任務模組化為連結預測;NGCF在GCN的傳播公式中加入親和項,同時通過堆疊多層學習高階資訊;KGAT借鑒TransR模組化不同類型的實體和關系,并與注意力機制相結合。以上工作都是在小資料上的嘗試,并沒有在大規模真實場景中落地。PinSage是Pinterest在圖檔推薦場景的嘗試,首次将GCN應用到工業級推薦,基于Random Walk進行鄰居采樣,并使用了Hard Negative Sampling、Curriculum Training等技巧;MEIRec是阿裡在底紋推薦場景的工作,通過meta-path随機采樣鄰居,對于不同類型的鄰居分别采用Mean、LSTM和CNN聚合,并通過Term Embedding共享降低參數量和提高泛化性;DHGAT是阿裡在商店搜尋場景的工作,基于共現頻數随機采樣鄰居,類似于HAN同時考慮鄰居結點和鄰域類型的重要性,并對不同類型結點Embedding空間的差異模組化。

初步方案

▐  結合方式

如何将圖神經網絡與下拉排序模型結合是一個問題,有兩種可行的方式:

  • 圖神經網絡部分單獨預訓練

得到的Query和Item Embedding以初始化或Concat的方式作為補充資訊輔助排序模型的訓練。但是經過咨詢了解到,之前預訓練的方式幾乎沒有效果,下拉模型使用的Embedding也都是端到端訓練得到的。一個可能的原因是,端到端訓練得到的Embedding與目标任務更加相關。

  • 将GNN嵌入排序模型端到端訓練。

GNN作為大模型中的一個前置子產品,為序列中的Query和Item學習Graph Context資訊作為補充,在CTR預估目标下進行端到端的訓練。最終決定采用這種方式。

▐  圖的建構

排序模型通過行為序列抽取使用者偏好,相當于在Item-User-Query異構圖中分别聚合1階Item和Query鄰居來表征使用者User。我們可以在Item和Query之間建構更多關系引入更豐富的資訊。一方面可以通過使用者行為建構共現關系,例如在Query A下Item B共被購買過N次,則在Query A和Item B之間生成一條邊,權重為共現頻數N;另一方面可以通過Query或Item屬性建構屬性關系,例如Query A和Query B具有共同屬性Attribute C,則在Query A和Query B之間生成一條邊,權重可設定為1。本次實驗隻建構了共現關系。具體而言,根據内部已有的幾張表,建構了Query和Item的異構高階圖,包含了q2i、i2q、q2q、i2i幾種關系。

由于是通過使用者行為來建構圖,就需要考慮圖的實時性變化。此外,圖的結點和邊都是上億級别的,還需要考慮對圖進行采樣。圖 3.1是Item“635266613678”在20210606和20210607的i2q鄰居權重分布圖,其top10的鄰居的從高到低都是“刀叉”、“西餐餐具刀叉”、“牛排刀叉”、“刀叉餐具”、“刀叉牛排”、“西餐刀叉勺”、“西餐刀叉”、“牛排刀”、“牛排餐具刀叉”、“牛排刀叉兩件套”。q2i、q2q、i2i也有類似的分布。我們可以觀察到兩個特點:

  1. 鄰居及其權重分布在天級的時間尺度上變化不大。是以我們可以在第T天使用第T-1天的資料建構鄰居。
  2. 鄰居的權重集中在前幾個呈現出長尾分布的趨勢。如果根據權重分布進行采樣,大機率會集中在前幾個鄰居,考慮到采樣帶來的額外開銷,我們可以用TopN的鄰居進行近似。當然這樣也會存在潛在的問題,Top N估計是有偏的,也可能不利于模型的泛化性。
GNN在下拉推薦的應用

圖 3.1 Item 635266613678 在20210606-20210607的鄰居權重分布

▐  特征利用

在生成訓練資料時,Query和Item鄰居的特征與目前排序模型基本一緻。在實驗時通過mc.json檔案配置真正用到的特征,在不同階段的實驗中用到的特征有所變化。

▐  模型結構

GNN作為排序模型序列模組化部分的一個前置子產品,為序列中的Query和Item學習Graph Context Embedding,然後通過以下兩種方式進行結合,最終采用哪種方式通過實驗确定。

GNN在下拉推薦的應用

圖 3.3 模型結構(Graph Context Feature)

  • Graph Context Feature

将學習到的Graph Context Embedding拼接到原來序列中的Query或Item的特征上,見圖 3.3中的子產品2所示。

GNN在下拉推薦的應用

圖 3.4 模型結構(Graph Context Sequence)

  • Graph Context Sequence

将學習到的Graph Context Embedding作為單獨的序列與待排序的Query做Target Attention,抽取與使用者目前意圖相關的寬泛的潛在的偏好,見圖 3.4中的子產品2所示。

▐  代碼實作

集團内部已有AliGraph、GraphML、Euler等圖架構,但是考慮到我們是在大模型上做改動,要求這些架構與AOP等平台較好地相容,經過調查發現這些圖架構均不滿足,是以決定将鄰居也組織成序列的格式,在模型代碼中通過索引去定位各自的鄰居。例如,有一個Batch的長為20的Query序列,對序列中每個Query采樣5個1階鄰居,将其按照順序組織為長為100的序列,在模型代碼中Query序列的Shape為(B, 20, d)經過Reshape為(B, 20, 1, d),鄰居序列的Shape為(B, 100, d)經過Reshape後為(B, 20, 5, d),鄰居結點和中心結點的位置就一一對應上了,後續的GNN操作也可通過矩陣操作進行。

快速嘗試

初期不涉及對模型本身的詳細設計,主要目标是快速驗證方案的可行性,同時擷取一些發現以指導後續實驗的調整與模型的改進。在這一階段僅使用5個1階鄰居,20210607-20210613共計7天的資料用于訓練,20210614的資料用于驗證。下文中“GCN”表示以mean的方式聚合鄰居,“No Aggregator”表示不經過聚合操作,直接将所有鄰居用于特征拼接(Graph Context Feature)或者單獨序列(Graph Context Sequence),這主要是考慮到“GCN”過于簡單可能無法發揮鄰居資訊的作用,而“No Aggregator”作為一種無損的方式也許可以有所保證(當然前提是模型能有效抽取資訊)。“Base”表示目前的下拉排序模型,“Base_20”和“Base_50”分别表示訓練樣本中的序列長度為50和20。需要注意的是,GNN使用的都是長為20的序列。所有模型都使用同一套超參數,例如學習率、衰減率、Batch Size等等。詳細的實驗設定見表 4.1。

Hyperparameter Value
Neighborhood Size 5
Neighborhood Depth 1
Train Dataset 20210607-20210613
Valid Dataset 20210614
Learn Rate、Weight Decay、Batch Size...... The same as base model

表 4.1 實驗設定

▐  Graph Context Feature

Base_50 83.43
Base_20 83.37
Neighbor/Aggregator-> GCN No Aggregator
A: +q2q & i2i & q2i & i2q 83.54 83.36
B: +q2i & i2q 83.49 83.34
C: +q2q & i2i
D: +i2q 83.47 83.33

表 4.2 Total AUC

采用Graph Context Feature這種将鄰居資訊拼接到原來的中心結點特征上的方式,總體AUC見表 4.2。我們可以有如下幾個發現:

  • Base_50相對Base_20有略微正向的提升,說明加長序列是有收益的但是不明顯(萬分之6)
  • 對于GCN
    1. 加入各種鄰居均有略微正向的提升,說明鄰居資訊是有效的但是在目前設定下效果不明顯。(最高千分之1.5)
    2. 同構鄰居q2q & i2i相比異構鄰居q2i & i2q效果更明顯。可能的原因是q2i & i2q資料比較稀疏,經過統計發現其存在50%左右的結點鄰居個數不足5個,而q2q & i2i隻有15%左右的這樣的結點,更多的資料則意味着更多的資訊,詳情見圖 4.1。
GNN在下拉推薦的應用

圖 4.1 鄰居個數不足5個的結點的占比

    1. 同構鄰居和異構鄰居均有一些收益,但是同時加入它們卻沒有進一步的提升。可能的原因有:一是兩種類型的鄰居包含的資訊有重疊,二是Graph Context Feature的方式不利于資訊的抽取。
  • 對于No Aggregator

可以看到,除了同構鄰居q2q & i2i,加入其它鄰居收益均為負。可能的原因仍然與上述的資料稀疏有關,q2i和i2q有大量鄰居不足5個,為了保持次元上的對齊,在代碼裡這部分被置為了0,導緻經過特征拼接後,Query和Item的Embedding中包含了大量0值(始終為0),而這非常不利于深度模型的訓練。

▐  Graph Context Sequence

83.62
83.55 83.52
83.57 83.61

表 4.3 Total AUC

采用Graph Context Sequence這種将鄰居資訊作為單獨的序列與待排序的Query做Target Attention的方式,總體AUC見表 4.3。我們可以有如下幾個發現:

    1. 相比Graph Context Feature的方式,有兩個方面的提升:

      總體AUC均有所上漲。相比Base_20的最高提升由之前的千分之1.5到現在的千分之2.5。

      同時加入同構鄰居和異構鄰居能夠帶來進一步的提升。可能的原因是将鄰居資訊作為單獨的序列,相比特征拼接的方式,在用Target Query做興趣抽取時,能夠最大限度地保留Graph Context的資訊。至于特征交叉可以交給末層的MLP來做。

    2. 同構鄰居q2q & i2i相比異構鄰居q2i & i2q效果明顯一點。原因同上。
  1. 對于No Aggregator:當加入4個鄰居序列後,模型的AUC有很明顯的下降。可能的原因是序列太長(100)加上參數變多(4組參數),模型可能難以收斂了。表 4.4是A組結果中GCN和No Aggregator下i2i鄰居序列前4個位置的Attention曲線對比(其他位置情況類似),可以看到,No Aggregator确實沒有收斂。
GNN在下拉推薦的應用
GNN在下拉推薦的應用

表 4.4 i2i鄰居序列Attention曲線對比

▐  Hierarchical Attention

Neighbor/Model-> +neig atten +neig & seq attenneig +neig & seq attenall
A: +q2q & i2i & q2i & i2q (100%) 83.46
B: +q2i & i2q (75%)
C: +q2q & i2i (75%) 83.50
D: +i2q (60%) 83.41 -

表 4.5 Total AUC

4.1和4.2結果說明了兩點,一是引入鄰居資訊并用GNN模組化是有效的,二是Graph Context Sequence的方式優于Graph Context Feature。在此基礎上,一方面從圖 3.1的Score分布可以看到同種鄰居的重要性存在差異,另一方面從之前的實驗結果可以看到不同鄰居的重要性也存在差異。是以在該部分快速實驗了下Attention機制:Neighbor Attention和Sequence Attention,總體AUC見表 4.5。Neighbor Attention是在聚合鄰居時自适應學習邊的權重,考慮到這裡用Target Attention計算量很大,是以使用的是中心結點做Attention。Sequence Attention是将Sequence Embedding權重融合後再送入最後的MLP子產品,這裡用的是Target Attention。seq attenneig表示隻對鄰居序列做融合,力求最小限度改動原有的模型。seq attenall表示對所有序列一起做融合。我們可以有如下幾個發現:

  1. 縱向對比,總體上AUC相比GCN大降,不符合預期,至少應該不比GCN差。可能的原因是模型變複雜以後,僅用7天的資料訓練已經難以收斂了。表 4.6是A組結果中GCN和+neig & seq attenall最好的結果下i2i鄰居序列前4個位置的Attention曲線對比,可以看到,同樣存在着沒有收斂的問題。
  2. 橫向對比,Sequence Attention有非常微小的收益,并且當序列數量越多時越明顯,符合預期。
  3. 對比GCN或者+neig & seq attenall與Base模型的Attention值還能發現,盡管整體上鄰居序列也是前幾個位置Attention值比較大,後幾個位置的Attention值比較小,但是它們之間的Gap(0.017)相對Base模型(0.12)并不明顯。可能的原因是鄰居序列中沒有使用時間特征。
GNN在下拉推薦的應用
Attention
GNN在下拉推薦的應用

表 4.6 i2i鄰居序列Attention曲線對比

為了驗證Neighbor Attention和Sequence Attention的有效性,我們可以進一步觀察模型學習到的Attention的值。Neighbor Attention如表 4.7所示,Sequence Attention如表 4.8所示。

location-> 2 3 4
q2q 0.2279 0.2044 0.1946 0.1885 0.1846
q2i 0.2160 0.2021 0.1967 0.1936 0.1922
i2i 0.1954 0.1975 0.2001 0.2017 0.2034
i2q 0.2449 0.1895 0.1858 0.1844

表 4.7 Neighbor Attention

在組織鄰居結點時,位置1-N按照共現頻數從高到低排列。從表 4.7可以看到,整體上鄰居的注意力分布确實符合這一趨勢。

sequence-> query seq item seq q2q seq q2i seq i2i seq i2q seq
attention-> 0.2755 0.1730 0.090 0.1156 0.2060 0.1418

表 4.8 Sequence Attention

一方面,Query和Item Sequence作為原始序列,所能提供的資訊最多,相對鄰居序列更重要。另一方面,從之前的結果可以看到,不同的鄰居序列的重要性也有差異。表 4.8的結果與預期基本一緻。

總體改進

▐  樣本側

  • 問題A

線上排序模型使用的是14+天的訓練資料。在之前的實驗中當模型變得複雜以後,僅用7天的訓練資料模型已經難以收斂了。是以在之後的實驗中将訓練資料補到了10天(20210701-20210710)。

  • 問題B

模型對鄰居序列學習到的Attention值之間差異不大,是以在樣本中為鄰居結點加上了中心結點的時間特征,相當于引入了時間越近越重要的先驗知識引導模型學習。

▐  模型側

問題A:在鄰居聚合(Attention)時使用了多套不同的參數,參數量随鄰居序列的數量的增加而增長,之前的實驗中模型已經難以收斂了,後續加入更多高階鄰居後問題會更加突出。為此通過Node-Type-Specific Transformation和Edge-Type-Specific Attention模組化圖的異構性并共享相關參數降低參數量。

問題B:之前的實驗中,對于每種鄰居序列都與Target Query做Attention,計算量随鄰居序列的數量的增加而增長,盡管這一步是并行的其計算量開銷仍然不可忽略。為此加入了融合不同類型鄰居資訊的操作,以及融合鄰居和自身資訊的操作(除中心結點),最後分别為Query和Item序列得到一個融合了異構高階資訊的Graph Context序列。

GNN在下拉推薦的應用

圖 5.1 模型結構

模型的整體結構如圖 5.1所示。GNN部分作為排序模型的一個子產品,為Query和Item Sequence分别學習一個Graph Context Sequence作為補充資訊。其中比較關鍵的是:Node-Type-Specific Transformation和Transformer-Like Attention(In-Neighborhood Attention,Inter-Neighborhood Attention,Inter-Sequence Attention)。下面以Query類型的結點為例具體介紹這幾種操作。

  • 5.2.1 Node-Type-Specific Transformation

不同類型的結點的特征次元和特征空間都存在差異,通過特定于結點類型的特征變換操作,一方面可以将特征次元對齊,另一方面盡可能拉近特征空間,便于後續不同類型的結點之間的特征融合(尤其是加法融合)。詳情見公式(1),其中

GNN在下拉推薦的應用

表示Query類型的結點對應的變換矩陣,

GNN在下拉推薦的應用

表示Query結點的初始Embedding。

GNN在下拉推薦的應用

公式 (1)

  • Hierarchical Heterogeneous Transformer-Like Attention

下拉排序模型中序列與Target Query之間用的是Transformer中點積的方式計算Attention。GAT(圖注意力神經網絡)中用的是一個帶LReLU的隐層計算Attention,在計算複雜度上比點積高一些。此外,考慮到計算方式的一緻性,在GNN部分使用了Transformer的方式,并根據圖的異構性做了一些修改。共計有4個層次的Attention。

In-Neighborhood Attention

鄰域内同種類型的鄰居的重要性有差異,這從鄰居共現頻數分布也能看出(本次實驗采用的是Top N采樣,差異可能不如随機采樣明顯)。為此在聚合同種類型的鄰居時使用Attention機制。中心結點是Q,鄰居結點是K和V,由于已經經過了Node-Type-Specific Transformation,這裡不再對Q,K和V做特征變換。此外,考慮到邊的類型對相似性的影響,這裡的點積是特定于邊的類型的雙線性點積。詳情見公式(2)-(5),其中

GNN在下拉推薦的應用

分别表示Query的同構(Homogeneous)和異構(Heterogeneous)鄰居,

GNN在下拉推薦的應用

分别表示q2q和q2i類型的邊對應的參數矩陣。

GNN在下拉推薦的應用

是Layer Normalization,用于保持資料的分布。

GNN在下拉推薦的應用

是Scale Factor,用于将方差縮至1。

GNN在下拉推薦的應用

公式(5)

Inter-neighborhood Attention

除了鄰域内同種類型的鄰居的重要性有差異,鄰域間不同類型的鄰居的重要性也有差異,這從之前的加入不同類型鄰居序列的實驗結果也能看出。為此在融合不同類型的鄰居時也使用Attention機制。此外,考慮到當存在異構鄰居時,Attention的值更容易被中心結點自身所主導,在進行特征融合時鄰居資訊就容易被稀釋掉,是以這裡中心結點不作為K、V參與Attention的計算。詳情見公式(6)-(7)。

GNN在下拉推薦的應用

公式(7)

最終的Embedding見公式(8),其中

GNN在下拉推薦的應用

為激活函數ReLU。需要注意的是,最初的Query和Item自身不參與特征融合,也就是說,最終得到的是最初的Query和Item的

GNN在下拉推薦的應用

的Graph Context資訊。

GNN在下拉推薦的應用

公式(8)

對于GCN,以上公式中的重要性系數

GNN在下拉推薦的應用

則替換為了相應的平均系數,其他地方都保持一緻,下文中稱之為HGCN。

  • In-Sequence Attention:這一部分與下拉模型保持一緻,使用Transformer抽取序列中與Target Query相關的使用者偏好。
  • Inter-sequence attention:這裡延續了快速嘗試部分的Sequence Attention子產品,在新的訓練樣本上進一步通過實驗探究其有效性。

Sequence Attention相比直接concat的一個缺點是,不能經過MLP層與Prefix、User Profile等特征進行充分的特征交叉。

實驗驗證

在快速嘗試的實驗的基礎上,擴大了樣本規模,新增了樣本特征,并針對性地改進了模型。在這一部分,首先會驗證GCN下是否還有類似的結論,接着驗證改進後模型的總體效果如何,然後驗證加寬鄰居是否會帶來收益,最後驗證加深鄰居是否會帶來收益。總體上,之前的改進是有效的,在資料規模變大後,相比之前千分之2.5的提升,AUC不僅沒有下降反而進一步提升至千分之4.1。

▐  GCN下是否還有類似結論

84.36
84.09
HGCN
A:+q2q & i2i & q2i & i2q 84.44
B:+q2i & i2q 84.42
C:+q2q & i2i 84.47

表 6.1 Total AUC

HGCN與GCN唯一的差別是以Mean的方式融合了不同類型的鄰居,總體AUC見表 6.1。可以發現,以下幾個結論仍然保持不變:

  1. 加長序列仍然是有效的,并且效果變得更加明顯(千分之2.5)。
  2. 加入各種鄰居序列都能帶來收益,并且同構鄰居收益最大(千分之3.8)。

不過我們也能發現,當同時加入所有鄰居,模型的效果卻下降了。這可能是由于Mean的融合方式引起的,實際上不同的鄰居重要性是有差異的。

▐  改進後模型總體效果如何

首先,為鄰居結點加上時間特征後,前後位置的Attention值的Gap由之前的0.017擴大到了0.11,說明時間特征可以更好地引導Attention的學習。

GNN在下拉推薦的應用
GNN在下拉推薦的應用

表 4.6 Item neighbor Sequence Attention曲線對比

其次,經過擴充資料規模,加入時間特征,改進模型結構後,模型已經能夠收斂得很好了,見圖 6.1所示。

+In-neighd attention +In-neighd attention& Inter-neighd attention +In-neighd attention& Inter-neighd attention& Inter-seq attention
84.45 84.50
84.43 --

表 6.2 Total AUC

那麼,相比之前加入Attention後效果大降,改進後Attention模型的效果如何呢?總體AUC見表 6.2所示。我們可以有以下幾個發現:

縱向對比,相比之前加入Attention後效果大降,現在總體上相比HGCN均有微小提升,這說明之前的改進是有效的。

  1. 加入In-neighd attention後有微小提升,說明Top N鄰居的重要性差異并不明顯。
  2. 加入 Inter-neighd attention有進一步提升,并改善了HGCN加入所有鄰居後效果下降的問題,說明不同類型的鄰居的重要性确實有差異。
  3. 加入Inter-seq attention後效果仍然持平,說明對Sequence Embedding的融合必要性不大。

▐  加寬鄰居是否會帶來收益

GNN在下拉推薦的應用

圖 6.1 AUC随鄰居寬度的變化趨勢

加寬鄰居是一種常見的操作,更多的鄰居意味着更多資訊(也可能引入更多噪聲),這裡通過實驗來驗證加寬鄰居的有效性,AUC随鄰居寬度的變化趨勢如圖 6.1所示。這裡對HGCN和Attention都+q2q & i2i & q2i & i2q,其中Attention為+In-neighd attention & Inter-neighd attention。我們可以有如下幾個發現:

  1. 2-6個鄰居基本已經足夠了。
  2. Attention整體上優于HGCN,但是優勢并不突出。

以上兩點可能都是由Top N的采樣方式引起的,前Top N個鄰居的重要性差異不大,并且所提供的的資訊可能也是重疊的。

▐  加深鄰居是否會帶來收益

Model 2 hop size=0 2 hop size=3
84.39
84.40

表 6.3 Total AUC

加深鄰居也是一種常見的操作,更深的鄰居可能蘊含高階的資訊。這裡考慮到實作方式的限制,隻驗證了2階鄰居相對1階鄰居是否存在收益,其中1 hop size=6,2 hop size=3。事實上,在GNN的相關研究中,2-3階的鄰居基本已經足夠了,引入太高階的鄰居反而有副作用(源于圖的直徑一般都不大),總體AUC見表 6.3所示。此外,這裡隻使用了鄰居結點的ID特征和時間特征。我們可以有以下幾個發現:

  1. 2 hop鄰居确實能夠提供更多資訊,其AUC有較明顯的提升。
  2. 即使隻使用1階鄰居,隻使用ID特征,隻使用HGCN,也能夠達到比Base_50略好的效果。也就是說我們可以使用更少的資料,而且不引入額外的模型參數,就能夠達到Base_50的效果。
  3. Attention的效果和HGCN相比仍然相差不大。

問題解決

至此,基于以上的實驗結果可以回答開篇提到的三個問題,分析引入鄰居資訊并用GNN模組化是否起到了作用。

GNN在下拉推薦的應用

圖 7.1 在不同活躍度使用者上的AUC(20210711)

GNN對不活躍使用者有明顯效果。模型在不同活躍度使用者上的AUC對比見圖 7.1所示,可以有以下幾點發現:

  1. base_50在低活使用者上效果與base_20幾乎持平,但是GNN在低活使用者上效果卻有顯著提升。
  2. 即使在base_50表現優異的高活使用者上,GNN在隻使用長20的序列的基礎上,效果也比base_50略好。
GNN在下拉推薦的應用

圖 7.2 在不同PV的Query上的AUC(20210711)

GNN對長尾Query也有明顯效果。模型在不同PV的Query上的AUC見圖 7.2所示,可以發現在長尾Query上GNN相對Base_20和Base_50均有所提升,在Base_50表現優異的高頻Query上GNN也能夠保持持平。

GNN在下拉推薦的應用

圖 7.3 存儲消耗與AUC對比

GNN可以用更少的存儲獲得更好的效果。模型使用的訓練資料存儲消耗與取得的AUC的對比見圖 7.3所示,其中*表示隻使用了鄰居結點的ID特征和時間特征,此處HGCN和Attention都隻使用了1階q2q和i2i鄰居。可以看到,在存儲量隻有Base_50的60%情況下,GNN卻能取得比Base_50略好的效果;在存儲量隻有Base_50的80%的情況下,GNN相對Base_20可以取得千分之4的提升,相對Base_50可以取得千分之1.5的提升。

未來工作

本次實習工作針對下拉排序模型存在的三個問題,引入鄰居資訊并用GNN模組化取得了一定的效果,也為如何在序列上進一步提效提供了另一個角度。相比加長序列,GNN可以顯著提升模型在不活躍使用者和長尾Query上的效果,并且可以用更少的存儲量取得更高的總體收益。同時也能看到仍然存在着一些也許可以改進的地方:

  1. Top N采樣方式是否合理。考慮到采樣帶來的消耗,基于資料的長尾分布,本次實驗中采用了Top N的采樣方法進行簡化近似。但是Top N采樣可能會導緻采樣到的N個鄰居區分度不大,包含的資訊重合,這可能是Attention無法發揮優勢的原因,以及加寬鄰居存在嚴重的邊際效應的原因。同時,如果未來部署到線上,面對線上的資料分布,Top N采樣可能會限制模型的泛化能力。
  2. 給Target Query加上鄰居資訊。本次實驗中隻引入了序列中Query和Item的鄰居資訊,由于Query之間共享Embedding可以間接地作用于Target Query。後續也可以給Target Query也加上鄰居資訊,以更直接的方式促進對長尾Query的學習。
  3. 用Prefix Attention代替Neighbor Attention。對于鄰居資訊我們需要的同樣隻是與Target Query相關的部分。本次實驗沒有用Target Attention是考慮到計算量的問題,而Prefix Attention則不存在這個問題,并且Prefix在大多數情況下足以表明使用者目前的意圖。後續可以實驗對比下序列模組化中Target Attention和Prefix Attention的效果,然後再決定鄰居聚合中是否使用Prefix Attention。

總結展望

本次暑期實習收獲很多,經曆了一個完整的發現問題分析問題到解決問題的過程。相比之前在學校搞科研接觸到的工作,不再是使用現成的玩具資料集,而是自己處理百億級的資料集;不再是魔改模型後對着結果講故事,而是針對真實的問題使用合适的技術;模型效果的提升不是意義不大的數字,而是有可能線上上産出實際的商業價值。同時學習了DataWork,AOP,語雀的使用,感受到了先進工具對生産力的提升。未來的計劃方面,主要有以下幾點:

  1. 将現在的工作上線一個簡單的版本,看一下是否能夠線上上也取得效果。
  2. 将現在的工作繼續完善,包括更好的采樣方法,更優質的鄰居資料,Target Query側加上鄰居資訊,Prefix Attention代替Neighbor Attention。在這之後将工作整理成論文投一個會議。
  3. 系統深入廣泛地學習一下推廣搜方面的資料。
  4. 在實際業務中解決更多問題獲得更多成長。

最後,非常感謝谷仁老師,筠荻老師和開鋒老師的支援與幫助。

參考文獻

[1] Wu Z, Pan S, Chen F, et al. A comprehensive survey on graph neural networks[J]. IEEE transactions on neural networks and learning systems, 2020.

[2] Wu S, Sun F, Zhang W, et al. Graph neural networks in recommender systems: a survey[J]. arXiv preprint arXiv:2011.02260, 2020.

[3] Wang S, Hu L, Wang Y, et al. Graph learning approaches to recommender systems: A review[J]. arXiv preprint arXiv:2004.11718, 2020.

[4] Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. arXiv preprint arXiv:1609.02907, 2016.

[5] Veličković P, Cucurull G, Casanova A, et al. Graph attention networks[J]. arXiv preprint arXiv:1710.10903, 2017.

[6] Hamilton W L, Ying R, Leskovec J. Inductive representation learning on large graphs[J]. arXiv preprint arXiv:1706.02216, 2017.

[7] Chen J, Ma T, Xiao C. Fastgcn: fast learning with graph convolutional networks via importance sampling[J]. arXiv preprint arXiv:1801.10247, 2018.

[8] Chiang W L, Liu X, Si S, et al. Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Networks[J]. arXiv preprint arXiv:1905.07953, 2019.

[9] Schlichtkrull M, Kipf T N, Bloem P, et al. Modeling Relational Data with Graph Convolutional Networks[J]. arXiv preprint arXiv:1703.06103, 2017.

[10] Wang X, Ji H, Shi C, et al. Heterogeneous graph attention network[C]//The World Wide Web Conference. 2019: 2022-2032.

[11] Berg R, Kipf T N, Welling M. Graph convolutional matrix completion[J]. arXiv preprint arXiv:1706.02263, 2017.

[12] Wang X, He X, Wang M, et al. Neural Graph Collaborative Filtering[J]. arXiv e-prints, 2019: arXiv: 1905.08108.

[13] Wang X, He X, Cao Y, et al. KGAT: Knowledge Graph Attention Network for Recommendation[J]. arXiv e-prints, 2019: arXiv: 1905.07854.

[14] Zhang C, Song D, Huang C, et al. Heterogeneous graph neural network[C]//Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2019: 793-803.

[15] Hu Z, Dong Y, Wang K, et al. Heterogeneous Graph Transformer[J]. arXiv preprint arXiv:2003.01332, 2020.

[16] Lv Q, Ding M, Liu Q, et al. Are we really making much progress? Revisiting, benchmarking, and refining heterogeneous graph neural networks[J]. 2021.

[17] Ying R, He R, Chen K, et al. Graph Convolutional Neural Networks for Web-Scale Recommender Systems[J]. arXiv e-prints, 2018: arXiv: 1806.01973.

[18] Fan S, Zhu J, Han X, et al. Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation[J]. 2019.

[19] Niu X, Li B, Li C, et al. A Dual Heterogeneous Graph Attention Network to Improve Long-Tail Performance for Shop Search in E-Commerce[J].

[20] Chen C, Ma W, Zhang M, et al. Graph Heterogeneous Multi-Relational Recommendation[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2021, 35(5): 3958-3966.

[21] Vaswani A, Shazeer N, Parmar N, et al. Attention Is All You Need[J]. arXiv preprint arXiv:1706.03762, 2017.

團隊介紹

我們來自淘寶搜尋算法團隊,負責淘寶App搜尋使用者增長和搜尋導購、商品排序,負責業務包括底紋、下拉、相關搜尋等億級别Query推薦場景,技術包括召回、海選、精排、重排序等,團隊優勢有:

  1. 業務空間大、基礎設施完善:場景海量回報,在工程團隊的支援下,算法工程師可以輕松上線百G模型,分鐘級更新,更加注重算法本身。
  2. 隊氛圍好、研究與落地深度結合:實習期間會考慮同學成長,避免接觸複雜的業務問題,由資深師兄根據同學優勢與興趣定義好業務問題,輔導研究,最終實習工作以論文呈現,給每位同學都有充分的成長空間;團隊在SIGIR、KDD、AAAI等會議有穩定産出。

人才需求:有機器學習、深度學習有一定了解,有LTR或NLP相關業務經驗,如果不确定自己能力能否比對或有任何問題,可以先非正式的找我聊下,如果合适再進入正式面試流程。聯系微信: xiaofei0885 或發郵件到我郵箱guren.xf#alibaba-inc.com(發送郵件時,請把#替換成@)

繼續閱讀