这篇论文提出一个视频推荐领域的大规模的多目标排序系统,该系统主要面临几个挑战:1)多个竞争关系的目标;2)用户反馈的选择偏见(selective bias)。 本文探究了大量软-参数共享技术,例如MMoE,来有效的优化多目标排序。除此之外,本文还采用wide&deep框架来缓和选择偏见问题。并且在youtube线上环境验证了方案的效果。
本文描述了一个用户视频推荐的大规模排序服务。具体场景是:给定一个用户播放的视频,生成下一个他可能会播放和喜欢的视频。 典型的推荐系统包含两个阶段:召回(recall),排序(rank)。本文的重点聚焦在排序阶段:对召回阶段输出的数百个内容,应用复杂的模型进行排序,选出其中最有可能被用户喜欢的。
设计与实现一个大规模的线上推荐系统会面临一下挑战:
所以本文的贡献:
作者首先把目标分为两类:
这些目标可能正相关,也可能负相关,正好适合应用MMoE框架来解决。为了对selection bias进行建模,引入了一个浅层的模型。该模型输入是一个能刻画selection bias的因子,例如排序的位置,输出一个标量作为主模型输出的偏移量。
简而言之,该模型把用户对视频的喜好拆分成两部分:无偏效用(MMoE学习),bias(浅层网络学习)
推荐问题可以理解为:给定一个查询、上下文、候选集,返回一个高可用性的小列表。在这一节,我们会分三部分来讨论:1)工业推荐系统的样例分析;2)多目标排序系统;3)理解训练数据的偏倚问题。
想要设计、开发一个强大机器学习模型加持的成功的排序系统,我们需要大量的训练数据,在大多数现有的推荐系统中,训练数据都依赖用户的行为日志。
推荐系统想获得用户的显式反馈,例如电影评分等,但是由于用户成本很高,所以显示反馈往往很稀疏。因此,目前推荐系统的训练大多数依赖用户的隐式反馈,例如点击、播放等等。
推荐系统一般分为两个阶段:
这些推荐系统面临的主要挑战之一就是可扩展性。所以,通常需要从机器学习模型效率和推荐系统架构两个方面着手。为了在模型的效率和效果中取得一个平衡,现在比较通行的做法是使用基于深度学习的pointwise排序模型。
本文首先提出了推荐系统的的问题:用户隐式反馈和真实需求之间的鸿沟;然后,提出一个基于深度学习的多任务学习模型,分别多两种类型用户反馈进行建模。
在推荐系统中,用户的行为多种多样,例如:点击、点赞、下单等。 单个用户行为并不能准确反映用户对Item的好恶,例如一个用户播放某个视频,但是最后给了一个低分。并且这些行为之间不是相互独立的,可能会结合在一起决定用户对视频的偏好。所以,我们要结合这些行为分数在一起来评价用户的对某个视频的偏好。
目前不少推荐系统都有考虑到多目标。例如大多数推荐系统在召回阶段都会考虑到多目标,因此应用多种算法来做召回。 还有一些针对特定特征做了多目标排序,例如针对文本特征做了排序,针对图像特征做了一个排序。这些往系统的可扩展性比较差,一来没有利用不同特征之间的关系,二来一旦特征空间比较复杂,整个排序的参数规模会很大。
用户隐式反馈受位置偏倚影响很大,这个在搜索和推荐领域早就有人证明了这点。因此,也有了一些工作希望移除位置偏倚的影响。比较常用的做法是把位置作为一个参数带入模型训练和预测过程。例如把位置作为条件概率的前键值,对 p ( c l i c k ∣ p o s i t i o n , i t e m ) p(click|position, item) p(click∣position,item)建模,在预测阶段,计算 p ( c l i c k ∣ p o s i t i o n = 1 , i t e m ) p(click|position=1, item) p(click∣position=1,item)来移除位置的影响。也有一些工作,学习一个全局的 b i a s bias bias因子来对结果进行正规化,缺点是这个 b i a s bias bias做不到个性化。
而且,在真实的推荐系统中,用户的兴趣偏好和视频的流行度每天都在变化,因此利用全局的 b i a s bias bias很难取得好效果。
综上所述,推荐领域的排序面临以下几个问题:
在这一节,本文将会会详细描述提出的排序系统的细节。首先,我们会提供问题的总览,包括:形式化、目标、特征。然后,我们讨论如何设置多目标,以及如何引入经典的多目标排序模型:MMoE来学习多个排序目标。最后,我们会陈述如何结合MMoE和浅层网络来学习和降低 s e l e c t i v e selective selective b i a s bias bias,尤其是位置偏倚。
正如前文所述,本系统的用户行为分为两类:1)参与性,如:点击、播放;2)满足性,如:点赞、评分。给定用户的query, 上下文,候选集,排序系统会预测这两类行为。
出于对线上部署便利性和效率的考虑,本文选用pointwise类方法。
本文使用用户的行为种类作为多目标分类的依据。把用户的行为分为参与性和满足性两类。其中参与性拆分成两个目标:一个二分类(是否点击),一个回归(时长);满足性也可以拆分成两个目标:二分类(是否点赞)、回归(评分)。相应的损失函数分别为:交叉熵损失和平方损失。
一个输入样本,模型会输出多个目标的得分。一个权重计算公式结合多个得分计算出最终的分数。这个权重是参数调节出来的,并不是模型学习的。
多目标排序模型通常的结构都是底层共享一个shared-bottom结构。然而,如果这些底层共享比较硬,对于相互关系不密切,甚至矛盾的多目标建模,最终的效果会收到损害。因此,youtube在2018年提出了MMoE结构,bottom层为多个expert模块组合而成,每个任务的组合系统不同,因此参数共享比较soft。
该模型结构并不完全等同于MMoE,因为在推荐领域特征规模很大,为了降低复杂度,在MoE层和输入之间插入一个shared bottom层来对特征进行降维。这种方法其实很常见,例如可以对底层的embedding matrix进行卷积操作,降低矩阵的大小。
shared bottom层上面,就是MoE层,以及边缘的gate。每个MoE层只是一层MLP+ReLU。给定输入 x x x, MoE层的输出为 f ( x ) i , i ∈ [ 1 , n ] f(x)_i,i\in[1,n] f(x)i,i∈[1,n]。每个任务 k k k的tower的输入为MoE的混合(Mixture), 记为 f k ( x ) = ∑ g k ( x ) i f ( x ) i f^k(x)=\sum{g^k(x)_if(x)_i} fk(x)=∑gk(x)if(x)i,k是和任务相关的,每个任务有一个独立的 g ( x ) g(x) g(x),即有一个独立的gating network。每个 g k ( x ) = s o f t m a x ( W g k ∗ x ) g^k(x)=softmax(W_{gk}*x) gk(x)=softmax(Wgk∗x)。Expert的数量可以很多,但是每个task最终采纳的可能只有权重最大的 t o p K topK topK个。
隐式反馈的位置偏倚,以及其他类型的选择性偏倚在推荐和广告系统中广泛存在,因为隐式反馈受是来自于本系统的上一次推荐,这就是feedback loop。
例如在推荐系统中,我们想基于用户目前正在观看的视频,预测他下一个观看的视频,用户往往倾向于点击观看列表最上面的视频,这和他的兴趣偏好之类因素无关。我们的目标就是在排序模型中移除这种位置偏倚,来提高模型的质量,中断feedback loop。
最终的模型结构大概如下图所示:
postion和设备特征一起,通过一个浅层网络输出的logit会和task specific tower的logit结合在一起,预测最终的输出。在训练阶段,只有部分样本会加入位置信息,这样是为了防止模型过拟合位置信息。在预测阶段,不考虑位置特征,或者位置特征取一样。
实现表明: