1. 程式人生 > >基於圖模型的智慧推薦演算法學習筆記(含知識圖譜/圖神經網路,不止於智慧推薦)

基於圖模型的智慧推薦演算法學習筆記(含知識圖譜/圖神經網路,不止於智慧推薦)

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![握手][握手]

【再囉嗦一下】如果你對智慧推薦感興趣,歡迎先瀏覽我的另一篇隨筆:智慧推薦演算法演變及學習筆記

【最後再說一下】本文只對智慧推薦演算法中的基於圖模型的智慧推薦進行具體介紹!

一、基於知識圖譜的智慧推薦

以知識圖譜作為邊資訊生成推薦的價值在於:一方面可以提供更準確的推薦;另一方面可以對推薦結果進行解釋。

知識圖譜由實體和關係組成(以電影推薦為例):實體(使用者、電影、演員、導演和型別);關係(互動、歸屬、表演、導演和友誼)。

1. 基於embedding的方法

基本思想:將知識圖譜中的節點和邊在低維向量空間中得到嵌入表示(Knowledge Graph Embedding,KGE),利用知識圖譜豐富item/user的表示。

1.1 KGE演算法分類

  • 基於翻譯距離的模型(例如TransE、TransH、TransR、TransD等):追求h + r = t

  • 基於語義匹配的模型(例如RESCAL、DistMult、HolE、SME、NTN、MLP、NAM等):將h/r/t輸入到網路中進行訓練學習

1.2 基於embedding的方法分類(根據知識圖譜中是否包含user)

  • 使用item graph(即知識圖譜僅由item和相關feature構成):代表方法有CKE、DKN、KSR等
    • 首先利用KGE演算法生成item embedding;
    • 然後結合item的文字/視覺特徵、user-item互動矩陣等資訊構成完整的item表示;
    • 最後再單獨計算user表示和得分函式。

  • 使用user-item graph(即知識圖譜由user、item和相關feature構成):代表方法有CFKG、SHINE、DKFM等
    • 先用KGE演算法將user和item嵌入到同一向量空間;
    • 再通過計算user和item的距離直接得到得分函式的值。
  • 將KGE演算法與GAN、貝葉斯框架結合:代表方法有KTGAN、BEM等
  • 使用多工學習策略聯合訓練推薦模組與其他任務:代表方法有KTUP、MKR、RCF等

基於embedding的方法忽略了圖中的資訊連通模式,通常無法為推薦結果提供解釋。

2. 基於path的方法

基本思想:將知識圖譜視為一個異構資訊網路(user-item),考慮到user、item的連通相似性(語義相似性/結構對等性),進而提升推薦效果。其中,連通相似性的定義依賴meta-path結構(meta-path是連線兩個實體的一條特定的路徑)。

2.1 基於path的方法分類(根據對path的不同利用方式)

  • 基於path計算連通相似度,並作為正則項優化user、item的表示。
    • path可以預先指定(代表方法有Hete-MF、Hete-CF、HeteRec、HeteRec-p、FMG、SemRec等)
    • path可以藉助外部知識庫學習得到(代表方法有RuleRec等)
  • 將所有/部分可能的path嵌入到低維空間,與user、item的表示共同訓練,並發現對推薦影響最顯著的path(連線模式)。
    • 代表性方法有MCRec、RKGE、KPRN、PGPR等

    使用者Alice與部分物品在知識圖譜的關聯圖示

    KPRN模型圖示

基於path的方法有天生的可解釋性,但早期的方法沒有結合embedding的思想,對user/item的表示較為簡單,準確性仍有提升空間。

3. 聯合方法

基本思想:利用嵌入傳播(常使用GNN)完善user、item在知識圖譜中有多跳鄰居的表示。其中,傳播過程可以看作是在知識圖譜中發現user的偏好模式,類似於在基於path的方法中發現連線模式。

3.1 聯合方法分類(根據知識圖譜中是否包含user)

  • 使用item graph
    • 基於user波紋集傳播user偏好,模擬使用者興趣在知識圖譜上的傳播過程,提升user表示能力(代表方法有RippleNet、AKUPM等)
    • 基於K階鄰居(實體波紋集)傳播item屬性,豐富item表示(代表方法有KGCN等)
  • 使用user-item graph
    • 考慮user和item的高階互動,同時增強user和item的表示(代表方法有KGAT、KNI、IntentGC等)

聯合方法結合了基於embedding和基於path的方法,兼具準確性和可解釋性,逐漸成為知識圖譜推薦演算法的主流方法。

 

 *在表格中,Emb代表基於嵌入的方法,Uni代表統一方法,Att’代表注意力機制,‘RL’代表強化學習,‘AE’代表自動編碼器,‘MF’代表矩陣分解。

4. 結合知識圖譜特徵學習的推薦系統分類

前面三節是以核心技術的角度來分類,本節以訓練學習的角度來分類。(分類角度不同而已,助於理解)

4.1 依次訓練學習(例如DKN等)

4.2 聯合訓練學習(例如CKE、Ripple Network等)

4.3 交替訓練學習(例如MKR等)

 

二、基於圖網路的智慧推薦(寫完發現等於介紹了一遍圖網路!)

