多任务视频推荐方案,百度工程师实战经验分享

2023-11-01

推荐系统的应用场景非常广泛,比如非常火爆的短视频推荐、电商平台商品推荐、搜索推荐等。但是你知道吗?短视频APP在向你展示一个你感兴趣的视频之前,通常既要预测你对这个视频是否感兴趣,又要预测你会看多久,点赞还是不点赞,会不会偷偷收藏起来下次接着看。只有在多个维度都得到正向反馈时,短视频APP才会将这个视频推送到您的手机上。但是问题又来了,有这么多个想要预测的信息维度,如果将每种指标都看做一个任务,每个任务都搞一个模型来学,那花费的线上资源将是非常昂贵的。这个时候,多任务模型就应运而生,一个模型多任务学习即可全搞定。

本次产业实践范例介绍如何使用飞桨大规模推荐算法库PaddleRec ,以短视频推荐场景为例,提供多任务技术的推荐应用解决方案。此项技术也可以在商品推荐、信息流推荐、搜索等场景应用,至此,我们已经完成了20+公司内项目的落地。我们提供了从数据准备、模型训练及优化的全流程可复用方案,降低产业落地门槛。

⭐GET项目链接⭐

PaddleRec/application/multitask_on_video at master · PaddlePaddle/PaddleRec · GitHub

所有源码及教程均已开源,欢迎大家使用,star鼓励~

方案设计

我们在本次范例中应用多任务学习(multitask)。多任务学习定义有很多种,我们认为比较直观的理解是和单任务学习相对的一种机器学习方法。以短视频推荐为例介绍单任务和多任务的区别。短视频推荐中,常见的多个任务包括完播率、是否点赞、是否收藏等。
单任务学习:忽略任务之间可能存在的关系分别学习每个任务;

多任务学习:看重任务之间的联系,通过联合学习,同时对多个任务学习和优化,既考虑到了任务之间的差别,又考虑到任务之间的联系,这也是多任务学习最重要的思想之一。

推荐系统的设计,往往是从简单到复杂的过程,综合精度和性能考虑,最常见的路径是线性模型/LR、双塔模型(user/item)、DNN全连接、多个目标的联合学习 / 更复杂的特征学习(wide&deep, deepfm等)。我们在为短视频推荐任务选取模型的时候,历史上的升级路线是从最基础的share-bottom开始逐步升级为专家门控算法 mmoe和 ple,一步步优化,让模型给我们找出最符合口味的短视频。

经过如上三轮运算,我们使用同一个短视频数据集(很重要,可比较)训练了三个模型。并对短视频的点赞率和完播率进行了预测。得到的结果如下表所示:

优化经验总结

推荐的业务场景很丰富,我们提供了以下优化思路:

如何确定超参,如expert数和专家模型的实现方案?

实际的expert模型和gate模型都不是固定的,最常见的就是多层FC网络组成的mlp,具体实现可以参考PaddleRec/MMoE。在我们的实践中,当gate网络由一层fc升级为多层fc(gate网络参数增大,expert网络参数减少)时效果有明显提升。

CGC还是ple,和mmoe对比效果怎么样?

实践中单层CGC在相同参数规模下效果普遍要优于mmoe,我们的实践中多层的ple只有在个别场景下会好于CGC,所以很多情况下我们就直接采用CGC升级mmoe。

新加子任务时的热启解决方案?

实践中经常会遇到需要增加任务或者修改模型的情况。实践中尝试过如下解决方案:

完全冷启训练。这种适用于收敛较快,模型改动特别大的场景,尤其是对于sparse部分的修改。
只热启sparse部分(embedding)。这是最常见的方式,直接热启线上训练好的sparse表可以快速收敛,稳定性也更好。
热启sparse部分和部分dense模型。从之前的专家模型参数开始重新收敛并不一定比完全冷启expert专家模型效果更好,有可能会出现局部收敛陷阱,这个需要具体场景下的多组实验对比。

模型部署

我们提供了以下三步的部署流程。

STEP 1:使用save_inference_model接口保存模型

在服务器端使用python部署需要先使用save_inference_model接口保存模型。

STEP 2:动转静导出模型

若您使用动态图训练完成,希望将保存下来的模型转化为静态图inference,那么可以参考我们提供的to_static.py脚本。

STEP 3:使用推理库预测

PaddleRec提供tools/paddle_infer.py脚本,供您方便的使用inference预测库高效的对模型进行预测。

飞桨也提供了完整的项目使用说明、开发文档、数据和代码,可以参考以下范例教程快速学习:

范例教程链接

基于语义标签的短视频推荐 - 飞桨AI Studio

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多任务视频推荐方案,百度工程师实战经验分享 的相关文章

