没有合适的资源?快使用搜索试试~ 我知道了~
GraphSAGE源码分析报告-袁宇箭-2018K80099080171
需积分: 0 1 下载量 44 浏览量
2022-08-03
16:41:54
上传
评论
收藏 745KB PDF 举报
温馨提示
试读
16页
1. 什么是 Graphsage 2. Grpaphsage 有什么特点 3. 怎么使用 Grpaphsage 算法程序 1. 需求建模 1. 用户将准备好的数
资源详情
资源评论
资源推荐
GraphSAGE 源码分析报告
——袁宇箭 2018K8009908017 2021.01.31
一、 Graphsage 简介
0. 什么是深度学习?
深度学习是一类机器学习算法,它使用多层渐进地从原始输入中提取高级特征。例
如,在图像处理中,较低的层可能识别边缘,而较高的层可能识别与人类相关的概念,如
数字、字母或面孔。(来自 https://en.wikipedia.org/wiki/Deep_learning)
总的来说,深度学习主要涉及三类方法:
(1)基于卷积运算的神经网络系统,即卷积神经网络(CNN)。
(2)基于多层神经元的自编码神经网络,包括自编码( Auto encoder)以及近年来受到
广泛关注的稀疏编码两类( Sparse Coding)。
(3)以多层自编码神经网络的方式进行预训练,进而结合鉴别信息进一步优化神经网
络权值的深度置信网络(DBN)。
我们目前所接触和学习到的大多是基于卷积运算的神经网络。近年来围绕卷积神经网
络而开展的研究取得了相当可观的成果,python 也有 TensorFlow、pytorch、sklearn 等库支
持神经网络的计算,如此一来代码的撰写则会方便许多,同时也可以保证模型运行的高效
性。
1. 什么是 Graphsage?
GraphSAGE 即 Graph SAmple and aggreGatE, 类似于传统的图卷积神经网络 GCN,
它也是一种图的深度学习算法,它的特点在于引入了 Inductive 和 sample 这两个特点。
GraphSage 的出现完成了机器学习从 Transductive(直推式学习)到 inductive(归纳式学
习)的转变,同时还提出了 Mean aggregator、Pooling aggregator、LSTM aggregator 这三种
聚合函数,拥有更强的表达能力。
2. Grpaphsage 有什么特点?
(1)以往 GCN 算法是典型的直推式学习方法,它所学习到的参数很大程度上与图的
结构有感,一旦图发生了变化则需要重新学习参数;而 GraphSAGE 便是采用归纳式学习
方法,它学习节点之间的聚合模式,利用结点领域的聚合模型直接学习处新节点的嵌入特
征,只要图不发生太大的变化则无需重新学习参数,大大提高了算法的鲁棒性。
图 1 Graphsage 归纳式特点图
(2)引入邻居采样,将直推式节点只表示一种局部结构转变为对应多种局部结构的节点归
纳表示,可有效防止训练过拟合,增强泛化能力。
(3)通过邻居采样的方式解决了 GCN 内存爆炸的问题,适用于大规模图。
3. 怎么使用 Grpaphsage 算法程序?
Graphsage 源码可以从 GitHub 上获取,链接 https://github.com/williamleif/GraphSAGE。
Graphsage 整体分为有监督学习和无监督学习部分,分别对应 supervised_train.py 和
unsupervised_train.py 文件,每个文件中均有自己单独的 main 函数,在运行的时候只需在
对应的文件里运行即可。
具体的 API 也分为有监督学习和无监督学习的,此处以有监督学习为例。在
supervised_train.py 文件中,存在 main 函数
def main(argv=None):
print("Loading training data..")
train_data = load_data(FLAGS.train_prefix)
print("Done loading training data..")
train(train_data)
首先利用 load_data 函数(utils.py 文件中)从数据集中获取数据并将其设置为算法所
需要的格式得到 train_data,其函数头以及返回值如下:
def load_data(prefix, normalize=True, load_walks=False):
...
return G, feats, id_map, walks, class_map
根据函数的返回值我们大致可以推断出我们需要准备的数据集的内容了,源码网站为
我们提供了一个数据集格式的标准以及数据集示例,如下:
图 2 数据集格式标准图
此处以 toy-ppi 数据集为例,其图(G)、class_map 以及 id_map 需要是 json 格式的文
件,feats 需要 npy 型文件(可以调用 python 的 numpy 库来生成),walks 需要 txt 型文
件。
之后调用 train 函数并代入 load_data 函数处理得到的以上五个数据即可完成训练,具
体内部的实现逻辑因为不是本课程的重点就不详细叙述了,在接下来的分析中将会重点针
对面向对象的思想进行分析而非算法本身。
为了方便用户使用 graphsage 程序,开发者专门撰写了一个 example_supervised.sh 文
件,里面包含了运行程序需要输入的命令行,在命令行内可以指定聚合的方式等具体实现
中的算法。如果需要更改内部算法进行训练则只需更改 example_supervised.sh 文件中命令
行的参数即可,以下是命令行的一个示例:
图 3 命令行示意图
该例子中./example_data/ppi 表示数据集的路径,supervised_train 表示采用的是有监督
学习, graphsage_mean 表示采用的聚合方法是 Mean aggregator。在 linux 系统中,设置好
了数据集以及命令行参数后,只需输入“sudo ./example_supervised.sh”即可开始训练。
自己设计数据集时,需要保证和样例中一样的格式,否则可能需要修改 load_data 函数
来完成训练(不过这是一个不明智的选择,因为代码在封装之后需要保证一定的封闭性,
即用户不可以随意修改程序内部代码,以免造成程序出错从而产生错误的结果)。或者可
以根据 adapter 适配器模式的思想设计一个“转接口”以保证接口的统一(将其他格式的数
据转换成 graphsage 要求的数据格式)。
二、主要功能分析与建模
0. 功能选取
此处主要针对有监督学习部分的功能进行分析。有监督学习是从标签化训练数据集中
推断出函数的机器学习任务,比较像我们平时做题的过程:从已知答案的练习题中推断出
做题规律,从而很好地运用在考试上。
1. 需求建模
对于机器学习,我们所需要的是利用训练集对模型进行训练,并利用测试集测试模型
的准确度。运用需求模型,我们可以得到以下的分析:
(1) WHAT
程序需要根据用户提供的数据集,利用图(G.json 文件)中邻居节点的特征,为先前
未见过的数据有效地生成节点的 Embedding。
(2) WHY
大图学习容易造成内存溢出以及时间过长等问题,在暂时无法提升硬件水平的情况
下,设计出更高效的算法相对来说是更好的选择。
(3) 需求分析
采用用例法,包含正常处理、异常处理以及替代处理的流程
【用例名称】
Graphsage 有监督学习算法
【场景】
Who:用户、程序、数据集
Where:内存
When:运行时(训练时)
【用例描述】
1. 用户将准备好的数据集放到指定的文件目录下
2. 用户在命令行参数处设置好数据集路径和聚合方式,并运行该 sh 文件。
剩余15页未读,继续阅读
神康不是狗
- 粉丝: 29
- 资源: 338
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0