图神经网络学习笔记

1 图神经网络应用

芯片设计、场景分析问题推理、推荐系统、欺诈检测风控相关、道路交通动态流量预测、自动驾驶、无人机等、化学医疗等场景

2 图神经网络基本组成

点(vertex)、边(edge)、全局图(global),图神经网络(GNN,Graph Neural Network)主要作用还是跟传统神经网络的作用一样——特征提取,只是提取特征的方式和提取特征的目标不一样。图神经网络主要是为了提取整个图的全局特征而诞生的。

无论图神经网络多么复杂,利用图神经网络的目的就是整合特征

图神经网络最重要的两个点:1.自身权重矩阵 2. 邻接矩阵

核心思想:万物皆可转化为图

3 GNN常见任务

  • 图像和文本任务中,你用过图相关的模型吗?好像木有吧
  • 为啥呢?因为图像和文本数据的格式都贼固定,想一想咱们的预处理
  • 所有图像resize成固定大小,然后进行卷积操作得到特征,格式很固定
  • 文本固定长度和词向量大小,然后也是这么个事,不需要特殊的邻接矩阵
  • 在我们平时的图像或者NLP任务中,我们的输入训练数据格式都是统一的,特别是图像,都由像素点构成,格式很固定,然而对于NLP来讲,我们的输入数据的格式虽然都是固定的,但是通过数据预处理来实现的,大多多退少补,这样会导致语义信息的缺失,从而使得输入的信息不够完整。

结论GNN适合输入数据格式不固定的任务,哪怕100个输入数据格式都不一样,也可以放入GNN进行训练提取特征,输入输出任务可以自己设计。但前提是必须有图结构

4 图神经网络消息传递计算方法

首先要获取到整张图的邻接矩阵,即得到整张图的结构

每个点的特征该如何更新呢?肯定得考虑他们邻居的

具体步骤如下:

  1. 聚合操作可以当作全连接层.

  2. 但是更新的方法有很多,可以自己设置

  3. 结合邻居信息和自身信息:
    m ˉ i = G ( { W j ⋅ x j : j ∈ N i } ) \bar{m}_i=G\left(\left\{\mathbf{W}_j \cdot x_j: j \in \mathcal{N}_i\right\}\right) mˉi=G({Wjxj:jNi})

  4. 汇总:
    h i = σ ( W 1 ⋅ h i + ∑ j ∈ N i W 2 ⋅ h j ) h_i=\sigma\left(W_1 \cdot h_i+\sum_{j \in \mathcal{N}_i} \mathbf{W}_2 \cdot h_j\right) hi=σW1hi+jNiW2hj

图神经网络学习笔记_第1张图片

5 多层GNN

GNN的本质就是更新各部分特征

其中输入是特征,输出也是特征,邻接矩阵也不会变的

图神经网络学习笔记_第2张图片

每次每个点通过周围点迭代更新自身权重,随着迭代,图神经网络的感受野会越来越大,慢慢的每个点会拥有全局图的特征

图神经网络学习笔记_第3张图片

6 图卷积神经网络

图卷积神经网络与卷积神经网络就像老婆与老婆饼、java和javascrit的区别,原理几乎完全不一样,卷积神经网络提取局部特征图卷积神经网络提取全局图的特征,图卷积神经网络并不应用到图像中

如何获取特征呢?

  1. 别再绞尽脑汁各种套路一顿想了 ,交给神经网络神经网络就得了
  2. 通常交给GCN两个东西就行: 1.各节点输入特征; 2.网络结构图

图卷积神经网络并不是一个完全有意义的有监督学习

这个也是GCN优势;不需要全部标签;用少量标签也能训练;计算损失时只用有标签的

许多点是未知的甚至不确定的,实际情况是并不是所有点都有标签,也可以看做是一个半监督的模型,在计算损失的时候只计算有标签的节点

7 GCN特征计算方法

其实就是邻接矩阵与特征矩阵进行乘法操作,表示聚合邻居信息

有些小问题:光想着别人,没考虑自己。只需要在邻接矩阵加上自己就可以啦:
A ~ = A + λ I N \tilde{A}=A+\lambda I_N A~=A+λIN

矩阵scale

目前公式变成了:
D ~ − 1 ( A ~ X ) = ( D ~ − 1 A ~ ) X \tilde{D}^{-1}(\tilde{A} X)=\left(\tilde{D}^{-1} \tilde{A}\right) X D~1(A~X)=(D~1A~)X
D的逆矩阵相当于scale方法了,但这一步就可以了吗?答案是还不够

左乘相当于对行做归一化,那么列咋办呢?同理,所以咱们现在的公式:
D ~ − 1 A ~ D ~ − 1 X \tilde{D}^{-1} \tilde{A} \tilde{D}^{-1} X D~1A~D~1X
但这样列和行都做了一次归一化,幅度过大,那在公式基础上进行微调:
D ~ − 1 / 2 A ~ D ~ − 1 / 2 X \tilde{D}^{-1 / 2} \tilde{A} \tilde{D}^{-1 / 2} X D~1/2A~D~1/2X

8 GCN基本公式

例如完成一个十分类任务的,F就为10表示输出层

图神经网络学习笔记_第4张图片

其中:
A ^ = D ~ − 1 / 2 A ~ D ~ − 1 / 2 \hat{A}=\tilde{D}^{-1 / 2} \tilde{A} \tilde{D}^{-1 / 2} A^=D~1/2A~D~1/2
就是刚才我说的对左右都进行了归一化操作

9 GCN层数

理论上来说肯定越大越好;但是实际的图中可能不需要那么多;在社交网络中,只需6个人你可以认识全世界;所以一-般的GCN层数不会特别多

在多个图数据集中,都可以发现两三层的比较合适,多了反而差了

图神经网络学习笔记_第5张图片

你可能感兴趣的:(NLP自然语言处理,数据挖掘,GNN,pytorch,nlp,transformer,attention)