图神经网络学习完成

This commit is contained in:
estomm
2022-01-08 15:46:18 +08:00
parent 48be4d528b
commit 0d1ccaf831
16 changed files with 242 additions and 100 deletions

View File

@@ -1,8 +0,0 @@
## 任务
* [ ] 看完图神经网络的一套视频课程
* [ ] 看完图神经网络的几篇网络教程
* [ ] 看完图神经网络的经典论文和算法
## 总结

View File

@@ -1,5 +1,5 @@
# 图表示学习
> 论文阅读中的图表示学习
## 0 简介
@@ -22,9 +22,18 @@
### 目的
图表示学习是表示学习技术的分支领域表示学习的目的是要得到对数据的广义特征表示。如邻接矩阵是对网络结构的表示链表是对列表结构的表示TFIDF 特征是对文本的特征表示。
**向量表示**可以通过多种手法得到,手法区分形式也不同,如最经典的以是否为监督学习进行区分,是否以只进行局部表示学习而区分,以及利用表示学习过程中所采用的方法是否为线性方法而区分。而图表示学习则专注于对图网络的表示,如图 2-8 所示,它能够以更加直观、高效的方式还原原始空间中节点的关系
图表示学习是表示学习技术的分支领域,**表示学习的目的是要得到对数据的广义特征表示**
如邻接矩阵是对网络结构的表示链表是对列表结构的表示TFIDF 特征是对文本的特征表示。
**向量表示**可以通过多种手法得到,手法区分形式也不同
* 如最经典的以是否为监督学习进行区分,
* 是否以只进行局部表示学习而区分,
* 利用表示学习过程中所采用的方法是否为线性方法而区分。
而图表示学习则专注于对图网络的表示,如图 2-8 所示,它能够以更加直观、高效的方式还原原始空间中节点的关系。
![](image/2022-01-04-10-01-00.png)
@@ -33,15 +42,21 @@
表示学习方法包括四类主流方法:基于矩阵分解的方法、基于随机游走的方法、基于深度编码器的方法以及基于邻域聚合的方法。
* 基于矩阵分解的方法主要以矩阵分解的方式将原始的𝑛 × 𝑚大小的邻接矩阵降维表示成一个𝑛 × 𝑘大小的矩阵,其中𝑘 ≪ 𝑛典型的有基于谱的图表示学习算法如拉普拉斯特征映射Laplacian Eigenmaaps算法[46],以及基于最优化的图表示学习算法如多维量表算法 MDS[47]等。包括特征向量和SVD分解等都可以提取图的特征值。
* 基于随机游走的方法主要是将 word2vec 方法引入到图表示学习过程,通过在网络随机游走形成大量“语列”信息,再将“语列”使用自然语言处理下的经典方法进行向量表示学习,得到能够体现节点间相互关系的、稠密的向量表示,典型的有 DeepWalk 算法[48]node2vec 算法[49]等。
* 基于深度自编码器[50]的方法主要是使用神经网络来构建图自编码器,从而压缩节点邻居信息,典型如 SDNE 算法[34]。
* 而基于邻域聚合的方法主要是将卷积神经网络中的“卷积”运算拓展到了图网络,通过邻域聚合的方式在不规则的图网络中进行特征聚合,从而得到节点嵌入表示
* 基于矩阵分解的方法
* 主要以矩阵分解的方式将原始的𝑛 × 𝑚大小的邻接矩阵降维表示成一个𝑛 × 𝑘大小的矩阵,其中𝑘 ≪ 𝑛典型的有基于谱的图表示学习算法如拉普拉斯特征映射Laplacian Eigenmaaps算法[46]以及基于最优化的图表示学习算法如多维量表算法 MDS[47]等。包括特征向量和SVD分解等都可以提取图的特征值。
* 基于随机游走的方法
* 主要是将 word2vec 方法引入到图表示学习过程,通过在网络随机游走形成大量“语列”信息,再将“语列”使用自然语言处理下的经典方法进行向量表示学习,得到能够体现节点间相互关系的、稠密的向量表示,典型的有 DeepWalk 算法[48]node2vec 算法[49]等
* 基于深度自编码器[50]的方法
* 主要是使用神经网络来构建图自编码器,从而压缩节点邻居信息,典型如 SDNE 算法[34]。
* 而基于邻域聚合的方法
* 主要是将卷积神经网络中的“卷积”运算拓展到了图网络,通过邻域聚合的方式在不规则的图网络中进行特征聚合,从而得到节点嵌入表示。
### 分类说明
* 基于矩阵分解的方法、基于随机游走的方法和基于深度编码器的方法都具有很大的局限性,它们的学习目标是从一个固定的图中得到节点的嵌入表示,因此旦图结构发生改变或者有新的节点出现,就必须重新训练模型得到节点的嵌入表示。基于邻域聚合的方法属于归纳式学习方法,它的学习目标是得到为每个节点产生能够进行嵌入表示的映射函数,所以即使节点之间的边关系发生改变或者有新的节点出现,它都能很快得到节点的嵌入表示而无须重新训练模型。
* 基于矩阵分解的方法、基于随机游走的方法和基于深度编码器的方法都具有很大的局限性,它们的学习目标是从一个固定的图中得到节点的嵌入表示,因此旦图结构发生改变或者有新的节点出现,就必须重新训练模型得到节点的嵌入表示。
* 基于邻域聚合的方法属于归纳式学习方法,它的学习目标是得到为每个节点产生能够进行嵌入表示的映射函数,所以即使节点之间的边关系发生改变或者有新的节点出现,它都能很快得到节点的嵌入表示而无须重新训练模型。
* 而恶意软件检测正是一个需要用已知预测未知的问题,给定已知的恶意样本和良性样本的相关行为数据,需要能够基于这些已知的数据去检测未知样本的性质,而未知样本中可能很可能含有未知节点以及在训练样本中未曾出现过的函数调用关系。因此,本文采用了基于邻域聚合的图表示学习方法对函数调用行为进行嵌入表示学习,并将得到的函数节点嵌入表示输入到分类模型进行端到端的训练,从而实现对恶意软件的检测。
* 而恶意软件检测正是一个需要用已知预测未知的问题,给定已知的恶意样本和良性样本的相关行为数据,需要能够基于这些已知的数据去检测未知样本的性质,而未知样本中可能很可能含有未知节点以及在训练样本中未曾出现过的函数调用关系。
* 因此,本文采用了基于邻域聚合的图表示学习方法对函数调用行为进行嵌入表示学习,并将得到的函数节点嵌入表示输入到分类模型进行端到端的训练,从而实现对恶意软件的检测。
@@ -79,8 +94,6 @@
### deepwalk算法
### node2vec算法
## 3 基于深度自编码器的方法
@@ -89,12 +102,7 @@
## 4 基于邻域聚合的方法
# 基于邻域聚合的图表示学习方法
## 概念
### 概念
基于邻域聚合的图表示学习方法通过聚合本地邻居节点的信息得到当前节点的嵌入表示,该方法与计算机视觉领域中的“卷积”操作类似,因此基于邻域聚合的图表示学习方法也被称为基于卷积的图表示学习方法。基于邻域聚合的图表示学习方法过程如下所示,包括三个步骤:
@@ -118,5 +126,6 @@ end
## 算法
基于邻域聚合的思路研究者们提出了大量的图表示学习算法如图卷积神经网络算法GCN[52]、GraphSAGE 算法[51]等,这些算法之间的主要区别在于信息聚合与信息变换所采用的方法不同,如 GraphSAGE 设计了通用的聚合函数框架,支持均值聚合、最大池化聚合与 LSTM 聚合等方法并采用了特征向量拼接的方式进行信息变换GCN 则设计了带权均值聚合函数,并采用了加权求和的方式进行信息变换,但是由于 GCN 依赖于矩阵分解运算,因此 GCN 并不具备和其它基于邻域聚合思路的图表示学习算法的同等程度的泛化能力,一旦网络中有新的节点出现,就必须重新训练模型得到新节点的嵌入表示
### GNN算法
基于邻域聚合的思路研究者们提出了大量的图表示学习算法如图卷积神经网络算法GCN[52]、GraphSAGE 算法[51]等,这些算法之间的主要区别在于信息聚合与信息变换所采用的方法不同。
* GraphSAGE 设计了通用的聚合函数框架,支持均值聚合、最大池化聚合与 LSTM 聚合等方法,并采用了特征向量拼接的方式进行信息变换;
* GCN 则设计了带权均值聚合函数,并采用了加权求和的方式进行信息变换,但是由于 GCN 依赖于矩阵分解运算,因此 GCN 并不具备和其它基于邻域聚合思路的图表示学习算法的同等程度的泛化能力,一旦网络中有新的节点出现,就必须重新训练模型得到新节点的嵌入表示。

