GraphSAGE: GCN落地必读论文
来源 | NIPS17
导读:图卷积网络(Graph Convolutional Network,简称GCN)最近两年大热,取得不少进展。作为 GNN 的重要分支之一,很多同学可能对它还是一知半解。PinSAGE( PinSage: 第一个基于 GCN 的工业级推荐系统)为 GCN 落地提供了实践经验,而本文是 PinSAGE 的理论基础,同样出自斯坦福,是 GCN 非常经典和实用的论文。
论文链接:Inductive Representation Learning on Large Graphs https://papers.nips.cc/paper/6703-inductive-representation-learning-on-large-graphs.pdf
1. 概括
在大规模图上学习节点 embedding ,在很多任务中非常有效,如学习节点拓扑结构的 DeepWalk 以及同时学习邻居特征和拓扑结构的 semi-GCN 。
但是现在大多数方法都是直推式学习, 不能直接泛化到未知节点。这些方法是在一个固定的图上直接学习每个节点 embedding ,但是大多情况图是会演化的,当网络结构改变以及新节点的出现,直推式学习需要重新训练(复杂度高且可能会导致 embedding 会偏移),很难落地在需要快速生成未知节点embedding的机器学习系统上。
本文提出归纳学习— GraphSAGE(Graph SAmple and aggreGatE) 框架,通过训练聚合节点邻居的函数(卷积层),使 GCN 扩展成归纳学习任务,对未知节点起到泛化作用。
直推式 ( transductive ) 学习:从特殊到特殊,仅考虑当前数据。在图中学习目标是学习目标是直接生成当前节点的 embedding,例如 DeepWalk、LINE,把每个节点 embedding 作为参数,并通过 SGD 优化,又如 GCN,在训练过程中使用图的拉普拉斯矩阵进行计算。
归纳 ( inductive ) 学习:平时所说的一般的机器学习任务,从特殊到一般:目标是在未知数据上也有区分性。
2.GraphSAGE框架
本文提出 GraphSAGE 框架的核心是如何聚合节点邻居特征信息,本章先介绍 GraphSAGE 前向传播过程(生成节点 embedding ),不同的聚合函数设定;然后介绍无监督和有监督的损失函数以及参数学习。
2.1 前向传播
a. 可视化例子:下图是 GraphSAGE 生成目标节点(红色)embededing 并供下游任务预测的过程:

先对邻居随机采样,降低计算复杂度(图中一跳邻居采样数=3,二跳邻居采样数=5)
生成目标节点 emebedding:先聚合 2 跳邻居特征,生成一跳邻居 embedding ,再聚合一跳邻居embedding,生成目标节点embedding,从而获得二跳邻居信息。(后面具体会讲)。
将 embedding 作为全连接层的输入,预测目标节点的标签。
b. 伪代码:

4-5 行是核心代码,介绍卷积层操作:聚合与节点v相连的邻居(采样)k-1 层的 embedding,得到第 k 层邻居聚合特征 ,与节点 v 第 k-1 层 embedding
拼接,并通过全连接层转换,得到节点 v 在第 k 层的 embedding
。
2.2 聚合函数
伪代码第 5 行可以使用不同聚合函数,本小节介绍五种满足排序不变量的聚合函数:平均、GCN 归纳式、LSTM、pooling 聚合器。(因为邻居没有顺序,聚合函数需要满足排序不变量的特性,即输入顺序不会影响函数结果)
a.平均聚合:先对邻居 embedding 中每个维度取平均,然后与目标节点embedding 拼接后进行非线性转换。
b. 归纳式聚合:直接对目标节点和所有邻居 emebdding 中每个维度取平均(替换伪代码中第5、6行),后再非线性转换:
c. LSTM 聚合:LSTM 函数不符合“排序不变量”的性质,需要先对邻居随机排序,然后将随机的邻居序列 embedding 作为 LSTM 输入。

d. Pooling 聚合器:先对每个邻居节点上一层 embedding 进行非线性转换(等价单个全连接层,每一维度代表在某方面的表示(如信用情况)),再按维度应用 max/mean pooling ,捕获邻居集上在某方面的突出的/综合的表现 以此表示目标节点 embedding 。
2.3 无监督和有监督损失设定
损失函数根据具体应用情况,可以使用基于图的无监督损失和有监督损失。
a. 基于图的无监督损失:希望节点 u 与“邻居”v 的 embedding 也相似(对应公式第一项),而与“没有交集”的节点 不相似(对应公式第二项)。

