论文阅读:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba

本文是阿里发表在KDD 2018,基于Graph Embedding实现淘宝首页推荐召回。主要通过用户点击的行为历史构建item图,学习图上所有item的embedding。同时为了解决可扩展性(scalability)、稀疏性(sparsity)、冷启动问题(cold start),在Item图的基础上,增加 item 的额外信息(例如category, brand, price等)丰富item表征力度。提出了BGE、GES和EGES三个模型。

1.背景

淘宝平台推荐的三个问题:

  1. 可扩展性(scalability):已有的推荐算法(CF,Base-Content,DL)可以在小数据集上有不错效果,但是对于10亿用户,20亿商品这样海量的数据集上效果差。
  2. 稀疏性(sparsity):用户仅与小部分商品交互,难以训练准确的推荐模型。
  3. 冷启动(cold start):物品上新频繁,然而这些商品并没有用户行为,预测用户对这些商品的偏好是十分具有挑战性的。

现在业界针对海量数据的推荐问题通用框架是分成两个阶段,matching & ranking。在matching阶段,我们会生成一个候选集,它的items会与用户接触过的每个item具有相似性;接着在ranking阶段,我们会训练一个深度神经网络模型,它会为每个用户根据他的偏好对候选items进行排序。本文关注的问题在推荐系统的matching,也就是从商品池中召回候选商品的阶段。核心的任务是计算所有item之间的相似度。

为了达到这个目的,本文提出根据用户历史行为构建一个item graph,然后使用DeepWalk学习每个item的embedding,即Base Graph Embedding(BGE)。BGE优于CF,因为基于CF的方法只考虑了在用户行为历史上的items的共现率。但是对于少量或者没有交互行为的item,仍然难以得到准确的embedding。为了减轻该问题,本文提出使用side information来增强embedding过程,提出了Graph Embedding with Side information (GES)。例如,属于相似类别或品牌的item的embedding应该相近。在这种方式下,即使item只有少量交互或没有交互,也可以得到准确的item embedding。在淘宝场景下,side information包括:category,brand,price等。不同的side information对于最终表示的贡献应该不同,于是本文进一步提出一种加权机制用于学习embedding with side information,称为Enhanced Graph Embedding with Side information (EGES)

 

2.框架

2.1 构建 item graph

现实中,在淘宝上一个用户的行为趋向于如图2(a)所示的序列。之前基于CF的方法只考虑了items的共现,但忽略了顺序信息(可以更精准地影响用户的偏好)。然而,不可能使用一个用户的整个历史,因为:计算开销和存储开销会非常大,一个用户的兴趣趋向于随时间漂移。因此,我们设置了一个时间窗口,只选择用户在该窗口内的行为。这被称为是基于session的用户行为(session-based)。经验上,该时间窗口的区间是一个小时,设置一个时间窗口,会通过一个有向边进行连接,例如:图2(b)的item D和item A是连接的,因为在图2(a)中用户u1顺序访问了item D和A。通过利用在淘宝上所有用户的协同行为,我们会为每条边eij基于在所有用户行为的行连接items中的出现总数分配一个权重。特别的,在所有用户行为历史中,该边的权重等于item i转向item j的频次。

当然在实际使用中,数据肯定存在噪声,需要对做一些处理,来消除噪声:

  1. 在点击后停留的时间少于1秒,可以认为是误点,需要移除。
  2. 还有一些过度活跃用户,三月内购买商品数超过1000,或者点击数超过3500,就可以认为是一个无效用户,需要去除。
  3. 还有一些商品频繁的修改商品内容的,造成前后同一id的商品信息不对应,需要移除。
     

2.2 基于图的Embedding(BGE)

通过前面定义用户session,构建出商品的加权有向图,使用deep walk算法,经过随机游走得到序列,输入skip-gram进行训练,学习图G中的节点的embedding。

重新回顾下随机游走(random walk)的思想,如何利用随机游走在图(graph)中生成序列。假设M是G的邻接矩阵,表示从节点i指向节点j的加权边,那么随机游走的转移概率定义为:

                                               

