写点什么

谷歌大规模多目标排序实践:Youtube 视频推荐核心技术

  • 2019-10-31
  • 本文字数:1709 字

    阅读完需:约 6 分钟

谷歌大规模多目标排序实践:Youtube视频推荐核心技术

本文主要介绍下 Google 在 RecSys 2019 上的最新论文[1],提出了一套大规模多目标排序框架应用于 Youtube 视频推荐,引入 MMoE 解决多目标学习,以及解决用户隐式反馈中的 selection Bias 问题。


介绍

本文提出了一套大规模多目标排序框架应用于 Youtube 视频推荐平台。众所周知,Youtube 视频推荐面临着众多的挑战,包括需要解决多个互相竞争的排序目标、以及用户反馈中的选择偏差(selection bias)等等。为了解决这些问题,我们引入了 MMoE[2]来优化多目标排序目标。另外,我们改进了 W & D 框架来解决用户反馈的 selection bias。在 Youtube 视频推荐的线上实验也证明了本文算法的显著提升。



所谓相互竞争的排序目标,是指在排序的优化目标上往往是相互冲突的。比如我们不仅希望用户观看,还希望用户能给出高评价并分享。所谓用户隐式反馈中的选择偏差(selection bias),具体来说比如用户点击观看视频仅仅是因为它位置比较靠前,而非用户真正喜欢。因此用当前系统收集到的数据训练出来的模型会引发 bias,从而形成一个反馈循环,越来越偏。

模型架构

本文提出的系统模型架构如下图所示。具体来说,首先将需要学习的多目标分成两类:engagement 目标(点击、观看等用户参与度)和 satisfaction 目标(用户点赞、评论等喜欢程度)。


对于这两类稍微有点冲突的多目标任务,我们引入 MMoE 的结构来解决,并通过门结构来加权选择更好地学习独立的目标。


为了减少训练数据中的 selection bias(比如 position bias),我们添加了如下图左边的浅层塔,接收 selection bias 相关的特征作为输入(比如排序位置),输出则作为主模型最终预测的偏差项。模型将目标分解为两部分,一个是无偏的用户偏好,另一个是倾向分。模型结构可以看做是 Wide & Deep 的扩展,用以解决用户反馈中的 selection bias。


MMoE 结构

如前所述,本文将需要学习的多目标分为参与度和满意度两类,如果是分类问题就用 cross entropy loss 学习;如果是回归问题则用 square loss。最后用加权公式来平衡用户参与度和满意度指标,取得最佳效果。


多目标的排序系统中通常使用的是 shared-bottom 结构(如下图 a 所示),但是这种 hard-parameter 强行共享底层的方案对于相关性小的目标之间的任务,效果是此消彼长有损伤的。因此为了同时学习多个互相冲突的目标并达到平衡,我们采用并扩展 MMoE 结构来解决多目标冲突问题。


MMoE 结构设计的目的就是希望能够在不引入过多模型参数的前提下能够捕捉学习不同任务之间的区别。如下图 b 所示,网络结构上主要的区别是使用 MoE 层来替换共享的 ReLu 层,并为每一个任务单独添加一个额外的门结构。


消除 selection bias

在推荐排序系统中,用户的隐式反馈譬如点击、观看等被广泛地应用在训练深度排序网络模型中。但是用户的隐式反馈是有 bias 偏差的,最明显的就是 position bias,很多时候用户点击观看某个视频并不是因为真的喜欢某个视频,而仅仅只是因为其排序的位置比较靠前。因此我们需要去移除这种 bias,打破这种越来越偏的循环。


因此我们扩展了 W & D 网络结构,将模型的预测输出层分解成为两部分:学习 engagement 的 main tower;以及学习 selection bias 的 shallow tower。如下图所示,shallow tower 训练的时候将产生 selection bias 的特征譬如排序位置 bias 作为输入。在线预测时,位置特征设为 missing


实验结果

Youtube 线上实验结果如下图所示,baseline 是常用的 Shared-Bottom 结构。可以看出 MMoE 结构在基线的基础上,在 engagement 和 satisfaction 的两个目标上均有显著提升



