Skip to content

Pinterest使用的推荐系统

Pinterest使用的推荐系统

阅读原因

1.这篇文章是graph embedding在推荐系统领域的成功应用,值得借鉴

2.对其中使用的curriculum learning的具体实现感兴趣,据说越来越难的训练样本能够获得12%的效果提升

3.文章结合了random walk算法对node进行采样,从而获得了相等大小的子图,组成一个batch

问题背景

Pinterest使用的内容推荐系统,其中定义为pin(单个内容实体),定义为board(相关联的内容集合)。泛化的说,pin为一个item,而board是用户定义的上下文。这两个不相交的集合构成所有的节点,在这篇论文中没有对节点进行区分,对每个点都计算了相应的embedding vector。

图1图卷积网络的计算示意

获得node embedding的前向传播算法

该论文使用的node u的前向传播思路和之前的graphSAGE的思路相比没有很大的改变,以下是对该算法的解释:

1.第一行:执行聚合函数,对u的邻居节点feature计算聚合表达,参数是每个邻居节点的权重。

2.如何获得u的邻居节点集合?论文使用了random walk方法,计算从u出发,其他直接相邻节点的访问次数,并进行L1归一化,取前k个节点。(没有经过这样的neighborhood sampling的方法,就直接取与u相邻的所有节点,这样每个节点形成的计算子图都不一样,memory的使用不稳定。)

3.为什么选用concat(),因为根据论文[21],concat的效果要比直接取这两者的平均更好。我个人认为,作为u的邻居的聚合表示向量,应该不与(u的embedding vector)在同一个特征空间上。采用concatenate操作,可以使这两个向量维数不同,并且不破坏各自的信息。

4.convolve stack:如何将距离节点u深度为k的计算子图用于计算节点u呢?这就需要u的迭代计算,使用第k-1次迭代计算出的,计算第k次迭代的。是一个在第k次迭代中在所有节点共享的学习参数,但是每一次迭代的参数是不共享的。由于这样的迭代计算,就像是CV中常见的堆叠卷积核的做法,所以也可以将第k次迭代计算称为第k层。

训练算法

图2  一个minibatch的训练过程

1-7行的循环:获得集合M中从源节点出发,path为1到K的节点集合

8-14循环:获得每一层的embed

5-17行:更新embedding

训练技巧

1.加速收敛[16]:论文用到比较大的batch size,做过deep learning实验的人应该有感受,面对较大的batch size,收敛是比较困难的,所以作者使用了[16]中提到的训练技巧。

2.negative sample与curriculum learnig:该论文的loss也使用了噪声对比估计这一技巧,采样500个negative sample进行loss的计算。比较不同的地方是,论文不对每个batch中的每个node都进行专门的negative sample,而是只对一个minibatch进行negative sample,这样能够节约时间。毕竟Pinterest面对的节点有二十亿个,但是1对正例只对应了500个负例,模型不易于学到重要的判别信息(500:2,000,000,000=1:2,000,000)。所以论文使用了hard sample来训练模型学会判别长相比较相似的难负例。而加入难样本进行训练,当然会使模型更难收敛,所以使用curriculum learning的思想,在第一个epoch不加入hard sample,在后面的训练中,逐渐增加hard sample的个数。hard sample是通过与当前节点p相关的pagerank score决定的(具体怎么操作还是没有明白)。[14]

图3 hard sample的实例

这篇文章关于分布式系统的思考

1.CPU做的事:extracting features,re-indexing(建立计算当前minibatch的子图),negative sampling;

2.GPU做的事:minibatch的计算;

3.每个minibatch接受的输入形式:,包含minibatch nodes和他们的neighborhood,以及一个较小的、和相对应的特征矩阵。

4.producer-consumer:CPU是minibatch的生产者,GPU是minibatch的消费者。

5.多GPU并行训练的更新:每个minibatch被分为等大的部分,使用相同的参数,累计各自的梯度,经过聚合后再同步更新。

6.test时期的MapReduce:因为融合了神经网络的graph embedding模型都具有推断功能,所以PinSAGE只使用了一部分数据来进行训练,用训练好的网络对剩下的pin进行推断。

·为了避免每个节点在每一层的重复计算(因为不同节点的邻居有可能是相同的),首先一个job先将每个pin都map一遍,以供algorithm 1中使用。

·得到每个pin的embedding之后,另一个job则聚合board的embedding vector;

·之后,用目前获得的vector,用两个job迭代计算pin的vector(使用pooling方法进行聚合)

7.计算资源的使用:训练代码实现在tensorflow上,使用了16块K80在单机上进行训练,将图和feature数据存域memory上(500GB)。推断过程运行于hadoop2上,用了378个AWS节点。

原论文名:Graph Convolutional Neural Networks for Web-Scale Recommender Systems

[14]C.Eksombatchai,P.Jindal,J.Z.Liu,Y.Liu,R.Sharma,C.Sugnet,M.Ulrich,and J.Leskovec.2018.Pixie:A System for Recommending 3+Billion Items to 200+ Million Users in Real-Time.WWW(2018)

[16]P.Goyal,P.Dollár,R.Girshick,P.Noordhuis,L.Wesolowski,A.Kyrola,A.Tulloch,Y.Jia,and K.He.2017.Accurate,Large Minibatch SGD:Training ImageNet in 1 Hour.arXiv preprint arXiv:1706.02677(2017)

[21]T.N.Kipf and M.Welling.2017.Semi-supervised classification with graph convolutional networks.In ICLR

相关推荐: 如何选择国际短信接口

1、界面简洁,操作简单,功能齐全,有两个平台:网页版和软件版,手机登陆网页版,随时随地方便管理短信发送。 2、价格合理,目前国际正规短信接口平台,每条短信的价格一般在3-7分之间,每个公司都有报价套餐供客户选择和参考。 3、信道稳定,收信率高,发出速度快:正规…

    码刀科技(www.lekshop.cn)是国内知名企业级电商平台提供商,为企业级商家提供最佳的电商平台搭建(多种模式电商平台搭建:B2B/B2B2C/B2C/O2O/新零售/跨境等)、平台管理系统开发及互联网采购解决方案服务, 联系客服了解更多.

    电子商务网站建设的重要性和好处