其中表示的是所有节点的下一一跳节点集合,可以看出随机游走是按边的权重分配的概率值。通过这个概率值就可以从图中获取到大量的序列。再接着就利用skip-gram来学习embedding的值,这里的思想就和item2vec相似了,把每个item id看成是词,整个序列看成句子,然后做word2vec。优化目标如下:

                                                

这里的w就是再做skip-gram是选择的窗口大小,假设节点v_i到各个窗口内节点的概率独立,就可以得到记一步的优化函数:

                                                   

然后就是加入负采样,这个为了减少计算量,做的近似,神经网络优化里一个常见的trick:

                                                

其中,V(vi)′是对于vivi的负采样,σ()是sigmoid函数。经验上,∣N(vi)′∣越大,获得的结果越好。
 

2.3 使用Side Information的GE(GES)

通过使用BGE,我们能够将items映射到高维向量空间,并考虑了CF没有考虑的用户序列关系。但是我们依然没有解决冷启动的问题。为了解决冷启动问题,我们使用边界信息( category, shop, price, etc)赋值给不同的item。因为边界信息相同的两个item,理论而言会更接近。通过DeepWalk方案得到item的游走序列,同时得到对应的category(brand, price)序列。然后将所有序列放到word2vec模型中进行训练。针对每个 item,将得到:item_embedding,category_embedding,brand_embedding,price_embedding 等 embedding 信息。为了与之前的item embedding区分开,在加入Side information之后,我们称得到的embedding为商品的aggregated embeddings。商品v的aggregated embeddings计作

计算公式如下:

表示item v 的embedding,表明s-th类边界信息的的embeding

2.5 增强型EGS(EGES)

GES中存在一个问题是,针对每个item,它把所有的side information embedding求和后做了平均,没有考虑不同的side information 之间的权重,EGES就是让不同类型的side information具有不同的权重,提出来一个加权平均的方法来聚集这些边界embedding。

因为每个item对其不同边界信息的权重都不一样,所以就需要额外大小为v*(n+1)的一个矩阵来表示每个item对边界信息的权值,v是item的个数,n是边界信息的个数,加1是还要考虑item自身的权重。假设是权重矩阵,那么里面的项Aij就是第i个item、第j个类型的side information的权重。矩阵第一列还是用来表示自身的权重。这样就可以获得加权平均的方法:

这里对权重项a_{v}^{i}做了指数变换,目的是为了保证每个边界信息的贡献都能大于0

其他的和前面的方法都一直,整体的算法逻辑如下图:

3.效果评估

本节中,我们引入大量实验来演示这些方法的效果。首先通过链接预测任务评估方法,然后是在Taobao移动端APP上的在线实验。最终,我们提出一些真实case来进一步深入这些方法。

3.1 离线评估

链接预测(Link Prediction)。链接预测任务被用于离线实验,因为它是在网络中的一个基础问题。给定移除某些边的一个网络,预测任务是预测这些链接的出现概率。根据在[30]中相似的实验设置,1/3的边被随机选中及移除,在测试集中作为ground truth,图中剩余的边作为训练集。在测试集中,相同数目的没有边连接的节点对(node pairs)会被随机选中作为负样本。为了评估链接预测的效果,使用AUC得分作为metric。

数据集:我们使用两个数据集来进行链接预测任务。第一个是Amazon Electronics数据集。第二个从Taobao移动端APP抽取。两个数据集都包含了不同类型的side information。对于Amazon数据集,item graph可以从“共同购买(co-purchasing)”的关系中被构建(在提供的数据中由also_bought表示),使用了三种类型的side information,例如:类目(category),子类目(sub-category)以及品牌。对于Taobao数据集,item graph通过第2.2节的方法购建。注意,为了效率和效果,在Taobao真实生产环境中,使用了12种类型的side information,包括:零售商(retailer), 品牌(brand), 购买级别(purchase level), 年代(age), 适用性别(gender), 风格(style), 等等。这些类型的side information根据这些年在taobao的实际经验很有用。两个数据集的统计如表1所示。我们可以看到两个数据集的稀疏性大于99%。

 

