目录
(1)定义
将节点映射到d-维空间,使在图中相似的节点嵌入的更相近。
(2)两个关键组件Encoder Decoder
(3)shallow Encoders的缺陷
1.deep encoders是基于图结构的多层非线性转换,deep encoders可以和讲过的节点相似性函数结合起来。
2.现代深度学习工具箱设计用于简单的序列和网格(sequence&grid),但实际上networks更加负责
基本定义
将邻接矩阵和节点features拼在一起输入到DNN中
存在问题:1)参数O(V);2)不适用于不同大小的图;3)对节点顺序敏感(如果节点编号顺序改变的话,矩阵就会改变,因此如果这样做的话,就必须保持节点编号顺序保持不变)
推广CNN到图上,并利用节点属性。
但Graphs和images不同的是:在图上没有固定的局部性或者滑动窗口的概念;且图是排列不变的,节点顺序不固定。
将邻居节点的信息转换,并结合它们。
基于局部邻居产生节点embedding,节点使用神经网络从邻居节点聚合信息。每一层同一节点产生的embedding不同。0-layer的嵌入为节点的feature。仅会在有限层数里进行,例如研究Khops,那神经网络层数就为K。
每一个节点都可以定义自己的神经网络结构,因此需要训练和学习多个神经网络。这些节点的计算图或神经网络结构是基于邻居节点定义的,
由于节点顺序是任意的,因此聚合运算要具有排列不变性,即节点可以有任何顺序,但聚合结果相同。如何定义转换,怎么将他们参数化,如何学习他们?基本方式:对邻居节点信息求平均并应用一个神经网络。
对节点v上一层邻居节点的嵌入求平均的结果 节点v上一层的嵌入 加权求和再经过一个非线性激活函数。得到节点v此层的嵌入。
可以将这些嵌入输入到任何损失函数中,并运行 SGD 来训练权重参数:Wk邻域聚合的权重矩阵;Bk用于变换自身上一层嵌入向量的权重矩阵
一些聚合可以用矩阵计算更有效的实现,将求和转换为矩阵乘积
直接使用一个有监督的学习任务(节点分类)训练。
1) 定义一个neighborhood aggregation function
2)为嵌入定义一个loss function
3)在一个节点集上训练
4)通过正向传播产生需要的节点的嵌入(甚至可以为没有在训练集里出现的节点产生embedding)
意味着可以在一个图上训练再应用到另一个图上。也可以再子图上训练,应用于整个图,无需再重新训练
所有节点共享aggregation parameters
W与B的参数数量仅取决于embedding与特征的维度,与图的大小无关,因为第一层嵌入为特征维度。维度和上下层嵌入的维度有关。