全部產品
Search
文件中心

Platform For AI:基於二部圖GraphSAGE演算法實現推薦召回

更新時間:Aug 03, 2024

本文為您介紹如何使用二部圖GraphSAGE演算法,快速產生推薦召回情境中的User和Item向量。

背景資訊

圖神經網路是深度學習的熱點發展方向,PAI開源Graph-Learn架構,提供大量圖學習演算法。二部圖GraphSAGE是經典的圖神經網路演算法,而GraphSAGE為二部圖情境擴充,被用於淘寶的推薦召回情境。

在二部圖情境下,可以將User和Item作為圖中的點,User-Item之間的關係(點擊或購買等)作為圖中的邊。對於User和Item,其鄰居分別按照User-Item-User-Item…Item-User-Item-User…的Meta-Path進行採樣。

前提條件

基於二部圖GraphSAGE演算法實現推薦召回

  1. 進入Designer頁面。

    1. 登入PAI控制台

    2. 在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應的工作空間。

    3. 在工作空間頁面的左側導覽列選擇模型開發與訓練 > 可視化建模(Designer),進入Designer頁面。

  2. 構建工作流程。

    1. Designer頁面,單擊預置模板頁簽。

    2. 在模板列表,單擊推薦召回-GraphEmbedding演算法下的建立

    3. 建立工作流程對話方塊,配置參數(可以全部使用預設參數)。

      其中:工作流程資料存放區配置為OSS Bucket路徑,用於儲存工作流程運行中產出的臨時資料和模型。

    4. 單擊確定

      您需要等待大約十秒鐘,工作流程可以建立成功。

    5. 在工作流程列表,雙擊推薦召回-GraphEmbedding演算法工作流程,進入工作流程。

    6. 系統根據預置的模板,自動構建工作流程,如下圖所示。

      圖神經網路召回

      地區

      描述

      User&Item行為表,包括如下欄位:

      • user:BIGINT類型,表示使用者ID。

      • item:BIGINT類型,表示物品ID。

      • weight:DOUBLE類型,表示行為。例如1表示購買,2表示收藏。

      User特徵表,包括如下欄位:

      • user:BIGINT類型,表示使用者ID。

      • feature:STRING類型,表示使用者特徵。每個使用者至少配置1個特徵,多個特徵以半形冒號(:)分隔。每個特徵必須為FLOAT類型,按照連續特徵進行處理。例如:1:1:1

      Item特徵表,包括如下欄位:

      • item:BIGINT類型,表示物品ID。

      • feature:STRING類型,表示item特徵。每個item至少配置1個特徵,多個特徵以半形冒號(:)分隔。每個特徵必須為FLOAT類型,按照連續特徵進行處理。例如:1:1:2

      通過graphSage組件產生用於推薦召回情境的User向量表和Item向量表。graphSage組件參數設定說明:

      • user特徵數:User特徵數,對應User特徵表特徵個數。

      • item特徵數:Item特徵數,對應Item特徵表特徵個數。

      • epoch:訓練的epoch數。

      • batch_size:訓練的batch_size大小。

      • learning_rate::訓練的學習率。

      • drop_out:訓練時的dropout。

      • hidden_dim:模型隱層維度大小。

      • output_dim:最後輸出embedding的維數。

      • user跳躍採樣鄰居數:User的每一跳鄰居數。'[10,2]'表示第一跳採樣10個鄰居,第二跳採樣2個鄰居。User多跳採樣的路徑為User-Item-User-Item...

      • item跳躍採樣鄰居數:Item的每一跳鄰居數。Item多跳採樣的路徑為Item-User-Item-User...

      • 負採樣數:負採樣數⽬(⼀條正樣本對應的負樣本數⽬),通常設為5~10。

      • 彙總類型:鄰居彙總方式,包括'gcn', 'sum'和'mean', 'gcn'指類似GCN的彙總方式,'mean'指鄰居做平均,'sum'指鄰居求和,一般選'mean'。

      • 是否做特徵 batch normalization:是否對輸⼊特徵做batch normalization。

      • 是否使用同步訓練:是否使⽤同步訓練。預設使⽤非同步訓練。同步訓練時epoch參數失效。在非同步訓練不收斂時可以嘗試同步訓練。注意:同步訓練效能相比非同步訓練要差。

      • 最大同步訓練步數:最⼤訓練步數,僅在同步訓練時⽣效, 此時epoch參數不再⽣效。可通過邊數/(worker數*batch_size) 來估計遍曆⼀遍邊表需要多少step來設定。

  3. 運行工作流程並查看輸出結果。

    1. 單擊畫布上方的image

    2. 工作流程運行結束後,按右鍵畫布中的graphSage,在捷徑功能表中,單擊查看資料 > user_embedding,即可查看產生的User Embedding。

    3. 工作流程運行結束後,按右鍵畫布中的graphSage,在捷徑功能表中,單擊查看資料 > item_embedding,即可查看產生的Item Embedding。