什麼是Node Embeddings
參考資料: https://memgraph.com/blog/introduction-to-node-embedding
圖(graphs)的基本組成,即節點(nodes)和邊(edges),並以社交網絡為例說明了它們在現實世界中的應用。而節點嵌入就是把圖中的每個節點轉換成一個向量,這些向量位於 N 維空間中(例如 2 維、3 維,或更高維度),這樣每個節點在空間中都有一個特定的位置。
將節點嵌入空間後,圖中的結構關係會變得更容易理解。舉例來說,如果把節點嵌入到 2 維空間,圖中的「群體」或「社群」結構會以集群的形式顯現出來,人類可以在 2 維圖像中直觀地看出哪些節點是相似的。對於電腦而言,節點嵌入轉化為數字向量,這樣它們之間的距離和相似性就可以通過向量計算來衡量。例如,我們可以使用「餘弦相似度」來比較兩個節點之間的相似性,這樣的計算比直接在原始圖結構上進行複雜得多的計算(如最短路徑)更簡單。
節點嵌入算法是一種將圖中節點映射到低維空間的技術,生成的低維向量(稱為嵌入)保留了節點在圖中的結構信息和屬性。這些向量可以作為機器學習模型的輸入,用於各種任務,如節點分類、鏈接預測和構建 k – 最近鄰居(kNN)相似性圖。
嵌入向量捕捉了節點的特性,使得即使在圖中沒有直接連接的節點也能進行有效的比較和分析。我們可以用嵌入向量來計算節點之間的距離或相似度,並且根據這些距離來衡量兩個節點的「接近程度」。隨著節點數量的增多(例如 1000 個節點),僅通過圖結構來判斷節點的關係會變得更加困難,但嵌入能在高維空間中有效地表示圖的結構,讓電腦能夠更輕鬆地處理大規模圖資料。
至於要如何定義 node similarity 呢?例如有連結的 nodes、有共同的鄰居,或是有類似的結構,都可以當成判斷相似程度的指標。
Neo4j 提供的Node Embeddings 技術
參考資料: https://neo4j.com/docs/graph-data-science/current/machine-learning/node-embeddings/
這篇文章介紹了在Graph Data Science 領域中使用的 Node Embeddings 技術。這些算法能夠將圖中的節點轉換為向量形式,以便用於後續的機器學習任務。Neo4j Graph Data Science 庫提供了多種節點嵌入算法,包括生產級別的 FastRP,以及處於 Beta 階段的 GraphSAGE、Node2Vec 和 HashGNN。
這種技術在將圖形數據轉換成數值向量表示時非常有用,可以用來進行機器學習任務,比如節點分類、社群檢測和關聯預測。
Graph RAG(Retrieval-Augmented Generation with Graphs) 是一種使用圖形結構來增強檢索和生成的技術。它的核心思想是將資料結構化為圖形(例如實體和它們之間的關係形成的網狀結構),然後基於圖形進行檢索和資訊整合。Graph RAG 利用圖形索引來提升對問題的回答品質,尤其是在處理複雜多跳查詢時,圖形結構能夠幫助模型更好地理解資料的關聯性。
而Node Embeddings 是一種技術,用於將圖形中的每個節點(例如實體)轉換為向量表示,使得它可以在向量空間中進行計算。這種表示法保留了節點的結構和語義資訊,並且使得圖形資料可以被用於機器學習模型。Node Embeddings 常用於圖形資料科學中的
算法介紹 – Fast Random Projection
介紹頁面: https://neo4j.com/docs/graph-data-science/current/machine-learning/node-embeddings/fastrp/
Fast Random Projection (FastRP) 是一種基於隨機投影的節點嵌入算法,它根據約翰遜 – 林德斯特拉姆引理,通過將節點映射到 O (log (n)) 維度的空間,來近似保留點間的夾角距離。FastRP 算法在圖中運作,特別是在無向圖、有向圖、異 ogeneous 節點和關係以及加權關係的圖中表現出色。
此外,FastRP 支持節點屬性的使用,並且可以通過 propertyRatio
參數來控制屬性嵌入的比例。算法的實現擴展了原始 FastRP 算法,引入了 nodeSelfInfluence
參數,並支持有向圖和加權圖。FastRP 的使用案例包括機器學習流水線中的節點屬性步,以及在執行模式(如 stream、stats、mutate 和 write)之間的選擇。此外,算法還提供了記憶估算功能,以幫助用戶了解在特定圖上運行算法所需的記憶體。
可以應用於多種類型的圖,包括有向圖、無向圖、異 ogeneous 節點和關係,以及加權關係的圖
Node2Vec
介紹頁面: https://neo4j.com/docs/graph-data-science/current/machine-learning/node-embeddings/node2vec/
Node2Vec 是一種節點嵌入算法,通過在圖中進行隨機隨機來計算節點的向量表示。該算法支持有向圖、無向圖、異構節點和關係型、以及加權關係的處理。隨機隨機的概念是 Node2Vec 的核心,它通過二階隨機隨機來建模節點之間的過渡概率,並受到 returnFactor
和 inOutFactor
參數的影響。
GraphSAGE
介紹頁面: https://neo4j.com/docs/graph-data-science/current/machine-learning/node-embeddings/graph-sage/
GraphSAGE 算法是用於計算節點嵌入的一種方法,它通過學習一個函數來生成未見節點或圖的節點嵌入,該函數通過從節點的局部鄰居中抽樣和聚合特徵來實現。這種方法不是為每個節點獨立訓練一個嵌入,而是學習一個函數來生成嵌入。
HashGNN
介紹頁面: https://neo4j.com/docs/graph-data-science/current/machine-learning/node-embeddings/hashgnn/
HashGNN 是一種節點嵌入算法,它通過隨機哈希函數來模擬圖神經網絡的功能,無需進行昂貴的訓練過程。該算法支持有向圖和無向圖,並且能夠處理異質節點和關係,這使得它能夠應用於複雜的圖結構中。