文章目录
- GNN
- 图神经网络的元素
- 消息传递方式
- GCN
- 消息传递方式
- GAT
- 消息传递机制
GNN
图神经网络的元素
节点,邻接矩阵
- 为什么要计算多层
邻居的邻居,融合多阶邻居特征
消息传递方式
图神经网络是一个相对宽泛的概念,本质是每个节点embedding都要融合邻居的特征,根据具体融合方式的不同又衍生出了下面各种具体模型。
最简单的GNN消息传递可以看做fc,所有邻居节点以权重w向当前节点加权,最终取一个mean/max/min等激活函数。
GCN
消息传递方式
Z
=
A
X
W
Z=AXW
Z=AXW,A为调整后的邻接矩阵,X是节点 embedding,W是可训练参数
调整后的邻接矩阵即对原始邻接矩阵做归一化,乘以度矩阵D,分左右各乘
D
1
/
2
D^{1/2}
D1/2,做行、列归一化
- GCN可以做半监督任务,部分节点没有标签,计算loss时只是用有标签的。
- 一般层数3-5层即可,过大效果不好
GAT
消息传递机制
增加了attention结构,计算一阶邻居节点之间的相似度,进行加权
e i j = L e a k y R e L U ( W a ( W f x i ⊕ W f x j ) ) e_{ij}=LeakyReLU(W_a(W_fx_i\oplus W_fx_j)) eij=LeakyReLU(Wa(Wfxi⊕Wfxj))
α i j = e x p ( e i j ) ∑ o ∈ N ( i ) e x p ( e i o ) \alpha_{ij}=\frac{exp(e_{ij})}{\sum_{o\in N(i)}exp(e_{io})} αij=∑o∈N(i)exp(eio)exp(eij)
x i ( l + 1 ) = ∑ j ∈ N ( i ) α i , j W x x j ( l ) x_i^{(l+1)}=\sum_{j\in N(i)} \alpha_{i,j} W_xx_j^{(l)} xi(l+1)=∑j∈N(i)αi,jWxxj(l)