高品质的音视频能力是怎样的? | Qcon 全球软件开发大会·上海站邀请函 了解详情
写点什么

如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程

  • 2021-03-06
  • 本文字数:3660 字

    阅读完需:约 12 分钟

如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程

工业界的推荐系统通常包括召回、粗排、精排以及重排四个阶段,如图一所示,每个阶段都像是一个漏斗,从海量的物品集合中过滤出用户最有可能感兴趣的物品。其中粗排模型发挥的主要作用是统一计算和过滤召回结果,在尽量保证推荐准确性的前提下减轻精排模型的计算压力。本文主要介绍爱奇艺随刻基础推荐团队在短视频推荐业务的粗排模型优化上落地的一系列实践方案。


图一:推荐整体流程架构图

背景

工业界在做粗排模型选型时,性能通常是一个很重要的考量因素。按照工业界选型粗排模型的发展历程,大致可以将粗排模型分为以下几大类:


1. 最早也是最简单的粗排过滤方法,直接根据召回计算的得分做截断,控制输入给精排模型的物品候选数量,或者根据全局的 ctr 等统计指标做统一截断。


2. 以 LR/决策树为代表的,结构比较简单又有一定个性化表达能力的机器学习模型,统一对召回候选集做打分截断。


3. 当前工业界应用最广泛的粗排模型—基于向量内积的双塔 DNN 模型,两侧分别输入用户特征和物品特征,经过深度网络计算后,分别产出用户向量和物品向量,再通过向量相似度等计算得到排序分数。


爱奇艺短视频推荐业务最初采用的粗排模型可以归为上述第二类选型模型,是一个基于各个纬度统计特征的 GBDT 模型。统计特征维度主要包括下面几个维度:


1. 不同属性的用户群体对不同类型视频(分标签、创作者和视频本身等)的消费统计特征。


2. 视频维度累积的消费统计特征,如视频的点击率、时长消费中位数和均值等;创作者 up 主的消费统计特征以及视频标签的消费统计特征等。


3. 用户历史消费的视频内容统计特征,如用户历史消费的类型标签统计、消费的创作者内容统计等。


在业务的精排模型优化升级为 wide&deep 模型后,我们对粗排模型和精排模型的预估结果做了详细的统计和分析,发现粗排模型预估为 top 的头部视频和精排模型预估的头部视频有很大的差异。归咎原因主要是以下两方面的原因:


1. 特征集合的差异:粗排 GBDT 模型中主要是一些稠密类统计特征,而精排 wide&deep 模型中发挥重要作用的特征主要是用户长短期消费的视频 id、视频 tag、up 主 id 等以及视频本身的 id、tag 和 up 主 id 等稀疏类型特征。


2. 模型结构的差异:树型结构模型和 DNN 模型的优化和拟合数据时的侧重点还是有很大的差异的。

除了预估结果和精排 wide&deep 模型有比较大的差异性外,GBDT 模型在特征处理和挖掘方面还需要投入大量的人力。综合以上分析,为了尽量弥补粗排模型和精排模型的 Gap,缩小粗排模型和精排模型预估结果的差异性,并节省大量特征统计和挖掘的人力成本,我们对粗排模型进行了一系列的升级和优化。

双塔 DNN 粗排模型

综合计算性能和实验效果,我们最终也选择了目前主流的双塔 DNN 模型作为我们最终选型的粗排模型。我们双塔 DNN 模型结构如下图二所示。用户侧和 Item 侧分别构建三层全联接 DNN 模型,最后分别输出一个多维(512)的 embedding 向量,作为用户侧和视频侧的低维表征。

在构建粗排模型特征集合时,为了控制粗排模型参数的复杂度,我们对粗排的特征集合做了大量的裁剪,用户侧和视频侧都只采用了少部分精排模型的特征子集。其中,用户侧特征主要选取了下面几维特征:

1. 用户基础画像特征、上下文特征如手机系统、型号、地域等。


2. 用户的历史行为特征,如用户观看的视频 ID、up 主 ID,以及观看视频的关键词 tag 等,以及用户 session 内的行为特征等。


视频侧特征只保留了三维:


1. 视频 ID

2. up 主 ID

3. 视频标签 

图二:粗排双塔 DNN 模型结构图


从 GBDT 到双塔 DNN,模型的复杂度和参数量级还是有爆炸性增长的,为了不损失粗排模型的精度同时满足上线的性能指标要求,我们从下面几个方面做了很多优化工作:

1. 知识蒸馏

