https://yq.aliyun.com/articles/712465?type=2

讲了最基本的概念:

1.b.常见的欧几里得结构化数据

将数据转换到欧几里得空间中,所得到的数据称为欧几里得结构化数据。
常见的欧几里得结构化数据主要包含:
1D:声音,时间序列等;
2D:图像等;
3D:视频,高光谱图像等;

2.a.非欧几里得空间

科学研究中并不是所有的数据都能够被转换到欧几里得空间中(eg:社交网络、信息网络等),对于不能进行欧几里得结构化的数据,我们将其称为非欧几里得结构化数据。

2.b.非常见的欧几里得结构化数据

1D:社交网络(eg:Facebook,Twitter等)等;
2D:生物网络(基因,分子,大脑连接)等;
3D:基础设施网络(eg:能源,交通,互联网,通信等)等;

3.a.图(Graph)的引入

针对非欧几里得结构化数据表示问题,研究者们引入了图论中抽象意义上的图(Graph)来表示非欧几里得结构化数据。

4.图上的学习任务

介绍完图的基本术语之后,我们来看看有了图结构数据,我们可以进行哪些机器学习的任务
1、图节点分类任务:图中每个节点都有对应的特征,当我们已知一些节点的类别的时候,可以设计分类任务针对未知节点进行分类。我们接下来要介绍的 GCN、GraphSAGE、GAT模型都是对图上的节点分类
2、图边结构预测任务:图中的节点和节点之间的边关系可能在输入数据中能够采集到,而有些隐藏的边需要我们挖掘出来,这类任务就是对边的预测任务,也就是对节点和节点之间关系的预测。
3、图的分类:对于整个图来说,我们也可以对图分类,图分类又称为图的同构问题,基本思路是将图中节点的特征聚合起来作为图的特征,再进行分类

5.图数据应用举例

对于一个简单的电商的图,其包含卖家,商品和用户三个关键节点,其中,商品节点关联商品类别节点,用户节点关联注册 IP 节点和 注册地址节点。当用户在购买商品时,用户节点和商品节点就会关联交易节点,同时,交易节点也会关联用户下单时所对应的 IP 节点以及收获地址节点,对应的图结构如下图所示。

从图数据中节点间的关系以及特征,我们可以进行反欺诈以及商品推荐的操作。
1、节点分类—反欺诈:因为图中每个节点都拥有自己的特征信息。通过该特征信息,我们可以构建一个风控系统,如果交易节点所关联的用户 IP 和收货地址与用户注册 IP 和注册地址不匹配,那么系统将有可能认为该用户存在欺诈风险。
2、边结构预测—商品推荐:图中每个节点都具有结构信息。如果用户频繁购买某种类别商品或对某种类别商品评分较高,那么系统就可以认定该用户对该类商品比较感兴趣,所以就可以向该用户推荐更多该类别的商品。
总而言之,图数据的丰富应用价值促使更多的研究者加入图数据的研究当中,但是对图数据进行数据分析时,我们需要同时考虑到节点的特征信息以及结构信息。如果靠手工规则来提取,必将失去很多隐蔽和复杂的模式,那么有没有一种方法能自动化地同时学到图的特征信息与结构信息呢?这就是近年来兴起的机器学习的一个热点方向—图神经网络(Graph Neural Networks)。接下来我们将以一个系列的文章介绍它们。


https://zhuanlan.zhihu.com/p/64085525


https://cloud.tencent.com/developer/article/1481281

GNN 系列:图神经网络的“开山之作”CGN模型

【导读】这是我们介绍图神经网络的第一篇文章,取自Kipf et al. 2017,文章中提出的模型叫Graph Convolutional Network(GCN),个人认为可以看作是图神经网络的“开山之作”,因为GCN利用了近似的技巧推导出了一个简单而高效的模型,使得图像处理中的卷积操作能够简单得被用到图结构数据处理中来,后面各种图神经网络层出不穷,或多或少都受到这篇文章的启发。

目录

1、问题定义

2、图上的快速卷积近似

a 谱图卷积(Spectral Graph Convolutions)

b 逐层线性模型

3、半监督学习节点分类

a 传播公式解释

b 例子

4、后话

5、Reference

正文

1. 问题定义

考虑图(例如引文网络)中节点(例如文档)的分类问题,通常该图中只有一小部分节点有标签。这类问题可以划分到基于图的半监督学习问题中。为了对节点进行分类,首先我们可以利用节点自身的特征信息,除此之外,我们还可以利用图结构信息,因此一个典型的图半监督学习问题可以采用下面的学习策略:

这样的学习策略基于图中的相邻节点标签可能相同的假设。然而,这个假设可能会限制模型的能力,因为图的边不一定代表所连接节点相似。

因此,在这个工作中,作者不再显示的定义图结构信息的损失函数 Lreg, 而是使用神经网络模型f(X,A)直接对图结构进行编码,训练所有带标签的结点L0,来避免损失函数中的正则化项Lreg。

这篇文章的主要贡献是为图半监督分类任务设计了一个简单并且效果好的神经网络模型,这个模型由谱图卷积(spectral graph convolution)的一阶近似推导而来,具有理论基础。

2. 图上的快速卷积近似

这一节介绍如何从谱图卷积推导出GCN的逐层更新模型,涉及到一些谱图理论的知识,可以安全的跳过这一节,后面我们会为谱图卷积出一个专栏的文章,详细讨论它们

这一节主要介绍图神经网络逐层更新(propagation)的理论推导。多层图卷积网络(Graph Convolutional Network, GCN)的逐层传播公式:

2.a 谱图卷积(Spectral Graph Convolutions)

2.b. 逐层线性模型

现在假设我们限制K=1,即谱图卷积近似为一个关于L的线性函数。这种情况下,我们仍能通过堆叠多层来得到卷积的能力,但是这时候,我们不再受限于切比雪夫多项式参数的限制。我们期望这样的模型能够缓解当图中节点度分布差异较大时对局部结构过拟合问题,比如社交网络,引文网络,知识图谱等。另一方面,从计算的角度考虑,逐层线性模型使我们可以构建更深的模型。

3. 半监督学习节点分类

针对非欧几里得结构化数据表示问题,研究者们引入了图论中抽象意义上的图(Graph)来表示非欧几里得结构化数据。

3.a.传播公式解释

上一节中,我们从谱图卷积理论中推导得到了GCN是如何逐层更新节点embedding的

3.b 例子

4. 后话

实现时,由于GCN需要输入整个邻接矩阵A和特征矩阵X, 因此它是非常耗内存的,论文中作者做了优化,他们将A作为稀疏矩阵输入,然后通过实现稀疏矩阵和稠密矩阵相乘的GPU算子来加速计算,然而,即使这样,整个矩阵仍然存在这要被塞进内存和显存中的问题,当图规模变大的时候,这种方法是不可取的,在下一篇GraphSAGE的博文中,我们将会介绍如何巧妙的克服这样的问题。

5.Reference

Semi-Supervised Classification with Graph Convolutional Networks


GNN 系列:GraphSAGE

【引言在GCN的博文中我们重点讨论了图神经网络的逐层传播公式是如何推导的,然而,GCN的训练方式需要将邻接矩阵和特征矩阵一起放到内存或者显存里,在大规模图数据上是不可取的。其次,GCN在训练时需要知道整个图的结构信息(包括待预测的节点), 这在现实某些任务中也不能实现(比如用今天训练的图模型预测明天的数据,那么明天的节点是拿不到的)。GraphSAGE的出现就是为了解决这样的问题,这篇文中我们将会详细地讨论它。

Inductive learning v.s. Transductive learning

首先我们介绍一下什么是inductive learning. 与其他类型的数据不同,图数据中的每一个节点可以通过边的关系利用其他节点的信息,这样就产生了一个问题,如果训练集上的节点通过边关联到了预测集或者验证集的节点,那么在训练的时候能否用它们的信息呢? 如果训练时用到了测试集或验证集样本的信息(或者说,测试集和验证集在训练的时候是可见的), 我们把这种学习方式叫做transductive learning, 反之,称为inductive learning. 显然,我们所处理的大多数机器学习问题都是inductive learning, 因为我们刻意的将样本集分为训练/验证/测试,并且训练的时候只用训练样本。然而,在GCN中,训练节点收集邻居信息的时候,用到了测试或者验证样本,所以它是transductive的

概述

GraphSAGE是一个inductive框架,在具体实现中,训练时它仅仅保留训练样本到训练样本的边。inductive learning 的优点是可以利用已知节点的信息为未知节点生成Embedding. GraphSAGE 取自 Graph SAmple and aggreGatE, SAmple指如何对邻居个数进行采样。aggreGatE指拿到邻居的embedding之后如何汇聚这些embedding以更新自己的embedding信息。下图展示了GraphSAGE学习的一个过程:

1.对邻居采样

2.采样后的邻居embedding传到节点上来,并使用一个聚合函数聚合这些邻居信息以更新节点的embedding

3.根据更新后的embedding预测节点的标签

算法细节

  1. 节点 Embedding 生成(即:前向传播)算法

下面的算法描述了我们是怎么做前向传播的:

  2. 采样 (Sample) 算法

  3. 聚合器 (Aggregator) 架构

  4. 参数学习

后话

GraphSAGE采用了采样的机制,克服了GCN训练时内存和显存上的限制,使得图模型可以应用到大规模的图结构数据中,是目前几乎所有工业上图模型的雏形。然而,每个节点这么多邻居,采样能否考虑到邻居的相对重要性呢,或者我们在聚合计算中能否考虑到邻居的相对重要性? 这个问题在我们的下一篇博文Graph Attentioin Networks中做了详细的讨论。


 

GraphSage:的更多相关文章

  1. 最全面的图卷积网络GCN的理解和详细推导,都在这里了!

    目录 目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral doma ...

  2. 论文解读(GIN)《How Powerful are Graph Neural Networks》

    Paper Information Title:<How Powerful are Graph Neural Networks?>Authors:Keyulu Xu, Weihua Hu, ...

  3. 论文阅读 Streaming Graph Neural Networks

    3 Streaming Graph Neural Networks link:https://dl.acm.org/doi/10.1145/3397271.3401092 Abstract 本文提出了 ...

  4. GNN 101

    GNN 101 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ GNN 101 Why Graph无处不在 Graph Intelligence helps It's t ...

  5. java web 开发三剑客 -------电子书

    Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...

  6. 所有selenium相关的库

    通过爬虫 获取 官方文档库 如果想获取 相应的库 修改对应配置即可 代码如下 from urllib.parse import urljoin import requests from lxml im ...

  7. GraphSAGE 代码解析(四) - models.py

    原创文章-转载请注明出处哦.其他部分内容参见以下链接- GraphSAGE 代码解析(一) - unsupervised_train.py GraphSAGE 代码解析(二) - layers.py ...

  8. GraphSAGE 代码解析(三) - aggregators.py

    原创文章-转载请注明出处哦.其他部分内容参见以下链接- GraphSAGE 代码解析(一) - unsupervised_train.py GraphSAGE 代码解析(二) - layers.py ...

  9. GraphSAGE 代码解析(二) - layers.py

    原创文章-转载请注明出处哦.其他部分内容参见以下链接- GraphSAGE 代码解析(一) - unsupervised_train.py GraphSAGE 代码解析(三) - aggregator ...

随机推荐

  1. Re-py交易

    python在线反编译 https://tool.lu/pyc/ 获得源码 import base64 def encode(message): s = '' for i in message: x ...

  2. LG2679 「NOIP2015」子串 线性DP

    问题描述 LG2679 题解 设\(opt[i][j]\)代表A串前\(i\)个,匹配\(B\)串前\(j\)个,选择了\(k\)个子串的方案数. 转移用前缀和优化一下. \(\mathrm{Code ...

  3. 站点部署,IIS配置优化指南[转]

    站点部署,IIS配置优化指南 目录 一.       设置应用程序池默认设置 二.       常规设置 三.       优化回收策略 四.       性能 五.       IIS初始化(预加载 ...

  4. CF732D Exams

    这题可以用二分答案来做 那么为什么可以用二分答案呢? 答案当然是满足了单调性. 假设用\(x\)天能够考完所有试,那么用大于$x $天必定也能够考完所有试,所以满足了单调性,我们就可以二分答案 那么如 ...

  5. windows7 php 环境架设

    参考 https://www.jb51.net/article/38048.htm   常见问题解决方案     https://blog.csdn.net/w_yunlong/article/det ...

  6. 第04组 Beta冲刺(5/5)

    队名:new game 组长博客 作业博客 组员情况 鲍子涵(队长) 过去两天完成了哪些任务 动画优化 接下来的计划 等待答辩 还剩下哪些任务 让游戏本体运行 遇到了哪些困难 时间太少了 有哪些收获和 ...

  7. 云服务AppId或AppKey和AppSecret生成策略

    App key和App Secret App key简称API接口验证序号,是用于验证API接入合法性的.接入哪个网站的API接口,就需要这个网站允许才能够接入,如果简单比喻的话:可以理解成是登陆网站 ...

  8. 05Shell循环语句

    循环语句 for 语法结构 for 变量名 [ in 取值列表 ] do 循环体 done 注意 当for对文件内容进行逐行处理时,会忽略空行 示例 例1 ping 主机的脚本(初始版):缺点执行过程 ...

  9. SpringBoot系列之日志框架介绍及其原理简介

    SpringBoot系列之日志框架介绍及其原理简介 1.常用日志框架简介 市面上常用日志框架:JUL.JCL.jboss-logging.logback.log4j.log4j2.slf4j.etc. ...

  10. 【转】理解ASP.NET Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文

    这篇英文博文是 Andrew Lock 写的 Introduction to Authentication with ASP.NET Core . 以下是简单的阅读笔记: -------------- ...