一、Deep Neural Networks for YouTube Recommendations
引自博客:https://blog.csdn.net/yyl424525/article/details/100532849
- 创新点:提出GraphSAGE
- 提出原因:GCN属于直推式(transductive learning )学习,而很多现实中的应用需要很快的对未见过的顶点或是全新的图(子图)生成embedding。这种归纳推断(inductive learning)的能力对于高吞吐的机器学习系统来说很重要,这些系统都运作在不断演化的图上,而且时刻都会遇到未见过的顶点。既然新增的节点,一定会改变原有节点的表示,那么为什么一定要得到每个节点的一个固定的表示呢?何不直接学习一种节点的表示方法。去学习一个节点的信息是怎么通过其邻居节点的特征聚合而来的。 学习到了这样的“聚合函数”,而我们本身就已知各个节点的特征和邻居关系,我们就可以很方便地得到一个新节点的表示了。GCN等transductive的方法,学到的是每个节点的一个唯一确定的embedding; 而GraphSAGE方法学到的node embedding,是根据node的邻居关系的变化而变化的,也就是说,即使是旧的node,如果建立了一些新的link,那么其对应的embedding也会变化,而且也很方便地学到。
- 方法核心:GraphSAGE不是试图学习一个图上所有node的embedding,而是学习一个为每个node产生embedding的映射关系(文中称为aggregator functions 聚合函数)。(embedding可以理解为高维度空间特征映射到低维度流形特征的过程)
其运行流程如上图所示,可以分为三个步骤:
1)对图中每个顶点邻居顶点进行采样,因为每个节点的度是不一致的,为了计算高效, 为每个节点采样固定数量的邻居
2)根据聚合函数聚合邻居顶点蕴含的信息
3)得到图中各顶点的向量表示供下游任务使用
1. Embedding generation (i.e., forward propagation) algorithm 生成节点embedding的前向传播算法
前向传播描述了如何使用聚合函数对节点的邻居信息进行聚合,从而生成节点embedding:
在每次迭代k(或搜索深度),顶点从它们的局部邻居聚合信息,并且随着这个过程的迭代,顶点会从越来越远的地方获得信息。
算法1描述了在整个图上生成embedding的过程,其中
实验发现,K不必取很大的值,当K=2时,效果就很好了。至于邻居的个数,大约每次只需要扩展20来个邻居时获得较高的性能。
2. 聚合函数的选取在图中顶点的邻居是无序的,所以希望构造出的聚合函数是对称的(即也就是对它输入的各种排列,函数的输出结果不变),同时具有较高的表达能力。 聚合函数的对称性(symmetry property)确保了神经网络模型可以被训练且可以应用于任意顺序的顶点邻居特征集合上。
Mean aggregator
mean aggregator将目标顶点和邻居顶点的第 k − 1层向量拼接起来,然后对向量的每个维度进行求均值的操作,将得到的结果做一次非线性变换产生目标顶点的第 k 层表示向量。文中用下面的式子替换算法1中的4行和5行得到GCN的inductive变形:
3.Learning the parameters of GraphSAGE (有监督和无监督)参数学习
在定义好聚合函数之后,接下来就是对函数中的参数进行学习。文章分别介绍了无监督学习和监督学习两种方式