前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图学习应用(三):斯坦福和Pinterest联合推出PinSage:GCN首次用于商业推荐系统

图学习应用(三):斯坦福和Pinterest联合推出PinSage:GCN首次用于商业推荐系统

作者头像
慎笃
发布2021-09-15 10:26:26
1.1K0
发布2021-09-15 10:26:26
举报
文章被收录于专栏:深度学习进阶深度学习进阶

内容简介

本文主要介绍论文《Graph Convolutional Neural Networks for Web-Scale Recommender Systems》,它是Pinterest公司和斯坦福大牛Jure Leskovec联合发表,首次将图卷积神经网络应用于商业推荐系统。我没找到这篇文献公开的代码,但在DGL(Deep Graph Library)下找到了PinSage的实现,GitHub链接和文献详情如下。

首次应用到商业推荐系统的图卷积神经网络PinSage

1 图卷积网络和推荐系统

图卷积网络(Graph Convolutional Neural Network, GCN)的核心思想是利用神经网络聚合领域节点特征与自身嵌入,以生成新的嵌入,近年来GCN在AI领域一直比较热门。在推荐系统领域,GCN可以弥补传统神经网络无法处理的(诸如社交、电商和医疗等领域的)非规则结构数据(图数据)。本文主要介绍首次将GCN应用到推荐系统的手段PinSage。

该论文贡献点:

  • 通过随机游走构造卷积:我们难以对节点全部邻居节点进行卷积,因此开发了一种使用短随机游走来对邻居节点进行采样的技术。这种方法还有一个好处,能够给每个节点提供重要性得分,在邻居节点传入的信息进行聚合/池化时提供支撑。
  • 重要性池化:在聚合邻居节点的特征信息时,引入(基于随机游走相似性度量的)权衡邻居节点特征重要性的方法,使离线评估指标的性能提升46%。
  • 课程式训练(Curriculum Training):借鉴人类学习由易到难的经验,在训练过程中不断给模型喂给越来越难的样本,从而使整体效果提升了12%。

2 算法详情

2.1 Pinterest推荐业务场景

Pinterest是一个图片社交分享APP,用户可以在APP内与pin(图片)进行交互,用户可以将感兴趣的pins统一保存到boards(钉板,含义是把感兴趣的图片钉到钉板上),如下图所示。

Pinterest的图片推荐场景是由pins和boards组成的二分图,共有20亿个pins,10亿个boards,以及180亿条边(因为是二分图,所以pins内部、boards内部都不存在连接)。PinSage算法的任务是,利用二分图给pins生成嵌入并用于图片推荐。

PS:这里我想到一个问题,除了使用boards和pins组成的二分图来生成pins的嵌入,是否可以使用“钉”过pins序列(用户boards内的pins序列)构建的pins图来生成pins的嵌入?

我猜测有可能是因为boards内的pins序列没有上下文联系,所以用pins序列建出来的图也没有实质上的含义。与此同时每个钉板board内部的图片集合,反映的是某个用户的喜好,因此直接用pins和boards的链接来生成嵌入是可行的。

2.2 PinSage模型结构

PinSage的模型结构可参见下图,卷积的实现逻辑包含三步:

1)聚合邻域信息

[公式]
[公式]

其中

[公式]
[公式]

是处理邻居节点信息的单层网络,

[公式]
[公式]

是邻居节点的权重,

[公式]
[公式]

是池化函数(重要性池化,后面会细讲) 2)结合邻域信息与节点嵌入生成新的嵌入

[公式]
[公式]

其中

[公式]
[公式]

的逻辑同上,通过单层网络聚合领域信息和节点自身嵌入 3)归一化

[公式]
[公式]

PinSage模型结构

PinSage模型实现的伪代码逻辑如下图所示,整体计算流程可分为三部分:

1)对minibatch节点集合的邻居节点进行采样

[公式]
[公式]

跳邻居节点采样原本是GCN的正常操作,本文在这里的创新点在于:计算节点在(基于随机游走的)采样过程中的访问次数,并用于刻画节点的重要性(重要的节点在随机游走过程中会有更高频次的访问)。 具体的实现逻辑为(详情可参见下图的伪代码): 对于

[公式]
[公式]

中的所有节点

[公式]
[公式]

,基于采样函数

[公式]
[公式]

对节点

[公式]
[公式]

的邻居节点进行采样,并添加至

[公式]
[公式]

中,

[公式]
[公式]

。 最终得到包含采样结果在内的集合

[公式]
[公式]

2)

