google在《Fresh Content Needs More Attention: Multi-funnel Fresh Content Recommendation》中提出了multi-funnel新内容推荐:

1.介绍

推荐系统非常依赖于:在推荐平台上将用户与合适的内容进行连接。许多推荐系统会基于从推荐内容的历史用户交互中收集到的交互日志进行训练。这些交互通常是这些系统会选择将内容曝光给用户的条件,从而创建一个很强的feedback loop,导致“马太效应”。由于缺少初始曝光和交互,新上传内容(特别是那些具有低流行的content providers提供的)想要被推荐系统选中并被展示给合适用户,面临着一个极大的障碍。这常被称为item的cold-start问题。

我们的目标是:打破feedback loop,并创建一个健康的平台,其中高质量新内容可以浮现,并能像病毒式扩散。为了达成该目标,我们需要seed这些内容的初始曝光,从而补充推荐系统的缺失知识,以便将这些内容推荐给合适的用户。尽管一些新兴的研究关注于cold-start推荐,如何在工业规模推荐平台上bootstrap海量新内容(例如:每分钟上传到Youtube超过500小时的内容;Soptify每1.4秒上传一个新的track)仍是未被充分探索的。

更具体的,我们的目标是:构建一个pipeline来展示新和长尾内容,并在推荐平台上增加discoverable corpus。存在一个窘境:当系统探索完整范围(spectrum)的corpus,会导致提升长期用户体验【8,24】;然而,由于推荐了更少特定的内容,并推荐了更多其它新内容,这通常以会对短期用户体验有影响;我们希望缓和它。

为了在新内容推荐pipeline上平衡short-term和long-term用户体验,我们会在两个维度measure它的有效性:

  • i) coverage:检查是否该pipeline可以得到更独特(unique)的新内容曝光给用户
  • ii) relevance:检查系统是否将用户感兴趣的新内容与用户相连接

图片名称

图1 新内容推荐中的coverage vs. relavance

设计新内容推荐stack仍然面临着许多未知:

i) 如何定位(position)新内容推荐stack w.r.t 已存在的推荐stack?

我们会选择构建一个专有新内容推荐stack,它与其余推荐stacks(仅关注relevance,并且更容易强化feedback loop)相独立

ii) 哪些components需要在该stack中?

我们会设计该stack来包含一个提名系统、graduation filter、一个ranking系统来对candidates进行打分和排序

iii) 如何对coverage和relevance进行平衡?

一个基于随机推荐新内容的系统,达到最大的coverage,代价是低relevance并影响用户体验。为了达到平衡,我们会构建一个multi-funnel提名系统,它会分流用户请求在一个具有高coverage的模型和高relevenace的模型(详见图1);

iv) 如何使用少量或无先验的engagement数据来建模内容?

我们会依赖一个two-tower DNN,它会使用content features来进行泛化,用于对intial分布进行bootstrap,并且一个序列模型会更新near real-time user feedback来快速寻找高质量内容的audience;

v) 如何对新内容推荐的收益进行measure?

我们会采用一个user-corpus co-diverted实验框架来measure提出的系统在增加discoverable corpus上的效果。

我们会以如下方式组织paper:

  • 第2节:专有multi-stage新内容推荐stack:有nomination, filtering, scoring和ranking组件,有效对cold-start items进行bootstrap;并在提升corpus coverage、discoverable corpus以及content creation上showcase它的价值;
  • 第3节:在专有新内容推荐stack上设计一个multi-funnel提名系统,它会组合高泛化能力的模型、以及一个near real-time更新的模型来有效对新内容推荐的coverage和relevance间进行平衡。
  • 第5节:基于request context,将系统扩展到分流用户请求到这些模型上,以进一步提升新内容推荐

2.新内容推荐

Pipeline setup

我们首先介绍专有新内容推荐stack,它被用来在大规模商业推荐系统平台上的让相对新和长尾的内容露出(surface)。

生产环境的推荐系统具有多个stages,其中:

  • 第一个stage包含了多个检索模型来推荐来自整个corpus的candidates
  • 第二个stage会对candidates进行打分和排序
  • 最后一个stage会根据多样性(diversity)和不同商业目标对选中的candidates进行打包(pack)

由于closed feedback loop,新和长尾items很难被系统发现。为了让这些内容露出,我们会将一个槽位或可浮动槽位(floating slot)给到新内容(<=X天的内容)和长尾内容(小于Y个positive用户交互的内容)。其余slots还是会使用生产系统进行填满。该专用的新推荐系统的pipeline如图2所示:

图片名称

图2 一个专有新内容推荐stack

每个组件的描述如下:

新内容提名器(Fresh content nominator)

在提名相对新和长尾内容中的一个关键挑战是:用户对这些数据缺少用户交互。为了克服冷启item推荐问题,我们采用一个双塔的content-based推荐模型:

  • 1)一个query tower被用于基于消费历史来学习user representation;
  • 2)一个candidate tower被用于基于item features来学习item representation。

该模型被训练来预估历史数据中的postive user interactions,幸运地,通过item features,它能泛化到那些具有零或非常少用户交互的items。在serving时,我们依赖于一个多尺度量化(multiscale quantization)方法,用于快速近似最大内积搜索(MIPS),并有效检索top-50的fresh candidates

毕业过滤器(Graduation filter)

一旦新内容累积了初始交互,他们可以通过主推荐系统被轻易选到,并在其它slots上展示给合适用户。在专有slot中继续探索这些items,相应的收益会递减,并且这些曝光资源可以被节省下来重新分配给其它潜在的新和长尾内容。我们会采用一个graduation filter ,它会实时移除那些已经被用户消费(consume)超过n次的内容

Ranking组件

一旦被提名的candidates通过了filter,我们会通过两个组件来对它们进行排序:

  • 一个实时pre-scorer
  • 与主系统共享的ranker

pre-scorer是轻量的(lightweight),可以实时反映用户的early feedback;top-10的candidates被pre-scorer选中,接着通过ranker(它是一个high-capacity DNN,具有更好的accuracy但会有更长latency)来评估candidates的相关性并返回top-1。特别的,轻量级pre-scorer实现了一个实时Bernoulli multi-arm bandit:每个arm对应于一个内容,每个arm的reward估计了一个新内容的good CTR(例如:在一次点击后基于用户消费至少10s的点击率),并遵循一个Beta后验分布:

\[r_i \sim Beta(\alpha_0 + x_i, \beta_0 + n_i - x_i)\]

…(1)

其中:

  • \(r_i\):是对于arm i的reward,具有一个先验Beta分布\(Beta(\alpha_0, \beta_0)\),其中:参数\(\alpha_0, \beta_0 \in R_{>0}\),
  • \(x_i\)和\(n_i\):分别表示arm i实时的交互数和曝光数

实际上,我们会通过对至少100次以上曝光的新items使用极大似然估计来估计全局先验(global prior)\(\alpha_0\)和\(\beta_0\)。在serving时,我们会采用Thompson Sampling根据等式(1)为每个candidate来生成一个sampled reward,并返回具有最高rewards的top10内容,由ranker来决定最终candidate。

该“专用slot(dedicated slot)”能让我们measure多种新内容推荐treatments,它具有更多可控性和灵活性。对比起“full-system”的新内容推荐(例如:允许在当前推荐stacks中进行更多探索(exploration),并潜在影响每个slot),对“dedicated slot”进行setup具有许多优点:

  • i) 可触达(Deliverable)。对于新内容,通过在一个dedicated slot上设置,一旦被上传,它们可以更轻易达到它们的目标受众。否则,在主推荐系统中,由于存在popularity bias,这些内容将面临与许多头部内容和更流行的内容之间的竞争
  • ii) 可测量(Measurable)。有了一个“ dedicated slot”和一个更简单的pipeline,你可以更轻易地setup不同的treatments,并通过下面提出的user-corpus diverted实验来精准测量corpus影响
  • iii) 可扩展(Extensible)。新内容推荐stack可以很容易地进行扩充:通过将单个slot treatment扩展到多个上,并允许忍受未发现的corpus增长

user-corpus co-diverted实验

在传统的A/B testing中,我们通常会采用一个 user-diverted setup,如图3(左)所示,其中,用户会被随机分配给control和treatment groups,并接受来自整个corpus中的相应推荐。你可以对比两个arms间的用户指标(比如CTR和停留时长),并从用户视角来测量treatment的效果。然而,两个arms会共享相同的corpus,由于treatment组泄漏(treatment leakage),user-diverted setup不能measure在corpus上的任何treatment效果。例如,在该实验中通过新内容推荐stack曝光的一个新item,它也会出现在control arm上。

为了克服这样的泄漏,我们会采用一个user-corpus-dieverted A/B testing setup(如图3(右)),其中:我们会首先挑出x% corpus给control arm;以及挑出另外的非重合x% corpus的给treatment arm。接着用户按比例被分配给不同的arms,这意味着在control arm中的用户只能接受来自control arm corpus中的内容,在treatment arm中的users只能接受来自treatment arm的内容。由于user size与corpus size成比例,例如:在实验期间,x%的corpus只会曝光给x%的users,在实验阶段中treatment的效果评估,与推全部署是一致的(当100%的用户被曝光给100% corpus上)。

图片名称

图3 User diverted vs. User corpus co-diverted实验图

效果评估指标