表1

比较方法。引入了4种方法进行实验:BGE, LINE, GES和EGES。LINE在[17]中被提出,它可以捕获在graph embedding中的第一阶和第二阶的邻近关系。我们使用由作者提供的实现,使用第一阶和第二阶邻近(LINE(1st)和LINE(2nd))来运行它。我们实现了其它三种方法。所有这些方法的embedding维度都设置为160.对于我们的BGE、GES和EGES,随机游走的长度为10, 每个节点的walks数目为20, 上下文窗口为5.

表2

结果分析。结果如表2所示。我们可以看到GES和EGES的AUC效果在两个数据集上都要好于BGE、LINE(1st)和LINE(2st)。另换,稀疏性问题也通过合并side information而缓合。当比较Amazon和Taobao的效果时,我们可以看到,在taobao数据集上的效果增益更大。我们将它归功于在Taobao数据集上使用了更多类型的有效的、有信息量的side information。当比较GES和EGES时,我们可以看到,在Amazon上的效果收益比在Taobao上的要大。这可能归功于Taobao的效果已经非常好了,比如:0.97.因而,EGES的提升不显著。在Amazon dataset上,EGES在AUC上的效果要好于GES。基于这些结果,我们可以观察到合并side information对于graph embedding非常有效,准确率可以通过对多个side information的mebeddings进行加权聚合而提升。

 

图4 2017年11月连续7天内不同方法的在线CTR

3.2 在线A/B test

我们在一个A/B testing框架下进行在线实验。实验的目标是在Taobao APP主页上的CTR。我们实现了上述的graph embedding方法,接着为每个item生成多个相似的items作为推荐候选。最终在Taobao主页(见图1)上的推荐结果,由基于一个DNN模型的ranking引擎生成。在实验中,我们在ranking上使用相同的方法对候选排序。如上所述,相似items的质量直接影响着推荐结果。因而,推荐效果(例如:CTR)可以受matching阶段不同的方法而影响。我们在A/B test框架上部署了4个方法。并对2017年11月中的7天的结果进行展示(如图4)。注意,“Base”表示一个item-based CF的方法,在graph embedding方法部署之前,它被广泛用于淘宝上。它会根据item的共现以及用户投票权重,计算两个items间的相似度。该相似度可以很好地进行调参、并很适合淘宝电商。

从图4我们可以看到,EGES和GES在CTR上的效果要好于BGE、以及Base方法,这展示了在graph embedding上合并side information的效果。另外,Base的CTR要大于BGE。这意味着,经过良好调参的CF-based方法可以战胜简单的embedding方法,因为在实际中会大量使用人工经验的策略。另一方面,EGES会一直胜过GES,它在3.1节的离线实验中一致。这进一步演示了,side information的加权聚合要胜过平均聚合。

3.2 案例研究

在本节中,我们提出了一些在taobao的真实案例,来展示这些方法的效果。这些case会检查三个方面:

  • 1.通过EGES的embedding可视化
  • 2.冷启动items
  • 3.在EGES中的权重

3.3.1 可视化

在本部分,我们会将由EGES学到的items的embeddings进行可视化。我们使用由tensorflow提供的可视化工具。结果如图7所示。从图7(a),我们可以看到不同类目(categories)的鞋子会在不同的聚类中。这里一种颜色表示一个类目,比如:羽毛球,乒乓球,足球。它演示了学到的合并side information的embeddings的效果。例如,具有相似side information的items在embedding空间中应更接近。从图7(b)看到,我们进一步分析三种鞋子的embeddings:羽毛球,乒乓球,足球。在embedding空间中,羽毛球和乒乓球相互很接近,而足球更更远些。这可以被解释成:在中国,喜欢羽毛球的人很多也喜欢打乒乓球。然而,喜欢足球的人与喜欢户内运动(羽毛球和乒乓球)的人则相当不同。推荐羽毛球鞋给这些观看过乒乓球鞋的人效果要好于推足球鞋的。

