用优步食品发现:使用图表学习电力推荐

用优步食品发现:使用图表学习电力推荐

优步外卖应用是全球36个国家500多个城市超过32万家餐厅合作伙伴的门户。为了让用户体验更加无缝和易于导航,我们会提前向用户展示他们可能喜欢的菜肴、餐厅和菜系。为此,我们以前开发了ML模型更好地了解查询而对于多目标优化在优步享有优步的搜索和推荐系统在优步吃搜索和浮出水面的食物选择。

现有的研究[1]显雷竞技是骗人的示了图表学习方法的效果,推荐任务。将这一想法应用于优步吃,我们开发了图表学习技术,以解决最有可能吸引个人用户的食物。生产该方法可提高我们在平台上的食品和餐厅建议的质量和相关性。

图表学习简称

为了最好了解我们如何使我们的优步饮食建议更准确,它有助于了解图表学习工作的基础知识。通过学习节点的陈述,可以对作为图表的数据进行数据进行许多机器学习任务。我们从图中学习的表示可以编码图形结构的属性,并易于用于上述机器学习任务。例如,在我们的优步申请模型中表示食子,我们不仅使用订单历史记录来通知订单建议,还可以使用有关食物项目与过去的信息有关的信息,请利用有关类似用户的订单和见解。

具体地,为了获得具有此类属性的表示,我们计算图表(在这种情况下的用户,餐馆和食物项目中的每个节点的向量),使得节点向量相似度近似于图中两个节点之间的连接的强度。我们的目的是从节点到其向量表示(编码函数)的那个地图,使得图表中结构上类似的节点具有相似的表示。

对于我们的优步饮食用例,我们选择了基于图形神经网络(GNN)的方法来获得编码功能。这种方法,虽然最初在20世纪90年代末和2000年代初提出[2,3]最近被研究界广泛通过了各种任务[6,7,8],并且已被显示出特别有效的建议雷竞技是骗人的问题[1]。

GNN背后的基本思想包括使用神经网络来通过在递归时尚限制为一定深度的递归时尚的汇总通过聚合相邻节点的表示来获得节点的表示,如图1所示:

图1:图神经网络(右)从输入图(左)得到节点A的表示。

假设我们将递归的深度限制为两个以获得图1中的节点A的表示,我们首先从中执行广度首次搜索一种。接下来,我们获得功能x节点的两个步骤从一种。例如,通过使用具有学习权重矩阵的矩阵乘法的平均值来聚合聚合/池池功能。W.(图中的Proj W)以获得一跳距离的节点附近的表示一种

此邻域表示与有关由矩阵乘法引入的节点本身的信息,其中包含学习权重矩阵B.(图1中的Proj B),这种组合形成了表示h来自节点的距离处的节点一种。该表示递归地聚合并投影以获得节点的表示一种,以及递归的每个步骤,新矩阵W.B.使用(W1和B1第1层和第1层W2和B2对于图1中的第2层)。以这种方式获得表示的主要优点是它捕获节点A和关于其邻域的结构信息的属性,与下面图2所示的节点连接的节点的节点聚合信息,如下所示:

图2:这些方程表示图1中显示的计算图。

然后,我们使用节点表示来预测存在两个节点之间的连接的概率,并优化最大化在图中实际连接的两个节点的概率并最小化断开连接节点的概率的损失。

GNNs只需要固定数量的参数,不依赖于图的大小,使得学习可扩展到大型图,特别是在获取特定节点的表示时,将邻近节点采样为一定数量。此外,可以根据新添加的节点的基本特征和连接,导出其表示形式。gnn的这些功能支持在Uber Eats上大规模推荐,每天都增加新用户、餐馆和菜品。

图表学习菜和餐厅推荐的优步

Uber内有几种推荐表面,如图3所示,如下所示:

图3:优步使用过去的订单和以前指定的用户首选项,UI对饥饿的用户进行了丰富的选择。

在主饲料上,我们根据用户偏好为餐馆和菜单项生成推荐转盘。在浏览餐馆的菜单时,我们还会在该餐厅内产生个性化建议,以适应用户的口味。这些建议是通过培训过去订单和用户偏好的推荐系统进行的。

优步饮食推荐系统可以分为两个阶段:候选生成和个性化排名。

候选生成组件以一种可伸缩的方式生成相关的候选对象,换句话说,就是菜肴和餐馆。我们需要使这一阶段具有高度的可扩展性,以便能够对平台上数量庞大且不断增长的菜肴和餐厅选项进行预过滤。预过滤可以基于地理位置等因素,因此我们不会向用户推荐超出其配送范围的餐厅。菜肴和餐厅候选也需要与给定的用户相关,以确保我们不会过滤掉他们喜欢的项目。

该系统的第二个组成部分是个性化的排名,是一个完全成熟的ML模型,基于其他上下文信息,例如用户打开时的日期,时间和当前位置等待预先过滤的菜肴和餐厅候选优步吃了应用程序。模型可以学会捕获的重复订单模式的一个例子包括在本周的特定日子或午餐和晚餐时的特定类型或不同类型的菜肴中订购某些类型的食物。

为了使用GNN来改善优化的建议,我们创建了两个二角形图:将用户和菜肴表示为具有表示用户订购特定菜肴的次数的节点,以及代表用户和餐馆作为节点的第二图表并且边缘代表用户从特定餐厅订购的次数。

我们选择了GraphSAGE[4],在投影后,聚合函数的GNN特定风味是我们建模起始点,因为它具有强的可扩展性。在该GNN中,通过连接获得节点信息和邻居信息的组合。另外,GraphSage采用采样策略来限制从我们想要获得表示的节点的一个和两跳距离处采样的节点的数量,使得可以使用数十亿个节点来缩放学习并提供更好的建议。

为了将Graphsage应用于我们的二分钟,我们必须以几种方式修改它。首先,由于每个节点类型可以具有不同的特征,因此我们需要向GNN添加另一个投影层。此图层将输入功能投影到相同大小的向量中,具体取决于输入节点的类型(用户,餐厅或菜肴)。例如,由于菜肴可以由嵌入词的描述或其相关图像的描述或特征来表示,而且餐厅可以具有与其菜单和烹饪产品相关的基本功能,它们的特征尺寸不同,但投影层需要投影它们在相同大小的空间。

此外,GraphSage仅考虑具有二进制边缘的图表,但在我们的情况下,需要加权,以包括关于用户订单的次数的信息,或者用户给菜肴给出的特定菜肴以及用户给出的评级这些是非常重要的信号。对于此问题,我们介绍了一些新概念来增加边缘的重量。最有影响的变化正在采用铰链损失,这是一种损失,它比使用二进制边缘更好地拟合项目的排名。


给予用户
u订购菜v至少一次,在图中存在它们之间的加权边缘。如果我们想预测这对节点的分数,高于我们预测相同节点的分数u和一个随机选择的节点n这没有连接到它(用户从未订购的菜肴),分数之间的差异应该大于边距

这种损失的问题是,高权重的边和低权重的边交替处理,这并不能很好地工作,考虑到用户点一次的菜和用户点十次的菜之间的差异。因此,我们在损失中引入了低秩正数的概念。

图4:我们的优步饮食推荐系统利用最大限度的损失增强了低排名阳性。

如上图4,显示了我们的系统如何利用低级肯定来修改我们的损失的示例。给出了积极的边缘< u, v >,低等级正为一个边缘在节点u是一样的,但是节点呢l不同于v重量在边缘低于重量< u, v >。我们为损失添加了第二件,以确保重量较高的边缘比具有较低重量的边缘更高的边缘,我们设置为低于的值,负样品的边距。这两个损失都有乘数,,一种控制损耗的损失的负样品部分的相对重要性和低等级的损失的正面部分。

最后,我们还在聚合函数和抽样函数中使用了权重。

一旦我们使用训练的GNN获取节点的表示,我们就可以使用节点表示之间的距离来近似于它们之间的相似性。具体而言,我们将用户和余弦和余弦相似的用户和物品添加到我们的菜肴和餐厅推荐系统中,并在线和在线测试它们以确定其准确性。

为了评估Embeddings是如何用于我们推荐任务的有用,我们在历史数据的四个月内培训了型号,达到特定的分裂日期。然后,我们在分裂日期后十天的订单数据测试了在推荐菜肴和餐馆的模型性能。具体而言,我们计算了用户和城市的所有菜肴和餐厅之间的余弦相似性,并计算了用户订购的菜肴和餐厅的等级。在实验期间,与现有的指标的生产模型相比,我们观察到比较〜20%的性能提升意思是排名倒数精确@ K.,和NDCG

从图表学习培训的嵌入式中获得的改进性能确信我们将它们添加为优先级的特征,这些功能推荐系统的个性化排名模式。当我们用图表学习嵌入式相似性功能培训了个性化排名模型时,我们看到了12%的提升AUC与现有的生产基准模型相比,导致用户提出改进的建议。

此外,分析了特征对我们预测的影响,我们看到图表学习相似性特征是迄今为止推荐模型中最具影响力的特征。这给了我们信心,该图表学习嵌入的嵌入式比我们系统中的任何现有功能更多的信息,如图5所示:

图5:我们的新图表学习功能证明了确定所需的所有其他实施功能的最有价值,我们的优步享有菜肴和餐厅推荐系统的质量和相关性。

鉴于离线结果,我们在网上实验中感到舒适地推出了新模型。我们进行了一个A / B测试在旧金山并观察到与以前的生产模型相比,在利用图表学习特征时观察到的参与和点击率的大量改进,展示了我们模型预测的浮出口的菜肴将更多地吸引Uber。

数据和培训管道

一旦我们确定了图表学习对我们的推荐系统的积极影响,我们建立了一个可扩展的数据管道,以便在培训模型中获得可扩展的数据流水线,并在实时生产环境中获得预测。

我们为每个城市培训单独的型号,因为他们的图表只是松散地连接。

为此,我们使用过去几个月的匿名化,聚合订单数据可用,并设计了一个四步数据流水线,以将数据转换为networkx.培训我们的模型所需的图形格式。管道还提取原始订单数据中不可直接可用的聚合功能,例如用户订购的菜肴的总次数,它决定了图形边缘的重量。

另外,管道还能够为较旧的时间帧创建图形,其可用于离线分析。整个管道在图6中描绘,如下所示:

图6:我们建立了一个数据流水线(顶行)和培训管道(底部行),帮助我们培训我们的优步使用GNN Embeddings提供推荐系统,以改善应用程序内的菜肴和餐厅建议。

在管道的第一步中,多个作业从Apache Hive表中拉动数据,分别将其作为包含节点和边缘信息的地板文件中的HDFS。每个节点和边缘都具有由时间戳传递的属性,这是构造背日图形所需的时间戳。

在第二步中,我们保留了每个节点和边缘的最新属性给定特定日期,并使用Cypeher格式将它们存储在HDF中。在培训生产模型时,指定日期是当前的日期,但如果指定了过去的日期,则该过程也是如此用于获取背部日期的图形。

第三步涉及在Apache Spark执行引擎中使用Cypeher查询语言来生成由城市分区的多个图形。

最后,在第四步中,我们将城市图形转换为NetworkX图格式,该格式在模型训练和嵌入生成过程中消耗,这些过程被实现为TensorFlow进程并在GPU上执行。

生成的嵌入物存储在a中查找表从哪个排名模型开始,当该应用程序打开并发出建议请求时,它们可以检索。

可视化学习嵌入式

为了提供一个能够描述通过我们的图表示学习算法学习到的内容的示例,我们展示了假设用户的表示如何随时间变化。

假设我们有一个新用户在优步吃饭,他们订购了鸡汤Tandoori和蔬菜Biryani(印度菜肴),我们在这个时刻获得此类用户的代表。

这位用户随后点了其他几道菜,包括:半份披萨、科布沙拉、半打甜甜圈、麻婆豆腐(一种中国菜)、Tikka Masala鸡肉和大蒜馕饼(三种印度菜)。在这些额外的订单之后,我们获得了用户的表示,我们计算了这两种表示与来自不同烹饪类型的最受欢迎菜肴之间的距离,并使用中介绍的显式轴技术将其显示在下面的图7中视差:通过代数公式可视化和理解嵌入空间的语义