为节点 u 通过 GraphSAGE 生成的 embedding 。
节点 v 是节点 u 随机游走访达“邻居”。
表示负采样:节点
是从节点u的负采样分布
采样的,Q 为采样样本数。
embedding 之间相似度通过向量点积计算得到
b. 有监督损失:无监督损失函数的设定来学习节点 embedding 可以供下游多个任务使用,若仅使用在特定某个任务上,则可以替代上述损失函数符合特定任务目标,如交叉熵。
2.4 参数学习
通过前向传播得到节点 u 的 embedding ,然后梯度下降(实现使用 Adam 优化器) 进行反向传播优化参数
和聚合函数内参数。
3.实验
3.1 实验目的
比较 GraphSAGE 相比 baseline 算法的提升效果;
比较 GraphSAGE 的不同聚合函数。
3.2 数据集及任务
Citation 论文引用网络(节点分类)
Reddit web 论坛 (节点分类)
PPI 蛋白质网络 ( graph 分类)
3.3 比较方法
随机分类器
手工特征(非图特征)
deepwalk(图拓扑特征)
deepwalk+手工特征
GraphSAGE 四个变种 ,并无监督生成 embedding 输入给 LR 和端到端有监督
(分类器均采用 LR )
3.4 GraphSAGE 设置
K=2,聚合两跳内邻居特征
S1=25,S2=10:对一跳邻居抽样 25 个,二跳邻居抽样 10 个
RELU 激活单元
Adam 优化器
对每个节点进行步长为 5 的 50 次随机游走
负采样参考 word2vec,按平滑 degree 进行,对每个节点采样 20 个。
保证公平性:所有版本都采用相同的 minibatch 迭代器、损失函数、邻居抽样器。
3.5 运行时间和参数敏感性
计算时间:下图A中 GraphSAGE 中 LSTM 训练速度最慢,但相比DeepWalk,GraphSAGE 在预测时间减少 100-500 倍(因为对于未知节点,DeepWalk 要重新进行随机游走以及通过 SGD 学习 embedding )
邻居抽样数量:下图 B 中邻居抽样数量递增,边际收益递减(F1),但计算时间也变大。平衡 F1 和计算时间,将 S1 设为 25 。
聚合K跳内信息:在 GraphSAGE, K=2 相比 K=1 有 10-15% 的提升;但将 K 设置超过 2 ,边际效果上只有 0-5% 的提升,但是计算时间却变大了 10-100 倍。

3.6 效果
GraphSAGE 相比 baseline 效果大幅度提升
GraphSAGE 有监督版本比无监督效果好。
LSTM 和 pool 的效果较好

原文链接:https://zhuanlan.zhihu.com/p/62750137
(*本文为 AI科技大本营转载文章,转载请联系作者)
◆
精彩推荐
◆
AI ProCon 2019 邀请到了亚马逊首席科学家@李沐,在大会的前一天(9.5)亲授「深度学习实训营」,通过动手实操,帮助开发者全面了解深度学习的基础知识和开发技巧。

9大技术论坛、60+主题分享,百余家企业、千余名开发者共同相约 2019 AI ProCon!技术驱动产业,聚焦技术实践,倾听大牛分享,和万千开发者共成长。5折优惠票抢购中!

社群福利
扫码添加小助手,回复:大会,加入2019 AI开发者大会福利群,每周一、三、五 更新学习资源、技术福利,还有抽奖活动~
最前沿:堪比E=mc2,Al-GA才是实现AGI的指标性方法论
1万+字原创读书笔记,机器学习的知识点全在这篇文章里
开源之战
别再造假数据了,来试试Faker这个库吧!
国外大神制作的超棒NumPy可视化教程
突发!Python再次第一,Java和C下降,凭什么?
白话中台战略:中台是个什么鬼?
伟创力回应扣押华为物资;谷歌更新图片界面;Python 3.8.0b3 发布 | 极客头条
沃尔玛也要发币了,Libra忙活半天为他人做了嫁衣?

相关文章:

Ubuntu14.04 32位上编译VLC2.2.0源码操作步骤
1. 首先安装必须的依赖软件,打开终端,执行:sudo apt-get install git libtool build-essential pkg-config autoconf2. 从 http://www.videolan.org/vlc/download-sources.html 下载vlc-2.2.0源码,将其存放到/home/spring/VLC目录…

根据PromiseA+规范实现Promise
Promise是ES6出现的一个异步编程的一个解决方案,改善了以往回调函数的回调地狱(虽然写起来也挺像的)。不会Promise的可以移步阮一峰的Promise,这里讲的非常清晰。 就现在的发展情况而言,Promise这种解决方案频繁的在我们的代码中出现…