我们使用以下的corpus metrics来评估在推荐个性化新内容方面的效果评估,从覆盖率(coverage)和相关性(relevance)维度:

  • 每日去重曝光内容数@K(DUIC@K: Daily Unique Impressed Contents):是一个corpus metric,它会统计每天接收到K次曝光的去重独立内容数。我们集中关注在低界上:例如:相对小的K值,来验证覆盖率(coverage)变化。
  • 新内容停留时长(Fresh Content DwellTime):用于measure用户在曝光的新内容上花费的时间。更长的停留时间表示系统能承受用户在新内容上的偏好越精准,从而达到更高的相关性(relevance)。
  • 在Y天内接收具有X(post bootstrapping)次正向交互的内容数(Discoverable Corpus@X,Ydays):用于measure新内容推荐的长期收益。通过post bootstrapping,我们不会统计从专有新内容推荐stack中接收到的items的交互数。一个更大的discoverable corpus表示:系统可以发现(uncover)和扶持(seed)更多有价值的内容:例如:在存在于专有slot之后,那些可以吸引到正向交互的内容,并通过自身能达到病毒式传播。

同时,为了确保新引入的新内容推荐不会牺牲更多短期用户engagement,我们也会考虑user metric:它会衡量在该平台上整体用户停留时间。

2.1 新内容的价值

图片名称

图4 有了新内容推荐的dedicated slot,我们会展示:a) 不同曝光阈值下DUIC的提升 b) 在延后毕业Y天内,收到X次延后毕业点击数的提升 c) dedicated新内容推荐系统会从content providers上鼓励更多上传,随实验开展会有一个上升趋势

我们首先会在服务数十亿用户的商业推荐平台上开展user corpus co-diverted线上实验,并在超过一个月周期上measure建立新内容推荐stack的收益。在这些实验中,control arm的users只会被展示主推荐系统生成的推荐。在treatment arm,会保留一个delicated slot来展示来自新内容推荐stack的推荐,而其它slots则被与control arm相同的主推荐系统推出的内容填充。我们会做出以下观察:

  • Corpus coverage会提升。图4(a)会绘制corpus coverage metric——DUIC@K。你可以观察到:不同的K值,会有4%~7.2%间的corpus coverage的一致增长。例如,在treatment arm中,由于delicated新内容推荐stack,存在超过7.2%的独特内容每天会接受到超过1000次曝光(对比起control arm)。正如预期,在更低的K值上更能更证明增长。

  • 用户会探索更大的corpus。在图(b)中,我们会制了discoverable corpus指标,它会measures在Y天内接到X post bootstraping正向交互的内容数的提升。另外,你可以在X的范围(从100到10k)、Y(从3到28天)天观察到一致提升。换句话说,有了在delicated新内容stacks中扶持的initial exposure与交互,更多数目的独特内容会被主推荐系统推出来,并因此被用户发现。该提升也消除了新内容推荐stack不仅能增加corpus coverage,也能bootstrap更有价值内容。有了更大的discoverable corpus,更多用户会发现围绕他们特定兴趣偏好中心的内容,从而带来最好的用户体验和一个更健康的平台。尽管一个新内容从上传到被主推荐系统选中并获得探索需要一定的时间,我们发现该数目趋向于在7天之后,即使对于那些高端X值。因而,在我们的真实实验中,我们使用discoverable corpus@X,7days作为main discoverable corpus metric。

  • content providers也会被鼓励从而上传更多内容。图4(c)绘制了在使用dedicated新内容推荐stack上treatment arm上传的内容的增长,对比起control arm。通过一个月的实验周期,可以观察到一个一致的提升。另外,我们注意到随着实验继续有一个上升趋势。通过在dedicated slot关于新内容推荐,content providers会被鼓励上传更多内容作为他们的新上传items,获得更多曝光和收益。

  • 用户会消费更多新内容,并在短期用户engagement上具有一个最小影响。图5(a)演示了一个新内容数在7天正向交互上获得了+2.52%的极大增长。在图5(b)上,我们发现,平台上的整体用户停留时间会发生-0.12%的下降。然而,如图5(c)所示,对于小的content providers(少于多少订阅),用户停留时间会获得5.5%的增长。该trade-off会考虑上关于一个更大discoverable corpus、以及更多活跃content providers的long-term收益,如上所示。

图片名称

图5 a) 新内容7天的正向交互数变化(% change) b) 平台上整体用户停留时长(% change) c) 小content provider的用户停留时长(% change)

对于treatment的dedicated slot和user corpus co-diverted实验框架的建立,我们会进一步解决新内容推荐stack的效率增长。

3.多通道(Multi-funnel)新内容推荐

不同于主推荐系统,专有新内容推荐stack会聚焦于新items,它们没有累积足够多的交互信息。在本节中,我们会描述:如何在该stack中扩展新内容提名,以便达到在提名新内容时的高覆盖和高相关。该技术可以轻易地泛化到pipeline的其它组件上。我们会围绕以下问题讨论:

  • 1) RQ1: 那些没有交互或少交互的新内容,如何有效infer它们与用户间的相关度,并将这些内容进行bootstrap?
  • 2) RQ2: 在累积了一些初始交互feedback后,如何快速利用有限的实时用户反馈来放大有价值内容?
  • 3) RQ3: 如何在内容泛化和实时学习间进行平衡,并减小新内容的用户开销,以便我们在推荐新内容时,可以达到高coverage和高releance?

3.1 内容泛化

大多数CF-based推荐模型依赖于一个因子分解的backbone,来通过历史用户交互或ratings行为获得user embeddings和content/item ID embeddings。学到的embeddings接着会被用于infer用户在任意内容上的偏好。由于items存在长尾分布,对于那些新上传的内容来说缺少足够的用户消费labels(engagement labels)来学习一个有信息的ID embedding。实际上,没有合适的treatment,来自新和长尾内容的少量labels通常会被模型忽略,变为训练噪声。这些内容因此很少能曝光给合适的用户。

主要挑战是:在用户与这些新上传内容间的交互labels缺失。一种解法是:使用一个content provider-aware推荐系统,它可以bootstrap由用户熟悉并且订阅的provider生产的新上传内容。为了克服交互labels缺少的问题,我们依赖content-based features来描述新上传内容如【28等】。这些content features允许模型去泛化:将来自流行内容的充足engagement labels泛化到与这些内容相似的新上传内容上。

该模型结构会遵循双塔结构(如【51】),它会使用一个user和一个item/content tower,为了分别编码来自users和items的信息。在这些双塔间的dot product被学习用来预估在一个user和一个item间的历史偏好。模型本身仍会遵循popularity bias。为了模型适应新内容推荐,我们做出以下变化

  • 1)我们会在item tower上完全丢掉item ID,以阻止模型记住在单独items上的历史偏好
  • 2)我们会排除关于一个item的历史流行度的任意features(例如:曝光数、正向engagements),以减少在item tower上的流行度bias

换句话说,在popular和新上传内容间,在item tower中只有meta features可以泛化。

我们会开展一个在线A/B testing来measure上述变化对于提升新内容推荐的coverage和relevance上的影响

  • control arm会运行一个双塔结构的提名模型,如第2节所解释,包括在item tower中与一个item相关的所有的meta features。
  • treatment arm会运行完全相同的模型,但会在item tower上排除item ID和popularity features。

我们发现,通过移除item ID embeddings和item popularity features,corpus coverage指标:例如:DUIC@1000上涨3.3%,95%置信区间为[3.0%, 3.7%]。新内容停留时长也会增加2.6%。

  • control model可以依赖item/content ID embeddings,以便从流行和确定的内容中记住交互labels,但它对新上传内容效果较差。
  • treatment model则依赖于content features作为刻画用户在其它流行和确定内容上的偏好,从而学习到具有相似features的新内容,从而提升对于新内容推荐的相关性。

在使用的Content Features

在control和treatment arm中使用的content features,包含了多个从内容本身得到的具有不同粒度的categorical features,描述了语义topic、类目topic和内容语言。我们也包括了平均评分(rating)来过滤低质量内容。

3.2 Real-Time learning

提名器非常依赖于泛化的content features,它对于具有很少用户交互的新内容的启动来说是很有用的。由于缺少记忆能力,因而它可以快速反馈用户的intial feedback。这样快速的响应确实是必要的,因为:

  • i) 我们通常没有能完整刻画该新内容、并能影响一个新内容的质量的所有features;
  • ii) 对intial user feedback做出快速反映,可以帮助在早期分布中纠正低质量或低相关新内容,减小分发代价,同时快速重新分发并进一步放大高质量和相关新内容给其它具有相似兴趣的受众,以便进一步放大discoverable corpus的增长,并让content provider获得奖励上传更多内容。

这就需要近实时提名(near real-time nominator),它可以挖掘数据,因为新交互数据会以流式方式进来。为了构建这样的一个近实时提名(near real-time nominator),这里提出:

  • i) 使用near real-time user交互数据来训练
  • ii) 带来一个低延迟的个性化检索模型

我们尝试让组成该nominator中的不同组件runtime(例如:数据生成、模型训练、模型pushing)进行最小化,以便从一个用户交互发生时,到该交互更新被用于serving模型之间的端到端延迟是数小时内。注意,对比起在主推荐stack中的已存在推荐模型(它的端到端延迟通常会是18-24小时或数天),这是个巨大的时延提升。数据生成job会收集在新和长尾内容上最近15分钟的用户交互,它会被当成是labels用来训练retrieval模型。

图片名称

