时间:2021-07-15 | 标签: | 作者:Q8 | 来源:王逸之网络
小提示:您能找到这篇{Pinterest使用的推荐系统}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Pinterest使用的推荐系统内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
< ">阅读原因 < ">1.这篇文章是graph embedding在推荐系统领域的成功应用,值得借鉴 < ">2.对其中使用的curriculum learning的具体实现感兴趣,据说越来越难的训练样本能够获得12%的效果提升 < ">3.文章结合了random walk算法对node进行采样,从而获得了相等大小的子图,组成一个batch < ">问题背景 < ">Pinterest使用的内容推荐系统,其中定义为pin(单个内容实体),定义为board(相关联的内容集合)。泛化的说,pin为一个item,而board是用户定义的上下文。这两个不相交的集合构成所有的节点,在这篇论文中没有对节点进行区分,对每个点都计算了相应的embedding vector。 < color: rgb(127, 127, 127);">图1图卷积网络的计算示意 获得node embedding的前向传播算法 < "> < ">该论文使用的node u的前向传播思路和之前的graphSAGE的思路相比没有很大的改变,以下是对该算法的解释: < ">1.第一行:执行聚合函数,对u的邻居节点feature计算聚合表达,参数是每个邻居节点的权重。 < ">2.如何获得u的邻居节点集合?论文使用了random walk方法,计算从u出发,其他直接相邻节点的访问次数,并进行L1归一化,取前k个节点。(没有经过这样的neighborhood sampling的方法,就直接取与u相邻的所有节点,这样每个节点形成的计算子图都不一样,memory的使用不稳定。) < ">3.为什么选用concat(),因为根据论文< font-size: 14px; color: rgb(127, 127, 127);">[21],concat的效果要比直接取这两者的平均更好。我个人认为,作为u的邻居的聚合表示向量,应该不与(u的embedding vector)在同一个特征空间上。采用concatenate操作,可以使这两个向量维数不同,并且不破坏各自的信息。 < ">4.convolve stack:如何将距离节点u深度为k的计算子图用于计算节点u呢?这就需要u的迭代计算,使用第k-1次迭代计算出的,计算第k次迭代的。是一个在第k次迭代中在所有节点共享的学习参数,但是每一次迭代的参数是不共享的。由于这样的迭代计算,就像是CV中常见的堆叠卷积核的做法,所以也可以将第k次迭代计算称为第k层。 训练算法 < "> < color: rgb(127, 127, 127);">图2 一个minibatch的训练过程 < ">1-7行的循环:获得集合M中从源节点出发,path为1到K的节点集合 < ">8-14循环:获得每一层的embed < ">5-17行:更新embeddin宏盟媒体集团g < ">训练技巧 < ">1.加速收敛[16]:论文用到比较大的batch size,做过deep learning实验的人应该有感受,面对较大的batch size,收敛是比较困难的,所以作者使用了< color: rgb(127, 127, 127);">[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决定的(具体怎么操作还是没有明白)。< color: rgb(127, 127, 127);">[14] < color: rgb(127, 127, 127);">图3 广告营销与营销推广hard sample的实例 < ">< font-size: 18px;">这篇文章关于分布式系统的思考 < ">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.Dollr,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.Kip友情链接f and M.Welling.2017.Semi-supervised classification with graph convolutional networks.In ICLR |
上一篇:Pinterest的视觉搜索
下一篇:Bing推广:选品的三大渠道!
基于对传统行业渠道的理解,对互联网行业的渠道我们可以下这样一个定义:一切...
小米应用商店的后台操作和苹果是比较相似的,因为都能填写100字符关键词,允许...
小米的规则目前是在变更中的,但是根据经验小米的搜索排名评分的高低是个很重...
为了恰饭,有时候是要接入一些广告的,所以FB也专门有一个广告的SDK,这就是A...
在 2018 年于旧金山举行的游戏开发者大会上,Amazon Web Services (AWS) 曾宣布,目前世...
关于Facebook Audience Network如何收款的问题,其实官方已经给了详细的步骤。本文主要...
本文介绍了Audience Network对广告载体的质量检查,以及它重点广告形式需要注意的问...
随着iOS开发,作为开发者或公司需要针对iOS App开发涉及的方方面面作出对应的信息...
Facebook和谷歌对出海企业广告渠道都很熟悉,但事实上,在国外还有一些渠道也很...
卖家从做号的第1分钟开始,就一定要想好变现路径是什么?一定要以变现为目的去...
小提示:您应该对本页介绍的“Pinterest使用的推荐系统”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Pinterest使用的推荐系统的相关事宜。
关键词:Pinterest使用的推荐系统,