大型网站推荐系统的图卷积神经网络应用

论文链接:https://arxiv.org/pdf/1806.01973.pdf

论文题目:Graph Convolutional Neural Networks for Web-Scale Recommender Systems

简介:第一篇和图卷积相关的论文翻译,具体的重点描述可以参考:pinterest对图卷积的应用,你真的懂了吗?

摘要:

图卷积深度神经网络的最新进展数据带来了推荐系统的最新性能系统基准。 但是,使这些方法变得实用且可扩展到具有数十亿个项目的Web级推荐任务数亿用户仍然是一个挑战

这里我们描述一个我们在Pinterest开发和部署的大型深度推荐引擎。 我们开发了一种数据高效的图卷积网络(GCN)算法PinSage,结合了有效的随机游走和图卷积,生成这些节点的向量表示(eg:图片),包含着图结构以及节点特征信息。 相比以前的GCN方法,我们开发了一种基于高效的随机游走以构建卷积,并设计一个越来越难训练的新颖训练策略改善模型的鲁棒性和收敛性。

我们在Pinterest上部署了PinSage,并在一个30亿个节点、180亿条边的图上(可以理解为焊点、电路板),一共能生成75亿个样本。 根据离线指标,用户研究和A / B测试,PinSage产生的高质量的结果比深度学习要好的多。 据我们所知,这是迄今为止深度图嵌入的最大应用,为新一代网络规模铺平了道路基于图卷积架构的推荐系统。

1 INTRODUCTION

深度学习方法在推荐系统中起着越来越重要的作用,用于学习图像,文本甚至单个用户的低维嵌入[9,12]。 可以使用通过深度模型学习的表示形式补充,甚至替代传统推荐算法,例如协作过滤。 这些学得的表象具有很高的实用性,因为它们可以在各种推荐任务中重复使用。 例如,使用深度模型可用于项目推荐,也可用于推荐的主题收藏(例如,播放列表或“供稿”内容)。

近年来,该领域取得了重大进展,特别是新的深度学习方法的开发能够学习图结构化数据,这对于推荐应用程序(例如,利用用户到项目)是至关重要的互动图以及社交图)[6、19、21、24、29、30]。

这些最新进展中最突出的是称为图卷积的深度学习架构的网络(GCN)[19、21、24、29]。 GCN背后的核心思想是学习如何使用神经网络从本地图邻域中迭代地聚合特征信息(图1)。 这里一个单个“卷积”运算变换和聚合特征来自节点的一跳图邻域的信息,并通过堆叠多个这样的卷积信息可以传播在图的远处。 不同于纯粹基于内容的深度模型(例如递归神经网络[3]),GCN会同时利用这两种内容信息以及图形结构。 基于GCN的方法已经建立了无数推荐系统基准的新标准(有关调查,请参见[19])。 但是,这些基准收益任务尚未转化为实际生产中的收益环境

主要挑战是将训练和基于GCN的节点嵌入的理论,扩展到具有数十亿个图的图节点和数百亿条边。 扩展GCN非常困难因为设计的许多核心假设,在大数据环境中是违反的。 例如,所有现有的基于GCN的推荐系统都需要运行在训练过程中的全图拉普拉斯算子上,假设当基础图具有数十亿个节点并且其结构在不断发展。

大型网站推荐系统的图卷积神经网络应用_第1张图片

目前的工作。 在这里,我们提出了一个高度可扩展的GCN框架我们已经在Pinterest上开发和部署了产品。 我们的框架,一个名为PinSage的基于随机游走的GCN,可以运行在具有30亿个节点和180亿条边的大规模图形上该图比GCN的典型应用大10000倍。PinSage利用一些关键洞察力来极大地改善GCN的可扩展性:

1:动态卷积:传统的GCN算法通过将特征矩阵乘以完整图拉普拉斯算子的幂。 相比之下,我们的PinSage算法通过对节点周围的邻居并动态构造一个来自此采样邻域的计算图。 这些动态构造的计算图(图1)指定了围绕特定节点执行局部卷积,以及减轻了训练期间对整个图形进行操作的需要。

2:生产者-消费者小批量生产:我们开发了一种生产者-消费者架构,用于构建小批量确保在模型训练期间最大程度地利用GPU。 一个大内存,受CPU限制的生产者有效地对节点进行采样网络邻居并获取必要的功能以定义局部卷积,同时绑定GPU的TensorFlow模型使用这些预定义的计算图来有效地运行随机梯度优化

3:高效的MapReduce通道:我们给出了经过全面训练的GCN模型,我们设计了一个有效的MapReduce管道,该管道可以分发经过训练的模型以生成数十亿个嵌入节点,同时最大程度减少重复计算。

除了可扩展性方面的这些基本进步之外,我们还介绍了新的训练技术和算法创新。 这些创新提高了制图表达的质量由PinSage获悉,在下游推荐系统任务中带来了显着的性能提升:

1:通过随机游走构造卷积:进行卷积的节点邻域(图1)将会产生庞大的计算图,因此我们求助于抽样。但是,随机抽样不是最佳选择,因此我们开发了一种新的方法使用短随机游走技术对计算图进行采样的技术。 另一个好处是,每个节点现在都有一个重要性分数,我们在汇总/汇总步骤中使用。

2:重要性池化层:图卷积的核心组成部分是图形中来自本地邻域的特征信息的集合。 我们引入一种方法,可以根据randomwalk相似性度量权衡此聚合中节点特征的重要性,从而使节点性能提高46%离线评估指标

3:训练优化:我们设计了训练优化机制,在此过程中,算法的示例越来越难培训,从而使性能提高12%

我们已针对各种推荐部署了PinSagePinterest上的任务,Pinterest是一种流行的内容发现和管理应用程序,用户可以在其中与图钉(即可视书签)交互在线内容(例如,他们想要烹饪的食谱或他们的衣服)要购买)。 用户将这些引脚组织成板,其中包含相似引脚的集合。 总而言之,Pinterest是世界的用户策划的最大图像图,具有超过20亿个唯一图引脚收集到超过10亿个板上。

通过可确信的离线指标,受控的用户研究以及在A / B测试中,我们显示,与其他可扩展的基于深度内容的可扩展推荐算法相比,我们的方法在两个项目推荐中均达到了最先进的性能任务(即相关图钉推荐)以及“家庭供稿”推荐任务。 在离线排名指标中,我们改善了最佳表现基准,相差40%以上人工评估我们的建议为首选,大约60%并在A / B测试中显示出30%到100%的改善跨各种设置的用户参与度。

据我们所知,这是有史以来最大的深度应用。图嵌入为基于图卷积架构的新一代推荐系统铺平道路

2 RELATED WORK

3 METHOD

在本节中,我们将介绍PinSage架构和训练的技术细节,以及有效地使用MapReduce管道使用训练好的PinSage模型生成嵌入向量。

我们方法的关键计算主力是概念图的局部卷积。为了生成一个节点(即一个图片)的向量表达,我们应用多个卷积模块从节点的本地图邻域(图1)来聚合特征信息(例如视觉,文字特征)。 每个模块学习如何从一个小的图邻域聚合信息,并通过堆叠多个此类模块,我们的方法可以获取有关本地网络拓扑的信息。 重要的,这些局部卷积模块的参数是共享的,并且跨所有节点,使得我们方法的参数复杂性与输入图的大小无关。

3.1问题设置

Pinterest是一个内容发现应用程序,用户可以在其中用pin这样一个功能进行交互,是在线内容的一个视觉便签(例如用户想做饭的食谱,或想购买的衣服)。 用户组织这些pins放置到board中,这里面就包含着用户任务主题相关的pins。 总之,Pinterest这个应用程序形成的图中包含20亿个pins,10亿个board和超过180亿个边缘

我们的任务是生成高质量的embedding,或者是pin的一个表达,这些目的都是为了用来进行推荐(例如,通过KNN算法查找最近邻居,然后就可以把相关的pins直接推荐给用户,或用于下游重新排名系统)。 为了学习这些嵌入表达,我们将Pinterest环境建模为二部图,这个二部图由两个不相交的集合中的节点组成,I(包含pins)和C(包含boards)。 但是请注意,我们的方法也是自然地可以概括为,I 被视为一组items,C作为一组用户自定义的上下文或收藏结果。

除了图结构,我们还假设pins/items,u∈I,与实值属性相关联,xu ∈R(d)。通常,这些属性可以指定元数据或内容有关项目的信息,对于Pinterest,pins有着很多文本信息和图片信息。我们的目标是同时利用这些输入属性和二分图的结构以生成高质量的嵌入。 这些嵌入然后用于推荐系统通过最近的邻居查找生成候选对象(即,给定一个pin,查找相关的pins)或作为机器学习系统中的召回结果

为了符号上的方便和通用,当我们描述PinSage算法,我们仅引用完整的节点集V = I∪C,且不明确区pin和board这两种节点(除非绝对必要),使用更多尽可能使用通用术语“节点”。

3.2模型架构

我们使用局部卷积模块生成node-embeddings。 我们从输入节点特征开始,然后学习一个神经网络,也就是把图上的feature转换和聚合,以便生成node-embeddings(图1)。

前向传播算法。 我们考虑为为节点u生成嵌入向量zu的任务,这取决于节点的”输入特征“以及该节点周围的图形结构。

大型网站推荐系统的图卷积神经网络应用_第2张图片

PinSage算法的核心是局部卷积,我们将学习如何从网站收集邻里信息(图1)。 算法1中详细介绍了此过程卷积。 基本思想是我们把这种邻里信息z(v)(v属于邻域中的节点)转换下

输入:u节点有个初始的embedding z(u),这个是通过其他办法训练得到的;还有一个集合{z(v)|v属于邻域节点,z(v)代表每个邻域节点的向量};还有一个集合,每个邻域节点的权重;r(.)函数是一个对称变换向量的函数

