Youtube 排序系统:Recommending What Video to Watch Next

中秋佳节的最后一天分享篇Youtube推荐排序模块的论文,节假日过得太快了,还好马上还有十一。

Recommending What Video to Watch Next: A Multitask Ranking System

from RECSYS 2019

之前内部查找论文时就注意到了谷歌的这篇文章,从摘要中就可以看出这应该是在youtube上实践的一篇文章,并且内容应该比较实在。不过那时候文章还没有发布出来,中秋最后一天发现有pdf发出来了,便果断看了下。

看完后发现不出所料,确实是一篇实用的文章,本身虽然没有提出特别新颖的结构,不过内容很是在,也work,算是推荐系统中排序模块很通俗易懂的文章了,主要聚焦于大规模视频推荐中的排序阶段,介绍一些比较实在的经验和教训,解决Multitask Learning, Selection Bias这两个排序系统的关键点。

一般推荐系统排序模块的进化路径是: ctr任务-> ctr+时长 -> mulittask & selection bias

所以格外推荐还在推荐系统起步阶段的同学读一读这篇paper。

广告广告,抖音火山推荐团队持续招人,欢迎投递简历 wangminghui.wd@bytedance.com

校招可以官网投递填写内推码:TDS4UVR

http://wd1900.github.io/2019/09/15/Recommending-What-Video-to-Watch-Next-A-Multitask-Ranking-System/wd1900.github.io

下边简单抽文章的重点介绍下

真实场景中有很多挑战:

  • 有很多不同甚至是冲突的优化目标,比如我们不仅希望用户观看,还希望用户能给出高评价并分享
  • 系统中经常有一些隐性偏见,。比如用户是因为视频排得靠前而点击&观看,而非用户确实很喜欢。因此用之前模型产生的数据会引发bias,从而形成一个反馈循环,越来越偏。如何高效有力地去解决还是个尚未解决的问题。

本文还是一个NN的架构去作为排序模块,如图1.基于Wide&Deep的架构 + Multi-gate Mixture-of-Experts (MMOE)。MMOE也是谷歌的一篇做multitask的论文,对于不是那么一致的多目标上效果比shared bottom的结构好些,不过实际效果还是比较分业务场景,有兴趣的同学可以读读论文、实践下。另外,还引入了个shallow tower去建模并移除selection bias。作者介绍将其应用于线上大规模视频平台上是有显著提升的。

先说下多目标,分为两类: - engagement objectives:点击以及于视频观看等参与度目标 - satisfaction objectives:Youtube上的喜欢某个视频、打分

对于存在潜在冲突的目标,通过MMOE的结构来解决,通过门结构来选择性的从输入获取信息。

为了减少selection bias(比如position bias),用图1左边的浅层塔,接收selection bias作为输入,比如排序位置,输出标量作为主模型最终预测的偏差项。 模型将目标分解为两部分,一个是无偏的用户偏好,另一个是倾向分。模型结构可以看做是Wide&Deep的扩展,浅层塔代替Wide部分。因为直接学习shallow tower,所以不用随机实验区获得倾向分。


在Youtube上进行两段实验验证效果:

  • multitask learning
  • removing a common type of selection bias

贡献: - an end-to-end ranking system - multi-objective learning (MMOE) - mitigate position bias - signifcant improvements on a real-world large-scale video recommendation system

相关工作

模型结构就不多介绍了,基本上就是各种pointwise,pairwise目标,还有各种NN模型结构,rnn,attention,NN+GBDT等等。

多目标的话最基础的就是shared-bottom这种共享底层的结构,进阶版就是MMOE这种了,以及因为不同目标的loss贡献不一样所以会搞一些比如gradnorm这种的优化算法。

Bias之前的分享的推荐系统文章基本都提过这块。常见的是把position之类的作为输入,预估时用position为1的输出值。 其他的方案有从随机数据中学一个bias iterm,也有不需要随机数据的,用counter-factual model学inverse propensity score (IPS)。像Twitter、Youtube这种用户兴趣变化比较快的,不太适合IPS,需要更高效的方案来适应这种数据分布变化。

模型结构

System Overview

排序系统学习两种目标 1) 参与度:点击、观看 2)满意度:喜欢、不喜欢。所以排序目标是分类问题和回归问题的组合

此方法是pointwise,像pairwise和listwise的方案虽然可以提升推荐的多样性。但是基于serving时的考虑还是选择用pointwise,简单高效,尤其是候选集比较多的时候。

Ranking Objectives

目标基本上就是刚才说的两类,一类 点击、时长, 一类 点赞、打分。分类问题就用cross entropy loss学习,回归问题可就是square loss。最后用融合公式来平衡用户交互和满意度指标,取得最佳效果。

