50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

谷歌大规模多目标排序实践: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:303004

评论

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

带你认识大模型训练关键算法:分布式训练Allreduce算法

华为云开发者联盟

分布式训练 Allreduce算法 集合通信 分布式通信算法 大模型训练

Tapdata 实时数据融合平台解决方案(一):现代企业数据架构及痛点

tapdata

mongodb

我的树莓派居然偷偷的学会了日语

IT蜗壳-Tango

IT蜗壳教学 6月日更

毕业设计So Easy:珠穆朗玛FM音频电台APP

不脱发的程序猿

android 软件开发 APP开发 毕业设计 移动应用开发

【LeetCode】你能在你最喜欢的那天吃到你最喜欢的糖果吗?Java题解

Albert

算法 LeetCode 6月日更

Tapdata 实时数据融合平台解决方案(三):数据中台的技术需求

tapdata

oracle mongodb

架构实战营模块5作业

eoeoeo

架构实战营

架构实战营 - 模块 5- 作业

carl

Tapdata 实时数据融合平台解决方案(四):技术选型

tapdata

大数据

Tapdata 实时数据融合平台解决方案(五):落地

tapdata

大数据

奇亚Chia挖矿系统开发方案丨奇亚Chia挖矿源码功能

系统开发咨询1357O98O718

国内首篇云厂商 Serverless 论文入选全球顶会:突发流量下,如何加速容器启动?

Serverless Devs

Serverless 容器 云原生

TCP协议

IT视界

TCP 传输协议 网络通信

从零开始学习3D可视化之控制对象(1)

ThingJS数字孪生引擎

物联网 可视化 3D 3D可视化 数字孪生

🔎【Java 源码探索】深入浅出的分析HashMap(JDK7)

码界西柚

Java hashmap 6月日更 JDK7

《堂食点餐》APP前后端全部免费开源啦!

YonBuilder低代码开发平台

源码 大前端 APP开发 APICloud 外卖app

一封MySQL之父Monty的回信,开启彭立勋的数据库之路

华为云开发者联盟

MySQL 数据库 opengauss GaussDB 华为云数据库

【译】JavaScript 代码整洁之道-异常处理篇

KooFE

JavaScript 大前端 异常处理 6月日更 整洁代码

智能炒币机器人系统开发案例解析,智能炒币机器人源码设计

系统开发咨询1357O98O718

一文回顾 Java 入门知识(上)

逆锋起笔

Java 后端 javase

写给想做程序员的半吊子应届毕业生们

北游学Java

Java Python 求职 秋招

Tapdata 实时数据融合平台解决方案(二):理解数据中台

tapdata

oracle mongodb

webRTC实现音视频通话与屏幕共享

侠客行

WebRTC 屏幕共享 iOS屏幕共享 web屏幕共享

🏆未来可期,WebRTC成为实时通讯方案的行业标准

码界西柚

音视频 WebRTC 实时通信 6月日更

网络攻防学习笔记 Day33

穿过生命散发芬芳

网络攻防 6月日更

面向对象的Python编程,你需要知道这些!

华为云开发者联盟

Python 面向对象 oop 面向对象编程

AT智能量化炒币机器人系统开发详解案例

系统开发咨询1357O98O718

6月2日,讲一个鸿蒙的故事

这不科技

华为 鸿蒙

华为云携手马栏山文创园助力湖南广电荣获国家广电总局多项大奖

华为云开发者联盟

AI 5G 视频 华为云 马栏山

架构实战营模块五作业

竹林七贤

我把 Spring Boot 项目从 18.18M 瘦身到 0.18M,部署起来真省事!

xcbeyond

微服务 springboot 6月日更

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