導讀:在深度神經網路技術興起的前幾年,影象、語音、文字等形式的資料都能在深度學習中被很好地應用。近年來作為一類主要用來描述關係的通用資料表示方法——圖資料,也在產業界產生日趨廣闊的影響力。作為一項新興圖資料學習技術,圖神經網路自2018年開始在頂會論文中嶄露頭角。其中,圖表徵學習法指的是透過神經網路計算方法,根據節點屬性、邊和邊的屬性生成一個向量作為圖的表徵,並基於圖表徵進行圖的預測。今天向大家分享下美團關於圖表徵學習在美團推薦中的應用。
今天的介紹主要圍繞兩大點展開:
- 圖表徵學習在美團推薦場景落地的挑戰
- 圖表徵學習在美團推薦場景中的應用舉例
01
圖表徵學習在美團推薦場景落地的挑戰
1. 美團推薦——產品形態多樣
首先介紹一下美團的產品形態。
(1) 美團APP綜合資訊流
美團猜你喜歡,給使用者推POI,SPU,或者是其他一些廣告。
(2) 點評APP內容資訊流
比如點評內容,feed推送。
(3) 頻道內附近POI推薦
在頻道內,推薦一些附近的相關的興趣點。
(4) 商品詳情頁面相關推薦
到達某個指定POI或SPU之後,會有商詳頁的相關推薦。
可以看到美團產品線還是很多種多樣的。
2. 美團推薦搜尋中的引導推薦
除了單純的推薦以外,在搜尋中也會有一些引導的推薦,比如
(1) 預設詞,推薦給使用者一些搜尋詞
(2) 熱門搜尋
3. 美團推薦建模方案多樣
前面介紹了場景,下面來介紹建模。
上面提到的那些場景裡面的使用者、商戶、餐品,其實都可以在建模的時候把它們考慮進來。我們要將圖學習應用到下游任務時,第一步就是構圖。我們透過分析下游任務的實際需求,選擇場景中的實體作為圖中節點,選擇實體和實體之間的關係構成圖中的邊,然後在建模時,考慮把場景上下文作為節點和邊的屬性。實際建模構圖的時要考慮很多因素,舉個實際例子,我們將商品作為節點來構圖建模,會考慮其是否標品。同樣是500毫升的可口可樂,在不同的店裡面會有不同的商品ID。我們實際構圖時,怎麼對這個商品進行建模,是我們需要考慮的問題。又例如對同一個菜品,像宮保雞丁,在不同商家裡有不同的菜品ID,在點外賣和去店裡也會是不同的實體,我們如何針對不同場景設計不同的建模方式,是我們構圖時的一個重要挑戰。
4. 美團推薦場景差異
接下來介紹一下美團LBS (Location-based service) 推薦和其它推薦,比如電商推薦、新聞推薦、短影片推薦等場景上的差異。
- 在主目標上,LBS推薦主要是關注訂單,還有新客的訂單,電商也是類似的,但是新聞推薦和短影片推薦,可能會更關注日活躍使用者數量和時長。
- 在場景化和位置約束上,LBS推薦的場景化配置約束是比較高的,使用者需要在他指定的時間、指定的地點,選擇自己想要的商品。
- 在供給方面,LBS推薦的供給是有區域性的,而電商推薦、新聞推薦和短影片推薦的供給可能是全國化的。
- 從復購來看,LBS推薦復購程度較新聞推薦和短影片推薦低。
- 在時間粘性和社交粘性上,LBS推薦是比較弱的。
5. 美團推薦場景特點
整體來看,美團推薦有如下場景特點:
- 第一, 業務跨度大,且差異巨大,分佈在吃、住、行、遊、購、娛等各個方面。比如可能會想點外賣,可能出行需要訂機票、酒店、門票等等;
- 第二, 時空場景複雜,我們會分本地異地、時間、地點等。比如外賣可能會是北京訂北京收,而酒店類產品可能是異地訂異地收等等。
- 第三, 資料稀疏,一些新業務會比較低頻,訂單也會比較少,但是這些業務也是比較重要的,我們如何拿高頻的一些業務構成了圖去補充低頻業務的推薦,也是我們的一個挑戰。
- 第四, 供給約束,供給數量受LBS約束。
接下來,主要講一下在時空場景複雜這個問題上,我們做的一些圖表徵學習的工作。
02
圖表徵學習在美團推薦場景中的應用舉例
1. 時空圖表徵推薦
這是我們發表在ICDM上的一個工作,結合了時空的圖表徵學習推薦。
(1)使用者在不同時間段內感興趣的區域不同
首先介紹一下我們做這個工作的動機。
使用者在不同的時間段內,感興趣的區域是不一樣的。
POI推薦裡面時間和空間其實是相互作用的,共同影響著使用者的決策。左邊這張圖,不同的顏色表示使用者在不同時間段對區域的一些偏好性。藍色表示的是早上6點到12點的使用者偏好,綠色表示的是使用者在下午的偏好,晚上則是用黑色來表示。首先,從時間上,可以看到不同使用者在相同時間的傾向性不同。然後,從空間上,使用者會對特定空間有所偏好,同時POI的影響範圍也不同。再看稀疏性,使用者在特定時空環境下互動行為是稀疏的。比如像早上藍色時間段,傾向的POI數量是比較少的,而晚上和下午則相對比較稠密。
(2)相關工作
在時空相關的表徵建模研究已有很多工作。
空間相關的工作,有把整個大圖按照空間做劃分,或者把空間當作時間的節點。時間上面的工作,是把大圖按照時間分成幾個組,獨立地訓練。或者把時間當作節點的特徵,或者把時間當做一個獨立的節點,在圖上面做表示。缺乏一個把時間和空間聯合起來進行建模的有效方案。
(3)使用者訪問POI的時間間隔示例
其實從一些取樣的資料可以看到,使用者訪問的POI的時間隔其實是各不相同的。左邊這張圖是表示同個使用者訪問同個POI的時間間隔的分佈。對於這個使用者而言,他傾向於在短時間內連續訪問這個POI。右圖中,我們把訪問這個POI的使用者定義成相似使用者, 對這些使用者訪問這個POI的時間間隔的分佈進行統計。可以看到,有些使用者偏向於在比較短的時間內訪問POI,也有些使用者訪問POI是經過比較長的時間間隔。所以每個使用者訪問POI會有自己的時間上的傾向。
(4)結合使用者所在區域和時間段推薦合適的POI
綜合來看,我們要做時空的推薦,應該結合使用者所在的區域和時間段進行推薦。上下文場景是對於使用者在某個時間段我們給他推一些候選POI,然後由候選POI的位置,以及使用者所在的位置,在這種情況下我們怎麼結合上下文給使用者推薦到合適的POI,是我們建模要解決的。
(5)時空多圖
這裡介紹一下我們的構圖方案。這是一個多圖。首先,看使用者和POI的連線,我們對使用者和POI連線的邊分成了多個時間段,每個時間段會有一條邊,這就構成了多邊。POI和POI之間的連邊,主要是考慮貢獻的關係,比如使用者共同的點選、共同的下單行為。其次,是POI和區域AOI的從屬關係,以及使用者和AOI的從屬關係。AOI和AOI之間可能也有自己的一個相鄰的連邊。這些整體構成了我們整個STGCN構圖的一個全景的框架。
(6)模型框架
接下來介紹一下我們時空圖表徵學習的模型框架。
- 首先,我們構造了一個使用者到POI再到區域的一個多圖
- 然後進行取樣,會得到一個子圖
- 再根據各個節點不同的特徵,以及它本身的一些可以初始化的ID特徵,得到一個節點,最初始化的embedding,透過這邊聚合成得到它的一個表徵
- 最後再做一個多層融合,算一個多方面的loss。
(7)時間平滑的子圖取樣
取樣部分,我們構造出來是一個多圖,一個使用者可能在多個時間段都對同一個POI進行了訪問。首先,我們會以時間作為因子,去對全圖進行一個子圖的取樣。每條邊取樣的權重,是根據當前取樣的時間節點,以時間偏差作為取樣的因子。上圖中的公式代表與目標的時間相差越小,也就是距離這個時間越近的一條邊,被採選的機率會越大。這樣就可以解決有一些邊上互動起來比較稀疏的一個問題,使得采樣出來的數量比較平滑。
(8)圖卷積層
取樣完成後,獲取每個節點在當前時間t的embedding。
在某種關係下,所有采樣出來的節點,和自己中心節點做一個聚合,再做一個非線性的函式,得到它下一層的節點的表徵。
最後得到的表徵,還用了多層的表徵的結合。
對當前關係下面的歸一化係數。
這樣就得到了每個節點在當前t時間下的一個節點的表徵。
(9)預測層
預測適當的POI,有四個需要最佳化的目標。
首先是在t這個時刻,使用者對POI的興趣。然後是在這一時刻,使用者對區域的興趣。還有在這個時刻下使用者與POI所在區域的距離,以及這些區域對POI的從屬。我們還會有一個加權的係數。
(10)最佳化目標
最佳化方面有兩個Loss。第一個是最佳化圖本身經常用的一個Loss,比如節點之間,相連節點的embedding,以及它復取樣出來一些節點embedding,希望相連節點變得儘可能的相似,復取樣出來的節點embedding儘可能的遠。第二個,就是對預測層的一個Loss。樣本是使用者在t時刻交獲的POI,副樣本就是使用者在t時刻以前沒有交的POI取樣作為副樣本。最後一個整的Loss就是上面這兩部分Loss,再加上對係數的一個正則化。
(11)實驗
對兩類資料集——點評和Gowalla的實驗,採取了大概一個月的時間,使用者對POI的點選。可以看到,相比傳統的GOF、LINE,加上時空考慮的模型取得了更好的效果。
(12)消融實驗
上圖可以看到消融實驗的結果。篇幅有限,在此不展開說。但可以看到,加上時間因素和空間因素後,會對整個模型起到一定的提升。
(13)case分析
首先,我們想回答這樣一個問題,STGCN能不能捕捉到使用者POI的一些週期性模版。左上圖表示的是一個使用者對POI在時間上的偏好。可以看到他對0、1、2、3這四個不同POI在不同時間是一個緩慢變化的過程。這也符合我們前面的一個假設,因為我們前面時間取樣是比較平滑的。右上圖表示的是不同的使用者,對同個POI偏好的時間段是不一樣的。
第二個問題就是STGCN能不能捕捉到使用者和區域上面的一些週期性模版。前面我們假設使用者在不同的時間段裡會對不同的區域感興趣。右下圖也可以看到,在不同的時間段,使用者attention高的區域也是會分佈在不同的區域範圍內。早上可能是在上面的紅色區域,晚上可能是在下面的藍色區域。
2. 圖學習在美團推薦場景的落地
前面講了我們在針對時空場景上的一些特殊的建模。
我們將圖表徵學習應用到下游任務時,在美食頻道、酒店頻道、相關搜尋和推薦廣告中都做了一些嘗試,部分場景上效果得到了顯著提升。
03
總結和展望
綜上,我們看到了圖表徵學習在美團推薦中的不同場景、不同時空下的應用。當然,未來,我們還有很多問題要解決。比如業務場景跨度大,和部分業務低頻但很重要等問題。為了解決這些問題,我們現在在做的是跨域圖表徵的一些預訓練。整合我們外賣、酒店、美食、旅遊、優選、娛樂、買菜的資料,要去訓一個大圖,訓練出大圖之後,怎麼再進行反覆的操作,或是聯合下游的一些排序模型,或者一些召回模型進行聯合訓練,這都是我們繼續要做的工作。未來我們還會面臨一個千億邊規模的快速穩定訓練的挑戰。我們現在最大規模的圖可能也只有80多億,未來跨域之後,可能把更多的互動行為考慮進去,圖會越來越大,要如何穩定地訓練,並且訓練出來的圖有效果,這也是我們未來要繼續做的事情。
最後再來介紹一下我們的團隊,歡迎大家加入。
04
精彩問答
Q:GCN(圖卷積網路)用在大規模圖存在效能問題嗎?目前實踐的圖規模有多大?
A:目前我們實踐中廣告上的圖會比較多比較大,大概3億多節點,80多億條邊。效能上,在實際線上用的時候,我們用離線ebedding計算好了,線上做比如索引的召回、點選召回,這樣還是比較快的。訓練的時候,大多數情況下80多億邊的圖在幾百G的記憶體下是可以訓練出來的。分散式就更加簡單了。如果大家資源不夠,那可以影象切割後再進行訓練。把圖切分,然後每個work上面做自己領域的取樣,然後互相訓練,最後再做一個整體梯度的回傳。
Q:有考慮在POI中加入社交關係嗎?
A:我們拿到的社交關係資料比較少。目前能構成邊的關係還是點選、交易、收藏行為,但是社交在美團場景中還是很少的。所以目前還沒有嘗試。
Q:針對於使用者不同行為設計的多關係圖,關係數量是什麼樣的量級?可否把物品的屬性類別也當作關係來做?如果關係數很多,怎麼處理?
A:第一個問題,這邊可能想問的是剛才“時空多圖”這個地方吧?首先我們這裡的多圖並不是指多關係,而是指使用者在不同的時間段裡面都訪問這個POI,每一個時間段一個訪問,我們可能會構出一條邊來。這邊的訪問已經結合了我們可能會給不同的互動一個不同的權重,形成同一種關係。比如可能點選行為,給了權重是一,下單可能是三,支付可能是五,這樣多關係做一個聚合。
第二個問題,能不能把物品的屬性類別當作關係來做。比如像我們這邊物品的屬性和類別,舉個例子,常用的屬性是一級類目,二級類目,三級類目,或者是平均價格,這種離散特徵的列舉數量是比較少的,不好當關係來做。可能在每種關係做一條不同的邊,其實這種你要得到不同的embedding應該也是可以的。
Q:時間資訊如何表示?
A:基於時間取樣,使用者在這個時間段上或相鄰時間段的互動行為,做一些節點和聚合操作。
Q:針對尾部關注度較低的商家、商品怎麼做?
A:冷門商品在圖裡的互動節點會比較少。我們會對圖進行裁剪,做稠密平滑處理,從而避免特別熱或特別冷的節點。
Q:對於每種行為的學習不同向量最後如何融合?
A:多層embedding進行融合,使用者在某個時間段只有一個表徵。時間片上不會融合。
Q:取樣考慮重要性嗎?
A:會有平滑策略。假設這個時間片下互動少,那麼會用其他時間片。不過,距離這個時間間隔越長,取樣越少。不會有某個時間片上有太熱的點。尾部冷門點我們也會採和它接近的點來進行工作。
今天的分享就到這裡,謝謝大家。
在文末分享、點贊、在看,給個3連擊唄~
分享嘉賓:
分享嘉賓:黃祥洲博士 美團 演算法工程師
編輯整理:Matrix 中國人民大學
出品平臺:DataFunTalk