今天学习的是 Pinterest 和斯坦福大学 2018 年合作的论文《Graph Convolutional Neural Networks for Web-Scale Recommender Systems》,目前有 200 多次引用。
论文中提出的 PinSAGE 结合了随机游走和 GCN 来生成节点的 Embedding 向量。同时考虑了图结构和节点的特征信息。此外,PinSAGE 也设计了一种新颖的训练策略,该策略可以提高模型的鲁棒性并加快模型的收敛。
这篇论文是 GraphSAGE 一次成功的应用,也是 GCN 在大规模工业网络中的一个经典案例,为基于 GCN 结构的新一代 Web 级推荐系统铺平了道路。
1.Introduction
GCN 在图数据中扮演着举足轻重的角色,其背后的核心思想在于使用神经网络来聚合领域的特征信息,并且通过堆叠可以扩大节点的感受野。与纯粹基于内容的深度模型(例如,递归神经网络)不同,GCN 会利用内容信息以及图结构。基于 GCN 的方法刷新很多的任务的 SOTA(state of the art),但是目前很多模型都尚未转化到实际生产环境中。
GCN 在工业中应用的主要挑战在于如何在数十亿节点和数百亿边的网络中高效完成训练,对此论文提出了以下几种改进措施:
- 动态卷积:通过对节点的领域进行采样构建计算图来执行高效局部卷积,从而减轻训练期间对整个图进行操作的需要;
- 生产者-消费者批处理构建:通过 mini-batch 来确保模型在训练期间最大限度的利用 GPU;
- 高效的 MapReduce:实际一种高效的 MapReduce 通道用于分发经过训练的模型以生成数十亿节点,同时最大程度地减少重复计算。
除了提高 GCN 的可扩展性外,作者还设计了新的训练方式和算法创新,提高了 Embedding 的质量,从而在下游任务中带来显著的性能提升:
- 通过随机游走构建卷积:利用短随机游走对图进行采样来代替随机采样;
- Importance Pooling:基于随机游走相似性度量引入节点的特征重要性权重,并根据权重进行聚合;
- 课程学习(Curriculum Learning):由 Bengio 在 2009 年提出,主要是模仿人类学习的特征,由简到难的来学习课程。在机器学习领域就是先训练容易区分样本,在训练难以区分的样本。
接下来我们看下算法具体的实现。
2.PinSAGE
本节我们介绍下 PinSAGE 架构和训练过程中的技术细节,以及 MapReduce 的通道。
先介绍下难点:
2.1 Model Architecture
我们先来总览下模型架构:
PinSAGE 使用的是两层局部卷积模块来生成节点的 Embedding。左上角为图示例,右边是一个两层的神经网络,用来计算节点 A 的 Embedding 向量。底部是节点的输入,每个节点具有不同的输入,但是共享神经网络的输入。
下图为局部卷积操作的前向传播算法的伪代码,也是 PinSAGE 算法的核心:
- 输入是节点 u 的 Embedding z u z_u zu,以及节点邻居的 Embedding 集合 { z v ∣ v ∈ N ( u ) } \{z_v | v \in N(u)\} { zv∣v∈N(u)},还有邻居的权重集合 { α v ∣ v ∈ N ( u ) } \{\alpha_v | v\in N(u) \} { αv∣v∈N(u)},聚合函数 γ ( ⋅ ) \gamma(\cdot) γ(⋅