黄浴:基于深度学习的超分辨率图像技术发展轨迹一览
作者 | 黄浴转载自知乎导读:近年来,使用深度学习技术的图像超分辨率(SR)取得了显著进步。本文中,奇点汽车自动驾驶首席科学家黄浴对基于深度学习技术的图像超分辨率技术进行了一次全面的总结,分析了这门技术…

Qt简介、安装及在Ubuntu14.04 32位上简单使用举例
Qt是一个跨平台的C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序。Qt是面向对象的框架,很容易扩展。Qt是一个C工具包,它由几百个C类构成,你在程序中可以使用这些类。Qt具有OOP的所有优点。 跨平台的…

FOSCommentBundle功能包:设置Doctrine ODM映射(投票)
原文出处:12b-mapping_mongodb.md原文作者:FriendsOfSymfony授权许可:创作共用协议翻译人员:FireHare校对人员:适用版本:FOSCommentBundle 2.0.5文章状态:草译阶段Step 12b: Setup MongoDB mapp…

Python最大堆排序实现方法
Python最大堆排序实现方法,具体代码如下: # -*- coding: utf-8 -*- def merge_sort(seq, cmpcmp, sentinelNone): """合并排序,伪码如下: MERGE(A, p, q, r) 1 n1 ← q - p 1 // 前个子序列长度 2 …

内含福利 | 世界人工智能大会:对话大咖,深挖机器学习的商业应用
机器学习作为人工智能时代的关键技术突破,已经在日常生活中广泛应用,给用户带来便利。越来越多的企业也通过机器学习,解决生产和经营中的难题。传统制造业:应用机器学习,部署系统异常检测方案,预测组件寿命…

