分享嘉賓:孫瑞鴻 騰訊大數據node
編輯整理:趙文嬌算法
出品平臺:DataFunTalk、AI啓蒙者服務器
導讀:隨着數據多樣性的發展,圖計算已經成爲業界的一個重要的研究方向,其中圖神經網絡普遍應用於圖的表徵學習,與傳統的圖學習相比,既能學習圖網絡的拓撲結構,也能聚合鄰居特徵,從而可以有效的學習到圖網絡中的信息,爲後續的推薦工做起到關鍵做用。微信
01 圖神經網絡簡介網絡
- 萬物互聯
以社交網絡的構建方式爲例,以前主要以「關注關係」爲基礎進行構建,如今則會多方位的考慮到「點贊、分享、評論」等數據。圖算法的實踐應用在更加普遍的應用到騰訊的各個場景中都獲得了普遍地應用。數據結構
- 應用場景
基於關鍵人物的推薦。經過一些圖結構結合一些算法,好比典型的pagerank算法,咱們能夠找到關鍵人物,經過對關鍵人物採起特定性策略(好比定向推廣),提高推薦效果。框架
基於圈子的推薦。基於地理、人物任務關係、興趣愛好組成的圈子,進行產品和廣告的推薦。學習
- 推薦中的圖挖掘算法
圖挖掘算法,包括傳統的圖挖掘算法,好比pagerank, closeness等;找到關鍵節點和關鍵羣體的社區發現類算法,也包括,圖表示學習算法deepwalk, node2vec等等,今天咱們主要介紹一下圖神經網絡的使用。大數據
圖神經網絡考慮的比較多,考慮節點的特徵,邊的特徵,經過聚合鄰居的特徵同時結合本身的特徵,進行的學習。圖神經網絡的效果也是很明顯的,在不一樣場景下的效果以下。spa
02 Angel圖神經網絡
- 什麼是圖神經網絡
圖神經網絡就是在圖上應用神經網絡框架。圖神經網絡和神經網絡的異同,例如:傳統的神經網絡框架處理的數據是基於標準的歐式空間,如圖片數據,文本數據等;對於圖神經網絡則須要處理圖網絡拓撲數據,他是一個非歐式空間數據以下,左圖是在圖像分類中常見的貓咪圖片,是標準的歐式空間,右邊的圖網絡,是非歐式空間,主要是鄰居節點的數目和順序會有所不一樣,而且網絡圖數據量很大難以縮放。因爲數據結構上存在着這差別,圖神經網絡不能沿用神經網絡的處理方式,而是圖神經網絡經過聚合鄰居節點特徵來構建特徵。
- Angel圖神經網絡框架
這裏不作特別詳細的闡述,官方文檔能夠進行詳細的學習。這裏強調一下,在聚合鄰居特徵的時候有一階鄰居和二階鄰居特徵,一階鄰居特徵就是放在spark executor上面,採樣速度很快。而後會把鄰接表放到ps上,方便進行二階採樣服務器。
Angel現有的圖神經網絡算法有不少graphsage, 分紅有監督、無監督、同構、異構等。
下面以graphsage爲例介紹一下咱們關注的點。
GraphSage原理:
GraphSage有兩個點關鍵點,一個是採樣,一個是聚合,以下圖箭頭標示。
採樣。選擇一個點,先對它的一階鄰居隨機採樣,而後根據採樣獲得的一階鄰居進而來採樣二階鄰居,以此類推,目前,咱們實驗發現,二階鄰居採樣就能夠獲得不錯的效果。在得到鄰居以後,下面咱們開始考慮如何聚合鄰居特徵。
聚合。首先將二階鄰居特徵進行聚合,而後將聚合後的二階鄰居特徵和一階鄰居特徵進行融合,最後而後將融合後的特徵與再和初始節點的特徵進行融合。這樣就得到了一個融合特徵的embedding。
03 推薦場景下的實踐
- GNN推薦場景概覽
首先是構建網絡,好比說例如:經過社交網絡,移動支付,通訊網絡,電商購物等場景構建出網絡結構,而後放入gnn中獲取embedding,以後最後就能夠應用到更多下游推薦,好比做爲模型特徵,推薦召回,推薦冷啓動,用戶畫像等等。下面咱們基於場景進行具體介紹:
場景一:騰訊看點視頻推薦
經過用戶的歷史觀看記錄構建網絡。具體說來,每一個用戶都有本身的觀看記錄,而後從視頻角度,咱們能夠獲得以下圖的網絡結構圖,這個過程是有信息折損的,就是用戶觀看的歷史記錄不完整,咱們想辦法解決這個問題。
第一步是網絡構建,如上所述,另外須要加上的特徵包括用戶特徵、視頻特徵、觀看記錄特徵,咱們不但願丟失序列特徵,因此咱們會使用一些序列算法,好比transformerTransformer處理序列的歷史數據,能夠獲得用戶的embedding,而後將視頻的embedding也放入graphGraph-sageSAGE裏面進行學習,這樣最後學出來的東西既包含用戶的歷史觀看記錄,也包括網絡結構的信息。
最後使用的是半監督GraphSAGEgraphsage,做用在千萬級點上,十億級邊上。離線式表效果上,對比直接的transformer,top50命中率提高3%左右,在線指標上,短視頻時長提高了0.98%,總時長提高0.34%。
場景二:微信內容推薦
這個場景是爲微信用戶推薦公衆號,首先構建網絡,若是直接利用關注關係構建網絡,是有問題的。以下圖,咱們發現出現了「人民日報」這樣超級節點,太多用戶對其餘進行了關注,解決辦法是圖轉換,將圖從用戶和公衆號的關係圖,變成公衆號和公衆號的關係圖。
這種改變也會一樣會帶來其餘問題,就是好比:超級大號會和其餘不少點產生聯繫,也是從而產生有問題的,解決這個問題就是須要刻意作一些邊篩選。考慮到關注只是一個行爲,咱們也能夠將觀看,點擊等行爲做爲邊的觸發行爲加進來。
特徵工程包括:公衆號的特徵,用戶特徵,和對這些特徵的去噪。
算法選擇:咱們能夠選擇GraphSAGEgraphsage或者DGI,但最終選擇了DGI。
關於一階和二階的選擇,最終肯定一階效果更好,選用二階容易構成embedding趨同。
流程以下:
使用dgi抽取特徵後,利用itemCF,選取一些種子,從全量公衆號裏面圈定一個召回,而後進行排序等一些列行爲。
最後使用百萬級的點,億級的邊。曝光率提高2.38%,點擊率提高1.61%,關注率提高+0.5%。
04 經驗總結
網絡構建和特徵工程對任務目標是有關鍵影響的,主要須要注意降噪。
算法不是普適的,須要針對場景進行調整,多模型融合的效果通常來講更好,咱們用過的有:
gnn+transformer,Gnn+xgboost,gnn+kmeans,gnn+itemcf等。
今天的分享就到這裏,謝謝你們。
嘉賓介紹:
孫瑞鴻
騰訊大數據 | 高級算法工程師
孫瑞鴻,騰訊大數據高級算法工程師,目前專一於Angel圖算法研發與騰訊內部場景的落地。
掃碼關注 | 即刻了解騰訊大數據技術動態