本文将介绍图机器学习在蚂蚁推荐系统中的应用。在蚂蚁的实际业务中,有很多额外的信息,比如知识图谱、其他业务的用户行为等,这些信息通常对推荐业务很有帮助。我们使用图形算法将这些信息和推荐系统连接起来,以增强用户兴趣。表达。全文主要关注以下几个方面:背景基于图谱的推荐社交和基于文本的推荐跨域推荐01背景支付宝除了主要的支付功能外,还有大量的推荐场景,包括腰带推荐、基金推荐和优惠券推荐等。支付宝推荐与其他推荐最大的区别在于用户行为稀疏,活跃度低。许多用户打开支付宝只是为了支付而没有关注其他事情。所以推荐网络UI端的记录很少,我们的重点也放在低活跃目标的推荐上。例如,为了增加DAU,内容可能只放在低活跃用户的口袋里,普通用户是看不到的;在基金推荐板块,我们更关注那些没有理财或持仓量低的用户,引导他们购买一些基金交易;消费券的推荐也是为了促进低活跃用户的线下消费。低活跃用户的历史行为序列信息非常少,一些直接根据UI历史行为序列进行推荐的方法可能不适合我们的场景。因此,我们引入以下三个场景信息来增强支付宝域的UI关系信息:社交网络UU关系II地图关系其他场景UI关系通过社交网络UU关系,低活跃好友的点击偏好可以得到users,根据同质性特征可以推导出用户的点击偏好,item之间的图关系可以发现和扩展用户对相似item的偏好信息。最后,跨域场景下的用户行为对于当前场景下的推荐任务也很有帮助。02基于图的推荐在很多推荐场景中,用户的行为是稀疏的,尤其是在描述新用户时,可用的行为信息非常少,所以通常会引入很多辅助信息,比如属性、上下文、图像等.,我们这里介绍的是知识图谱——knowledgegraph。1.存在的挑战知识图谱是一个庞大而全面的历史专家知识,对我们的算法推荐很有帮助,但是仍然存在两个问题:第一,图谱本身可能不是为这个业务设计的,所以包含了很多无用的东西信息,训练过程也很耗时。一种常见的解决方案是只保留图中可以与我们的产品相关联的边,并删除其他边,但这可能会导致一些信息丢失,因为其他边也很有用。其次,当地图用作辅助信息时,无法将用户偏好聚合到地图内部的边缘。如上图所示,用户1喜欢电影1和电影2的原因可能是因为他们的主演相同,而用户2喜欢电影2和电影3的原因可能是因为他们的类型相同。如果只用普通图模型的UI和II关系来建模,只能得到用户和电影的相关性,却没有办法把用户的这些潜在意图聚合成图。所以后面我们主要解决mapdistillation和maprefinement这两个问题。2.现有方法①Embedding-based模型Embedding-based方法首先通过图表示学习方法将图中的节点转化为Embedding,然后将Embedding直接连接到UI模型上。这类方法预先学习图中的相关性,并将其转化为Embedding,因此很难衡量用户与知识边的相似度,也没有解决图蒸馏和图精化的问题。②Path-basedmodel基于路径的方法根据图中的知识边将图分解为多个元路径,但元路径的构建过程需要大量的专家知识,不能反映用户的偏好为知识边缘。③基于GCN的模型基于GCN方法,对UI和II之间的关系进行建模。一般通过attention方法根据不同类型的边取不同的权重,但是边的权重只与边两端节点的表示,以及目标节点的表示有关。无关紧要。3.解决方案我们提出的模型主要分为四个部分。首先,通过图表示学习获得图表示,通过知识依赖传播学习和聚合不同边的重要性。然后,图中的边由蒸馏模块分析。采样,去噪,加conditionalattentionmaprefinement,最后做一个双塔模型得到结果。下面分别介绍各部分的具体细节:①图表示学习层我们这里使用传统的TransH图表示模型,因为我们的图中有很多多对一和一对多的边。通过TransH,将每个节点映射到边对应的空间,在这个空间中度量两条边的相似度。②图表示学习层学习图边表示,聚合邻域内的图边表示,计算不同边空间的cos距离作为加权聚合图点表示。因为图中边的噪声非常大,所以我们会根据学习到的权重对目标子图进行额外的采样和采样。目标子图是用户和产品组合的二阶子图。采样后会产生更小的子图。③图表示学习层得到子图后,我们做一个conditionalattention来衡量边给定用户和产品的重要性。一条边的重要性可以分为两部分,一是边本身很重要,二是用户非常关注这条边。边本身的重要性在上一步的knowledge-dependentattention中已经学习到了,不需要再做额外的训练。用户对边的重要性是通过拼接所有目标集的表示和边两端的表示来引起注意的。得到conditionalattention,然后根据conditionalattention做一些聚合。④双塔模型最后做一个双塔模型来衡量pairwiseloss,使用Adam-like方法同时优化推荐系统的maprepresentationlearningloss和targetloss。我们算法的复杂性与点和边的数量线性相关。4.实验结果①实验数据集和基准模型的选择我们选择了一些推荐系统的数据集加上我们业务的知识图谱和基金推荐数据集。baseline主要包括基于正则化的CKE方法和基于矩阵分解的NMF方法。基于路径的异构图方法RippleNet和基于GCN的KGAT。②注意力可视化在左边的Knowledgeattention中,每条边上的值只与两端的节点相关。右上角U532和i1678上的值很小,后面不好采样这个边缘。右边两张图中的用户都是U0,但是产品不同,所以整个图的权重是完全不同的。在预测U0-i2466和U0-i780的相关性时,两个图最右路径的权重完全不同,U0-i2466最右路径的权重更大,因为在预测U0-i2466的相关性时在性方面,最正确的道路更为重要。③模型评估我们测量了模型对Top-K推荐和CTR点击任务的影响。与基线模型相比,它有了很大的改进。在线基金推荐的A/B测试实验也带来了效果的提升。最后,我们做了一个消融实验,结果表明去除条件注意或知识注意模型的效果会降低,这证明了我们改进的有效性。03社交和文本推荐我们这里的社交和文本推荐不是传统意义上的推荐场景。主要是帮助运营了解用户意图,为用户创造一些新的内容和新的广告,引导用户增长。比如腰封推荐的封面怎么设计,运营在充分了解用户意图后,才能设计出符合用户心理预期的内容。1.存在的挑战一个很自然的方法是使用TopicModel来衡量从用户到意图和意图到产品的分布,把用户看成一个文档,把产品看成一个词来分解用户的意图。但实际上,用户的点击是稀疏的,尤其是当我们的目标客户是低活跃用户,产品的点击是长尾分布的,很难获得用户的兴趣和意愿。2.解决方案首先,我们将UU关系和UI关系都加入到GNN中进行学习,衡量用户的点击行为,然后我们对学习到的用户意图先验分布进行近似,传统TopicModel的先验分布是狄利克雷分布。我们在这里使用逻辑正态分布,它看起来与Dirichlet分布非常相似。这种分布的学习可以通过一些重新参数化工作来推导。学习了用户之间的关系之后,下一步就是学习语料库之间的关系。上图中,有一个小程序,里面有一段文字说明。利用skip-gram模型计算item与正负样本的相似度,得到词的相似度,并将词的相似度通过一个DNN映射到用户意图表示,最后调整为形式我们要通过KL散度约束分布。3.实验结果我们的数据集是用户连续7天的点击数据,包括约50万用户,9206条,2亿用户历史点击行为。该社交网络包括700万条边,每个用户平均有14-15个邻居节点。我们分别进行了线下和线上的实验测试。离线实验测量了不同主题数量下用户之间的相似度和语义之间的相似度。在线实验使用我们的模型预测的用户意图反馈给运营,运营根据用户意图设计描述文本和展示页面以进行在线推荐。整体模型的实验环节可能会比较长,因为操作中途会产生一些素材。在线A/B实验的目标分为两部分。一是按照我们的模式,根据运营的反馈来设计素材,二是利用历史专家的经验。输出。实验结果表明,无论是离线还是在线实验,我们的模型都比之前的模型有了很大的改进。04跨域推荐我们的推荐对象是低活跃用户,他们可能没有标签,没有特征,甚至从来没有使用过支付宝。在上图中,我们首先分析了用户之间的相似度。蓝色代表与陌生人的行为相似度,红色代表与朋友的行为相似度。结果表明,距离越近的朋友,其行为重合度越高,因此我们可以将用户朋友的行为信息作为用户信息的补充。然后我们分析了活跃用户和非活跃用户的好友数量,发现活跃用户的好友数量比非活跃用户的好友数量多很多,于是想能不能把活跃用户的点击信息迁移到他们的非活跃好友上信息协助推荐。所以我们模型的核心思想之一就是对齐活跃用户和不活跃用户的特征空间。因为非活跃用户缺失了很多特征,所以他和活跃用户的特征空间是有本质区别的。这里我们使用GNN来学习用户的表示,并将用户的表示映射到一个公共空间。如上图所示,CD-GNN结构的上层是我们要预测的活跃用户,下层是我们要预测的非活跃用户。从两个GNN学习后,它们通过域不变层映射到共享用户。在表示方面,对活跃用户和非活跃用户都进行了标签预测。具体来说,图模型包括社交网络和用户页面网络。在两个网络上执行不同的聚合。活跃用户和不活跃用户通过DomainInvariantLayer映射到同一个空间。最终loss=Sourceloss+Targetloss-Domaininvariantloss。在线A/B实验结果表明,我们的模型相比GCN有很大的CTR提升,并且我们的模型在稀疏行为的情况下仍然可以取得很好的效果。以上是我们团队近期公布的部分成果。我主要说说上面三篇文章的工作。05互动问答Q1:CD-GNN层的参数是否共享?A1:不分享,因为活跃用户的一些特征,比如ID特征,比不活跃用户多很多,而且这两个特征的分布也不一致,所以我们这里没有分享。Q2:在跨域推荐问题中,非活跃用户的TargetLabels数量很少,导致模型对非活跃用户的TargetEmbedding学习不好。此类问题应该如何考虑?A2:可以使用一些预训练的方法,提前添加一些表示信息,或者通过一些方法来补充缺失的特征。可以边做图模型边补充特征,补充邻居的特征,而不是简单的聚合邻居的特征。添加类似于特征重建的损失可能有助于解决这个问题。Q3:第一种基于地图的方式落地精细布局场景了吗?里面的GNN一般能达到多少阶?A3:我们的基金推荐板块只向用户展示了5只基金。不像其他场景推荐一个列表,底部可能有几百条信息。用户一眼就能看到这5只基金,重新排列的影响不是很大。大的。我们模型的结果是直接连线的,是一个精化模型。一般使用二阶GNN,三阶GNN在某些任务上提升不大,在线延迟过长。
