QA派|GNN工业应用-PinSAGE

PinSAGE是基于图神经网络的推荐系统模型,应用于Pinterest平台,用于生成pins的高质量embedding。与GraphSAGE相比,PinSAGE采用了重要性采样、加权平均的聚合函数,并通过生产者-消费者模式优化了大规模图数据的处理。模型训练使用max-margin ranking loss,以有监督方式进行,并通过渐进式“hard”负采样提升模型性能。在推理阶段,PinSAGE利用MapReduce避免重复计算,实现高效推荐。
摘要由CSDN通过智能技术生成

QA派|GNN工业应用-PinSAGE

文章目录

基本概念

pins是什么意思?

Pinterest是一个图片素材网站,pins是指图片,而boards则是图片收藏夹的意思。

Pinterest会根据用户的浏览历史来向用户推荐图片。

PinSAGE论文中的数据集有多大?

论文中涉及到的数据为20亿图片(pins),10亿画板(boards),180亿边(pins与boards连接关系)。

用于训练、评估的完整数据集大概有18TB,而完整的输出embedding有4TB。

PinSAGE使用的是什么图?

在论文中,pins集合(用I表示)和boards集合(用C表示)构成了二分图,即pins仅与boards相连接,pins或boards内部无连接。

同时,这二分图可以更加通用:

  • I 可以表示为样本集(a set of items),
  • C 可以表示为用户定义的上下文或集合(a set of user-defined contexts or collections)。

PinSAGE的任务是什么?

利用pin-board二分图的结构与节点特征,为pin生成高质量的embedding用于下游任务,比如pins推荐。

PinSAGE有特别区分pin节点和board节点吗?

没有。PinSAGE并没有明确区分pin节点和board节点。

只使用节点来作为一般指代。

和GraphSAGE相比,PinSAGE改进了什么?

  1. 采样:使用重要性采样替代GraphSAGE的均匀采样;
  2. 聚合函数:聚合函数考虑了边的权重;
  3. 生产者-消费者模式的minibatch构建:在CPU端采样节点和构建特征,构建计算图;在GPU端在这些子图上进行卷积运算;从而可以低延迟地随机游走构建子图,而不需要把整个图存在显存中。
  4. 高效的MapReduce推理:可以分布式地为百万以上的节点生成embedding,最大化地减少重复计算。

这里的计算图,指的是用于卷积运算的局部图(或者叫子图),通过采样来形成;与TensorFlow等框架的计算图不是一个概念。

PinSAGE使用多大的计算资源?

训练时,PinSAGE使用32核CPU、16张Tesla K80显卡、500GB内存;

推理时,MapReduce运行在378个d2.8xlarge Amazon AWS节点的Hadoop2集群。

PinSAGE和node2vec、DeepWalk这些有啥区别?

  1. node2vec,DeepWalk是无监督训练;PinSAGE是有监督训练;
  2. node2vec,DeepWalk不能利用节点特征;PinSAGE可以;
  3. node2vec,DeepWalk这些模型的参数和节点数呈线性关系,很难应用在超大型的图上;

聚合函数

PinSAGE的单层聚合过程是怎样的?

和GraphSAGE一样,PinSAGE的核心就是一个局部卷积算子,用来学习如何聚合邻居节点信息。

如下图算法1所示,PinSAGE的聚合函数叫做CONVOLVE。

主要分为3部分:

  1. 聚合(第1行):k-1层邻居节点的表征经过一层DNN,然后聚合(可以考虑边的权重), γ \gamma γ是聚合函数符号,聚合函数可以是max/mean-pooling、加权求和、求平均;
  2. 更新(第2行):拼接第k-1层目标节点的embedding,然后再经过另一层DNN,形成目标节点新的embedding;
  3. 归一化(第3行):归一化目标节点新的embedding,使得训练更加稳定;而且归一化后,使用近似最近邻居搜索的效率更高。

为什么要将邻居节点的聚合embedding和当前节点的拼接?

因为根据T.N Kipf的GCN论文,concat的效果要比直接取平均更好。

采样

PinSAGE是如何采样的?

如何采样这个问题从另一个角度来看就是:如何为目标节点构建邻居节点。

和GraphSAGE的均匀采样不一样的是,PinSAGE使用的是重要性采样。

PinSAGE对邻居节点的定义是:对目标节点影响力最大的T个节点。

PinSAGE的邻居节点的重要性是如何计算的?

其影响力的计算方法有以下步骤:

  1. 从目标节点开始随机游走;
  2. 使用 L 1 L_1 L1正则 来计算节点的“访问次数”,得到重要性分数;

目标节点的邻居节点,则是重要性分数最高的前T个节点。

这个重要性分数,其实可以近似看成Personalized PageRank分数。

关于随机游走,可以阅读《Pixie: A System for Recommending 3+ Billion Items to 200+ Million Users in Real-Time》

重要性采样的好处是什么?

  1. 和GraphSAGE一样,可以使得邻居节点的数量固定,便于控制内存/显存的使用。
  2. 在聚合邻居节点时,可以考虑节点的重要性;在PinSAGE实践中,使用的就是加权平均(weighted-mean),原文把它称作 importance pooling

采样的大小是多少比较好?

从PinSAGE的实验可以看出,随着邻居节点的增加,而收益会递减;

并且两层GCN在邻居数为50时能够更好的抓取节点的邻居信息,同时保持运算效率。

MiniBatch

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值