Modeling Task Relations and Conficts with Multi-gate Mixture-of-Experts

常见的多目标的排序系统用的是shared-bottom结构,但是这种hard-parameter强行共享底层的方案对于目标之间相关性小的任务,是有损效果的。因此采用并扩展MMOE结构来解决多目标冲突问题。

本文的排序系统上是在共享隐层上边加experts,如图2-b。Mixture-of-Experts 层可以帮助从输入中学习模块化信息,更好的建模多模态特征空间。但直接上MoE层会显著增大训练和预测的消耗,因为输入层维度一般比隐层维度大。

具体公式如下:

\begin{array}{c}{y_{k}=h^{k}\left(f^{k}(x)\right)} \ {\text { where } f^{k}(x)=\sum_{i=1}^{n} g_{(i)}^{k}(x) f_{i}(x)}\end{array} (1)

x就是低层的共享embedding, f_{i}(x) 就是第i个expert,g(x)就是图中的gate layer。

g^{k}(x)=\operatorname{softmax}\left(W_{g^{k}} x\right) \qquad     (2)

Modeling and Removing Position and Selection Biases

排序系统中有很多bias,最明显的就是position bias,排的靠前的天然就比排的靠后的容易被点击,所以我们需要去移除这种bias,打破这种越来越偏的循环。

所以模型结构上除了一个main tower,还有一个shallow tower去建模bias,将输出的偏置项加到main tower最终输出的logit上,如图3.训练的时候浏览时的位置作为输入,设置drop-out rate为10%,避免过度依赖位置特征。serving时,位置特征设为missing。设备信息会被加入到shallow tower的输入中,因为不同设备上不同位置的bias是不同的。

EXPERIMENT RESULTS

实验就开在Youtube上,比较可靠。有不少推荐系统方向论文的改进是在很小数据集上测试的,在大规模场景下经常就不好使了,所以我比较少去看学术界的推荐系统论文。

离线使用指标用AUC,线上开AB实验,评估参与度指标和满意度指标,除此外还要关注下服务的预测开销。

Multitask Ranking With MMoE

Baseline Methods.

基线方法就是图2a的shared-bottom,模型复杂度是差不多的,确保线上serving开销相同。

Live Experiment Results.

结果如表1,MMOE在保持模型复杂度不变的情况下,比较了下4个experts和8个experts。可以看出参与度、满意度指标都有所提升。

Gating Network Distribution.

图5画了网络中每个expert对每个任务的累计概率,方便理解MMoE如何帮助优化多目标。可以看到有的expert偏重参与度任务,有的偏重满意度任务

另外让gating networks直接和input layer相连,没有明显提升,所以没必要增大开销进行直连。

Gating Network Stability.

多机分布式训练可能会导致model diverged,比如Relu death。在分布式训练中,可以观察到此模型中gating network有20%会极化,这降低了模型性能。因此训练中要使用drop-out,10%的概率将expert的利用程度设为0并重新归一化softmax输出的概率。

Modeling and Reducing Position Bias

Analysis of User Implicit Feedback.

图6展示了位置1-9的CTR,这里边有item相关性的原因也有position bias的因素。因此用个shollow tower去学下position bias。

Baseline Methods.

  • 直接用位置特征作为输入
  • Adversarial learning: 用辅助任务去预测展现的位置,在反向传播阶段把梯度取负(这里之前理解错了,写成了把梯度抹除掉),这样主模型不会依赖位置特征

下边是原文,这里说的不太详细,我又专门去看了下文章引用的第五篇 arxiv.org/pdf/1707.0007 ,这个基线方案就是这个论文里讲得

逻辑上是一个head正常预测比如点击,另一个预测位置,然后预测位置的这个loss反传是用负梯度,让share的底层不去学习位置逻辑,这样主模型就不依赖位置特征了。

Live Experiment Results.

表2是结果,文中提的方法更好

Learned Position Biases.

图7是学到的position bias,可以看到位置越靠后,bias越小。

Discussion

Neural Network Model Architecture for Recommendation and Ranking.

许多推荐系统paper里提出的结构源于一些传统机器学习领域,比如NLP的 multi-headed attention,CV里的CNN。但这些其实都不直接适合我们的需求。 主要原因:

  • Multimodal feature spaces.
  • Scalability and multiple ranking objectives.
  • Noisy and locally sparse training data.
  • Distributed training with mini-batch stochastic gradient descent.

Tradeof between Efectiveness and Eficiency.

Biases in Training Data.

Evaluation Challenge.

Future Directions.

  • Exploring new model architecture for multi-objective ranking which balances stability, trainability and expressiveness.
  • Understanding and learning to factorize.
  • Model compression.
编辑于 2019-09-27

文章被以下专栏收录