图6 用于推荐的Real-Time Sequence Model

retrieval模型被训练的目标是:在给定用户在该平台上的历史交互后,预估用户会交互的下一个item。该架构会再次使用一个双塔结构,其中:user/query tower会编码用户的交互序列,item tower会使用简单的ID embeddings以及categorical features,如图6所示。为了减少训练时间,我们会设计一个简单架构的模型。user state会被表示成用户最近交互的content IDs的embeddings的weighted sum,它会与user query features进行concatenated。特别的,我们会使用attention[41]来提升user state representation。对于一个具有最近n个消费内容\([V_1, V_2, V_i, \cdots, V_n]\)的给定用户,我们会采用对最近n次交互进行weighted sum形式来获得user representation U:

\[U = \sum\limits_{i=1}^n w_i * Embedding(V_i)\]

其中:

对于每个内容\(V_i\)的weight \(w_i\),是在[0,1]内的normalized softmax weight,从item features得到:

\[w_i = softmax(f(dwelltime(V_i), timegap(V_i), position(V_i)))\]

其中:

  • dwelltime会捕捉用户在item \(V_i\)上的用户消费时间
  • timegap会捕捉在交互发生以及当前请求时间之间的time gap。

这些features会被量化,并被编码成离线embeddings。对于在item \(V_i\)上的历史交互,f接着学习将这些embeddings进行mapping到一个scalar上,得到最终weight \(w_i\)。当聚合历史交互时,这样的一个weighted score \(w_i\)会强调内容更接近于具有更长dwelltime的当前request。在我们的实验中,我们发现,变更前面的简单attention设计,使用更复杂的序列模型(比如:RNNs)不会提升效果,出于最小模型复杂度,我们接着保持简单的weighted embedding。模型会从前一checkpoint进行warm-start,并在最近的15分钟日志上进行训练,每个训练round大概一小时。之后在发布到服务器的不同数据中心上提供真实服务。在serving time时,我们再次依赖一个多尺度量化方法,用于快速近似MIPS,并有效检索top-50的新候选内容。

Category-centric Reweighting

为了确保快速记住在这些新内容上的早期用户反馈(early user feedback),我们会在realtime nominator的item tower中包含item ID embeddings。在新内容上传时,交互数据在模式上区别很大:

  • 一些会在几分钟内累积上千次交互数据
  • 其它一些则只会在15分钟log上看到少量交互

由于不均衡的交互数据,只依赖于ID embeddings的模型在新上传内容的”头部(head)”内容上会有over-indexing的风险。为了克服该问题,我们也会包括一些第3.1节提到的content features来刻画这些items。然而:

  • 许多categorical features会落入长尾分布
  • 而另一些categorical features则会很普遍,被应用到大量items上,比如:“music”,
  • 其它一些更专业和有信息量的,比如:“Lady Gaga Enigma+Jazz&Piano”

我们会通过在整个item corpus上的流行度进行inverse,我们会引入IDF-weighting来调权一个feature,为了泛化同时忽略那些普通存在的features,因此模型会更关注于学习这些更专业的content features。

3.3 低通道(Low-funnel) vs. 中通道(Middle-funnel)内容

在我们的目标中:在推荐新内容时要达到高coverage和高relevance存在trade-off。专有新内容推荐stack的corpus,确实可以被进一步归类成两部分:

  • i) low-funnel内容:具有非常有限或者零交互
  • ii) middle-funnel内容:会通过内容泛化收集到少量初始交互反馈

对于low-funnel内容,实时学习框架会丢掉它的预测能力,泛化这些内容是急需。另一方面,对于middle-funnel内容,更快的feedback可以控制real-time nomination系统的训练,允许更好的个性化和相关性。作为使用单个nominator来同时达到好的泛化和实时学习的尝试替代,我们会为不同通道(funnels)部署不同的nominators来解耦任务(如图7所示):

  • 一个具有好的泛化效果的nominator,目标针对low-mid funnel;
  • 另一个nominator则关注于快速适应用户反馈,目标针对mid-funnel(具有合理量级的用户反馈来启动)

我们采用serving两或多个推荐系统的思想来同时获得更好的效果,并具有更少的缺点。另外,我们也会讨论在这样的混合系统中如何决定何时来将一个low-funnel content转移到middle-funel中

图片名称

图7 一个多通道提名系统

Multi-funnel Nomination的query division

一个naive策略,将两个nominators进行组合,并分别询问提名候选,接着依赖于graduaiton filter、prescorer、ranker来为dedicated slot来选择最终内容。但我们观察到,由于在ranker中的popularity bias,最终middle-funnel contents会以主宰slot。对于单个用户请求共同激活两个nominators也会有更高的serving开销。

为了缓和该问题,我们提出了query division multiplexing:用来随机选择two-tower DNN:具有概率p%来检索每个query的low-funnel candidates,或者具有(100-p)%的概率来检索来自middle-funnel的real-time nominator的candidates。我们在第4.2节中在corpus和user metrics间的tradeoff值开展不同的p值实验。

4.实验

在本节中,我们通过线上真实流量实验研究了在专有新内容推荐stack上的multi-funnel设计的效果提升。

4.1 Setup

我们测试了在第2节中介绍的专有新内容推荐stack的multi-funnel设计。特别的,我们对比了dedicated新内容推荐的以下方法:

  • i) single-funnel提名器:使用单个推荐模型来提名新内容candidates。我们将single-funnel提名系统表示成S-two-tower,另一个使用real-time sequence model的称为S-real-time;
  • ii) Multi-funnel提名器:会采用two-tower DNN来推荐那些低于\(n_{low}\)次正向用户交互的low-funnel content,real-time model则推荐那些在graduation threshold阈值下的middle-funnel content。这两个nominators会通过qeruy multiplexing进行组合,其中:two-tower DNN被用于p%随机用户请求,而real-time model则被用于剩余的(100-p)%.

我们设置:p为80,\(n_{low}\)为200,如第4.2节。我们会跑1%的在线user diverted实验来measure用户指标,5%的user corpus co-diverted实验来measure相应的corpus影响。

4.2 效果与分析

multi-funnel nomination的影响

对比multi-funnel nomination vs. single-funnel nomination在corpus以及user metrics,我们会做出以下观测:

  • DUIC. 在图8(左)中,我们发现:对比起S-two-tower,S-real-time在low end上具有更低的DUIC。它在1000次曝光阈值上展示了1.79%的降级,这意味着:real-time nominator在推荐较少交互数据的low-funnel contents上要比two-tower DNN模型效率低。通过组合two-tower DNN、real-time nominaor,如图8(右)所示,我们观察到,low end上的DUIC会在multi-funnel nomination setup中得到极大提升,在DUIC@1000上有0.65%的提升。这意味着,对比起single-funnel setup,multi-funnel推荐可以提升新内容覆盖。

  • Discoverable Corpus。

  • user metrics。

funnel transition cap的影响

为了决定当一个新内容从low-funnel转移到middle-funnel时,我们要评估在不同的interaciton caps下two-tower DNN的泛化性的corpus效果。注意,当我们设置interaction cap为100时,它意味着,我们会限制该模型能index的corpus只会是那些具有最大100次交互的新内容。由于low-funnel推荐的主要目的是:提升corpus voerage,我们会主要关注不同caps的DUIC, 如表2所示。当cap设置为200时,DUIC@1000会达到它的最大值。设置该cap为100会达到相似的效果,但进一步降低cap会导致更差的指标。我们分析得到:当cap太低时,更多低质量内容会被强制提名,并在之后的ranking stage中由于更低的relevance而被过滤。事实上,我们会观察到,当cap从400降到100时,接收到非零曝光的unique contents的数目会有2.9%的下降。同时,需要满足来自low-funnel nominator的初始交互的特定量级之后,才能给real-time model提供学习信号。这意味着一个未来方向是:在middle funnel nominator和主推荐系统(比如:ranker)两者均需要提升泛化性,以便multi-funnel transition可以朝着low-funnel的方向移去。

不同mix概率p%的影响

我们测试了不同的multi-plexing概率:p%

5.contextual流量分配

新内容推荐对于长期用户体验是有益的,它会造成短期用户engagement变得不那么popular或推荐不熟悉的内容。来到在线平台的用户通常在活跃级别上是不同的,会随着消费消息兴趣上的不同而非常不同。通常存在着一批核心用户(core users),它们会定期有规律的访问平台,其它则是临时用户(casual user),或新用户(emerging users),或者倾向于偶尔访问平台的用户。活跃级别的不同可能导致在用户分组上不同的内容消费模型。并且将用户进行grouping的方式可以在【9】中找到。

在初始探索(initial exploraition)中,我们会采用good CTR,基于用户在该点击后至少花费了10s钟,作为直接用户指标来评估推荐系统的短期效果。在图11中,我们发现,不同用户group的good CTR在由不同模型推荐出的候选上非常不同。例如,对比起real-time nominator,low-funnel模型(two-tower DNN)对于casual users来说会达到相似CTR,而对于core user则具有很大的gap。这意味着这些模型不仅在item corpus上具有不同的strength,(例如:low-funnel vs. middle-funnel),他们在处理不同user groups上也具有不同的strength。