3.3.2 冷启动items

 

图5: 冷启动item的相似items。展示了top4相似的items。注意:这里的”cat”表示category.

在本部分,我们展示了冷启动的embeddings质量。对于在淘宝上刚更新的一个新item,在item graph中没法学到embedding,之前基于CF的方法也不能处理冷启动问题。然而,我们可以将一个冷启动item使用它的side information进行表示。结果如图5所示。我们可以看到,尽管对于两个冷启动items来说缺失用户行为,但可以利用不同的side information来有效学习它们的embeddings,在top相似的items上。在图中,我们为每个相似的item做了注释,连接到冷启动item上的side information的类型。我们可以看到,items的所属商店(shops)是用于衡量两个items相似度上非常重要的信息,它也会在下面部分使和每个side information的权重进行对齐。

 

图6: 不同items的不同side information的weights. 这里的”Item”表示一个item本身的embedding

3.3.3 在EGES中的权重

我们会为不同的items作不同类型side information权重可视化。每个在不同类目上的8个items会被选中,与这些items相关的所有side information的权重会从学到的weight matrix A中抽取。结果如图6所示,其中,每一行记录了一个item的结果。可以观察到许多注意点:

  • 1.不同items的weight分布很不同,它们会与我们的猜假一致,不同的side information对于最终的表示来说贡献是不同的。
  • 2.在所有items中,”Item”的权重,表示了item自身的embeddings,会一直大于其它的side information的权重。必须承认的是,一个item自身的embedding仍然是用户行为的主要源,其中side information提供了额外的提示来推断用户行为。
  • 3.除了”Item”外,”Shop”的权重会一直大于其它side information的权重。这与淘宝的用户行为相一致,也就是说,用户可能出于便利或更低价格因素,趋向于购买在相同店内的items。

 

图7: 随机选中的鞋子的一个集合的embedding可视化。item embeddings通过PCA被投影到一个2D平面上。不同颜色表示不同的categories。相同category中的Item被一起分组。

4.系统部署和操作

本节中介绍graph embedding方法在淘宝的实现和部署。首先给出对淘宝整个推荐平台的一个大体介绍,接着详述与embedding方法相关的模块。

 

图8: 淘宝推荐平台的架构

在图8中,我们展示了推荐平台的架构。该平台包含了两个子系统:online和offline。对于online子系统,主要组件是TPP(Taobao Personality Platform:淘宝个性化平台)和RSP(Ranking Service Platform: 排序服务平台)。一个典型的workflow如下所示:

  • 当用户加载淘宝移动APP时,TPP会抽取用户最新的信息,并从离线子系统中检索一个items候选集,它们会接着被fed进RSP。RSP会使用一个fine-tuned DNN模型对items候选集进行排序,接着返回相应的排序结果给TPP。
  • 当用户在淘宝内浏览时,它们的行为会被收集和存储成离线子系统中的日志。

offline子系统的workflow,包含了graph embedding的实现和部署,如下描述:

  • 包含用户行为的日志会被检索。item graph会基于用户行为进行构建。实际上,我们会选择最近三个月的日志。在生成基于session的用户行为序列之前,会对数据进行anti-spam。留下的日志包含了6000亿条目。item graph会根据2.2节的方法进行构建。
  • 为了运行我们的graph embedding方法,会采用两种实际方法:1) 整个graph划分成许多个sub-graphs,它们可以通过Taobao的ODPs(Open Data Processing Service)分布式平台进行处理。每个subgraph有将近5000w个节点。2)为了生成random walk序列,我们在ODPs中使用基于迭代的分布式图框架。通过random walk生成的序列总是将近1500亿。
  • 为了实现该embedding算法,在我们的XTF平台上使用了100个GPU。在部署平台上,使用1500亿样本,在离线子系统中的所有模块,包含日志检索、anti-spam、item图构建、通过random walk生成序列、embedding、item-to-item相似度计算以及map生成,执行过程小于6个小时。这样,我们的推荐服务可以在非常短时间内响应用户最近行为。

 

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值