大規模圖算法在京東廣告的實踐

分享嘉賓:張澤華 京東 算法工程師

編輯整理:王文婧

出品平臺:DataFunTalk

**導讀:**京東的 9N 算法框架已經被廣泛應用於推薦廣告、搜索廣告、以及其他的站內外廣告場景。本文將爲大家介紹如何實現大規模的圖算法在京東廣告場景的落地實踐,主要內容包括:

01

基礎介紹

1. 電商推薦問題的特點

電商場景下推薦系統的問題特點:

2. Why GRAPH?

剛剛介紹了電商推薦的問題和難處,我們回到推薦的本質上來思考這個問題,對於推薦系統來說,其中的重要參與方就是用戶和商品,而推薦系統的本質就是在找用戶和商品的關聯性:

能否將用戶圖和商品圖連通起來,利用用戶和商品關聯性,構建成一張充滿不同關係邊的圖?這就是一張簡單的 U-I 二部圖,如上所示。

02

9N GRAPH 工業化 End2End 算法解決方案

如何把這張 U-I 圖在工業場景下完成落地和應用?我們實現了一整套 9N GRAPH 工業化端到端的算法解決方案,它不僅包含數據能力、算法框架、算法模型還有一系列的應用。

實現工業化場景的端到端學習,我們遇到了不少挑戰,這裏舉幾點出來:

9N GRAPH 的整體方案如右圖所示,它包含 6 個層次,圖中暗黃色的部分包含圖學習的多元化,圖的探索和創新,是我們還在進行中的部分,其他顏色部分已經在提供穩定服務了,其中淺黃色是在線工程團隊幫助我們一起建設的在線圖服務。

1. 9N GRAPH 數據 & 樣本

① 如何實現大規模的圖樣本生成及存儲問題?

通過對電商場景的用戶行爲進行分析,我們發現:行爲數據呈現 “極度長尾效應”,換句話說是 “旱的旱死,澇的澇死”。像圖中呈現的,在 99 分位數之上的用戶行爲居然差不多等於剩下的所有用戶行爲之和。

這種現象,對於傳統的深度學習來講,其實很不友好,傳統的深度學習建模方法,和訓練策略比較適用於中高活躍的用戶,他們的行爲數據較多,但又不過分集中,在多輪迭代的訓練方式下,數據利用效果好。

反過來看,對於 99 分位數之上的那些極度活躍用戶,他們的行爲數據過於豐富 (比如單日瀏覽了好幾百個上千個商品),在工業場景上通常會因爲工程性能問題做出截斷,導致僅有少數最近期的行爲信息參與在線預估,反而會導致建模失真,效果不佳。

對於長尾用戶,他們的行爲稀疏,甚至還有不少的噪聲,建模較難,數據利用的效果也很差。

我們希望用圖的方式,解決這兩類數據失真的問題:

以最簡單 U-I 二部圖爲例,我們將用戶大量的歷史行爲,通過 U-I 關係抽取模塊,建立起圖關係數據差不多有 400TB 左右;又通過訓練日誌進行 label 處理,兩者進行關聯後,形成圖訓練樣本,通常能達到 800-1000TB;然後送入到模型訓練框架中,進行主模型和圖模型的聯合訓練。

② 如何解決圖服務及信息時效性問題?

高實時的信息可以帶來不小的效果提升,因此在線的服務中除了需要包含歷史長期的圖信息外,還要對最近期的信息有感知,所以我們設計並實現了一套秒級別更新的在線服務。如上圖所示,上面一條通路是包含數月信息的長期圖信息,下面的這一條通路是秒級別的實時信息更新,最終打造成了一個高時效性的圖數據服務系統。

2. 9N Lite 算法框架 Overview

接下來看如何實現一個訓練框架,以及大規模圖如何在工業場景中訓練問題。

我們在介紹大規模圖訓練前,先介紹下 9N (即九數) 算法框架整體,因爲圖訓練也是基於這一套實現的。

九數算法框架是一個使用 Tensorflow 作爲後端計算引擎的、深度定製的、支持彈性擴展和高性能推理服務的算法框架。它基於廣告精排的任務特點研發的,支持了數年來京東廣告的高速迭代發展。它包含四大基礎設施:

3. 9N GRAPH End2End 訓練

如右圖所示,從下向上看,整個 9N GL 框架做了多個層級的模塊抽象,通過 subgraph 的方式,抽象出了訓練日誌相關的子圖結構,通過 unify interface 抽象出了各種圖算子,通過 encoder 抽象了多種信息聚合方式;

整個 9N GL 將外部數據與樣本關聯的圖信息抽象成了 SubGraph,支持多種不同形式的 SubGraph,不僅可以支持數據樣本級別,甚至可以直接關聯到在線檢索系統甚至圖引擎。

9N GL 也支持多種方式的主模型 + 圖模型訓練模式,多階段訓練以及端到端聯合訓練。

9N GL 中的 API 設計相對簡單易用,主要包含有幾個層次的訓練接口:

左側是一段實例代碼,僅需簡單的函數調用,即可完成圖解析,圖鄰居獲取等操作。

4. 圖在推薦、電商場景的典型 End2End 建模思路

接下來,向大家介紹一下圖在推薦、廣告場景中的典型端到端建模思路。

以 CTR 模型爲例,在信息源部分引入用戶和商品的交互圖結構化信息,通過圖的統一操作接口獲取出建模所需要的圖特徵,然後經過特徵編碼器編碼爲常見的 id 類特徵,後續可以通過一系列的 Graph Encoder 獲取到用戶、商品的高階關係表徵。

此外,在異構圖網絡中,我們可以對不同語義空間進行節點信息聚合,來捕捉到用戶的潛在行爲意圖。

當然,以上是一個常見的 End2End 聯合建模、聯合訓練的思路。接下來的部分,給大家詳細介紹我們提出的一個具體模型 BVSHG 是如何做的。

03

BVSHG

1. BVSHG:業界常見圖算法 Graph Embedding

我們在詳細介紹 BVSHG 模型之前,還是先來看一下業界常見的圖算法和圖應用。

首先是 Graph Embedding 類算法,顧名思義,GE 類的算法本質上就是將低階特徵進行 Embedding 化,業界常用的有 DeepWalk、Node2Vec、LINE、EGES,他們的思路大同小異,如下圖舉例來說:

但這種做法通常適用於無監督學習,其監督信號與最終目標通常不一致,只適用於多階段訓練。也沒有充分發掘高階的潛在關聯關係。

2. BVSHG:業界常見圖算法 Graph Neural Network

我們再來看下 GNN 系列的常見算法和模型。

主要有這幾類:U-I 二部圖、用戶 session 圖、社交網絡、知識圖譜。

在建模中也通常是圍繞 U-U、U-I、I-I 三大類關係進行特徵及屬性關係挖掘。但他的好處是可以結合最終建模的目標進行端到端學習。

**3. BVSHG:Multi-behavior Multi-view Session-based Heterogeneous GNN
**

以上的兩類建模適用場景不同,我們在其中發現存在一些不足,如:

而我們非常貪心地希望既要對短期用戶行爲序列建模,又要對長期用戶商品交互信息的多視圖抽取,還要在一定程度上解決序列化建模帶來的性能挑戰。

作爲成年人,想全都要!因此我們提出了 BVSHG,即 Multi-behavior Multi-view Session-based Heterogeneous GNN 建模方式。它的大致示意圖如下,左側爲圖信息的構建,右側爲圖建模方式圖,接下來我們會分部分詳細講講。

① BVSHG:Long-term Multi-Behavior Session Heterogeneous Graph

首先,我們重點講講如何構建的這一張長期用戶多種行爲 session-based 異構圖。

這是一張多元異構圖,在圖中你可以看到至少 4 類節點,比如紅色的 User 節點,藍色的 Item 節點,黃色的 Category 節點,綠色的 Brand 節點等等。

此外,構圖時,我們採用了用戶和商品、類目、品牌之間複雜的交互關係,比如上方的這個白色框中描述的是我們構建圖時候用了用戶的長期瀏覽 session 關係,比如 session1 中包含 item 序列,對應的 category 序列,對應的 brand 序列;

