博客專欄

        EEPW首頁 > 博客 > 2W字長文 | 漫談工業界圖神經網絡推薦系統(4)

        2W字長文 | 漫談工業界圖神經網絡推薦系統(4)

        發布人:數據派THU 時間:2021-12-18 來源:工程師 發布文章

        3. 論文介紹

        3.1 Graph Convolutional Neural Networks for Web-Scale Recommender Systems[46] [PinSage],KDD 2018,Pinterest

        問題背景:現有的GNN難以在大規模圖數據場景落地 業務場景:i2i Top N推薦(似乎因為場景復雜性低的問題,這里并沒有進一步分召回排序)

        圖的構建:Pin-Board二分圖,Pin是照片,Board類似收藏夾

        特征使用:Pin包含了圖像特征和文本特征,Board本身沒有特征,而是通過Average Pooling對應的Pin們得到

        采樣方法:Node-Wise Random Walk Sampling,使用個性化PageRank采樣鄰居,得分既可以用來加權聚合鄰居,也可以用來構造Hard Sample。

        Model Architecture:使用采樣時的得分加權聚合鄰居

        29.png

        Pinsage

        30.png

        Max-Margin Loss

        User在某個Pin下點擊的Pin構成一對正例,然后從其他Pin中隨機采樣一部分作為Easy Negative,采樣時得分位于某個范圍的Pin鄰居作為Hard Negative。Easy Sample往往很好區分,模型無法從中學習到有效信息,而Hard Negative則可以迫使模型學得更好,但是也容易導致收斂困難,因此可以在起初幾個Epoch只使用Easy Sample,然后再逐步加入Hard Sample

        3.2 Metapath-guided Heterogeneous Graph Neural Network for Intent Recommendation[41] [MEIRec],KDD 2019,阿里

        問題背景:當前的方法沒有充分利用關聯信息,作者利用異構圖和相應模型來建模學習;通過Term Embedding共享的方法來降低學習量。

        業務場景:底紋推薦排序階段

        圖的構建:群體用戶行為數據構建的Query-Item-User異構圖,目標是學習User和Query的Embedding。特征使用:

        Query和Item的Title共享Term Embedding,降低了需要學習的參數量,同時可以適應新的Query和Item

        User的embedding通過Q-I-U、I-Q-U兩條Meta-Path對應的鄰居聚合得到

        User Profile等靜態特征最后與GNN得到的Embedding Concat后輸入MLP

        采樣方法:Node-Wise Meta-Path隨機采樣

        模型結構:主要是對于不同類型的鄰居采用了不同的Aggregator

        對于Item的Query鄰居采用Mean Aggregator

        對于User的Item和Query鄰居采用LSTM Aggregator,考慮到了User對Item和Query的行為是有時序的

        對于Query的鄰居Item和User采用了CNN Aggregator

        31.png

        MEIRec

        3.3 IntentGC:a Scalable Graph Convolution Framework Fusing Heterogeneous Information for Recommendation[45] [IntentGC],KDD 2019,阿里

        問題背景:已有的工作大多利用社交網絡或共現關聯分別為User-Item二分圖中的Users和Items擴充內部連接,卻忽略了屬性關聯這一類豐富的信息。

        32.png

        業務場景:廣告推薦召回階段

        圖的構建:群體用戶行為數據+屬性數據構建以User和Item為主體的異構圖,接著通過User-Property-User和Item-Property-Item構建User-Item異構圖,屬性結點的類型決定了構建的邊的類型。

        特征使用:雙塔結構,可以用多種特征(不存在特征對齊的問題)

        采樣方法:先采樣一些User-Item Pairs(包括負樣本)作為mini-batch,然后對這些User和Item分別Node-Wise Sampling同構鄰居。Faster Convolutional Network: IntentNet

        Vector-wise convolution operation

        33.png

        公式(2)有兩個作用,一是以不同的重要性融合自身和鄰居信息,二是concat后的各維度間的特征交叉,作者認為自身Embedding和鄰居Embedding之間的特征交叉沒有意義,內部的特征交叉才是有意義的

        34.png

        公式(3)對公式(2)進行了簡化(時間復雜度和模型參數量都有所降低),在vector-wise的層次以不同重要性融合自身和鄰居信息,并且通過多組融合操作得到不同角度的信息(類似多個不同的卷積核),最終再進行一次加權融合。

        35.png

        IntentNet:再經過一個多層MLP進行特征交叉 Heterogeneous relationships:將Vector-wise convolution operation推廣到了存在多種類型關系的情形,對不同類型關系對應的鄰居分別聚合然后對得到的鄰域表征再加權融合

        36.png

        Dual Graph Convolution in HIN:對于User-User和Item-Item分別應用上述模型(雙塔結構),最終得到User和Item Embedding做點積,使用Pair-Wise Margin Loss訓練。

        37.png

        3.4 A Dual Heterogeneous Graph Attention Network to Improve Long-Tail Performance for Shop Search in E-Commerce[44] [DHGAT],KDD 2020,阿里

        問題背景:shop name和query的語義存在gap,很多時候shop name并不能表明含義;shop search場景的行為數據比較稀疏,特別是對于長尾的Query和Shop效果不佳

        業務場景:shop搜索召回階段

        圖的構建:長期群體用戶行為數據構建的shop-query-item異構圖

        Homogeneous Neighbors

        對于Query,某個用戶同一個Session內的Query之間構成鄰居;引導點擊同一個Shop的Query之間構成鄰居

        對于Shop,同一個Query下點擊的Shop之間構成鄰居

        Heterogeneous Neighbors

        Query下點擊的Shop,它們之間構成鄰居(但是這種關系是非常稀疏的)

        某個shop提供的item在某個query下被成交過,則該shop和query構成鄰居(本質上是二階鄰居,該關系相對豐富)

        shop提供的item,query下點擊的item,它們之間構成鄰居

        特征使用:

        DHGAT部分用的是Query、Shop、Item的ID特征

        TKPS部分用的是Query、Shop、Item的Term特征

        采樣方法:Node-Wise Sampling,對于Shop和Query,分別采樣N個Homogeneous和Heterogeneous鄰居,即2N個鄰居(防止熱門shop或query的影響)。

        Dual Heterogeneous Graph Attention Network:

        38.png

        先對同構鄰居和異構鄰居分別Attention Pooling,然后再對不同類型的鄰域Embedding加權融合,最后再與自身Embedding進行concat融合

        在對異構鄰居進行聚合時使用heterogeneous neighbor transformation matrix建模異構性

        這里item不作為target node,最終需要的是query和shop的embedding

        Transferring Knowledge from Product Search:利用行為數據相對豐富的product search場景的數據促進對shop search場景的學習

        39.png

        這里使用的是query,item和shop的terms mean pooling特征

        40.png

        由于quey和shop name語義的模糊性,聚合時不適合用Attention pooling,而是直接使用mean pooling

        41.png

        最后同樣融合自身表征

        Incorporating User Features:用戶自身的特點也會影響偏好,預測用戶在某query下是否會點擊某shop需要考慮該信息 Two-tower Architecture:對shop和query embedding的學習可以并行進行,線下訓練時可以存下user,query和shop embedding,其中shop embedding存的是最后一層的輸出(線上不可能再將所有的shop過一遍右塔),線上打分時獲取到user和query embedding,然后需要經過左側的塔得到一個融合的embedding(這個過程只需要進行一次,其線上開銷是可以接受的),接著通過LSH等方法召回相關的shop

        1.png

        Objective and Model Training

        2.png

        使用交叉熵損失訓練CTR預估任務,不過值得注意的是召回階段負樣本的選擇,不能是曝光未點擊的作為負樣本

        CTR Loss可能會導致不能充分學習到圖的拓撲信息,這里又進一步加了graph loss,從loss角度促進同構鄰居更相似

        3.5 M2GRL: A Multi-task Multi-view Graph Representation Learning Framework for Web-scale Recommender Systems[52] [M2GRL],KDD 2020,阿里

        問題背景:單個向量表達Multi-View(多種特征空間)信息可能會存在兩點問題,容量不足以及分布不同

        業務場景:商品推薦召回階段

        圖的構建:文中沒有具體談到,應該是群體行為數據構建的多個Single-View同構圖。但是值得注意的是,本文具體實現時并沒有用圖結構,而是類似Item2Vec的方法直接對行為序列用skip-gram建模。本文構建了三個Single-View圖,基于Item本身構建的圖,基于Item Shop構建的圖,基于Item-Category構建的圖

        3.png

        Node sequence sampling:用于下文的Skip-Gram方法,通過Session劃分盡量保持滑動窗口內Item的同構性

        Data Clean:去掉停留時間比較短的Item,用戶可能是誤點并不感興趣

        Session split and merge:用戶打開和關閉淘寶的時間段作為一個Session,對于時間較長的Session(幾個小時,可能是后臺運行)進一步拆分,對于時間較短(小于30分鐘)的兩個連續的Session進行合并 Intra-view Representation Learning:隨機采樣上文劃分后的Session序列,然后使用Skip-Gram方法訓練。

        4.png

        Inter-view Alignment:不同View的信息存在關聯,例如,某個Item屬于某類Category或者某個Shop,這里進一步學習該關聯使得相關的Item-Category或者Item-Shop的Embedding更加接近,使用了一個變換矩陣期望將不同View的Embedding映射到同一個特征空間。

        5.png

        Learning Task Weights with HomoscedasticUncertainty:考慮到許多任務聯合訓練,人工設置加權Loss不太現實,這里利用homoscedastic uncertainty來自動學習不同任務的重要性,最終不確定性越大(可學習的參數)的任務權重越低。

        6.png

        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: AI

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 武山县| 中西区| 永济市| 临湘市| 邳州市| 博爱县| 独山县| 逊克县| 石嘴山市| 鄂托克前旗| 乳山市| 大关县| 堆龙德庆县| 中西区| 尚义县| 泰兴市| 寿光市| 长汀县| 东阳市| 湖州市| 定边县| 文昌市| 清流县| 青海省| 旬阳县| 龙南县| 新晃| 昌邑市| 饶阳县| 寿光市| 达拉特旗| 庄浪县| 根河市| 龙陵县| 红桥区| 开鲁县| 延寿县| 万载县| 竹溪县| 桂林市| 安仁县|