写点什么

YouTube 多目标排序系统:如何推荐接下来收看的视频

2019 年 10 月 31 日

YouTube 多目标排序系统:如何推荐接下来收看的视频

导读:今天分享篇 Youtube 推荐排序模块的论文 from RECSYS 2019:


Recommending What Video to Watch Next: A Multitask Ranking System


https://dl.acm.org/citation.cfm?id=3346997


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


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


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


所以格外推荐还在推荐系统起步阶段的同学读一读这篇 paper,下边简单抽文章的重点介绍下。


真实场景中有很多挑战:


  • 有很多不同甚至是冲突的优化目标,比如我们不仅希望用户观看,还希望用户能给出高评价并分享。

  • 系统中经常有一些隐性偏见,比如用户是因为视频排得靠前而点击 & 观看,而非用户确实很喜欢。因此用之前模型产生的数据会引发 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,需要更高效的方案来适应这种数据分布变化。


模型结构

1. System Overview


排序系统学习两种目标:


  1. 参与度:点击、观看


2)满意度:喜欢、不喜欢


所以排序目标是分类问题和回归问题的组合。


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


2. Ranking Objectives


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



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


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


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


具体公式如下:



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



4. 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 实验,评估参与度指标和满意度指标,除此外还要关注下服务的预测开销。


1. 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 输出的概率。


2. 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: 用辅助任务去预测展现的位置,在反向传播阶段把梯度取负(这里之前理解错了,写成了把梯度抹除掉),这样主模型不会依赖位置特征



下边是原文,这里说的不太详细,我又专门去看了下文章引用的第五篇:


https://arxiv.org/pdf/1707.00075.pdf


这个基线方案就是这个论文里讲得:



逻辑上是一个 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.


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247494686&idx=1&sn=17397424a790db8c047a109d1e2a2135&chksm=fbd75e72cca0d764a7daf58a3037f45abef4ce2c0397554b19281bb85220921e960fb95ffd11&scene=27#wechat_redirect


2019 年 10 月 31 日 08:001434

评论

发布
暂无评论
发现更多内容

为什么MySQL不推荐使用子查询和join

Java小咖秀

MySQL MySQL优化

群邑预测户外媒体明年综合涨幅将达12%,属于户外的机会来了!

󠀛Ferry

七日更 3月日更

Rancher 2.5.6发布,支持Kubernetes 1.20

RancherLabs

几个你不知道的dubbo注册中心细节

小楼

zookeeper dubbo 注册中心

APP搜索如何又快又准?

华为云开发者社区

elasticsearch App 搜索 云搜索 词库

别再做智慧园区无效投入了!想要高效运行试试这个方法

一只数据鲸鱼

物联网 数据可视化 智慧城市 智慧园区

不愧为Java程序员福音 2021阿里巴巴中台架构实战重磅来袭!

比伯

Java 编程 架构 面试 程序人生

JVM笔记--如果你写JVM,最需要考虑的重要结构是什么?

秦怀杂货店

Java JVM Java 8

OpenCV萌新福音:易上手的数字识别实践案例

华为云开发者社区

OpenCV 图像处理 数字 图像预处理 信用卡

我帮大厂做架构之——微信的“N个朋友读过”怎么实现

臧萌

成长 架构师 职场成长

华为在数字化浪潮下的API变革实践

华为云开发者社区

华为 架构 数字化 API API战略

【LeetCode】螺旋矩阵 II Java 题解

HQ数字卡

算法 LeetCode 28天写作 3月日更

寻找被遗忘的勇气(十六)

Changing Lin

3月日更

看了 GitHub 上的这些面试题项目后,我飘了!

JackTian

GitHub 面试题 开源项目 面试技巧 面试大厂真题

网易 Duilib:功能全面的开源桌面 UI 开发框架

有道技术团队

开源

办公自动化:Day01

缭乱地男神

办公自动化 IT蜗壳教学

Java面试“圣经”,已助朋友拿到7个Offer!2021年金三银四面试知识点合集

Java架构追梦

Java 阿里巴巴 架构师 面试知识点总结 面试突击

大作业--联合运营平台

ALone

燃烧吧!开发者们,一起在云端构建开放成熟的 ARM 生态!

亚马逊AWS官方博客

你的头发还好吗?大数据分析脱发城市哪里强

不脱发的程序猿

程序人生 数据分析 3月日更 大数据分析脱发 程序员脱发

重点人员管控分析系统开发,智慧警务平台搭建解决方案

WX13823153201

重点人员管控分析系统开发

区块链解决商超变革难题

茜茜公主

3月日更

白话解读 WebRTC 音频 NetEQ 及优化实践

阿里云视频云

阿里云 音视频 WebRTC

史上超强拷贝仓——GitHub 热点速览 v.21.11

HelloGitHub

GitHub 开源项目

第一个mybatis程序,实现CRUD

xiezhr

mybatis 中间件 crud

软件匠艺

Teobler

敏捷 敏捷开发 软件匠艺 伪敏捷

带你全面认识CMMI V2.0(二)

渠成CMMI

项目管理 CMMI

EFT是什么?EGG公链又是什么?一文带你了解

币圈那点事

公链 挖矿 #区块链#

大作业《云复制高级配置功能产品需求文档》

李钊悌

初识Golang之声明变量

Kylin

读书笔记 golang新手 3月日更 21天挑战 Java转go

语音通话 2.0

anyRTC开发者

音视频 WebRTC RTC 语音通话

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

YouTube 多目标排序系统:如何推荐接下来收看的视频-InfoQ