1. 知識圖譜表示學習KGE與圖網路表示學習的異同點

  • 知識圖譜表示學習中常常提到的一個概念就是三元組(頭實體,關係,尾實體),但圖網路表示學習中沒有這個概念,對所有結點是一視同仁的。
  • 知識圖譜表示學習強調節點之間的關係表示,圖網路表示學習強調節點的結構表示。(後來引入path的知識圖譜一定層面上是在考慮圖網路的結構)
  • 知識圖譜表示學習方法和圖網路表示學習方法都是受word2vec啟發衍生出來的。
    • 知識圖譜表示學習啟發於word2vec向量之間存在的關聯性
    • 圖網路表示學習啟發於word2vec由中心詞預測上下文的文字處理方式

  • 兩者可以相互借鑑,例如將random walk思想應用於知識圖譜,將Trans思想應用於網路表示。

2. 圖網路表示學習(network representation/embedding)

  • 基於矩陣分解的模型,比如SVD分解等
  • 基於隨機遊走的模型,比如DeepWalk、Node2vec等

DeepWalk的主要思想是在由物品組成的圖結構上進行隨機遊走,產生大量物品序列,然後將這些物品序列作為訓練樣本輸入word2vec進行訓練,得到物品的embedding。

在DeepWalk的基礎上,通過調整隨機遊走權重的方法,使embedding的結果在網路的同質性和結構性中進行權衡。

其中,網路的“同質性”指的是距離相近節點的embedding應該儘量近似,“結構性”指的是結構上相似的節點的embedding應該儘量接近。

  • 基於深度學習的模型(與下文的圖神經網路呼應):CNN、RNN、AE、GNN、GCN、結合注意力、結合強化學習、結合GAN等。

3. 圖神經網路

3.1 圖神經網路GNN

GNN的核心觀點:

  • 通過節點資訊(部分節點是有標籤)的迭代傳播使整張圖達到收斂
  • 在網路收斂的基礎上再進行預測/分類

GNN的侷限性:

  • 一是沒有區分不同邊的功能
  • 二是節點之間的狀態存在較多的資訊共享,導致節點的狀態太過平滑,並且屬於節點自身的特徵資訊匱乏

GNN的訓練學習思路:

  • 有監督:根據節點的標籤資訊計算損失即可
  • 無監督:使用”相鄰節點的編碼相似“進行訓練

3.2 門控圖神經網路GGNN

與GNN核心的不同在於不再以不動點理論為基礎。

3.3 圖卷積神經網路GCN

思考如何解決圖中鄰居結點數量不固定的問題:

  • 一是提出一種方式把非歐空間轉換成歐式空間
  • 二是找到一種可以處理變長鄰居節點的卷積核在圖上抽取資訊

3.4 GraphSage

解決GCN需要存放整張圖資訊的問題,利用取樣部分節點的方式進行學習。

3.5 圖注意力網路Graph Attention Network

3.6 異質圖神經網路:(與前面基於知識圖譜的推薦方法呼應,細品)

3.7 後續還有圖神經網路結合聚類、自編碼、注意力、強化學習、GAN等

3.8 圖神經網路的應用

在nlp、計算機視覺、推薦系統、強化學習、惡意檢測、專業領域等都有很大的應用前景。

3.9 四大圖神經網路框架

  • deep graph library (DGL):支援pytorch、tensorflow
  • pytorch geometric (PyG):基於pytorch
  • ant graph machine learning system:螞蟻金服團隊推出的大規模圖機器學習系統
  • tf_geometric:借鑑pytorch geometric,建立了tensorflow版本

三、知識圖譜與圖神經網路的相關問題探究

1. 圖神經網路是如何處理類似知識圖譜的有向異構圖的?

  • GCN是譜域的GNN:基於譜圖理論,無法天然的處理有向圖。
  • GAT是空域的GNN:可以天然的處理有向圖,通常定義入度的節點進行聚合。
  • 知識圖譜和異質圖都有專門設計的GNN:
    • 知識圖譜上的GNN關注於了對於不同關係含義的區別。
    • 異質圖上的GNN關注於多種不同關係的融合來更好的描述節點。

2. 知識圖譜與異質資訊網路的區別?

  • 一般來說,知識圖譜比異質資訊網路包含更多的點和邊型別。但並不絕對,這兩個定義並沒有明確的界限,很多時候都是互為替代的。
  • 前文提到,知識圖譜強調節點之間的關係表示,圖網路強調節點的結構表示。但其實知識圖譜中基於path的方法和圖網路中基於隨機遊走採路徑的方法基本沒有區別。

本文參考了大佬的知乎專欄:https://zhuanlan.zhihu.com/p/112530121

如果你對智慧推薦感興趣,歡迎先瀏覽我的另一篇隨筆:智慧推薦演算法演變及學習筆記

如果您對資料探勘感興趣,歡迎瀏覽我的另一篇部落格:資料探勘比賽/專案全流程介紹

如果您對人工智慧演算法感興趣,歡迎瀏覽我的另一篇部落格:人工智慧新手入門學習路線和學習資源合集(含AI綜述/python/機器學習/深度學習/tensorflow)

如果你是計算機專業的應屆畢業生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的應屆生,你如何準備求職面試?

如果你是計算機專業的本科生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的本科生,你可以選擇學習什麼?

如果你是計算機專業的研究生,歡迎瀏覽我的另外一篇部落格:如果你是一個計算機領域的研究生,你可以選擇學習什麼?

如果你對金融科技感興趣,歡迎瀏覽我的另一篇部落格:如果你想了解金融科技,不妨先了解金融科技有哪些可能?

之後博主將持續分享各大演算法的學習思路和學習筆記:hello world: 我的部落格寫作