与此同时,我们可以看到排序位置的 1-9 上的 ctr 分布如下图所示。这里面有两个方面因素,一方面预估 ctr 越高则排序位置越高;另一方面由于 position bias 的存在,排序位置越高则用户更容易点击。模型 shallow tower 学习到的 selection bias 分布也显示了这一点。



参考资料:


1. Recommending What Video to Watch Next: A Multitask Ranking System


2. Modeling Task Relationships in Multi-task Learning with Multi-Gate Mixture-of-Experts


3. https://zhuanlan.zhihu.com/p/82584437


本文授权转载自知乎专栏“深度推荐系统”。原文链接:https://zhuanlan.zhihu.com/p/88834117


2019-10-31 08:302587

评论

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

一个Android开发6年程序员的年终面试总结,2021无畏艰难险阻,迎风潇洒前行

android 程序员 移动开发

【最强】Android 项目集成 Flutter 实战分享,android开发笔试题

android 程序员 移动开发

【自学Flutter】1,详解Android架构进阶面试题

android 程序员 移动开发

【设计思想解读开源框架】热修复设计-,卑微打工人

android 程序员 移动开发

【透镜系列】看穿 _ 触摸事件分发 _,android界面开发框架

android 程序员 移动开发

恒源云(GpuShare)_未闻Prompt名(论文学习笔记)

恒源云

深度学习

【收藏】2021年Android跳槽大厂必备宝典,阿里大牛整理

android 程序员 移动开发

【译】彻底理解 Android 中的阴影(1),apk优化签名

android 程序员 移动开发

【面试必会】全网最具深度的三次握手,腾讯Android开发面试记录

android 程序员 移动开发

一位Android程序员入坑Flutter后整理出一份超详细的学习笔记

android 程序员 移动开发

【译】使用Kotlin从零开始写一个现代Android-项目-Part1

android 程序员 移动开发

华为云·核心伙伴开发者训练营第七期开营,共赴产业云美好明天!

华为云开发者联盟

华为云 鲁班会

一个非常好用的页面引导工具guideView,html5移动开发框架

android 程序员 移动开发

【译】使用Kotlin从零开始写一个现代Android-项目-Part1(1)

android 程序员 移动开发

一个8年Android 开发想转后端,还来得及嘛?,android开发菜鸟教程

android 程序员 移动开发

一款简单的消息防抖框架,安卓开发权威指南

android 程序员 移动开发

Cube 技术解读 | Cube 卡片技术栈详解

阿里巴巴终端技术

支付宝 客户端开发 卡片服务 cube 动态化

【议程公布】2021年MongoDB中文社区南京技术沙龙

MongoDB中文社区

mongodb

【自学Flutter】32 交错动画的使用,掌握这个提升路径,

android 程序员 移动开发

【阿里P8大牛教你Android入门之路(java篇,移动端开发工程师转型

android 程序员 移动开发

一文了解AndroidStudio3-4的全部更新,androidapp开发从入门到精通

android 程序员 移动开发

一文带你搞懂Android的-Binder-机制,flutterandroid最低版本

android 程序员 移动开发

【译】彻底理解 Android 中的阴影,三年经验Android开发面经总结

android 程序员 移动开发

【面试准备】JavaWeb部分,android webview

android 程序员 移动开发

一场赛跑引起的并发知识,flutterrow换行

android 程序员 移动开发

一封给Android开发者 UI 自动化测试上手指南,前方高能

android 程序员 移动开发

一个view事件分发,面试官6连问直击灵魂,我被虐的体无完肤

android 程序员 移动开发

一个中专生的逆袭之旅(如何做到收到阿里、腾讯、滴滴等面试邀请)

android 程序员 移动开发

一位普通Android程序员呕心沥血八次大小厂的面试复盘总结,收藏一波扩展知识体系!

android 程序员 移动开发

一种有效管控APP隐私权限的解决方案,Android400道面试题通关宝典助你进大厂

android 程序员 移动开发

一种清晰, 便于扩展android项目架构方案,kotlin编程

android 程序员 移动开发

谷歌大规模多目标排序实践:Youtube视频推荐核心技术_AI&大模型_深度传送门_InfoQ精选文章