该分析会激发一个潜在方法,可以进一步提升对于multi-funnel的query multiplexing的效果。对于core users来说,在泛化模型上的relevance loss对比起更低活跃级别的用户要更大。我们不会在相同概率下使用不同活跃级别来multiplexing用户,我们会进一步基于users/queries来将contextualize流量分配。我们会随机选择q%的核心用户,并使用来自real-time nominator、并利用它的短期用户engagement增益产生的nominations进行服务。其它用户则总是使用two-tower DNN来最大化corpus覆盖的nominations进行服务。如表3所示,通过使用real-time nominator以及使用不同的概率来服务核心用户,我们可以使用context-aware hybrid来进一步提升推荐效率。例如,当我们使用real-time nominator来服务40%的核心用户时,我们可以获得极大的dwell time以及good CTR提升,并在corpus coverage上有中立变更。更多综合的multiplexing策略在以后会再研究。

#

介绍

在preranking阶段除了SSB问题外,我们也假设:ranking和preranking的目标是不同的。ranking的专业是选择top items,会对preranking outputs内的顺序进行reranking,并决定最终的输出。而preranking阶段的主要目标是:返回一个最优的无序集合(unordered set),而非一个关于items的有序列表。基于以上分析,在taobao search上做了在线和离线实验,重新思考了preranking的角色,并重新定义了preranking的两个目标:

  • 高质量集合(High quality set):通过解决在preranking candidates上的SSB问题,来提升output set的质量
  • 高质量排序(High quality rank):为了获得ranking在output set上的一致性,确保高质量items可以在ranking中获得更高得分,并被曝光给用户。

然而,同时最大化两个目标是不可能的。第一个目标最重要,是一个preranking模型必须要追求的目标。第二个目标,只要确保output set集合的质量不会下降就能满足它。换句话说,当模型达到帕累托边界(Pareto frontier),通常在整个output set的质量和它的内部排序(inside rank)间存在一个“跷跷板效应(Seesaw Effect)”:在不涉及更多在线计算的情况下,当prerank更关注于整个set时,它的output set内的排序会变差。相似的,当拟合ranking并提升它的内部AUC时,整个output set的质量会变差。这也是为什么AUC与在线业务指标不一致的原因。我们会在第4节中详述。

已经存在的离线评估指标(比如:AUC)可以对preranking能力(第二个目标)进行measure。然而,AUC会衡量一个有序item list的质量,不适合于评估输出的无序集合的质量。没有一个metric可以有效评估第一个目标。尽管在工业界存在一些研究者,尝试提升output set的质量,他们没有提供一个可靠的离线评估metric来衡量该提升。实际上,大多数公共策略是通过在线A/B testing进行衡量效果提升。然而,在线评估开销巨大,并且时间成本高,因为它通常要花费许多周来获得一个可信的结果。在本文中,我们提出了一个新的evaluation metric,称为:全场景Hitrate(ASH:All-Scenario Hitrate),用来评估preranking模型的outputs的质量。通过对在ASH与在线业务指标间的关系进行系统分析,我们会验证该新离线指标的效果。为了达到我们的目标,我们进一步提出一个基于全场景的多目标学习框架(ASMOL:all-scenario-based multiobjective learning framework),它会显著提升ASH。令人吃惊的是,当输出上千items时,新的preranking模型效果要好于ranking model。该现象进一步验证了preranking阶段应关注于:输出更高质量集合,而不是盲目拟合ranking。在ASH上有提升,会与在线提升相一致,它会进一步验证:ASH是一个更有效的离线指标,并在taobao search上获得一个1.2%的GMV提升。

总结有三:

  • preranking的两个目标的rethinking。
  • 提出了一个ASMOL
  • 展示了ASH与在线业务指标间的相关性

2.相关工作

。。。

3.preranking的评估指标

考虑到第1节中提的两个目标,我们首先分析已存在的AUC指标,以及第第3.2/3.3节中的hitrate@k。再者,我们会引入一个新的离线指标,称为ASH@k。在第3.4节中,我们会分析在taobao search中每个stage的当前能力,并使用我们的新指标来演示:如何使用新metric来分析一个multi-stage的电商搜索系统。

3.1 问题公式

在本节中,我们首先将preranking问题和数学概念进行公式化。假设:

  • \(U = \lbrace u_1, \cdots, u_{\mid U \mid}\rbrace\):表示user与它的features一起的集合。User features主要包含了用户行为信息(比如:它的点击items、收藏items、购买items、或者加购物车的items)
  • \(Q = \lbrace q_1, \cdots, q_{\mid Q \mid} \rbrace\):表示搜索queries以及它的相应分段(segmentation)的集合。
  • \(P=\lbrace p_1, \cdots, p_{\mid P \mid}\rbrace\):表示products(items)以及它的features的集合。Item features主要包含了item ID,item统计信息,items卖家等。

\(\mid U \mid, \mid Q \mid, \mid P \mid\)分别是users、queries、items的去重数。

当一个user u提交一个query q时,我们将在matching output set中的每个item \(p_t\)与user u和query q组合成一个三元组\((u, q, p_t)\)。preranking models会输出在每个三元组上的scores,通常会从matching的output set上根据scores选择topk个items。正式的,给定一个三元组\((u, q, p_t)\),ranking model会预估以下的score z:

\[z = F(\phi(u, q), \psi(p))\]

…(1)

其中:

  • \(F(\cdot)\)是score funciton
  • \(\phi(\cdot)\):user embedding function
  • \(\psi(\cdot)\):item embedding function

在本文中,我们会遵循vector-product-based的模型框架,并采用cosine相似度操作\(F(\cdot)\)。

3.2 ranking stage的一致性

考虑ranking系统在工业界的离线指标,AUC是最流行的。以taobao search为例,AUC会通过曝光进行计算。由于taobao search的目标是有效提升交易,ranking stage主要考虑购买作为曝光上的正向行为,并关注一个被购买item的likelihood要高于其它items的序。因此,taobao search中的items的最大数目被设置为:每次请求10个,我们使用购买AUC(Purchase AUC)at 10(PAUC@10)来衡量排序模型的能力。作为结果,PAUC@10通常也会被用在preranking中(与ranking中的相似),可以衡量在线排序系统的一致性。

3.3 output set的质量

最近的preranking工作很少使用任意metric来评估整个output set的质量。评估output set的一个评估指标是:hitrate@k(或:recall@k),它会被广泛用于matching stage中。hitrate@k表示:模型对target items(点击或购买)是否在candidate set的top k中。正式的,一个\((u, q)\) pair,它的hitrate@k被定义如下:

\[hitrate@k = \frac{\sum\limits_{i=1}^k 1(p_i \in T)}{|T|}\]

…(2)

其中:

  • \(\lbrace p_1, \cdots, p_k \rbrace\):表示了由preranking model返回的top k items,
  • T:表示包含了\(\mid T \mid\)个items的target-item set
  • \(1(p_i \in T)\):当\(p_i\)是target set T时为1,否则为0

当在matching stage中使用该metric时,通常用于衡量一个matching模型的output set的质量(例如:在图1中的Matching 1,非在线的所有matching models的整个output set)。作为对比,当我们通过hitrate@k来评估pre-ranking实验时,离线metrics的结论会与在线业务指标的结论相矛盾。在进一步分析后,我们发现,在hitrate中选择k是一个non-trivial问题。为了准确评估在preranking stage的output item set的质量,k被假设:等于preranking output set的size \(\mid R \mid\)。然而,由于在preranking output set中的items在在线serving期间可以被曝光和被购买,所有正样本(target items)都会在preranking的在线output set中。这会造成当\(k=\mid R \mid\)时,在线preranking model的\(hitrate@k \equiv 1\)。作为结果,离线hitrate@k可以只会衡量在离线模型输出集合与在线输出集合间的不同之处,而非quality。常规的preranking方法,使用\(k << \mid R \mid\)来避免以上问题。\(k << \mid R \mid\)的缺点是很明显的,因为它不能表示整个preranking output set的质量

图片名称

图1 在taobao search中的multi-stage ranking系统

在本工作中,我们一个新的有效评估指标,称为ASH@k。为了创建一个真正表示preranking output set的质量的metric,我们引入来自taobao其它场景(比如:推荐、购物车、广告等)的更多正样本(例如:购买样本)。由于来自其它场景的一些正样本不会存在于preranking在线输出中,他们可以表示与场景无关的用户偏好。在本case中,即使\(k = \mid R \mid\),hitrate@k也不会等于1。由于我们更关心taobao search的交易,我们只会使用来自非搜索场景的购买正样本。为了区分在不同正样本hitrate间的不同,我们称:

  • ISPH@k:In-Scenario Purchase Hitrate@k,只在搜索场景出现的购买样本的hitrate@k
  • ASPH@k:All-Scenario Purchase Hitrate@k,即在其它场景的购买正样本hitrate@k

接着,我们详述了如何引入来自其它场景的正样本。在评估中的一个正样本是一个关于user, query, item的triple:\((u_i, q_j, p_t)\)。然而,在大多数非搜索场景(比如:推荐)不存在相应的query。为了构建搜索的评估样本,我们需要绑定一个非搜索购买\((u_i, p_t)\)到一个相应user发起的请求query \((u_i, q_j)\)上。假设:

  • \(A_u^i\):表示user \(u_i\)在taobao场景上的购买的target-item set
  • \(Q_u\):表示在taobao搜索中的所有queries user搜索

一个直觉方法是:相同的user在queries和购买items间构建一个Cartesian Product,并使用所有三元组\((u_i, q_j, p_t)\)作为正样本,其中:\(q_j \in Q_u\)以及\(p_t \in A_u^i\)。然而,它会引入一些不相关的query-item pairs。例如,一个用户可能在taobao search中搜索“iPhone”,并在其它推荐场景购买了一些水果。生成的该样本中:将“iPhone”作为一个query,同时将”apple(fruit)”作为一个item,我们将它作为在taobao search中的一条正样本是不合适的。为了过滤不相关的样本,我们只能保证相关样本:它的相关分\((q_j, p_t)\)在边界以上。我们称:

  • \(q_k\)为对于全场景pair\((u_i, p_t)\)的一个“相关query”;
  • \(p_t\)是一个全场景”相关item”,可以被绑定到in-scenario pair \((u_i, q_j)\)

再者,我们也会移除重复样本。在该triple中的每个\((u, p)\) pair是唯一的,因此,即使\(u_i\)购买了一个\(p_t\)超过一次,我们只会对使用\((u_i, p_t)\)的triple仅评估一次。

同时,如果我们可以发现:在用户购买行为之前,超过一个相关query,则构建不同的triples,比如:\((u_i, q_1, p_t), (u_i, q_2, p_t), (u_i, q_j, p_t)\),我们只会保留用于评估的最新q的triple。正式的,与等式2相似,对于每个\((u_i, q_k)\) pair,ASPH@k被定义成:

\[ASPH@k = \frac{\sum_{i=1}^k 1(p_i \in A_u^i)}{| A_u^i |}\]

…(3)

其中:\(A_u^i\):表示包含了\(u_i\)在其它场景购买的\(\mid A_u^i \mid\)个items的target-item set,被绑定到query。

3.4 在taobao search中的ASPH

我们展示了在pre-ranking model的pre-generation、提出的pre-ranking model、以及ranking model的离线指标,如图2所示。为了公平对比在pre-ranking stage中的模型能力,所有其它模型都会在该pre-ranking candidates上进行评估。对于pre-generation pre-ranking model,它会使用与ranking model的相同样本,从图中的\(10^5\)到\(10^1\)可以看出,它的模型能力会弱于ranking model。通过对比,当k变大时,提出的preranking model在ASPH@k和ISPH@k上会极大优于ranking。该现象表明:当输出成千上万个items时,提出的preranking模型能力可以胜过ranking。

同时,在图2中,在ASPH@k的结果和ISPH@k的结果间存在一个巨大差异

  • 从ISPH@k metric的视角看:当k小于3000时,ranking model均要胜过preranking model
  • 从ASPH@k指标的视角看:只有当k小于2000时,ranking才会胜过pre-ranking model

在第3.3节所述,我们会argue:ISPH@k得分会表示在offline和online sets间的差异,但不能表示offline集合的质量。由于ranking model的得分决定了最终曝光的items,当使用ISPH@k作为评估指标时,ranking model会具有一个巨大优势

图片名称

图2 在taobao search中的hitrate@k。下图是对上图的放大

为了进一步验证ASPH@k的效果,我们执行一个在线A/B test,它的pre-ranking output分别为2500和3000个items。如果ISPH@k的评估是有效的,那么输出3000个items的preranking的在线业务指标会更高。如果ASPH@k是有效的,那么该结论是相反的。在线结果表明,对比起3000个items的模型,输出2500的preranking具有0.3%的在线30天A/B的交易GMV提升。该实验验证了:ASPH@k是要比ISPH@k在离线评估上是一个更可靠的指标。再者,该实验也表明了preranking可以处理ranking所不能处理的能力,因为reranking output set的size并不是越大越好。相应的,一个preranking应发展它在更高质量outputs上的优点,而不是盲目拟合ranking

4.preranking的优化

尽管拟合ranking会使得一个preranking与ranking更一致,但它对整体preranking的output set的质量贡献很少。本节将讨论我们的用来达到preranking目标的最优化技术,包括训练数据构建、全场景labels、loss functions和distillation。我们首先引入ASMOL preranking,接着分析每个部分,最后通过表明它的效果。

4.1 多目标学习的整体框架

为了同时提升pre-ranking output set的质量以及与ranking的一致性,我们设计了一个新的All-Scenario-based Multi-Objective框架:

  • 一方面,我们将训练样本从曝光扩展到具有全场景label的整个空间训练样本集上,它的目标是提升pre-ranking output set的质量
  • 另一方面,我们设计了一个distillation loss来提升在ranking stage上的一致性

图4和图3分别展示了已有存在的pre-ranking models和我们的模型。

图3

图4

图4展示了一个传统preranking的常见架构。在传统preranking model【8】中的训练样本,包含了一个user、一个query、以及在曝光中的一个item。CTR任务和CVR任务的labels是场景内点击(in-scenario click)和场景内购买(in-scenario purchase)。该preranking系统包含了预估CTR和CVR的两个不同模型,并且最终效果分是CTR*CVR。由于在taobao搜索中前面的generation pre-ranking model会遵循该框架,分别输出CTR score和CVR score,我们称图4中的框架为basline。

作为对比,如图3所示,我们的ASMOL会在query-level训练样本上使用多个目标和多个postive items进行训练。特别的,在每个训练样本中,存在user features、query features和三种类型的items。所有的items会使用相同的可训练参数共享相同的DNN。用于处理每个user、query和item的input features和models结构如附录A所示,它与已存在的preranking models很不同。每个样本包含了在一个query请求中的所有items,以及从在线log系统中抽样得到的ranking和preranking candidates。三种训练样本间的关系如图5所示,定义如下:

  • 曝光(Exposures, EX, 也称为impressions):在一次query请求中曝光的N个items,包括由用户点击或购买的items。这些曝光的items会进行排序,并在所有候选的top,最具最大的概率来满足用户。
  • Ranking候选(RC:Ranking Candidates):由online preranking模型输出的Items,并作为ranking的候选集,它还没有被曝光给用户。我们会通过一个在线日志系统为每个query从上千个RC中抽样M个items。
  • Pre-Ranking候选(PRC:Pre-Ranking Candidates):由preranking系统产生但没有输出的items。我们会通过一个在线日志系统从成千上万个items中抽样L条items。

由于Ranking Candidates和Preranking Candidates在所有目标中都是负例(negatives)。这两种类型的负样本的目标是:在当前preranking系统中解决SSB问题。再者,受【7】的启发,preranking候选会被训练成easy样本,并且Ranking Candidates是相对hard的样本。我们在第4.2节展示了不同样本的必要性。

再者,对于在一条样本中的所有items,我们也会采用三种binary labels,分别对应于三种最优化目标:

  • 全场景购买label(All-Scenario Purchase Label (ASPL)):该label表示:用户是否在任意场景购买了该item。如果用户在当前query(taobao search)购买了该item,或者在其它场景购买了该item,可以被标记成与当前query的一个相关item,purchase label为1。否则,该purchase label为0。
  • 全场景点击label(All-Scenario Click Label (ASCL)): 与ASPL相似,该label表示用户是否在任意场景点击了该item。如果用户在购买它前点击了它,但是点击和购买行为又发生在不同场景导致了冲突的labels,当ASPL为1时,我们会将item的click label设置为1。
  • Adaptive Exposure Label (AEL):该label表示item是否在该taobao search请求中被曝光,它由ranking系统决定。对于曝光来说,该labels为1;其它items为0。另外,当ASCL为1时,我们会将item的曝光label置为1.

为了达到preranking的两个目标,我们会创建一个loss function,它会组合一个ranking loss和一个distillation loss:

\[L = L_{rank} + L_{distill}\]

…(4)

ranking loss \(L_{rank}\)会同时使用三种不同的labels。我们会创建一个具有三个任务的多目标loss function:Purchase、Click、Exposure。我们会为每个任务采用一个新的list-wise loss,并使得正样本的logit要大于负样本。我们的多目标学习框架,目标是通过最大化下面不同类型的正样本得分,来学习下面的importance序:购买items > 点击但未购买items > 未点击曝光 > ranking candidates (RC) 和 pre-ranking candidates (PRC)。我们在4.3节会演示了多目标最优化的必要性。该list-wise loss会在第4.4节讨论。

再者,我们会添加一个auxiliary distillation loss \(L_{distill}\)从来自ranking model(它具有更多features和可训练参数)来学习模型。令人吃惊的是,我们发现:简单将所有训练样本进行distilling并不是最好的方案。ranking model不总是个好teacher,特别是在还没被曝光的样本上。我们会在第4.5节分析该现象。

4.2 整个空间的训练样本

如表1所示,当训练样本包含了曝光、ranking candidates、preranking candidates时,ASPH@3000和在线GMV会被提升。如果preranking模型只使用曝光作为输入,通过从在线log系统中抽样的case分析,我们会发现:它的output set的质量很糟糕。由于仅抽样曝光的(exposure-sample-only)preranking model在训练期间不会看到非曝光样本,在评估时当在preranking candidates中给出样本时它会感到困惑。在该方式下,大多数候选的得分并不令人信服,会导致在output set中出现许多低质量items。

我们进一步探索了不同样本的比例的影响。一些研究者指出,通常一个不同类型负样本【7】的最优比例和一个关于负样本和正样本的最优比例【29】。在我们的多目标框架下,以click目标为例,ASCL等于1的items是正样本,其它是负样本。来自曝光的负样本、ranking candidates到preranking candidates,会变得easy。与click目标相近,购买目标只包含了三种类型的负样本。然而,对于exposure目标,所有的exposure样本是正样本,ranking candidates和pre-ranking candidates是负样本。作为结果,我们发现:即使我们移除了一定比例的非点击曝光,它也会伤害exposure目标,使得ASPH@3000极具下降。同时,从在线log系统中抽样的RC的数目和PRC的数目并不会更大更好。图6详述了:y轴表示,基于在表1中展示的实验“ASMOL w/o RC&PRC”,添加不同candidates数目的离线指标gaps。为最最大化ASPH@3000,我们设置RC的数目和PRC的数目分别为10和40。除此之外,我们可以看到,当RC和PRC小于10和40时,可以看到很明显的“Seesaw Effect”,因为该模型已经达到的Pareto frontier。

另外,由于preranking会使用RC,而ranking则不会使用PRC,这使得preranking不同于ranking。如图2所示,当输出数千items,它天然使得preranking的效果要好于ranking。online A/B test结果也会展示,当ASPH@3000和PAUC@10结论冲突时,ASPH@3000更可信,它与preranking的主要目标和在线业务指标更一致

4.3 在多目标学习中的全场景labels

我们会进行一个消融实验,通过在多目标中移除每个label的相关loss来进行。实验结果如表2所示。当我们移移adaptive exposure label(AEL)时,全场景点击label(ASCL)和全场景购买label(ASPL)会通过分别移除它们相应的loss,评估指标的结论表明:模型效果会急剧下降。exposure label会帮助preranking model学习下流ranking系统的ranking模式,并且我们的结果验证了它的效果。同时,ASCL和ASPL要比AEL具有更少的in-scenario bias,可以给preranking model更精准关于用户偏好的信息。实验结果表明:我们三个losses的组合是合理并且有效的,对于提升preranking models的在线和离线指标有用。

我们也做了许多实验来证验ASL与ISL的对比效果,如表2所示。”->”表示label的变更。例如:”ASL->ISL”表明:ASPL和ASCL同时变更为ISPL和ISCL。我们使用表2中的最后三行来对比在ASMOL间的结果,可以天然下结论:使用ASL会在ASH@k和在线业务指标上更一致。同时,AUC可能会因为“Seesaw Effect”下降。

4.4 multi-positive label的List-wise loss

我们设计了一个多目标loss来同步将exposure、click和purchase在一个模型内进行组合。这三个最优化目标可以进行jointly训练:

\[L_{rank} = \alpha_{ex} L_{exposure} + \alpha_{cl} L_{click} + \alpha_{pur} L_{purchase}\]

…(5)

对于每个任务,我们使用list-wise ranking loss。例如,对于购买任务,ranking loss可以被公式化为:

\[L_{purchase} = \sum\limits_{i \in D} - log \frac{exp z_i}{\sum_{j \in S} exp_{z_j}}\]

…(6)

其中:

  • z是logit
  • S是full training样本集合
  • D是购买任务的正样本集合,包含了exposures、RC和PRC。

等式(6)对于购买任务工作良好,因为通常至多一次query只有一个购买。然而,multi-postive label在点击和曝光任务中是很常见的。等式6对于具有multiple postive样本的任务不再合适。对于一个multi-postive任务,等式(7)的 vanilla Softmax会导致最优化陷入到在多个正样本间的对比,而非正负样本间的对比。受CircleLoss的启发,对于多个postive labels的任务我们会轻微修改等式(6):

\[L_{exposure} = \sum\limits_{i \in \epsilon} - log \frac{exp z_i}{\sum_{j \in \lbrace S \\epsilon,i} \rbrace exp_z_j}\]

…(7)

其中,\(\epsilon\)表示exposure任务的训练样本集合。当存在只有一个正样本时,等式(7)会退化成等式(6)。我们会在附录B详述等式(7)。为了验证在等式(7)中修改的有效性,我们会开展实验对比这两个loss functions,并在table 3中展示该结果。该实验令人吃惊的表明:在所有指标上,multi-label Softmax的效果要好于vanilla Softmax。我们会根据Zheng[29]来调整为每个任务\(\alpha_{ex}, \alpha_{cl}, \alpha_{pur}\)的weights。

表3

4.5 ranking stage的distillation

使用一个已ready的具有更多features和参数的大型ranking模型来蒸馏训练pre-ranking model是很天然的。在taobao search ranking stage中,存在两个独立模型:对应于CTR和CVR预估。在preranking stage,我们使用calibrated CTR和CVR predictions作为teachers来蒸馏我们的preranking model。为了充分利用CTR和CVR模型,preranking distillation loss会是CTR distill、CTCVR distill的组合:

\[L_{distill} = \alpha_{cl} L_{CTR} + \alpha_{pur} L_{CTCVR}\]

…(8)

CTR distillation任务可以进行如下公式化:

\[L_{CTR} = \sum\limits_{i \in D} - p_{CTR} log \frac{exp z_i}{\sum_{j \in D} exp z_j}\]

…(9)

其中:

  • z是preranking model的logit
  • D是要distilled 样本集合
  • teacher \(p_{CTR}\)是ranking CTR model的prediction

相似的,CTCVR distillation的teacher是\(p_{CTR} * p_{CVR}\)。\(p_{CTR} = p(click \mid expose)\)和\(p_{CTCVR} = p(click & purchase \mid expose)\)是在给定相同条件p(expose)=1下的条件概率。由于\(p_{CVR}=p(purchase \mid click)\)不同于\(p_{CTR}\),我们会使用\(p_{CTCVR}\)作为soft label来与\(p_{CTR}\)相一致。CTR distillation的loss weight和CTCVR distillation会分别遵循click task和purchase task的weights。

再者,我们观察到,定义

kuaishou在《Real-time Short Video Recommendation on Mobile Devices》中介绍了它们的beam search方式:

5.实时triggered context-aware reranking

一旦用户观看完一个视频,并生成新的实时ranking信号,我们可以相应更新我们的client-side model predictions,并触发一个新的re-ranking process。给定更新后的model predictions,存在许多方式来决定展示给用户的视频列表。最广泛使用的是point-wise ranking,它会贪婪地通过得分递减方式来对视频排序,然而,point-wise ranking会忽略在候选间的相互影响,因而它不是最优的。

理想的,我们希望:发现候选集合C的最优排列P,它会导致最大化ListReward(LR),定义成:

\[LR(P) = \sum\limits_{i=1}^{|P|} s_i \cdot (\alpha \cdot p(effective\_view_i | c(i)) + \beta \cdot p(like_i | c(i)))\]

…(4)

其中:

\[s_i = \begin{cases} \prod\limits_{j=1}^{i-1} p(has\_next_j | c(j)), && i >= 2 \\ 1, && i = 1 \end{cases}\]

…(5)

其中:

  • \(s_i\):是累积has_next概率直到位置i,它会作为一个discounting factor来合并future reward
  • \(p(has\_next_i \mid c(i)), p(effective\_view_i \mid c(i)), p(like_i \mid c(i))\):分别是在\(v_i\)上has_next、effective_view、like上的predictions
  • \(c(i)\):在等式(1)中定义的ranking context
  • \(\alpha\)和\(\beta\)是不同rewards的weights

然而,直接搜索最优的排列,需要评估每个可能list的reward,它是代价非常高的,由于它是阶乘复杂度\(O(m!)\)(m是candidate set的size)。Beam search是对该问题的常用近似解,它会将时间复杂度减少到\(O(km^2)\),其中k是beam size。然而,二次时间复杂度对于部署在生产环境上仍然过高。幸运的是,不同于server-side reranking的case,我们只需要延迟决定用户在该设备上可能同时看到的下n个视频(图1(a)中所示在我们的沉浸式场景n=1)。在我们的离线实验中(表5),我们观察到,在不同beams间的ListReward的相对不同之处是,在每个search step会随着搜索step的增长而同步递减。因而,我们提出一个新的beam search策略,来选择一个adaptive search step \(n \leq 1 \ll m\),并进一步减小搜索时间复杂度到\(O(klm)\)。

图片名称

图4: adaptive beam search过程演示,其中:候选数n=4,beam size k=2, stability阈值t=0.95,在每个candidate、或candidate list上的数目表示相应的reward

为了实现adaptive beam search,我们定义了一个 stability:在当前的beam search step上将最小的ListReward除以最大的ListReward:

\[stability(score\_list) = \frac{min(score\_list)}{max(score\_list)}\]

…(6)

一旦stability超出了一个给定threshold t,beam search过程会终止,以便节省不必要的计算,由于我们可能期望:在剩余search steps中不会存在大的区别。adaptive beam search过程如图4所示。

算法如算法1所示,它会在导出的TFLite的执行图中被实现。

图片名称

算法1

kuaishou在《Deconfounding Duration Bias in Watch-time Prediction for Video Recommendation》提出了D2Q的模型。

摘要

Watch-Time prediction的因果模型

我们的目标是:当推荐一个视频给某用户时,预估该用户在的watch time。我们会通过一个因果关系图(causal graph)进行公式化:它会将user、video、duration、watch-time、以及推荐系统在watch-time prediction和视频曝光上关于duration的混杂效应(confounding effect),如图4(a)所示:

图片名称