为了弥补特征裁剪带来的损失,保证裁剪后粗排模型的精度,我们在训练粗排模型时,采用了模型压缩常用的方法-知识蒸馏来训练粗排模型。


知识蒸馏是一种模型压缩常见方法,在 teacher-student 框架中,将复杂、学习能力强的网络学到的特征表示“知识蒸馏”出来,传递给参数量小、学习能力弱的网络。从而我们会得到一个速度快,能力强的网络。


将粗排模型和精排模型放到知识蒸馏的 teacher-student 框架中,以蒸馏训练的方式来训练粗排模型,以精排模型为 teacher 来指导粗排模型的训练,从而得到一个结构简单,参数量小,但表达力不弱的粗排模型,蒸馏训练示意图如图三所示。

图三:粗排模型蒸馏训练示意图


在蒸馏训练的过程中,为了使粗排模型输出的 logits 和精排模型输出的 logits 分布尽量对齐,训练优化的目标从原来单一的粗排模型的 logloss 调整为如公式一所示的三部分 loss 的加和,包括 student loss(粗排模型 loss)、teacher loss(精排模型 loss)和蒸馏 loss 三部分组成。


其中蒸馏 loss 我们线上采用的是粗排模型输出和精排模型输出的最小平方误差,为了调节蒸馏 loss 的影响,我们在该项 loss 前又加了一维超参 lamda,我们设置超参 lamda 随着训练步数迭代逐渐增大,增强蒸馏 loss 的影响,在训练后期使得粗排模型预估值尽量向精排模型对齐,lamda 随着训练 step 的变化趋势如图四所示。

图四:Distillation loss 超参 lamda 设定

2. Embedding 参数优化

为了进一步减少参数量级,压缩模型大小,提高模型传输速度,同时减少加载模型时的内存消耗,我们在训练粗排模型时,将模型 embedding 参数的优化器替换为稀疏解优化神器 FTRL,其他层的参数依然还用 AdaGrad。这一步调整不仅离线 Auc 有小幅提升,训练得到的粗排模型的 embedding 参数全为 0 的比率也高达 49.7%之多。我们在做模型导出时,裁剪掉了全为 0 的 embedding 参数,粗排模型大小减小了 46.8%,使得模型的传输速度也有近一倍的提升,同时线上加载模型的内存消耗也降低了 100%

3.线上 Inference 优化

除了离线训练时的一系列优化,我们对双塔粗排模型的线上 inference 计算也做了很多计算去重和优化。首先在计算 user 侧 embedding 时进行了合并计算,对同一个用户+千级别候选视频 pair,在计算 user 侧 embedding 时,将 user 侧的特征独立拆分,只过一次 user 侧 NN 的 inference。这个优化使得粗排模型打分计算服务 p99 的计算耗时减少了 19ms 左右。


此外,基于视频推荐时特别长尾的分布,以及如前文所述,粗排模型视频侧的特征全部是静态特征(视频 id 确定,特征也是确定的),我们对高频视频的 embedding 进行了缓存。视频侧 embedding 优先从缓存里查询,未命中缓存时再进行 inference 计算。优化后的粗排打分服务架构如下图五所示:

图五:粗排打分服务架构图


经过上述一系列的优化,粗排双塔 DNN 模型的线上计算性能对比之前 GBDT 模型基本可以持平,分别应用到了爱奇艺热点频道随刻首页推荐场景中,两边的线上指标都有显著提升,其中随刻首页 feed 推荐的用户人均消费时长涨了 3%点左右;爱奇艺热点频道的人均消费时长也涨了 1%,ctr 和人均消费视频数也都有 2%的涨幅

级联模型

随着后续业务的迭代和逐步深入,精排模型的学习目标也不断做调整,为了方便添加不同的学习目标,我们将线上的精排模型升级为了由 Google 提出的,目前也在工业界广泛使用的 MMOE 多目标模型。为了一劳永逸地解决粗排模型目标和精排模型目标一致性的问题,我们对粗排模型进行了又一次的迭代优化。通过升级为级联模型,使得粗排模型能够自适应地对齐精排模型目标的变化,同时也节省了蒸馏训练的环节,大大地节省了训练资源消耗


从实践的角度,级联模型对模型结构以及模型输入的特征集没有做任何修改,只是调整了粗排模型训练样本的生成方式,升级后的粗排模型从学习线上真实曝光点击/播放样本,调整为直接学习精排模型的预估结果,将精排模型预估 topn 的结果作为粗排模型学习的正样本。级联模型的样本生成方式具体如图六所示。

图六:级联模型训练样本数据流


