GraphSAGE
- 節點采樣:
- 聚合(Aggregation):
- 更新(update):
- 例子:
- 總結:
啥是GraphSAGE呢?
是一種用于圖嵌入的無監督學習方法。
通過采樣和聚合鄰居節點的信息來生成節點的嵌入表示。
這使得呢,能夠在大規模圖上運行,并且能夠生成未見過的節點的嵌入。
節點采樣:
對于每個節點,采樣固定數量的鄰居節點。
作用:減少計算復雜度,避免了遍歷整個圖的需求。
聚合(Aggregation):
對采樣到的鄰居節點的特征進行聚合、
常見的聚合方法: mean,max,Lstm等
更新(update):
將當前節點的特征與聚合后的鄰居節點特征進行結合,更新當前節點的嵌入表示。
例子:
A/ \B C\ /D
每個節點的特征向量:
A: [1.0, 0.5]
B: [0.5, 1.0]
C: [0.8, 0.8]
D: [1.0, 1.0]
1、 節點采樣:
例如我們要生成 節點A 的嵌入,并且每層采樣1個鄰居節點。
對于節點A 來說,鄰居節點是B 和 C
我們將會隨機采樣其中的一個,假設我們采樣的是B
2、聚合:
聚合節點A 的鄰居節點B的特征,假設 我們使用的是均值(mean)聚合:
hagg = 聚合特征 = mean(特征(B)) = mean ([0.5, 1.0]) = [0.5, 1.0],不理解嗎?因為這里就采樣了一個鄰居節點哇。
假設我們采樣兩個鄰居節點,例如我們采樣了B和C
那么:
聚合特征= mean(特征(B) +特征(C) = 1/2 *[ [0.5, 1.0], [0.8, 0.8]]=[0.65,0.9]
3、更新:
使用A 的原始特征和聚合特征來更新節點特征。
例如我們這里使用了一個簡單的線性變換和激活函數。
hA 指A的原始特征,hagg是A節點的鄰居節點的聚合特征。W是自定義權重
h’A = σ(W · concat(hA,hagg))
concat(hA,hagg) = [1.0, 0.5, 0.5, 1.0]
ok!!!到此就結束了一次更新過程,對于鄰居節點C進行相同的操作即可。
總結:
GraphSAGE 通過采樣鄰居節點并聚合他們的特征來更新每個節點的特征,得以實現在大規模數據上的使用。