聚合、更新、循环
举例:输入一个简单的图结构

GNN

  • 聚合操作
  • 更新操作
  • 循环操作(多层更新操作)
  • 目的

GCN

  • 修改的聚合部分
    • 平均法
    • 平均法存在的问题
    • GCN提出的方法

简单粗暴快速理解GNN
Graph-Unets
GCN中的拉普拉斯矩阵如何归一化?

%title插图%num

举例:输入一个简单的图结构

%title插图%num
GNN
聚合操作
经过一次聚合后:聚合到的信息:
邻 居 信 息 N = a ∗ ( 2 , 2 , 2 , 2 , 2 ) + b ∗ ( 3 , 3 , 3 , 3 , 3 ) + c ∗ ( 4 , 4 , 4 , 4 , 4 ) 邻居信息N = a*(2,2,2,2,2)+b*(3,3,3,3,3)+c*(4,4,4,4,4)
邻居信息N=a∗(2,2,2,2,2)+b∗(3,3,3,3,3)+c∗(4,4,4,4,4)

a 、 b 、 c a、b、c a、b、c :自行设置或进行训练学习。
简单的说:就是将其他相邻节点的信息聚合,作为当前节点信息的一个补足。
更新操作
A的信息  = σ ( W ( ( 1 , 1 , 1 , 1 , 1 ) + α ∗   N ) ) \text { A的信息 }=\sigma\left(\mathrm{W}\left((1,1,1,1,1)+\alpha^{*} \mathrm{~N}\right)\right)
A的信息 =σ(W((1,1,1,1,1)+α

N))

简单地说:将得到的邻居节点信息乘以系数加到当前节点,再乘以学习的权重和激活函数,从而获得聚合后的A的信息(一层GNN后的A的*终信息)。

α \alpha α :自行设置或attention机制选出或进行训练学习。
W W W :模型需要训练的权值参数。
σ \sigma σ :激活函数。
循环操作(多层更新操作)
【n层的GNN可以得到n层的邻居信息】
经过一次聚合后:

A中有B,C,D的信息
B中有A,C的信息
C中有A,B,D,E的信息
D中有A,C的信息
E中有C的信息
那么第二次聚合之后以此类推

以A结点为例,此时A聚合C的时候,C中有上一层聚合到的E的信息,所以这时A获得了二阶邻居E的特征。
目的
通过聚合更新,到*后,我们能够得到每个结点的表达,也就是特征feature,此时:

结点分类就可以直接拿去分类,算loss, 优化前面提到的W
关联预测就*简单的方法两个节点的特征一拼,拿去做分类,一样的算loss, 优化。
归根到底,GNN就是个提取特征的方法! ! ! ! !
黑盒子表示:
输入的是节点特征与图的结构
输出的是包含结构与特征的节点的*终特征
用*终特征去进行分类、预测、回归等操作。
GCN
修改的聚合部分
修改了GNN的聚合部分,提出解决 a 、 b 、 c a、b、c a、b、c值的设定问题。

平均法

%title插图%num

首先:提出将邻居的特征加起来作为特征求和。
之后又需要添加闭环:添加一个自环加上自身的特征。
然后:又将求和的特征平均一下的得到当前节点*终的特征。

平均法存在的问题

 

%title插图%num

马云-我的例子。

GCN提出的方法

 

%title插图%num

A ~ \tilde{A}
A
~
:邻接矩阵A+单位矩阵I(表示邻居的信息加上自己的信息)。
D ~ \tilde{D}
D
~
: A ~ \tilde{A}
A
~
的度矩阵。

%title插图%num

使用了对称归一化的拉普拉斯矩阵方法解决了这个问题。