图4 watch-time prediction的因果关系图:U-user、V-video、D-duration、W-watch time。图(a)建模了在视频曝光和watch-time prediction上的confounding effect。图(b)使用backdoor adjustment来 deconfound duration,并移除它在视频上的effect。

  • U:表示user representation,包含了:用户人口统计学(user demographics)、即时上下文(instantaneous context)、历史交互等
  • V:表示video representation,包含了:video topics等
  • D:表示video duration,例如:视频长度
  • W:表示用户花费在观看视频上的时间
  • \(\lbrace U, V \rbrace \rightarrow W\):会捕获在watch-time上的interest effect,它可以衡量用户对该视频有多感兴趣
  • \(D \rightarrow W\):会捕获在watch time上的duration effect,它会建议:当两个视频与用户兴趣相匹配时,更长的视频会接受到更长的watch time
  • \(D \rightarrow V\):表示duration会影响视频的曝光。推荐系统经常会对具有更长duration的视频有不平等的偏好;这样的bias会通过feedback loop会放大,如图3所示。另外,duration会影响模型训练,因为:i) sample size随duration的不同而不同,具有长duration的视频通常具有更大的sample size,这意味着 prediction模型具有更好的performance; ii) 在标准模型(比如:WLR)中,具有不同duraiton的videos会接受到不同sample weights,(它会影响在模型训练时的梯度分配)

图片名称

图3 在11个月上,kuaishou APP每个video duration相应的视频曝光变化。bins以duration的升序进行排序。bin的高度表示在该周期内曝光的差异。出于置信原因,绝对值会被忽略。平台的目标是提升watch time,曝光会偏向于那些具有长duration的视频

明显地,在图4(a)中的causal graph表明:duration是一个会通过两条路径(\(D \rightarrow W, D \rightarrow V \rightarrow W\))影响watch-time的混淆因子。第一条path会建议:duration具有一个与watch time的直接因果关系,它可以通过watch-time prediction被捕获,因为用户趋向于花费更多时间在长视频(对比起短视频)上。然而,第二条path会暗示着:video exposure不希望被它的duration所影响,因而,视频分布会偏向于长视频;如果没有缓解,由于推荐系统的feedback loop,predictions会面临着bias amplification的风险

4.Duration Bias的后门调整(backdoor adujstment)

在本节中,我们会根据backdoor adjustment的原则来对duration进行解混淆(deconfound),其中:我们会移除来自duration的bias,但会保留来自在watch time上duration的效应。我们提出了一个可扩展的watch-time prediction框架:时长解混淆&基于分位的方法(Duration-Deconfounded and Quantile-based (D2Q)),主要内容有:

  • i) 将数据基于duration进行划分来消除duration bias
  • ii) 拟合watch-time 分位,而非原始值;来保证参数可以距多个groups进行共享以便扩展

我们将我们的training和inference过程分别归纳在算法1和算法2中。

图片名称

算法1

图片名称

算法2

4.1 解混淆Duration

根据do计算,通过移除edge:D -> V,我们会block掉在视频曝光上的duration effect,如图4(b)所示。我们将watch-time prediction模型看成是 \(E[W \mid do(U,V)]\),并且有:

\[\begin{align} E[W \mid do(U,V)] & \overset{i}{=} E_{G_1} [W | U,V] \\ & \overset{ii}{=} \sum\limits_d P_{G_1} (D = d | U, V) E_{G_1} [W | U,V,D = d] \\ & \overset{iii}{=} \sum\limits_d P(D=d) E[W| U,V,D = d] \end{align}\]

…(1)

其中:

  • (i)是总期望;
  • (ii)是因为D独立于\(\lbrace U,V \rbrace\),干预会移除在graph \(G_1\)中的边\(D \rightarrow V\);
  • (iii)是因为:这样的干预不会改变W在条件{U,V,D}上的W分布,D的间隔分布仍会相同

等式(1)阐明了deconfound duration的设计:你可以独立估计\(P(D)\)和\(E[W \mid U,V,D]\),接着将他们组合在一起来构建最终的estimation。在本paper中,我们提出将duration分布P(D)离散化成不相交的groups,并拟合group-wise watch-time预估模型\(E[W \mid U,V,D]\)来完成估计。

4.2 基于Duration分位数的Data-Splitting

我们现在会展示一个使用duration deconfounded来估计watch-time的通用框架,如图4(b)所描述。更高层的思路是:将数据基于duration进行划分,并构建group-wise watch-time estimation以便在视频曝光上对duration进行debiase

特别的,为了阻止 边D -> V,我们基于duration分位数将训练样本进行划分成M个相等的部分,它可以将分布P(D)离散化成不相交的部分。假设:\(\lbrace D_k \rbrace_{k=1}^M\)是这些duration groups。继续(1)中的派生,我们通过下面近似来估计deconfounded model \(E[W \mid do(U,V)]\):

\[\begin{align} E[W \mid do(U,V)] & = \sum\limits_d P(D = d) E[W | U,V,D = d] \\ & \approx \sum\limits_{k=1}^M 1 \lbrace d\in D_k \rbrace E[W | U,V,D \in D_k] \\ & = \sum\limits_{k=1}^M 1\lbrace d \in D_k \rbrace f_k (U, V) \end{align}\]

…(2)

这里我们提供了一个关于“为什么这样的基于duration的数据划分过程,可以解缓图4(a)中边D->V的bias问题”的直觉解释。在标准的watch-time预估模型(如:WLR)中,具有长watch-time weights的样本会在梯度更新中采样更多,因而预估模型经常在短watch-time的样本上表现很差。Watch-time是与duration高度相关的,如图2所示。通过基于duration进行数据划分,并将模型以group-wise方式拟合,我们可以在模型训练期间,缓和那些具有长watch-time的样本、以及具有短watch-time的样本的inference。

图片名称

图2 根据duration在视频上的60分位的watch time。阴影区(spanned area)表示watch-time的99.99%置信区间

然而,这样的data-splitting方法会抛出另一个问题。如果对于每个duration group \(D_k\)我们拟合一个单独的watch-time prediction模型\(f_k\)(如图5(a)所示),model size会变得更大,这在真实生产系统中是不实际的。但如果我们允许在duration groups间进行参数共享,使用原始watch-time labels进行拟合等价于没有data-splitting的学习,这在duration deconfounding上会失败。下面部分会解释:如何通过将原始watch-time labels转换成duration-dependent watch-time labels来解决该窘境,并允许我们同时移险duration bias,并维持模型参数的单个集合来获得可扩展性。

图片名称

图5 对于在每个duration group预计watch-time的不同模型结构,例如:\(\hat{\phi}_k(h(u,v))\)。

  • 图(a)会拟合独立的模型来预估每个duration group的watch time。“dense input”指的是:视频历史统计数(例如:historical show count, empirical watchtime)等。“ID input”指的是ID features(例如:user id, video id)和categorical features(例如:video类目、用户性别)
  • 图(b)会拟合跨所有duration groups的单一模型,其中watch-time分位数的labels会通过在相应的duration group中的watch-time empirical distribution计算得到
  • 图(c)会进一步使用网络结构中的duration信息,并相应地提升watch-time estimation

4.3 每个Duration Group估计Watch-time

接着,我们描述了,如何使用来自所有duration groups的数据来拟合单个watch-time prediction模型。回顾下我们的设计有两部分:

  • i) duration debiasing
  • ii) 参数共享

问题的关键是:将watch-time label转换成duration-dependent,通过根据不同duration group拟合watch-time分位数来实现,而非原始values。我们会引入Duration-Deconfounded Quantile-based (D2Q) watch time预估框架。

\({\hat{\phi}}_k (w)\):表示在duration group \(D_k\)中关于watch-time的经验累计分布(empirical cumulative distribution)。

给定一个user-video pair (u,v),D2Q方法会在相应的duration group中预估它的watch-time分位数,接着使用\(\hat{\phi_k}\)将它映射到watch time的值域中(value domain)。也就是说:

\[f_k(u, v) = \hat{\phi}_k^{-1} (h(u, v))\]

…(3)

其中:h是一个watch-time分位数预估模型,它会拟合在所有duration groups上的数据:

\[h = \underset{h'}{argmin} \sum\limits_{\lbrace (u_i, v_i, w_i)\rbrace_{i=1}^n} (h'(u_i, v_i) - \hat{\phi}_{k_i}(w_i))^2\]

…(4)

其中:

  • \(k_i\)是样本i的duration group,以便\(d_i \in D_{k_i}\)。

你可以应用任意现成的regression模型来拟合分位数预估模型h,并维护在所有duration groups间单个模型参数集

接着,在inference阶段,当一个新的user-video pair \((u_0, v_0)\)到达时,模型会首先发现:视频\(v_0\)会属于哪个duration group \(D_{k_0}\),接着将watch-time quantile预估\(h(u_0, v_0)\)映射到watch-time值\(\hat{\phi_{k_0}^{-1}}(h(u_0, v_0))\)上。我们会在算法1和算法2上总结learning和inference过程。

在该方式下,D2Q会拟合那些是duration-dependent的labels。我们注意到:video duration会是model input的一部分,会将来自不同duration groups的不同样本进行输入,如图5(b)所示。另外,来自不同duration groups的样本会共享关于watch-time quantile的相同的label,但具有不同的特性——一个模型在跨groups学习watch-time quantile时会失败。为了完全利用duration information,你可以在模型结构中额外包含一个duration adjustment tower(比如:ResNet),我们在图5(c)中将它称为Res-D2Q。第5节演示了Res-D2Q会在D2Q之上进一步提升watch-time prediction accuracy。