图7:我们将假设用户的表达与订购菜肴进行比较,并将其与不同美食的热门菜肴进行比较。这四块图突出了属于四个不同套餐的菜肴。x轴测量在订购额外的菜肴之前,y轴测量菜肴在订购额外的菜肴之前是多少菜肴,而y轴测量在订购额外的菜肴后如何与用户表示类似。

在图7的左下部分,出现了清晰的模式。在右下方的绿色盒子中突出显示第一个图案:最接近用户表示的菜肴在附加订单之前几乎是所有印度菜肴(绿色点),因为最初的订单均为印度食品,但是also some Chinese dishes end up ranked high on the x-axis, suggesting a second order correlation between these cuisine types (i.e., users who ordered many Indian dishes also ordered Chinese ones). Chinese dishes also rank pretty high on the y-axis, suggesting that ordering Ma Po Tofu influenced the model to suggest more Chinese dishes.

在图7的右上方,橙色框中高亮显示了第二个模式:选择了美国、意大利、泰国和韩国菜,显示了在用户订购了其他菜之后,它们如何更接近用户表示。这不仅是因为点了披萨、甜甜圈和科布沙拉,也因为中国菜推荐增加的二阶效应,因为点了中国菜的用户也更有可能点泰国菜和韩国菜。

最后,在图像的左上角,蓝色框中突出了第三种模式:所有不是最接近用户陈述最近三个中的所有美食都最终在其后续订单后大大提高了它们的相似性,这表明这一点该模型了解到,此特定用户可能喜欢浮出水面的新粪便建议。

未来的发展方向

如前所述,图学习不仅是一个引人注目的研究方向,而且已经成为大规模部署的推荐系统的一个引人注目的选择。雷竞技是骗人的

虽然图表学习导致了建议质量和相关性的重大改进,但我们仍然有更多的工作来提升我们的部署系统。特别是,我们正在探索合并我们的菜和餐厅推荐任务的方法,目前是分开的,因为我们相信他们可以相互加强。随着时间的推移,我们计划从两个二角形图移动到一个包含所有实体节点的一个图表。这将需要额外的工作丢失和聚合函数正常工作,但我们认为它将提供利用共同信息的两个任务提供额外信息。

我们想要解决的另一个限制是即使在数据稀缺的情况下推荐给用户的合理物品的问题,例如在Uber新的城市中吃平台。我们通过使用Meta图表学习[5]通雷竞技是骗人的过使用Meta图表学习进行研究。

对优步如何利用人工智能来个性化餐单建议感兴趣吗?通过我们的Food Discovery with Uber Eats系列了解更多关于我们的Uber Eats推荐系统:

致谢

我们感谢Jimin Jia,Alex Danilychev,Long Tao,Santosh Golecha,Nathan Barrebbi,Xiaot Yin,Jan Pedersen和Ramit Hora的贡献。雷竞技是骗人的

标题中的图标是从icons8.com

参考资料

    1. 参考资料

      1. 雷克斯莹,破坏了他,凯峰陈,庞埃克萨伊,威廉·哈密尔顿和朱富克诺克:图表卷积神经网络用于Web级推荐系统知识发现(KDD) 2018
      2. Alessandro Sperduti和Antonina Starita:用于结构分类的神经网络。1997年神经网络上的IEEE交易
      3. Marco Gori, Gabriele Monfardini和Franco Scarselli:图形域中学习的新模型。IJCNN 2005
      4. William L. Hamilton, Rex Ying和Jure Leskovec:大图中的归纳表示学习。少量的酒2017
      5. Joey Bose,Ankit Jain,Piero Molino和威廉L。汉密尔顿:Meta-Graph:通过元学习几次射击链路预测。图表表示学习研讨会@ neurips 2019
      6. Thomas N. Kipf和Max Welling:具有图形卷积网络的半监督分类。ICLR 2017
      7. Bing Yu,昊腾尹ZhanXing朱时空图卷积网络:交通预测的深度学习框架IJCAI 2018.
      8. X. Geng,Y.Li,L. Wang,L.张,Q.杨,J. Ye和Y. Liu,用于乘车需求预测的时空MOLERAL MULTIP卷积网络AAAI 2019。
评论

没有帖子显示