windows7 64位操作系统上使vs2010和vs2013能够并存的处理方法
之前机子上是只安装有vs2010,后来在没有卸载vs2010的情况下想装个vs2013,使vs2010与vs2013同时并存在windows764位机上。需要依次安装cn_visual_studio_ultimate_2013_x86_dvd_3009109.iso、vs2013.2.iso和vc_mbcsmfc.exe。在安装过程中遇到的问题有: (…

Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0
Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0 昨晚Nacos社区发布了第一个生产级版本:0.8.0。由于该版本除了Bug修复之外,还提供了几个生产管理非常重要的特性,所以觉得还是有必要写一篇讲讲这次升级,在后续的…

awk命令使用和取出数据的最大值,最小值和平均值
得到取出数据的最大值:cat manager.txt |grep monitor|awk {print$9}|sort -rn|head -1得到取出数据的最小值:cat manager.txt|grep monitor |awk {print $9}|sort -n|head -1得到取出数据的平均值:cat manager.txt|grep monitor |awk {print…

windows7 64位机上CUDA7.0配置及在VS2010中的简单使用举例
1. 查看本机配置,查看显卡类型是否支持NVIDIA GPU,选中计算机--> 右键属性 --> 设备管理器 --> 显示适配器:NVIDIA GeForce GT 610,从https://developer.nvidia.com/cuda-gpus可以查到相应显卡的compute capabili…

用友云平台,真正的云原生架构,加速云应用落地
数字化经济的出现,企业需要通过新技术实现数字化转型,完成企业管理和业务模式变革。而云计算是数字化中尤为重要且能够更快实现的技术手段。真正的云应用必须是基于云原生架构的,PaaS是一个重要的步骤,因为这是云原生的第一接触点…

从ACM班、百度到亚马逊,深度学习大牛李沐的开挂人生
“大神”,是很多人对李沐的印象。作为一经推出便大受追捧的 MXNet 深度学习框架的主要贡献者之一,李沐功不可没。值得注意的是,这个由 DMLC(Distributed Machine Learning Community)打造的深度学习框架,创…

Linux基础介绍
Linux的创始人Linus Torvalds。Linux的官方标准发音为[linəks]。Linux和Unix是非常像的,Linux就是根据Unix演变过来的。Linux是免费的,其实只是说Linux的内核免费。在Linux内核的基础上产生了众多的Linux版本。Linux的发行版说简单点就是将Linux内核与应…

Go在区块链的发展和演进
Go语言发展至今已经过去十年多了,是目前最流行的新兴语言,云计算领域的首选语言,而且目前随着区块链的流行,Go再次成为了这个领域的第一语言,以太坊,IBM的fabric等重量级的区块链项目都是基于Go开发。 原文…

一天掌握AI核心技术,上手应用,开发者该划哪些重点?
Alpha Go 只会下棋,却并不擅长垃圾分类;智能助手已经可以执行很多任务,但距离真正的人机自然交互还很远。如今 AI 的发展面临着诸多瓶颈,基础理论研究缺失,深度学习的黑箱属性无解,把一切托付于未知并不可靠…

学会这21条,你离Vim大神就不远了
来源 | Python编程时光(ID: Python-Time)导语:作者本人是 Vim 的重度使用者,就因为喜欢上这种双手不离键盘就可以操控一切的feel,Vim 可以让人对文本的操作更加精准、高效。对于未使用过 Vim 的朋友来说,可…

C 语言 和 C++语言的对比学习 二 数据类型
不管是什么语言,我们最习惯的是通过 “hello world” ,来昭告世界,我们有了新的语言来向这个世界问好,尽管真正属于我们自己的其实是哭声。(呵呵,笑点有点低),下面我们来介绍最为基础…

Makefile语法基础介绍
在Linux下,make是一个命令工具,是一个解释Makefile中指令的命令工具。make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样去编译和链接程序。 make如何工作:在默认的方式下,只输入make命令&am…

MaxCompute studio与权限那些事儿
背景知识 MaxCompute拥有一套强大的安全体系,来保护项目空间里的数据安全。用户在使用MaxCompute时,应理解权限的一些基本概念: 权限可分解为三要素,即主体(用户账号或角色),客体(表…

GitHub标星3w+的项目,全面了解算法和数据结构知识
作者 | 程序员小吴来源 | 五分钟学算法(ID: CXYxiaowu)导语:今天分享一个开源项目,里面汇总了程序员技术面试时需要了解的算法和数据结构知识,并且还提供了相应的代码,目前 GitHub 上标星 35000 star&#…

Shell脚本基础介绍
shell基础简介:编写脚本通常使用某种基于解释器的编程语言。而shell脚本不过就是一些文件,我们能将一系列需要执行的命令写入其中,然后通过shell来执行这些脚本。进入Linux系统(Ubuntu),打开终端Terminal,”$”表示普通…

「小程序JAVA实战」小程序的举报功能开发(68)
转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/ 通过点击举报按钮,跳转到举报页面完成举报操作。 后台开发 获取发布人的userId,videoId,创建者的Id controllerUserControlle…

tar常见文件解压法
2019独角兽企业重金招聘Python工程师标准>>> tar常见文件解压法:.gz - z 小写.bz2 - j 小写.xz - J 大写.Z - Z大写 转载于:https://my.oschina.net/open1900/blog/149238

cookie的作用域
当我们给网站设置cookie时,大家有没有发现在网站的其他域名下也接收到了这些cookie。这些没用的cookie看似不占多少流量,但如果对一个日PV千万的站点来说,那浪费的资源就不是一点点了。因此在设置cookie时,对它的作用域一定要设置…

必看,10篇定义计算机视觉未来的论文
译者 | Major编辑 | 赵雪出品 | AI科技大本营(ID:rgznai100)导语:如果你没能参加 CVPR 2019 , 别担心。本文列出了会上人们最为关注的 10 篇论文,覆盖了 DeepFakes(人脸转换), Facial Recogniti…

有效的rtsp流媒体测试地址汇总
以下是从网上搜集的一些有效的rtsp流媒体测试地址: 1. rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp 2. rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp 3. rtsp://211.139.194.251:554…

java简单的ID生成器
2019独角兽企业重金招聘Python工程师标准>>> https://www.cnblogs.com/hongdada/p/9324473.html https://github.com/apache/incubator-shardingsphere 转载于:https://my.oschina.net/u/3005325/blog/3006311

安装、设置与启动MySql5.1.30绿色版的方法
1、解压 mysql-noinstall-5.1.30-win32.zip(下载地址http://dev.mysql.com/downloads/mysql/5.1.html)2、在 F 盘建立目录 MySql\MySqlServer5.1\ 3、把解压的内容复制到 F:\MySql\MySqlServer5.1\4、在 F:\MySql\MySqlServer5.1\ 中找 my-large.ini 把它复制成 my.ini5、在…

网页中插入VLC播放器播放rtsp视频流步骤
1. 仿照http://download.csdn.net/detail/haowenxin123456789/8044245 中步骤; 2. 从http://www.videolan.org/vlc/index.html 中下载 vlc-2.2.1-win32.exe 并安装到D:\\ProgramFiles文件夹下; 3. 运行:regsvr32 D:\\ProgramFil…