赞
踩
课程主页:CS224W | Home
课程视频链接:斯坦福CS224W《图机器学习》课程(2021) by Jure Leskovec
上节课学习的是GNN的通用框架:
GNN通用框架包括以下几个方面,它们共同构成了GNN的设计空间(Design Space):
上述是设计一个GNN模型中的各种选择条件,之后的学习也将从以上几个方面进一步展开。
本篇将要学习如何对GNN的单个层进行定义,并进一步设计多种不同的GNN模型。
单层网络的设计目标是将一系列向量(上一层的自身和邻居的message)压缩到一个新的向量(新的节点嵌入)中,完成这个目标分成两步:信息转换和信息聚合。
思路:每个节点都会创建并转换一条信息,并将该信息发送到下一层的其他节点。
举例:MSG可以是一个线性变换,即乘以一个权重矩阵W。
转换后的消息记作
思路:每个节点都会聚集来自其邻居节点的信息(这里的信息是指经过第一部转换后的
举例:AGG可以是求和、取平均、取最大值等等。
但是上述过程中并未包含节点v自身的信息,因为对
GNN单层网络就是合并上述两步:对每个节点,先计算出其自身与邻居的节点信息,然后计算其邻居与本身的信息聚合。
注:在这两步上都可以用非线性函数(激活函数)来增加其表现力。
GCN传送门:SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS
GCN模型的聚合采用了取平均的方式:
但是,上述式子现在不符合Message + Aggregation的形式,我们可以把
在这个式子中,Message和Aggregation分别为:
存疑:这里为什么没有包含节点自身的信息?
GraphSAGE传送门:Inductive Representation Learning on Large Graphs
GraphSAGE是在GCN基础上的扩展,该模型的聚合方式AGG有多种选择(而不是简单地只取平均),而且该模型还保留了节点本身的信息,增加了表现力。
在这个式子中,Message和Aggregation分别为:
信息转换的过程包含在函数AGG中(如下图),信息聚合的过程分为两步,第一步聚合邻居节点的信息,第二步连接节点自身的信息。
那么,GraphSAGE的聚合方式有哪些选择呢?通常有以下三种:
(Pool和LSTM还没学,原理在之后的课程中逐渐补充吧)
除此之外,GraphSAGE还增加了L2归一化的概念:
对每一层的嵌入
正则化之前,嵌入向量的比例和长度是不同的,使用L2正则化之后,所有向量的长度都将变为1,提高了嵌入的性能。
GAT原文传送门:GRAPH ATTENTION NETWORKS
GAT在GCN的基础上做了改进,为每个节点的邻居节点指定了不同的权重:
其中,
也就是说,
attention机制的思路:一个节点的邻居节点并非同等重要,我们的模型应该在小而重要的数据上投入更多的算力,而注意力机制引入的目的是为图上每个节点的不同邻居指定不同的权重,使得我们更关注输入数据的重要部分。
在先前讨论的GCN / GraphSAGE中,注意力权重因子
上面介绍了GAT的基本思路,那么怎么计算注意力权重
其中,是一个注意力机制函数(后文将介绍),表示节点u的信息对节点v的重要性。例子:
接着,我们使用Softmax函数对进行归一化就得到注意力权重
最后进行求和就得到了GAT的单层神经网络函数:
例子:
关于前文提到的注意力机制 可以有很多种选择,比如采用简单的单层神经网络:
与此同时,Linear中的权重参数让 变成一个可训练的函数。
使用简单的注意力机制有时很难收敛,所以将注意力的概念扩展到多头注意力(Multi-head attention),能让训练的过程更加稳定,在实践中的平均表现更好。
重要细节:每个注意力机制必须使用不用的 的函数,且每个的起始参数必须使用随机值初始化,让多头注意力机制有更强的鲁棒性。
接着,再将输出进行聚合(通过concatenation或加总):
下图是三头注意力机制的实现方式,三条不同颜色的线代表三种不同的注意力机制,最后以连接或取平均的形式得到下一层的嵌入:
在实践中设计一个GNN的网络层时,通常考虑以下几个现代的深度学习模块,这些模块可以让GNN网络层有更好的表现:
比如:Batch Normalization(使神经网络训练稳定)、Dropout(预防过拟合)、Attention / Gating(控制信息的重要性)等…
Batch Normalization详解:BatchNormalization详解_CZTSummer的博客
目标:稳定神经网络的训练过程,加快模型收敛速度。
做法:对一个batch的输入数据(节点嵌入)进行归一化,使其平均值为0,方差为1
目标:防止神经网络过拟合。
做法:
在GNN中,Dropout应用在消息转换函数的线性层中:
本篇文章主要介绍了GNN单个神经网络层的不同设计方法,提出了GCN、GraphSAGE、GAT等GNN模型;还介绍了许多现代深度学习技术来使GNN获得更好的性能。
最后,我们可以通过 GraphGym 来测试不同的GNN设计实例。
http://web.stanford.edu/class/cs224w/slides/07-GNN2.pdf
cs224w(图机器学习)2021冬季课程学习笔记9 Graph Neural Networks 2: Design Space_诸神缄默不语的博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。