输出:节点u的新embedding向量

step 1:将卷积内的邻域的特征 h(v)经过一个卷积层神经网络(Q和q是卷积核参数),然后再过一个aggregator/pooling函数(比如逐元素的平均或者加权求和,这个函数定义为r(.)),这样一个r(.)是提供了节点n(u)的邻域信息的向量表达

step2:我们将原始n(u)的向量表达、n(u)现在的向量,concat在一起,然后再经过另一个dense层(W、w是隐层参数)。

根据经验,我们发现用concat操作比ave操作好一些

step3:此外,在第3行使训练更稳定,并且在归一化嵌入的近似最近邻搜索(第3.5节)执行效率更高,。 算法的输出是u节点的自身表示及其局部图的邻域表示。

基于邻域信息重要性选择: 我们的方法中一项重要的创新是如何定义N(u)节点的邻域,我们怎样选择算法1中来进行卷积操作的邻域,以前的GCN方法仅检查k-hop图邻域,在PinSage中,我们定义了基于邻域节点的重要性来进行选择的办法,其中一个节点的邻域被定义为对节点u影响最大的T个节点,具体来说,我们模拟从节点u开始的随机游走,并计算由随机游走访问的节点的L1归一化访问次数[14],然后,根据这个数值选出top10个作为节点u的邻域

基于重要性的邻域定义具有两个优点。 首先,选择固定数量的节点聚合,允许我们控制训练期间的算法的内存、时间[18]。 其次,它允许算法1汇总时要考虑到邻居的重要性,当聚合邻居的向量表示时。 特别是,我们在算法1中将γ用作加权均值,权重也就是上面L1归一化访问次数。 我们将这个操作定义为importance pooling。

堆叠卷积  

我们在算法1中应用CONVOLVE操作的时候,我们得到一个节点的新表达向量,我们可以多做几次这样的卷积以便获得更多u节点的邻域的图结构信息,从图1中可以看出,第K个layer取决于第K-1个layer,初始的layer 0代表的是输入节点的特征。算法1中那些dense层参数(Q q W w)是共享的,但是层与层之间参数是不一样的

算法2展示了一个batch的nodes(M)如何经过堆叠卷积获得每个node的embedding表达,我们首先得到每个node的邻域节点,然后展示如何通过K次迭代生成第K层target node的embedding。最后一层会接上一个full-connected层以生成输出层的embedding z(u)

算法中要学习的是每层卷积的参数(Q(k),q(k),W(k),w(k)),还有最后一个dense层的参数(G1,G2,g)。算法1中第一行的输出size(Q的列空间维数)在所有层都设置为m。为简单起见,我们设置所有卷积层的输出维度(算法1的第3行)都是相同的,这个维度参数用 d 表示,模型的最后一个输出维度(算法2的第18行)也设置成d

3.3 模型训练

我们使用max-margin loss(Hinge Loss)以有监督的方式训练PinSage。 在此设置中,我们假设我们可以获得一组带标签的物品对L,这个集合中的pair对被假定是有关系的,一个pair对举例为:(q,i)属于L,那我们就假定item-i对于item-q来说就是一个好的召回结果,训练阶段的目标是优化pinsage的参数,以使得q和i的embedding向量越来越接近

我们首先详细描述max-margin loss的损失函数。 接下来,我们概述了我们开发的几种技术,会导致PinSage计算效率高和收敛速度快,使我们能够训练数十亿个节点图和数十亿个样本。 最后,我们描述了我们的整个训练计划,该计划可以提高建议的整体质量

损失函数。 为了训练模型的参数,我们使用max-margin-based loss的损失函数。 基本思想是想要最大化正例的内积,正例也就是选择的item和相近的item。同时我们要确保负例-即选择的item和不相干的item,计算得到的”一些预定义的边距“要小于正例。一个简单的node-embedding(zq,zi)可以写成

p(n)q 代表了负例 item-q 的分布,三角形代表了边距超参数。下面我们将解释负样本是如何采样的

多批次gpu训练:为了充分利用在多卡单机器,我们以多塔方式运行正向和反向传播。 用多个GPU,我们首先将每个小批量(图1底部)划分为大小相等的部分。 每个GPU占用一部分的minibatch并使用相同的参数集执行计算。 向后传播后,所有GPU的每个参数的梯度都聚集在一起,并且采用同步SGD更新。 由于需要训练非常大实例数量(数十亿个),我们的batch设置较大,范围从512到4096。

我们使用类似于Goyal等人提出的技术 [16],以确保快速收敛并保持训练和测试集的准确性。 我们使用渐进式预热程序,在第一个epoch中将学习率从小变到高(峰值),幅度是根据线性比例来进行。之后,学习率呈指数下降。

大型网站推荐系统的图卷积神经网络应用_第3张图片

生成mini-batch的生产者-消费者:

 

你可能感兴趣的:(图卷积神经网络)