对应于duration的watch-time labels的转换,允许在跨duration groups间同时进行 deconfounding duration bias和 parameter sharing。然而,随着duration groups的数目增加,group sample size会抖动,每个duration group的watch-time的经验累计分布(he empirical cumulative distributio)也会逐渐偏离它的真实分布。因此,由于 deconfounding duration的好处,模型效果应首先使用duration-based data-spliting来进行提升;接着,随着f duration groups数目的增长,经验时长分布(empirical watch-time distribution)的estimation error会主宰着模型效果,使它变得很糟。第5节会经验性地使用一系列实验来调整效果变化。

5.实验

#

meta在《PIE: Personalized Interest Exploration for Large-Scale Recommender Systems》中提出了用户个性化探索框架(PIE):

3.问题

为了准确解决问题,推荐系统模型通常依赖数据。然而,如果没有数据,这些系统在发现新兴趣或逃离局部最小值的能力上会受限。例如,如果一个特定用户对篮球视频感兴趣,但从未曝光过这样的内容,因为机器学习系统没有训练数据来学习这种情况。换句话说,我们可能不会知道用户的所有不同兴趣。另外,用户兴趣可以随时间变更,以反映最近趋势或新闻事件。因此,对于推荐系统来说,系统地探索多种内容是一种非常重要的能力,以便提供相关推荐服务给用户。

图片名称

图1 用户兴趣的探索(Exploration),会更好最大化推荐系统提供的价值

仅仅只利用(exploiting)用户的过往理解,会产生重复内容,从而错过许多其它用户兴趣。我们希望探索其它更少关注的主题(topics),以便我们可以发现更多的兴趣,或者引入新用户给我认识。该探索(exploration)需要高效、有效、并于可以与利用策略(exploitation strategy)进行最优权衡。

4.系统设计

我们在推荐系统的顶层设计了 exploration系统。图2的蓝色路径展示了所有主要组件。该exploration系统只有在blending pass时会与已存在的推荐系统相交互,在最终提供服务给用户之前,在ranking后最好的exploration videos会与non-exploration videos进行混合。相同的设计可以很容易地被应用到任意已存在的推荐系统中。

图片名称

图2 在已存在推荐系统的ranking框架中包含个性化探索(personalized exploration)

4.1 个性化的探索空间(Personalized Exploration Space)

探索在每个user与每个内容间的喜好程度是很难穷举的(exhaustive)。作为替代,我们尝试学习在每个user与每个属性间的喜好,它是一个更小的集合。本文主要关注学习user-creator间的连接(connections)。

图片名称

图3 从user-content移向user-attribute-content

我们使用PPR( Personalized PageRank)算法来创建了user-creator间的喜好。PPR是一个基于graph learning的随机游走,它会基于engagement数据来学习entity-entity相似度。对比起基于算法的CF,PPR的优点是可以利用多跳信息,因此允许更多的探索。另外,PPR对于那些具有较低先验参与度的creators很友好。

我们的方法如下描述。

  • 首先,我们创建一个基于users和creators间的bi-graph作为source和target,反之亦然。
  • 接着基于在过往一些天的user engagement来分配权重给edges。
  • 接着,运行一个个性化的creator rank算法,并过滤掉那些是creators的nodes。通过这一步,对于一个给定creator,我们可以获得相似creators的一个集合。
  • 现在,我们会采用与creators的用户交叉,并使用最后一步的output来聚合top-k creators。在设计上,这些creators对用户来说是新的,并且能非常好地拟合exploration use case。

为了高效提升exploration,我们在creator level添加了两个filters:

  • Novelty Filter:会移除那些用户之前交互过的creators,确保exploration system只捕获用户的新兴趣;
  • Quality Filter:会移除低质量creators,比如那些具有Watchbait内容的creators、或者在aggregated level上通过exploration具有较低engagement的creators。

4.2 在线探索(Online Exploration)

user exploration的目标是:通过推荐新的creators给用户来减少不确定性。通过从一个高基数选项开始,并朝着一个被认为是“过期(expired)”或“连接(connected)”的新creator的state收敛。其中,存在与该过程相关的机会开销,用户会潜在受益于符合它们品味的更多样推荐。

为一个用户探索创建的空间的过程,可以被公式化成一个online bandit问题

  • 一个简单的解决方案可以是Thompson sampling
  • 另一个更refined的解决方法是contextual bandit,其中:user、creator以及interaction features会被考虑上。

为了保持简单,我们这里仍使用Thompson sampling。每次要呈现一个exploratory video时,目标是最大化基于过往context和actions的cumulative reward。我们使用Thompson sampling来发现creators,并且接着选择来自selected creator的视频。我们将reward定义为来自该creator的视频消费数(engaged),其余的(rests)则认为是failures。 Rewards和rests会被用于计算在Thompson sampling中参数\(\alpha\)和\(\beta\)。该exploration会发生在user level上。

图片名称

图4 (左)random sampling vs. (右)Thompson sampling. sampling creators分布随时间演进

4.3 在explore/exploit间的平衡分发

在一个point-wise ranking推荐系统中,引入exploratory内容是挑战性的,因为不确定的预估通常会被一个well-optimized ranker打分偏低。我们在推荐系统中构建了一个特别的分发系统(specialized delivery system),以一个受控的方式来引入不确定性(uncertainty)。

Exploration Composition

我们使用一个概率融合层(probabilistic blending layer),它会考虑在用户当前session中exploration的组成,并插入(slot)一个exploration video来强制一个预先决定的组成。

5.实验

5.1 setup

为了测试我们提出的方法,我们在Facebook Watch上执行一个在线实验。受[3]的启发,我们根据两个条件将用户分成4组。

  • 条件 1: 是否提供exploration内容给用户。对于获得exploration内容的用户,我们会依赖blending pass来控制exploration videos的曝光接近6%。
  • 条件 2: 推荐系统是否使用exploration data进行训练。两个推荐模型,model A和model B,会使用相同的结构和features进行训练。我们会移除来自模型A的training set通过exploration收集到的数据。为了做出一个公平对比,一个特定量的non-exploration data会从模型B的训练集中随机移除,以便模型A和模型B具有相同size的training set。

上面的表1展示了4个分组的条件组合。

5.2 Metrics

当它开始理解video exploration的价值时,大挑战之一是寻找合适的metrics。像watch time这类常用metrics会临时恶化,因为exploration会利用机会开销来展示一些具有更高不确定性的内容。再者,我们相信,exploration会取出局部最大值,到一个全局最优解,它在engagement metrics上没有short-term regression是不可能的。

exploration的一个主要目标是:发现在users和未知content偏好间的有意义连接,我们定义了一个metrics集合作为这些连接的代理(proxies)。

Strong Creator Connection (SCC)

当一个user对于一个特定creator、在M天的一个窗口内、具有至少N个engagement事件,会生成SCC。对于偏好或内容,我们使用creators作为我们的proxy,对于creators通常会发布一个具有genre, tone, theme的内容等。在短期内,SCC足够敏感,来反映在users和creators间构建的连接。在long run中,我们已经看到在SCC和user engagement间的一个高相关性(见图5)。

图片名称

图5

Strong Creator Connection-Daily Active User (SCC DAU)

该metric会统计那天些具有non-zero SCC metric的用户数目。该指标的增加,会表示更多用户已经构建了强的creator connection。

Novel Strong Creator Connection (Novel SCC)

新的SCC会被成:在一个user和一个creator间形成的strong creators connections,该用户在过去P天没有engagement。对比起SCC,新SCC会进一步从non-exploration中切出exploration的影响。它也会帮助measure在用户兴趣中的long-term shift。

6.结果

我们做了4周的A/B testing,在Facebook Watch中使用exploration framework对用户的videos进行rank。该test results会展示:exploration会导致在整体和新strong creator connections同时胜出。

User Exploration Value

第4组 vs. 第1组展示了将exploration引入到推荐系统中的网络影响。它是一个关于用户获得exploration内容、和exploration信息的feedback的组合影响。我们观察到:在SCC上有3.5%的增长,在SCC DAU上有0.26%增长,在Novel SCC上有0.85%增长。在用户视频消费、日留存、周留存上没有统计显著的影响。图6展示了SCC在周期上的gains。

图片名称

图6

System Exploration Value

由于第3组、第1组会提供exploration content,在第3组和第1组间的对比只影响exploration data的好处。我们看到在engagement中有一个0.28%提升,在SCC metrics上不会有统计显著变化。

Strict Exploration Value

第2组 vs. 第1组展示了在没有,添加一个feedback loop时(使用来自exploration收集的信息来提升推荐模gajf ),exploration content给用户的影响。它会measures网络的机会开销,并展示更多不确定的exploration content,来替代那些来自推荐系统推出的视频。我们看到,一个engagement regression有0.53%。另一方面,serving exploration content会生成一个0.55%会增加SCC。

兴趣分布

为了可视化在user engagement上exploration的影响,我们会分别为每个subtopic计算user engagement,并绘制在图7中的histogram。x轴表示在log scale中的impressions和engagement, y轴表示在那个bucket中的subtopics数目。有exploration(test组)和无exploration(control组)的结会被绘制。左图展示了:在test group中,大多数subtopics会具有在4边上的log impressions,而在control组中,不同subtopics接受到的impressions会各有不同。换句话说,我们可以通过exploration将兴趣曝光分布漂移至一个更平衡的曲线。相似的,右图中,在engagement分布中的漂移表示:相关和新兴趣可以在 engagement-interest分布上进行平衡。

图片名称

图7