[公式]
[公式]

层卷积 邻居节点集合

[公式]
[公式]

的生成逻辑为:

[公式]
[公式]

,此处会将节点

[公式]
[公式]

的所有邻居节点(L1标准化后)的重要性由大到小排序,然后选取其中重要性最大的

[公式]
[公式]

个邻居。 并基于节点(L1标准化后)的重要性,对

[公式]
[公式]

个节点的邻居信息进行加权平均重要性池化)。

[公式]
[公式]

最终得到包含

[公式]
[公式]

跳邻居节点在内的集合

[公式]
[公式]

中所有节点的嵌入

[公式]
[公式]

3)基于

[公式]
[公式]

层卷积的结果,产出节点嵌入。 在对

[公式]
[公式]

层卷积得到的节点嵌入

[公式]
[公式]

,加一个全连接层,生成最终的节点嵌入。

PinSage的伪代码逻辑

PinSage基于有监督的方式进行训练,详情如下:

通过有标签的pins-pins pair所组成的集合

[公式]
[公式]

,来训练PinSage的模型参数。这里的pins-pins pair可以理解为用户浏览了前一个pins(查询项

[公式]
[公式]

),我们给推荐了一个很好的候选项pins(候选项

[公式]
[公式]

),

[公式]
[公式]

。 PinSage采用max-margin ranking loss作为损失函数:

[公式]
[公式]

其中

[公式]
[公式]

是margin超参数,

[公式]
[公式]

是负样本的分布,我们是希望查询项

[公式]
[公式]

的嵌入

[公式]
[公式]

与负样本的嵌入

[公式]
[公式]

之间的距离越大越好,而与好的候选项

[公式]
[公式]

的嵌入

[公式]
[公式]

距离越近越好。 原本通过均匀方式对没有推荐的pins进行负采样也是正常操作,保证

[公式]
[公式]

[公式]
[公式]

的内积大于被采样出来的样本与

[公式]
[公式]

的内积也是比较容易的。 此处是本文的另一个创新点:课程式训练,通过调整负采样的手段以生产hard负样本。hard负样本为那些与

[公式]
[公式]

有某种关联,但是与

[公式]
[公式]

没有关联的样本。具体实现方式为:基于Personalized PageRank来选取排名在2000-5000的pins,并随机选取作为负样本。 在训练过程中,随着epoch递增,不断添加hard负样本的权重,迫使模型学习如何更好的分辨pins。 在CS224W课程的PageRank章节有详细讲述二分图场景下的Personalized PageRank,附上这节课的课程笔记传送链接。

此外文章还提到了包含分布式训练在内的提升整体性能的方法,此处不详细介绍,如果感兴趣,推荐直接看内容简介部分贴出来的源码。

3 实验详情

同步思考下淘宝的推荐场景,包含多种场景的推荐,比如:首页一堆通用商品推荐、用户页推荐我们感兴趣的商品、浏览某个商品时给推荐一批相关的商品等等。

文献中用了两个任务来评估PinSage的效果:给pins推荐相关的pins,以及用户主页推荐。

3.1 recommending related pins

通过KNN来推荐最相关的500个pins,并使用MRR(Mean Reciprocal Rank)来衡量推荐效果,计算公式如下,其中

[公式]
[公式]

[公式]
[公式]

在候选集中的排名。最终实验结果如下图所示,对比方法详情如下:

pins包含图片和一组注释。 对比方法中的Visual使用图片信息得到的嵌入,Annotation使用图片注释得到的嵌入,Combined结合图片和注释得到的嵌入。 max-pooling、mean-pooling等则与PinSage有相同的结构,但池化方式不同。

[公式]
[公式]

recommending related pins的实验结果

此外文章还通过给用户推荐来自于两个算法的结果,让用户选择两个算法产出的结果与目标pins更匹配,结果如下图所示。

3.2 user home feed recommendation

通过A/B实验对比PinSage和其他推荐算法的效果,通过repin rate(给用户推荐的pins被钉到钉板boards的比例)来衡量推荐算法的效果,PinSage的repin rate比其他算法高10%至30%(木有详细数据)。

4 展望

没有展望,PinSage很优秀,未来可能在知识图谱推理以及图聚类等领域发挥更大效用。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容简介
  • 首次应用到商业推荐系统的图卷积神经网络PinSage
    • 1 图卷积网络和推荐系统
      • 2 算法详情
        • 3 实验详情
          • 4 展望
          相关产品与服务
          图数据库 KonisGraph
          图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档