下方的框中,描述的是我們採用了用戶的長期複雜行爲數據,比如 User1 分享了 Item4,也就分享了對應的類目 C3 和對應的品牌 B3;

在右側的圖中,可以看出來,U1 對 I1、I2、I3 都有瀏覽邊連接,但是對於 I4 有 share 分享邊鏈接,U2 對 I3 有 AddCart 加購邊鏈接。而圖中的 I1、I2、I3 之間由於存在同一個 session 內,有共同出現的關係,有共現邊。

右側中間的圖描述的是 User 跟類目之間的邊情況,右下方的圖描述的是用戶和品牌之間的邊的情況。

在此特別說明的是,我們只有一張包含多種節點、多種行爲邊的異構大圖,右側的三個小圖,是在大圖中截取的一小段示意圖。

當然了,在構建這張大圖的時候,我們也有一些超參數需要調節,比如 session 切分的時間準則,通常採用 30min 作爲 gap,但是並不是最優。

② BVSHG:Multi-Behavior Sample

這一頁我們的模型分爲三個部分:

將上述 3 個 Embedding Concat 在一起,最終經過 MLP 輸出 pCTR。

我們先重點介紹紅框中的部分,這部分是我們的 TargetUser 從我們的大圖中採樣找到的交互過的 Item,排成一個 list,用作 target user 的一種表達,也可以簡單理解爲 1 階鄰居。

對於 target user,我們首先採用 Behavior-Weighted Random Sample 的方式採樣得到他的一跳 item 鄰居,具體而言,該採樣方式通過業務自定義的行爲權重,對用戶的不同行爲類型的鄰居節點進行加權的隨機採樣。而對於 target item 以及第一次採樣得到的 user 的一跳 item 鄰居,我們採用同質採樣(Homogeneous Sample)的方式,從圖中得到相同類型的鄰居節點。

③ BVSHG:Multi-View Attention-Based Item SAGE

現在,我們重點介紹 BVSHG 的精髓,Multi-View 信息的抽取和 Attention 玩法。

對應到上方的 I1,我們在大圖中,找到 I1 的 i-i 關係表徵,也找到 I1 對應的類別 C 的 c-c 關係表徵,同理,我們也找到了 I1 對應的品牌 B 的 b-b 關係表徵,這三段向量與 I、C、B 構建出相應的 Attention 變換後 concat 在一起,形成一個 O。

同理,I2、I3 到 In 形成 O2、O3 到 On

同理,TargetItem It 形成 Ot,將 O1~On 的向量與 Ot 進行 Attention 計算。

④ BVSHG:Transformer-based Short-term Behavior Modeling

上圖的紅色框中,我們仍然借用 Transformer 對用戶的短期行爲 local session 進行序列關係的抽取,用來提取短期興趣。

我們的 BVSHG 的思路大致介紹完畢了,模型結構雖然複雜,但是建模思路比較清晰容易理解。

4. 業務效果

我們將 BVSHG 模型在京東推薦廣告的精排場景進行了實驗,模型的點擊消費有相應上漲。當然模型結構也可以作爲拋磚引玉,圖表徵信息與主模型可以採用多種方式進行交互作用,End2End 訓練。

5. 圖算法的其他玩法

我們再來看看我們嘗試過的其他圖算法的玩法:

04

未來展望

未來展望,我們最近一年在圖上玩了不少花樣,但總起來看,還有兩個點我們還有很強的興趣繼續探索:

我們一系列關於廣告、推薦算法的探索及工程實踐將不止於圖,9N AI 團隊後續也會嘗試通過開源或分享的方式進一步與同行更好地交流和互相學習。

今天的分享就到這裏,謝謝大家。

嘉賓介紹:

張澤華

京東 | 算法工程師

畢業於中科院軟件研究所,目前是京東 9N AI 負責人,京東廣告大規模機器學習框架作者,九數商業分析平臺研發負責人,負責京東廣告算法創新工作,其創新算法廣泛應用於京東推薦廣告、搜索廣告等場景。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/k3bHwxH_pgMat9pQkHzrww