GNN知识整理

持续更新中…

目录

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

GCN

1.1基础公式:

在这里插入图片描述

  • 符号解释
    H l H^l Hl表示第l层的输入特征;
    H l + 1 H^l+1 Hl+1表示输出特征;
    w l w^l wl表示线性变换矩阵;
    σ σ σ表示非线性激活函数;
    A A A表示邻接矩阵
    A ~ \widetilde{A} A 表示有自连的邻接矩阵,即 A ~ = A + I \widetilde{A}=A+I A =A+I
    D ~ \widetilde{D} D 表示自连矩阵的度矩阵(对角矩阵:只有主对角线上元素有值,且第i行第i列的值等于 A ~ \widetilde{A} A 第i行所有元素之和,即邻居数量+1)
  • 关于度矩阵 D ~ \widetilde{D} D
    在这里插入图片描述例如: GNN知识整理_第1张图片GNN知识整理_第2张图片
    • 无向无权图:表示相邻节点的数目
    • 有向图:表示出度
    • 带权图:表示目标节点与所有邻居节点边权之和

D ~ − 1 2 \widetilde{D}^{-\frac{1}{2}} D 21表示开平方根之后再取逆,由于是对角阵所以操作较为简单可以直接开根号取倒数。(ps:这里的开根号是指 X X = D XX=D XX=D,则 X = D − 1 2 X=D^{-\frac{1}{2}} X=D21

  • 小结:所以如果知道了邻接矩阵 A A A,可以将 D ~ − 1 2 A ~ D ~ − 1 2 \widetilde{D}^{-\frac{1}{2}}\widetilde{A}\widetilde{D}^{-\frac{1}{2}} D 21A D 21这个整体看做一个常量,模型需要学习的仅仅是权重矩阵 w l w^l wl

1.2 物理意义

  • 邻接矩阵与输入相乘的意义:对邻居信息的聚合
    GNN知识整理_第3张图片
    如上图,第l层某个节点的表征为其邻居节点(包括自己)的表征之和

  • 度矩阵的逆的意义:稀释掉度很大的节点的重要程度。例如当一个邻居很多的节点a和一个邻居很少的节点b拥有一个共同邻居c的时候,c对a和b的权重应该是不同的,对a的权重较小,而对b的权重应该相对较大。
    GNN知识整理_第4张图片
    理解:类似于加权求和,度越大,其权值越低。 1 4 \sqrt{\frac{1}{4}} 41 是节点1自身的逆平方根。节点i到节点j的权值为节点i的逆平方根与节点j的逆平方根之积

  • 总结
    图神经网络之所以有效,是因为它很好地利用了图的结构信息,少了很多中间步骤,将直接与当前节点有用的信息利用起来。只需要少量的标记数据就可以进行大量的预测。

1.3 代码

2. GraphSAGE

  • 简介
    图采样的方法。其中心思想是小批量采用原有大图中的子图。(因为随机采用会破坏样本之间的关系信息)

  • 流程
    GNN知识整理_第5张图片

  • 采样过程

    • 在对邻居进行聚合的时候,并非对所有邻居都聚合,而是采样一定数量(超参 S i S_i Si表示第i层采用的邻居数目)的邻居。(当邻居数小于 S i S_i Si时,会采样到重复的邻居)。
    • 小技巧:论文中提到,一般采用两层就可以达到很好的分类效果,并且 S 1 ∗ S 2 < 500 S_1*S_2<500 S1S2<500时效果较好
  • 聚合函数(需要满足顺序无关性)

    • 均值聚合(Mean Aggregator)。在做均值聚合的时候,可以不做拼接操作,直接将上一层自身信息与邻居信息进行均值处理
      在这里插入图片描述
    • LSTM Aggregator。为了消除序列性,在聚合之前对邻居节点进行随机排列。具有大容量的优点,因此效果不错,在这里插入图片描述
    • Pooling Aggregator。将邻居构成的向量放入全连接网络然后接上一个最大池化或平均池化,理论上神经网络可以是多层的,但是为了简化模型这里仅仅使用单层。这里的max也可以换成其他排列不变性函数,但效果差异不大。
      在这里插入图片描述

3. GAT

  • 简介:
    GCN聚合临近节点特征的方式与图的结构息息相关,这局限了训练得到的模型在其他图上的泛化能力。而Graph Attention Network,加入了注意力机制的图神经网络,消息传递机制的权重是通过注意力机制得到。这种聚合方式取决于节点特征,独立于图的结构。

  • 注意力计算
    GNN知识整理_第6张图片
    图源DGL图神经网络。这里使用的是加性注意力,区别于transformer中使用的是点积注意力。 a ⃗ ( l ) T \vec{a}^{{(l)}^T} a (l)T 是一个线性层, ∣ ∣ || 表示拼接操作

  • 多头注意力
    GNN知识整理_第7张图片 GNN知识整理_第8张图片

这里类似于卷积神经网络中的多通道,GAT引入多头注意力来丰富模型的能力和稳定模型的训练过程。每一个注意力的头都有自己的参数。多个头的整合方式分为两种:拼接或平均。(在GAT论文中建议隐藏层做拼接,最后一层全连接层做平均)

你可能感兴趣的:(GNN,深度学习)