所以这一次升级粗排模型到级联模型只是简单地调整了模型的训练样本,却取得了很显著的收益,除了去掉了蒸馏学习的环节,大大地缩减了粗排模型训练的资源和时间消耗,实际上线也取得了很显著的收益,视频推荐场景的曝光点击率和人均有效观看视频数都提升了 3%左右。同时各项互动指标也有显著提升,其中人均评论量有 12%的显著提升

未来规划

 以上是我们近期在短视频推荐粗排模型上尝试的一系列优化,实践证明粗排模型和精排模型的一致性对线上效果还是有很大影响的。后续我们会从以下几个方面持续优化粗排模型:


1. 尝试面向下一代的粗排排序系统——COLD。

2. 持续优化粗排模型线上计算的性能,在性能允许的情况下,扩大召回的视频数量,同时添加更多在精排模型验证有效的特征到粗排模型,提升粗排模型的准确性。

3. 优化 user embedding 视频 embedding 的相似度计算,考虑增加一个浅层网络来计算 user 和 item 的相似性,替换目前简单的 cosine 相似度计算。


参考文献

1.https://www.kdd.org/kdd2018/accepted-papers/view/modeling-task-relationships-in-multi-task-learning-with-multi-gate-mixture-

2.H.B.McMahan. Follow-the-regularized-leader and mirror descent: Equivalence theorems and L1 regularization. In AISTATS, 2011 

3.https://arxiv.org/abs/1503.02531

4.https://arxiv.org/abs/2007.16122


本文转载自:爱奇艺技术产品团队(ID:iQIYI-TP)

原文链接:如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程

2021-03-06 13:002973

评论

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

工程师思维是什么?能吃吗?

Justin

工程师思维 架构设计 28天写作

前端模拟假数据(json-server光速入门篇)

德育处主任

json 大前端 Node 28天写作 json-server

你会读书吗?

xcbeyond

读书感悟 读书方式 28天写作

CSS实现数据统计

德育处主任

大前端 CSS小技巧 28天写作 纯CSS

机器学习应用设计阶段的 10 个陷阱和 11 个最佳实践

浪潮云

机器学习

区块链作用之数字货币的影响

v16629866266

音视频行业不可或缺的功能-云端录制

anyRTC开发者

音视频 WebRTC 在线教育 直播 RTC

代码 or 指令,浅析ARM架构下的函数的调用过程

华为云开发者联盟

函数 任务栈 arm架构

美国大选期间美股迎来大涨,舆情到底有何魔力?

星环科技

人工智能 大数据

甲方日常 91

句子

工作 随笔杂谈 日常

即构SDK新增焦点语音功能,可实现特定用户语音的聚焦

ZEGO即构

前端知识总结输出文章目录大全

梁龙先森

JavaScript 大前端 编程语言 28天写作

Soul 源码阅读 05|Http 长轮询同步数据分析

哼干嘛

开发质量提升系列:用户体验

罗小龙

最佳实践 方法论 28天写作

个人隐私之老话重谈

张老蔫

28天写作

AI、IoT、区块链、自主系统、下一代计算五大技术引领未来供应链发展

京东科技开发者

区块链 AI IoT 供应链

漫谈HTTP协议

架构精进之路

HTTP 七日更 28天写作

IDEA 异常退出 解决方法

任广印

IDEA

技术根儿扎得深,不怕“首都”狂风吹!

Arvin

操作系统

HTML5中的拖放功能

我是哪吒

html html5 程序员 面试 大前端

《论雨伞道德》- 不要和自己的良心捉迷藏

石云升

读书笔记 28天写作 雨伞道德

架构师训练营知识点思维导图

晴空万里

架构师训练营第2期

Vue3 中 v-if 和 v-show 指令实现的原理 | 源码解读

五柳

源码分析 大前端 Vue3

面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场

华为云开发者联盟

数据库 数据 存储 Hash索引 LSM树

数据中台:建立在数据网络效应之上的赛道

奇点云

大数据 数据中台 云原生 数据

高阶段位机房管理:3D集装箱数据中心,触发科技“火苗”的燃烧

一只数据鲸鱼

数据可视化 3D可视化 机房管理 数据中心可视化 集装箱式数据中心

Volcano 监控设计解读,一看就懂

华为云开发者联盟

Kubernetes 云原生 监控 Volcano 计算

微服务容错时,这些技术你要立刻想到

华为云开发者联盟

微服务 线程 服务雪崩 断路器 服务降级

如何提升链路目标一致性?爱奇艺短视频推荐之粗排模型优化历程_AI_爱奇艺技术产品团队_InfoQ精选文章