微信引流推广网站建设,wordpress自定义的注册页面,百度seo优化推广软件,怎么做wap网站图卷积的开源代码网站DGL
好用的还是 GAT, GIN#xff08;指出最好的卷积 就是 hi 邻居特征#xff08;而且只能用 sum#xff09;#xff09;
Introduction
GNN 可以理解为是由 Graph#xff08;图) Nerual Networks 组合而成的#xff0c;图结构应该都在数据结构与…图卷积的开源代码网站DGL
好用的还是 GAT, GIN指出最好的卷积 就是 hi 邻居特征而且只能用 sum
Introduction
GNN 可以理解为是由 Graph图) Nerual Networks 组合而成的图结构应该都在数据结构与算法里了解得很清楚关键要解决的问题是将图的结构和图中每个节点和边的特征转化为一般的神经网络的输入张量。
常见GNN应用
可以做的事情主要包括分类和生成 ① 对化学分子结构特征进行分类判断其特征是否属于会导致突变的那类
② 学习若干个分子结构特征后能够去生成类似结构的分子GraphVAE
新冠靶向药的开发。 在生成的过程中可以加入很多constraint例如是新药比较好合成有效性等。
如何做
现有问题 1.How do we utilize the structures and relationship to help our model?关系杂 2.What if the graph is larger, like 20k nodes?模型大 3.What if we don‘t have the all the labels?无标签 看下面一个例子来理解现有这样一个图结构
蓝色是Unlabeled Node褐色是Labeled Node 现在要推断黄圈中的节点的标签。 思想是A node can learn the structure from its neighbors近朱者赤近墨者黑, but how? 和filter相乘相加后就得到feature map。如何把卷积操作移植到Graph上 Solution 1: Generalize the concept of convolution (corelation) to graph Spatial-based convolution空间 Solution 2: Back to the definition of convolution in signal processing Spectral-based convolution频域 第一种是把CNN的操作Generalize到GNN上。 第二种是借鉴信号处理中做法来进行卷积操作。
RoadMap
根据上面的两种Solutions本次课程的内容如下
Spatial-based GNN
基于空间特征的图神经网络
这个是solution 1因此是根据CNN的卷积进行移植 要把下面的图中箭头所指的节点进行更新得到下一层的状态 注意上图中的箭头所指的节点是 Terminology: ØAggregate: 用 neighbor feature update 下一层的 hidden state ØReadout: 把所有 nodes 的 feature 集合起來代表整个 graph类似LSTM把整个句子向量压缩为一个向量
法1NN4G (Neural Networks for Graph)09年
input layer 首先经过基本的 embedding 之后到 hidden layer 0。然后更新的话是将其相邻的节点相加然后乘以权重再加上之前 input layer 的原始输入。
Aggregate 更新方法
每个隐藏层都是一个图图中每个结点的权值 一个待学习的参数 w × 上一层这个结点所有相邻结点的权值和 原本在第一层 input layer 这个结点输入的值例如 w 1 w_1 w1 * x 3 x_3 x3 就是 h 3 0 h_3^0 h30
需要注意的是全连接神经网络的神经元是固定的因此对于每个图输入后最后进入全连接层的 vector 维度应该是一样的。因此 NN4G 使用的方法特点是对于每个图都固定隐藏层数量然后取每层的均值送入全连接神经网络这样可以避免图大小的影响 关于为什么要相加的问题如果不用相加的话你就很难去处理节点间邻居数量不同这个巨大的区别 。另外相加是最简单也是被证实最有效的利用邻点信息的方法。
Readout 方法
通过求出整个图中的每个顶点间的特征均值按照层数求平均然后各自乘以相应的权重需要学习再把每个结点得到的结果相加。
法2DCNN (Diffusion-Convolution Neural Network )15年
思想对每一层进行更新时第 n 层看离当前节点距离 n 的节点信息。
例如在第一层更新结点 3 首先找到与它距离为 1 的节点有 0、2、4然后用这三个与节点距离为 1 的 结点的原始的输入相加取平均值mean再乘以权重;
在第二层更新节点 3 首先找到与它距离为2的节点有 1 和 自己本身注意结点 3 和 3 本身的距离也是 2然后用这几个符合条件的结点的原始的输入相加取平均值再乘以权重。
这样就可以将每一层的节点特征组成一个矩阵然后叠在一起。 当我们需要每个节点的feature 信息的时候采用以下的方式来表示图中每个节点的特征 每个节点的特征计算就把节点i对应的 h i 1 h_i^1 hi1 从堆叠结果中提取出来然后点乘w即可。
如对节点 1 来说也就是将每一层的结点 1 提出来然后乘以权重得到最后结点 1 的表示。按照类似的操作可以得到其余结点的表示。
另一种方法DGC (Diffusion Graph Convolution) —— 直接将每一层的结点 1 所在信息提出来相加求和
法3MoNET (Mixture Model Networks)16年
特点与之前只是将相关联结点信息相加求和相比MoNET 考虑到一个节点的邻居跟之间的区别例如有的相邻结点和该结点之前的关系可能更重要一点
思路
deg(x) 表示x的出入度数u(x,y) 自定义的距离计算方式
这里定义的距离公式可以有不同的。也就是给每个节点不同的权重 weighted sum。
法4GraphSAGE.18年
SAmple and aggreGatE Can work on both transductive and inductive setting GraphSAGE learns how to embed node features from neighbors 这个方法在提取邻居信息上提出了三种方式 AGGREGATION: mean, max-pooling, or LSTM
法5GAT (Graph Attention Networks).18年
特点与 MoNET 相比GAT 在定义距离公式时所用的权重 weighted sum 需要学习而得相当于对邻居结点做 attention 不同的邻居结点给出不同的 weight 而不是事先规定好的。 GAT文献
理论GIN (Graph Isomorphism Network)
提供了一些关于图神经网络什么方式的aggregate能够work的理论证明和结论。
更新第k层第v个节点的时候要把它的邻居做求和然后加上该节点与某个常数的乘积。这里提的是直接求和不是求平均也不是做maxpooling。为什么
特点首先把邻居结点都求加相见 结点自己本身信息 × 系数不用 maxpooling 和 meanpooling例如在下图中a 中 每个结点的特征值都一样。在邻居数值相同的状况若选择 maxpooling 和 meanpooling都无法确定最后选择的到底是 v 的哪个邻居结点只有sum可以区别两者。
b在邻居最大值相同的情况取最大值会失败
c在邻居最大值相同且平均相同的情况只有总和成功 思想用 sum 的方式对每个相邻结点的特征值相加 选用多层感知器而不是一层
公式中 ε 可以为 0代表 其实 Graph 中所有相邻结点和其本身节点相加就可以。
Graph Signal Processing and Spectral-based GNN
这节讲的是solution 2就是用信号处理的方式来进行特征提取。之前讲过直接对图中的节点做卷积是不行的因为不能把节点的邻居和CNN中的卷积核位置一一对应然后做运算于是借鉴信号处理的方法先用傅里叶变化分别处理节点和卷积核然后相乘然后再反傅里叶变化得到结果
GCN
Graph Convolutional Networks 就是用上面的公式设置k1 展开 最后形式 大概意思是邻居乘以w取平均然后加上bias经过激活函数得结果。