View File

@@ -10,15 +10,14 @@
3. 连通图、连通分量(无向图最大的连通分量)
4. 强连通图、弱连通图
5. 最短路径、图直径(最短路径的最大值)
6. 度中心性
## 3 图的中心性
1. 度中心性
$$
\frac{N_d}{n-1}
$$
## 3 图的中心性
1. 度中心性
2. 特征向量中心性。特征值越大,其相邻节点的度越大。
3. 连接的中心性。节点在图中的重要性。其他节点两两到达是否经过该节点

View File

@@ -3,7 +3,7 @@
## 0 引言
### 概述
在图上进行每一个节点的embedding最终得到的结果是图上每一个节点的嵌入表示。主要包括五种传统算法
在图上进行每一个节点的embedding最终得到的结果是图上每一个节点的嵌入表示。这里主要通过无监督的方法实现embedding的过程。主要包括五种传统算法
1. Deepwalk
2. LINE

View File

@@ -18,10 +18,13 @@
3. 使用邻接矩阵A和特征矩阵X相乘聚合直接相连的节点的信息。
* 公式说明
![](image/2022-01-07-09-24-40.png)
* 物理含义
![](image/2022-01-07-09-29-32.png)
* 具体目标

View File

@@ -3,6 +3,7 @@
> * networkx是专门用来进行图计算的。
> * matplotlib可以用来绘制图像的。
> * pytorch geometric 是用来做图神经网络的
> * dgl 是aws的图神经网络库。暂时用不到。
>
## 1 数据处理
@@ -20,8 +21,3 @@ data.y: Target to train against (may have arbitrary shape), e.g., node-level tar
data.pos: Node position matrix with shape [num_nodes, num_dimensions]
```
## 2 常见数据集加载
##

View File

@@ -0,0 +1,196 @@
# 图神经网络的综述
主要是对图神经网络的综述,包括各种类型的图神经网络。
## 0 概述
### 发展原因
* 计算资源的快速发展如GPU
* 大量训练数据的可用性
* 深度学习从欧氏空间数据中提取潜在特征的有效性
### 图嵌入和图神经网络的关系
图神经网络的研究与图嵌入或网络嵌入密切相关,图嵌入或网络嵌入是数据挖掘和机器学习界日益关注的另一个课题。
图嵌入旨在通过保留图的网络拓扑结构和节点内容信息将图中顶点表示为低维向量以便使用简单的机器学习算法例如支持向量机分类进行处理。许多图嵌入算法通常是无监督的算法它们可以大致可以划分为三个类别即矩阵分解、随机游走和深度学习方法。同时图嵌入的深度学习方法也属于图神经网络包括基于图自动编码器的算法如DNGR和SDNE和无监督训练的图卷积神经网络如GraphSage
![](image/2022-01-07-22-42-47.png)
## 1 根据神经网络的类型进行分类
主要有以下六种:
* 图卷积网络Graph Convolution NetworksGCN
* 图递归网络GRNN、
* 图注意力网络Graph Attention Networks
* 图自编码器( Graph Autoencoders
* 图生成网络( Graph Generative Networks
* 图时空网络Graph Spatial-temporal Networks
![](image/2022-01-07-15-49-27.png)
### 图卷积神经网络
图卷积网络将卷积运算从传统数据(例如图像)推广到图数据。其核心思想是学习一个函数映射 ,通过该映射图中的节点可以聚合它自己的特征与它的邻居特征来生成节点的新表示。图卷积网络是许多复杂图神经网络模型的基础,包括基于自动编码器的模型、生成模型和时空网络等。
**图卷积神经网络GCN**
* 方法又可以分为两大类基于谱spectral-based和基于空间spatial-based。基于谱的方法从图信号处理的角度引入滤波器来定义图卷积其中图卷积操作被解释为从图信号中去除噪声。基于空间的方法将图卷积表示为从邻域聚合特征信息当图卷积网络的算法在节点层次运行时图池化模块可以与图卷积层交错将图粗化为高级子结构。如下图所示这种架构设计可用于提取图的各级表示和执行图分类任务。
**GraphSAGE**
![](image/2022-01-07-16-01-30.png)
### 图递归神经网络
![](image/2022-01-07-15-58-46.png)
### 图注意力神经网络
**图注意力网络GAT**
* 是一种基于空间的图卷积网络它的注意机制是在聚合特征信息时将注意机制用于确定节点邻域的权重。其中α·是一个注意力函数它自适应地控制相邻节点j对节点i的贡献。
* 在聚集特征信息时将注意力权重分配给不同的邻居节点,还可以根据注意力权重将多个模型集合起来,以及使用注意力权重引导随机行走。
* 尽管GAT和GAAN在图注意网络的框架下进行了分类但它们也可以同时被视为基于空间的图形卷积网络。GAT和GAAN的优势在于它们能够自适应地学习邻居的重要性权重。然而计算成本和内存消耗随着每对邻居之间的注意权重的计算而迅速增加。
![](image/2022-01-07-22-49-22.png)
### 图自编码器
图自动编码器是一类图嵌入方法其目的是利用神经网络结构将图的顶点表示为低维向量。典型的解决方案是利用多层感知机作为编码器来获取节点嵌入其中解码器重建节点的邻域统计信息如positive pointwise mutual information PPMI或一阶和二阶近似值。
目前基于GCN的自编码器的方法主要有
* Graph Autoencoder (GAE)
* Adversarially Regularized Graph Autoencoder (ARGA)
图自编码器的其它变体有:
* Network Representations with Adversarially Regularized Autoencoders (NetRA)
* Deep Neural Networks for Graph Representations (DNGR)
* Structural Deep Network Embedding (SDNE)
* Deep Recursive Network Embedding (DRNE)
![](image/2022-01-07-16-04-25.png)
DNGR和SDNE学习仅给出**拓扑结构的节点嵌入**而GAE、ARGA、NetRA、DRNE用于学习当**拓扑信息和节点内容特征都存在时的节点嵌入**。图自动编码器的一个挑战是邻接矩阵A的稀疏性这使得解码器的正条目数远远小于负条目数。为了解决这个问题DNGR重构了一个更密集的矩阵即PPMI矩阵SDNE对邻接矩阵的零项进行惩罚GAE对邻接矩阵中的项进行重加权NetRA将图线性化为序列。
### 图生成网络
图生成网络的目标是在给定一组观察到的图的情况下生成新的图。图生成网络的许多方法都是特定于领域的。例如在分子图生成中一些工作模拟了称为SMILES的分子图的字符串表示。在自然语言处理中生成语义图或知识图通常以给定的句子为条件。最近人们提出了几种通用的方法。一些工作将生成过程作为节点和边的交替形成因素而另一些则采用生成对抗训练。这类方法要么使用GCN作为构建基块要么使用不同的架构。
基于GCN的图生成网络主要有
**Molecular Generative Adversarial Networks (MolGAN)**
将relational GCN、改进的GAN和强化学习RL目标集成在一起以生成具有所需属性的图。GAN由一个生成器和一个鉴别器组成它们相互竞争以提高生成器的真实性。在MolGAN中生成器试图提出一个伪图及其特征矩阵而鉴别器的目标是区分伪样本和经验数据。此外还引入了一个与鉴别器并行的奖励网络以鼓励生成的图根据外部评价器具有某些属性。
**Deep Generative Models of Graphs (DGMG)**
利用基于空间的图卷积网络来获得现有图的隐藏表示。生成节点和边的决策过程是以整个图的表示为基础的。简而言之DGMG递归地在一个图中产生一个节点直到达到某个停止条件。在添加新节点后的每一步DGMG都会反复决定是否向添加的节点添加边直到决策的判定结果变为假。如果决策为真则评估将新添加节点连接到所有现有节点的概率分布并从概率分布中抽取一个节点。将新节点及其边添加到现有图形后DGMG将更新图的表示。
其它架构的图生成网络主要有
**GraphRNN**
通过两个层次的循环神经网络的深度图生成模型。图层次的RNN每次向节点序列添加一个新节点而边层次RNN生成一个二进制序列指示新添加的节点与序列中以前生成的节点之间的连接。为了将一个图线性化为一系列节点来训练图层次的RNNGraphRNN采用了广度优先搜索BFS策略。为了建立训练边层次的RNN的二元序列模型GraphRNN假定序列服从多元伯努利分布或条件伯努利分布。
**NetGAN**
Netgan将LSTM与Wasserstein-GAN结合在一起使用基于随机行走的方法生成图形。GAN框架由两个模块组成一个生成器和一个鉴别器。生成器尽最大努力在LSTM网络中生成合理的随机行走序列而鉴别器则试图区分伪造的随机行走序列和真实的随机行走序列。训练完成后对一组随机行走中节点的共现矩阵进行正则化我们可以得到一个新的图。
### 图时空网络
图时空网络同时捕捉时空图的时空相关性。时空图具有全局图结构每个节点的输入随时间变化。例如在交通网络中每个传感器作为一个节点连续记录某条道路的交通速度其中交通网络的边由传感器对之间的距离决定。图形时空网络的目标可以是预测未来的节点值或标签或者预测时空图标签。最近的研究仅仅探讨了GCNs的使用GCNs与RNN或CNN的结合以及根据图结构定制的循环体系结构。
目前图时空网络的模型主要有
* Diffusion Convolutional Recurrent Neural Network (DCRNN)
* CNN-GCN
* Spatial Temporal GCN (ST-GCN)
* Structural-RNN
![](image/2022-01-07-16-06-08.png)
## 2 根据框架和机制进行分类
### 基于消息传递机制的MPNN。
* MPNN分两个阶段消息传递阶段和Readout阶段readout阶段可以读出整个网络的特征向量用于图分类这个很关键。现在缺的两个部分之一。
![](image/2022-01-07-16-07-50.png)
### 局部图神经网络MLNN
![](image/2022-01-07-16-19-42.png)
### 图网络GN框架
统一了MPNN和MLNN
* 利用全局信息,更新每个点、每个边。
* 利用更新后的信息,形成全局的边和点。
* 利用全局的边和全局的点,构成新的全局信息
![](image/2022-01-07-16-32-32.png)
![](image/2022-01-07-16-36-07.png)
![](image/2022-01-07-16-39-34.png)
![](image/2022-01-07-16-39-48.png)
## 3 根据图计算的任务进行分类
### 节点问题:节点分类
### 边问题:将两个节点作为输入,输出边的预测
### 图问题:图分类、图匹配、图生成
### 图上的任务类别
* 半监督任务Node
* 有监督任务Graph Node
* 无监督任务Graph Embedding
## 4 根据图的类型进行分类
* 异构图
* 二部图
* 多维图
* 符号图
* 超图
* 动态图
### 异构图
点和点、边和边之间的关系不一样。节点不同。人和文章
![](image/2022-01-07-16-50-06.png)
### 二部图
将图中的节点分为两部分。不同部分的节点之间有边连接。但是各部分之间有连接。
![](image/2022-01-07-16-49-42.png)
### 多维图
边的类型有很多,多重关系组成的图。
![](image/2022-01-07-16-50-35.png)
### 符号图
边包含两种正负。
![](image/2022-01-07-16-51-01.png)
### 超图
![](image/2022-01-07-16-52-45.png)
### 动态图
节点之间的关系是会变化的。
![](image/2022-01-07-16-52-59.png)
### An overview of variants of graph neural networks
![](image/2022-01-07-22-20-49.png)
![](image/2022-01-07-22-22-36.png)
![](image/2022-01-07-22-22-43.png)
![](image/2022-01-07-22-23-09.png)

View File

@@ -1,63 +0,0 @@
# 图神经网络的分类
## 概述
主要是对图神经网络的综述,包括各种类型的图神经网络。
### 根据神经网络的类型进行分类
![](image/2022-01-07-15-49-27.png)
* 递归图神经网络
![](image/2022-01-07-15-58-46.png)
* 卷积图神经网络
![](image/2022-01-07-16-01-30.png)
* 自编码图神经网络
![](image/2022-01-07-16-04-25.png)
* 注意力图神经网络
![](image/2022-01-07-16-06-08.png)
### 根据框架和机制进行分类
* 基于消息传递机制的MPNN。
* MPNN分两个阶段消息传递阶段和Readout阶段readout阶段可以读出整个网络的特征向量用于图分类这个很关键。现在缺的两个部分之一。
![](image/2022-01-07-16-07-50.png)
* 局部图神经网络MLNN
![](image/2022-01-07-16-19-42.png)
* 图网络GN框架统一了MPNN和MLNN
* 利用全局信息,更新每个点、每个边。
* 利用更新后的信息,形成全局的边和点。
* 利用全局的边和全局的点,构成新的全局信息
![](image/2022-01-07-16-32-32.png)
![](image/2022-01-07-16-36-07.png)
![](image/2022-01-07-16-39-34.png)
![](image/2022-01-07-16-39-48.png)
### 根据图计算的任务进行分类
* 图计算任务的框架
* 节点问题
* 边问题:将两个节点作为输入,输出边的预测
* 图问题:图分类、图匹配、图生成
* 图上的任务类别
* 半监督任务Node
* 有监督任务Graph Node
* 无监督任务Graph Embedding
* 图的类型
* 异构图:点和点、边和边之间的关系不一样。节点不同。人和文章
![](image/2022-01-07-16-50-06.png)
* 二部图:将图中的节点分为两部分。不同部分的节点之间有边连接。但是各部分之间有连接。
![](image/2022-01-07-16-49-42.png)
* 多维图:边的类型有很多,多重关系组成的图。
![](image/2022-01-07-16-50-35.png)
* 符号图:边包含两种正负。
![](image/2022-01-07-16-51-01.png)
* 超图
![](image/2022-01-07-16-52-45.png)
* 动态图:节点之间的关系是会变化的。
![](image/2022-01-07-16-52-59.png)

View File

@@ -0,0 +1,10 @@
# 图分类任务
* 本次应用图神经网络存在两个主要的难点
* 构建图,函数调用图是节点名称和类型不一致的。如何构建一个合理的图很关键。需要对多余的节点进行拆分和组合。去掉冗余的边和路径。
* readout如何定义经过卷积处理的图网络的读出函数。让他能够体现整个图网络的信息节点是不是得按照一定的顺序读取才行。
总结图网络的分类任务。
###

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB