Skip to content

GNN

GCN

hu(t):节点u在第t层的特征表示。

N(v):节点v的一阶邻居集合(不包含自身)。

d^u,d^v:节点u,v的度(包含自环,即节点自身与自身的连接)。

W(t):第t层的可学习权重矩阵。σ:非线性激活函数(如 ReLU)。

在第t+1层,邻居节点u的特征hu(t)作为消息传入中心节点v

mu,v(t+1)=hu(t)

所有邻居的归一化消息求和,再加上中心节点v自身在第t层的特征hv(t)

mv(t+1)=uN(v)1d^ud^vmu,v(t+1)+hv(t)

将节点总消息传入MLP并进行非线性激活,更新节点得到hv(t+1)

hv(t+1)=σ(W(t)mv(t+1))

为了简化表达,我们将 “自环”(节点自身与自身的连接)纳入邻居集合N(v){v},此时聚合过程可直接包含自身特征,无需额外加hv(t)。 代入消息生成公式muv(t+1)=hu(t)到聚合和更新步骤中:

hv(t+1)=σ(W(t)(uN(v){v}1d^ud^vhu(t)))=σ(uN(v){v}1d^ud^vW(t)hu(t))

这就是最终的紧凑形式:

hv(t+1)=σ(uN(v){v}1d^ud^vW(t)hu(t))

GraphSAGE

聚合函数公式:

mv(t+1)=Agg(muv(t+1):uN(v))

节点更新

hv(t+1)=σ(W(t)[hvt||mv(t+1)])

GIN

公式:

mv(t+1)=(u,v)Ehu(t)

含义:中心节点v收集所有以自身为终点的边(u,v)对应的消息(即所有邻居u的旧特征),并对这些消息进行求和聚合。逻辑:将所有邻居的特征 “加总”,得到邻居信息的整体表示mv(t+1)

节点更新(Update)公式:

hv(t+1)=MLP((1+ϵ(t+1))hv(t)+mv(t+1))

GAT

公式:

euv=aTLeakyReLU(Whu+Whv)

对节点uv的特征分别应用线性变换W,得到WhuWhv(目的是将特征映射到共享空间,便于计算相似度)。

将两者相加(Whu+Whv),再通过LeakyReLU激活,引入非线性。

与注意力向量a做内积(aT()),得到节点对(u,v)的原始注意力分数euv

公式:

αuv=exp(euv)kN(v)exp(evk)

公式:

muv(t+1)=αuvhu(t)

公式:

mv(t+1)=uN(v)muv(t+1)

公式:

hv(t+1)=σ(W(t)mv(t+1))