1 图神经网络应用
芯片设计、场景分析问题推理、推荐系统、欺诈检测风控相关、道路交通动态流量预测、自动驾驶、无人机等、化学医疗等场景
2 图神经网络基本组成
点(vertex)、边(edge)、全局图(global),图神经网络(GNN,Graph Neural Network)主要作用还是跟传统神经网络的作用一样——特征提取,只是提取特征的方式和提取特征的目标不一样。图神经网络主要是为了提取整个图的全局特征而诞生的。
无论图神经网络多么复杂,利用图神经网络的目的就是整合特征
图神经网络最重要的两个点:1.自身权重矩阵 2. 邻接矩阵
核心思想:万物皆可转化为图
3 GNN常见任务
- 图像和文本任务中,你用过图相关的模型吗?好像木有吧
- 为啥呢?因为图像和文本数据的格式都贼固定,想一想咱们的预处理
- 所有图像resize成固定大小,然后进行卷积操作得到特征,格式很固定
- 文本固定长度和词向量大小,然后也是这么个事,不需要特殊的邻接矩阵
- 在我们平时的图像或者NLP任务中,我们的输入训练数据格式都是统一的,特别是图像,都由像素点构成,格式很固定,然而对于NLP来讲,我们的输入数据的格式虽然都是固定的,但是通过数据预处理来实现的,大多多退少补,这样会导致语义信息的缺失,从而使得输入的信息不够完整。
结论:GNN适合输入数据格式不固定的任务,哪怕100个输入数据格式都不一样,也可以放入GNN进行训练提取特征,输入输出任务可以自己设计。但前提是必须有图结构。
4 图神经网络消息传递计算方法
首先要获取到整张图的邻接矩阵,即得到整张图的结构
每个点的特征该如何更新呢?肯定得考虑他们邻居的
具体步骤如下:
-
聚合操作可以当作全连接层.
-
但是更新的方法有很多,可以自己设置
-
结合邻居信息和自身信息:
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({Wj⋅xj:j∈Ni}) -
汇总:
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=σ⎝⎛W1⋅hi+j∈Ni∑W2⋅hj⎠⎞
5 多层GNN
每次每个点通过周围点迭代更新自身权重,随着迭代,图神经网络的感受野会越来越大,慢慢的每个点会拥有全局图的特征
6 图卷积神经网络
图卷积神经网络与卷积神经网络就像老婆与老婆饼、java和javascrit的区别,原理几乎完全不一样,卷积神经网络提取局部特征,图卷积神经网络提取全局图的特征,图卷积神经网络并不应用到图像中
如何获取特征呢?
- 别再绞尽脑汁各种套路一顿想了 ,交给神经网络神经网络就得了
- 通常交给GCN两个东西就行: 1.各节点输入特征; 2.网络结构图
图卷积神经网络并不是一个完全有意义的有监督学习
许多点是未知的甚至不确定的,实际情况是并不是所有点都有标签,也可以看做是一个半监督的模型,在计算损失的时候只计算有标签的节点
7 GCN特征计算方法
其实就是邻接矩阵与特征矩阵进行乘法操作,表示聚合邻居信息
矩阵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表示输出层
其中:
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层数不会特别多