随机推荐

  • c++智能指针——原理与实现

    转子 https www cnblogs com wxquare p 4759020 html 1 智能指针的作用 C 程序设计中使用堆内存是非常频繁的操作 堆内存的申请和释放都由程序员自己管理 程序员自己管理堆内存可以提高了程序的效率 但
  • Mac系统完美安装PHP7详细教程

    使用第三方包homebrew来安装 非常迅速有效 安装教程 1 启动Apache 首先我们启动系统自带的Apache服务 打开Terminal 输入如下指令 开启Apache服务 sudo apachectl start 查看Apache版
  • DCN和DCNv2(可变性卷积)学习笔记(原理代码实现方式)

    DCN和DCNv2 可变性卷积 网上关于两篇文章的详细描述已经很多了 我这里具体的细节就不多讲了 只说一下其中实现起来比较困惑的点 黑体字会讲解 DCNv1解决的问题就是我们常规的图像增强 仿射变换 线性变换加平移 不能解决的多种形式目标变
  • Java的mkdir()与mkdirs()引发的悲剧---关于java的mkdir()方法无法创建文件目录问题

    昨晚深夜在做项目的文件上传 在上传之前要先判断指定的文件目录是否存在 如果不存在就先创建改目录 因为之前已经做过类似的功能了 所以就把判断文件目录以及创建的代码直接copy过来了 然而很郁闷的是 一模一样的代码 这回却遇到一个特别奇葩的问题
  • 【python】CliffWalking悬崖寻路问题

    强化学习 简介 gym库 CliffWalking SARSA Q learning 示例 SARSA Q learning 简介 机器学习 监督学习 非监督学习 强化学习 模仿人类和动物的试错机制进行学习 智能体与环境交互 根据当前的环境
  • 数据结构面试常见问题总结

    数据结构面试常见问题总结 写在前面 本文记录了一些数据结构面试常见问题 本意用于考研复试 以下面试题为网上整理的问题以及自己加入的一些问题 答案仅供参考 Q 数据结构三要素 A 逻辑结构 物理结构 数据运算 Q 数组与链表有什么区别 A 数
  • innovus中常用命令整理

    restoreDesign load 之前的db list property type 列举出相应的属性 get property 得到相应的object的属性 get pin 获取pin get port 获取port ecoRoute
  • 2023开学礼山东财经大学《乡村振兴战略下传统村落文化旅游设计》许少辉新财经图书馆

    2023开学礼山东财经大学 乡村振兴战略下传统村落文化旅游设计 许少辉新财经图书馆
  • adworld攻防世界 reverse asong

    asong 攻防世界 reverse 进阶区 asong 题目文件 https www jianguoyun com p DQ3g5b4QiNbmBxjX fQC 访问密码 AgV9Sh 主要是集中我们常见的处理方式的整合 注意一个对于ou
  • 进程间通信---管道通信

    进程间通信为什么有那么多不同的方法 资源的不同 所以通信的方式不同 想要获取管道资源 就需要用管道来通信 想要获取消息队列资源 就需要用消息队列来通信 如上所示 一个进程就是一个PCB PCB中的file struct有三个默认文件描述符
  • 【转】 如何提高自己的acm个人能力

    转载自 简单de数字 最终编辑 fading code by zfy0701 本来以为HNU的huicpc035和我一样退役了 后来听说他组成了新的footman队 于是又关注了下他 035体现了两个我觉得非常重要的品质 1 刻苦的训练 2
  • vmtools的安装和使用

    介绍 vmtools工具是在虚拟系统和主机系统进行共享文件夹的工具 1 用root用户登录CentOS后删除桌面的光驱 2 点击菜单栏的虚拟机 gt 安装VMwareTools 3 安装结果如下所示 4 打开VMwareTools 复制VM
  • 【python】Something is wrong with the numpy installation

    2020年2月5日 0次阅读 共448个字 0条评论 0人点赞 QueenDekimZ COCO API windows下安装COCO API时 python setup py build ext install 出现报错 ImportEr
  • Unity中UI框架的使用3-主界面中的弹窗和关闭

    效果图 在主页面点击排位赛按钮 就会弹出图2中的一个弹窗 再点击弹窗右上角的关闭按钮 就会关闭弹窗 回到图3的效果 方法 1 将PopUp这个面板添加到UIPanelType cs文件中 并且将其名称和路径添加到UIPanelType js
  • Python高级函数1:使用 map()、reduce()、filter()、zip() 和 enumerate() 简化代码

    Python高级函数1 使用 map reduce filter zip和 enumerate 简化代码 1 原理 1 1 map 函数 1 2 reduce 函数 1 3 filter 函数 1 4 zip 函数 1 5 enumerat
  • 在分布式环境下标准支付流程的梳理

    支付流程图的梳理 https www processon com diagraming 61a18a895653bb136f893ecc 提交订单 当用户点击立即购买或者提交订单的这个时候数据库就会记录一笔订单 此项业务主要是用到了rabb
  • Android 设置ListView不可滚动 及在ScrollView中不可滚动的设置

    转载请注明出处 http blog csdn net androiddevelop article details 38815493 希望得到的效果是ListView不能滚动 但是最大的问题在与ListView Item还必有点击事件 如果
  • 2023华为OD机试真题【区间交叠/贪心算法】【Python Java C++】

    题目描述 给定坐标轴上的一组线段 线段的起点和终点均为整数并且长度不小于1 请你从中找到最少数量的线段 这些线段可以覆盖住所有线段 输入描述 第一行输入为所有线段的数量 不超过10000 后面每行表示一条线段 格式为 x y x和y 分别表
  • vscode因网络下载失败的问题

    复制出失败的下载链接 https az764295 vo msecnd net stable d045a5eda657f4d7b676dedbfa7aab8207f8a075 VSCodeUserSetup x64 1 72 2 exe 将
  • 多任务视频推荐方案,百度工程师实战经验分享

    推荐系统的应用场景非常广泛 比如非常火爆的短视频推荐 电商平台商品推荐 搜索推荐等 但是你知道吗 短视频APP在向你展示一个你感兴趣的视频之前 通常既要预测你对这个视频是否感兴趣 又要预测你会看多久 点赞还是不点赞 会不会偷偷收藏起来下次接