本文是阿里发表在KDD 2018,基于Graph Embedding实现淘宝首页推荐召回。主要通过用户点击的行为历史构建item图,学习图上所有item的embedding。同时为了解决可扩展性(scalability)、稀疏性(sparsity)、冷启动问题(cold start),在Item图的基础上,增加 item 的额外信息(例如category, brand, price等)丰富item表征力度。提出了BGE、GES和EGES三个模型。
淘宝平台推荐的三个问题:
现在业界针对海量数据的推荐问题通用框架是分成两个阶段,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(a)所示的序列。之前基于CF的方法只考虑了items的共现,但忽略了顺序信息(可以更精准地影响用户的偏好)。然而,不可能使用一个用户的整个历史,因为:计算开销和存储开销会非常大,一个用户的兴趣趋向于随时间漂移。因此,我们设置了一个时间窗口,只选择用户在该窗口内的行为。这被称为是基于session的用户行为(session-based)。经验上,该时间窗口的区间是一个小时,设置一个时间窗口,会通过一个有向边进行连接,例如:图2(b)的item D和item A是连接的,因为在图2(a)中用户u1顺序访问了item D和A。通过利用在淘宝上所有用户的协同行为,我们会为每条边eij基于在所有用户行为的行连接items中的出现总数分配一个权重。特别的,在所有用户行为历史中,该边的权重等于item i转向item j的频次。
当然在实际使用中,数据肯定存在噪声,需要对做一些处理,来消除噪声:
通过前面定义用户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)′∣越大,获得的结果越好。
通过使用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
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的权重。矩阵第一列还是用来表示自身的权重。这样就可以获得加权平均的方法:
这里对权重项做了指数变换,目的是为了保证每个边界信息的贡献都能大于0
其他的和前面的方法都一直,整体的算法逻辑如下图:
本节中,我们引入大量实验来演示这些方法的效果。首先通过链接预测任务评估方法,然后是在Taobao移动端APP上的在线实验。最终,我们提出一些真实case来进一步深入这些方法。
链接预测(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
我们在一个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的加权聚合要胜过平均聚合。
在本节中,我们提出了一些在taobao的真实案例,来展示这些方法的效果。这些case会检查三个方面:
在本部分,我们会将由EGES学到的items的embeddings进行可视化。我们使用由tensorflow提供的可视化工具。结果如图7所示。从图7(a),我们可以看到不同类目(categories)的鞋子会在不同的聚类中。这里一种颜色表示一个类目,比如:羽毛球,乒乓球,足球。它演示了学到的合并side information的embeddings的效果。例如,具有相似side information的items在embedding空间中应更接近。从图7(b)看到,我们进一步分析三种鞋子的embeddings:羽毛球,乒乓球,足球。在embedding空间中,羽毛球和乒乓球相互很接近,而足球更更远些。这可以被解释成:在中国,喜欢羽毛球的人很多也喜欢打乒乓球。然而,喜欢足球的人与喜欢户内运动(羽毛球和乒乓球)的人则相当不同。推荐羽毛球鞋给这些观看过乒乓球鞋的人效果要好于推足球鞋的。
图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
我们会为不同的items作不同类型side information权重可视化。每个在不同类目上的8个items会被选中,与这些items相关的所有side information的权重会从学到的weight matrix A中抽取。结果如图6所示,其中,每一行记录了一个item的结果。可以观察到许多注意点:
图7: 随机选中的鞋子的一个集合的embedding可视化。item embeddings通过PCA被投影到一个2D平面上。不同颜色表示不同的categories。相同category中的Item被一起分组。
本节中介绍graph embedding方法在淘宝的实现和部署。首先给出对淘宝整个推荐平台的一个大体介绍,接着详述与embedding方法相关的模块。
图8: 淘宝推荐平台的架构
在图8中,我们展示了推荐平台的架构。该平台包含了两个子系统:online和offline。对于online子系统,主要组件是TPP(Taobao Personality Platform:淘宝个性化平台)和RSP(Ranking Service Platform: 排序服务平台)。一个典型的workflow如下所示:
offline子系统的workflow,包含了graph embedding的实现和部署,如下描述: