【从零开始】CS224W-图机器学习-2021冬季学习笔记8.1 Applications of Graph Neural Networks
课程主页:CS224W | Home
课程视频链接:斯坦福CS224W《图机器学习》课程(2021) by Jure Leskovec
文章目录
1 前言
2 对GNN进行图增强
2.1 图特征增强
情形1:输入图上没有节点特征
情形2:GNN难以学习的特定结构
2.2 图结构增强
2.2.1 对稀疏图:添加虚拟节点 / 边
2.2.2 对稠密图:邻居节点抽样
3 总结
4 参考文献
1 前言
之前两篇内容介绍了GNN的单个层的构建方式(信息转换和信息聚合)以及如何将每一层GNN连接起来:
接下来两篇文章将介绍上图中的第四步和第五步,图增强部分和训练目标函数部分。
2 对GNN进行图增强
如上图,图增强的基本思路是:使原始输入图和应用在GNN中的计算图不完全相同(即对原始输入进行一定处理后,再得到GNN中应用的计算图)。之后要讨论的图增强分为两种:图特征增强和图结构增强。
为什么要进行图增强呢?
我们在之前的学习过程中都假设原始图数据和应用于GNN的计算图一致,但很多情况下原始图数据可能不适于GNN:
特征层面:输入图可能缺少特征(也可能是特征很难编码)
结构层面:
- 图过于稀疏,导致信息传递的效率低(因为边太少)
- 图过于稠密,导致信息传递的代价高(每次消息转换都需要对好几个节点做运算)
- 图太大,无法将计算图装在GPU内存中
所以我们需要对输入图进行增强。图增强的方法大致分为两类:
图特征增强:因为输入图缺少特征
图结构增强:
- 图过于稀疏,我们可以增加虚拟节点/边
- 图过于稠密→在传递信息时对邻居进行采样
- 图太大→在计算嵌入时对子图进行采样(在后续课程中会专门介绍如何将GNN方法泛化到大型数据上Scale up)
2.1 图特征增强
情形1:输入图上没有节点特征
有时,我们的输入图上是没有节点特征的(通常只有邻接矩阵),这时就需要图特征增强。
标准方法:
a. 给每个节点赋常数特征:
b. one-hot:给每个节点赋唯一ID,将ID转换为独热编码向量的形式(即ID对应索引的元素为1,其他元素都为0)
两种方法比较:
Constant node feature | One-hot node feature | |
表示能力 | 中等:所有节点都一样,但是GNN仍然可以学到图结构信息 | 高:每个节点ID唯一,所以可以储存节点特有的信息 |
泛化能力 | 高:对新节点再赋这个常数就行 | 低:无法泛化到新节点上,因为对新节点再赋ID的话,GNN无法嵌入这个新ID,所以训练前必须知道整个节点集和边集 |
计算开销 | 低:只有一维特征 | 高:维特征,无法应用到大型图上 |
适用情况 | 所有图 | 小图(没有新节点) |
情形2:GNN难以学习的特定结构
举例:节点所处环上的节点数(Cycle count feature)
问题:因为图上所有节点的度数相同(都是2),所以无论环上有多少个节点,GNN都会得到相同的计算图(二叉树),进而得到相同的节点嵌入,所以无法将节点区分开。
解决方法:加上cycle count这一特征向量(one-hot编码,节点数对应索引的元素为1,其他元素为0)。这样做之后,[0,0,0,1,0,0]将表示一个三角形、[0,0,0,0,1,0]将表示一个正方形。
其他给节点增强特征的方法有:Node degree(计算节点度数作为特征),Clustering coefficient(节点聚类系数:衡量节点邻居的连接程度),Centrality(节点中心度:考虑节点的重要性),PageRank等。
2.2 图结构增强
2.2.1 对稀疏图:添加虚拟节点 / 边
1.添加虚拟边
常用做法:在2-hop邻居之间加虚拟边
适用情况:如作者-论文组成的二部图中,增加2-hop的虚拟边可以在一篇论文的共同作者之间增加联系,他们可以直接交换信息,这意味着GNN层数会变少,训练也会更快。
2. 添加虚拟节点
做法:增加一个虚拟节点,这个虚拟节点与图(或者一个从图中选出的子图)上的所有节点相连
适用情况:在一个非常稀疏的图上,其中两个节点之间相距很远 ,比如10-hop,两节点的信息交换需要经过10层神经网络,花销巨大。
当创建虚拟节点之后,它能直接连接两个相距较远的节点,便于他们交换信息,使得神经网络的深度变浅。
2.2.2 对稠密图:邻居节点抽样
在信息传递的过程中,不再使用一个节点的全部邻居,而改为随机抽样一部分邻居。举例:
在上图中,我们随机选取节点B和D传递信息给A ,而额忽略节点C的信息。(类似于Dropout)
在下一层计算节点的嵌入时,可以抽样不同的邻居,以增加模型鲁棒性:
优点:计算图变小,大大降低计算成本
缺点:可能会损失重要信息
3 总结
本篇文章主要介绍了GNN模型中图特征增强和图结构增强的一些方法,通过图增强能使我们在训练神经网络时取得更好的效果。
4 参考文献
http://web.stanford.edu/class/cs224w/slides/08-GNN-application
cs224w(图机器学习)2021冬季课程学习笔记10 Applications of Graph Neural Networks_诸神缄默不语的博客
【从零开始】CS224W-图机器学习-2021冬季学习笔记8.1 Applications of Graph Neural Networks相关推荐
- 【从零开始】CS224W-图机器学习-2021冬季学习笔记13.1:Community Structure in Networks
课程主页:CS224W | Home 课程视频链接:[双语字幕]斯坦福CS224W<图机器学习>课程(2021) by Jure Leskovec 文章目录 1 前言 2 预备知识和案 ...
- cs224w(图机器学习)2021冬季课程学习笔记10 Applications of Graph Neural Networks
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. Graph Augmentation for GNNs 1.1 图特征增强Feature A ...
- 笔记 How Powerful are Spectral Graph Neural Networks
前言 title是模仿之前的另一篇出名文章"how powerful -" 文中构筑了linear GNN 到 1-WL在一定条件下的等价关系. 出于个人兴趣原因我不是很关心模型部 ...
- Graph Embedding学习笔记(3):Graph Convolution Networks
笔记 从Graph的视角看CNN,上图左右两个部分是等价的.左子图每个网格的通道,对应右子图每个节点的一个属性,左子图卷积核的参数相当于右子图边的权重.所谓3x3卷积就是右子图9个节点属性的加权平均( ...
- 图神经网络可解释性Slide:GNNExplainer: Generating Explanations for Graph Neural Networks
- cs224w(图机器学习)2021冬季课程学习笔记11 Theory of Graph Neural Networks
诸神缄默不语-个人CSDN博文目录 cs224w(图机器学习)2021冬季课程学习笔记集合 文章目录 1. How Expressive are Graph Neural Networks? 2. D ...
- 课程 | 2021年斯坦福大学Jure Leskovec主讲CS224W 图机器学习
图科学实验室Graph Science Lab 来源:斯坦福大学 SNAP 近年来,图神经网络(GNN)成为网络表示学习和分析的热点研究问题,其特点是将以神经网络为代表深度学习技术用于网络结构的建模与 ...
- COMBINING LABEL PROPAGATION AND SIMPLE MODELS OUT-PERFORMS GRAPH NEURAL NETWORKS(CorrectSmooth)阅读笔记
文章目录 链接 一.摘要 二.引言 三."修正和平滑"模型 四.转导式节点分类实验 四.总结 总结 红色部分为个人的一些解读,不足之处请多多指点! 链接 论文题目:结合标签传播和简 ...
- Paper:《Graph Neural Networks: A Review of Methods and Applications—图神经网络:方法与应用综述》翻译与解读
Paper:<Graph Neural Networks: A Review of Methods and Applications-图神经网络:方法与应用综述>翻译与解读 目录 < ...
最新文章
- HTML5新特性---Form表单前台通过正则表达式自动验证邮箱
- 【Python】 linux中python命令的命令行参数
- gpt efi win7 linux,在EFI+GPT硬盘上利用grub2实现Linux/Win7/win8等多重启动
- java excel 晒新年操作_java操作Excel的poi 创建一个sheet页
- Show ip arp 和 Show mac-address-table
- 一年了,写点关于人生的东西吧
- 测试的第二重境界:站在Bug之上
- 英伟达显卡不同架构_架构定输赢!盘点历代英伟达显卡能够成功亥市的根源
- 用Raspberry Pi作AirPlay服务端
- 鼎捷软件ERP,MES等系统构筑制造企业信息化系统
- 序列的傅里叶变换MATLAB实现
- 修改华为 Echolife HG8010h 的超级用户密码
- 灰色预测模型python实例_12-6:数学模型(灰色模型)与Python编程预测
- 韩昊20190912-1 每周例行报告
- 找不到.jack_您不了解Jack关于Firefox的知识!
- 【企业安全运营】企业级私有云公有云 防护安全建设
- 数字内容安全实验一:使用Matlab编程实现 RSA 加密算法
- SQL语言_3 模糊查询和聚合函数
- 改变全局变量值得两种方法
- 数据结构与算法(C语言版)---魔王语言
热门文章
- 区块链游戏2.0时代,如何打造开放型游戏生态社区?
- 用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略
- 所有C语言函数的源代码
- mysql查询未讲课教师_SQL数据库查询语言练习
- MySQL安装配置教程-win10
- Phoenix 简介及使用方式
- Neural Collaborative Filtering【论文笔记】
- 【历史上的今天】8 月 28 日:微软联合创始人控诉苹果、谷歌等众企业侵权;人工智能医学领域先驱出生
- rsync同步的艺术
- 哪个Linux ATA 硬盘,linux – scsi和/ dev / disk / by-id下相同硬盘的ata条目