当前位置:网站首页>多任务视频推荐方案,百度工程师实战经验分享
多任务视频推荐方案,百度工程师实战经验分享
2022-06-24 03:46:00 【飞桨PaddlePaddle】
推荐系统的应用场景非常广泛,比如非常火爆的短视频推荐、电商平台商品推荐、搜索推荐等。但是你知道吗?短视频APP在向你展示一个你感兴趣的视频之前,通常既要预测你对这个视频是否感兴趣,又要预测你会看多久,点赞还是不点赞,会不会偷偷收藏起来下次接着看。只有在多个维度都得到正向反馈时,短视频APP才会将这个视频推送到您的手机上。但是问题又来了,有这么多个想要预测的信息维度,如果将每种指标都看做一个任务,每个任务都搞一个模型来学,那花费的线上资源将是非常昂贵的。这个时候,多任务模型就应运而生,一个模型多任务学习即可全搞定。
本次产业实践范例介绍如何使用飞桨大规模推荐算法库PaddleRec ,以短视频推荐场景为例,提供多任务技术的推荐应用解决方案。此项技术也可以在商品推荐、信息流推荐、搜索等场景应用,至此,我们已经完成了20+公司内项目的落地。我们提供了从数据准备、模型训练及优化的全流程可复用方案,降低产业落地门槛。
点击GET项目链接
https://github.com/PaddlePaddle/PaddleRec/tree/master/application/multitask_on_video
所有源码及教程均已开源,欢迎大家使用,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预测库高效的对模型进行预测。
飞桨也提供了完整的项目使用说明、开发文档、数据和代码,可以参考以下范例教程快速学习:
范例教程链接
https://aistudio.baidu.com/aistudio/projectdetail/4180842
如果想了解更详细方案细节,欢迎关注我们的直播课程,手把手全流程教学等你围观。
飞桨产业实践范例 助力企业跨越AI落地鸿沟
飞桨产业实践范例,致力于加速AI在产业落地的前进路径,减少理论技术与产业应用的差距。范例来源于产业真实业务场景,通过完整的代码实现,提供从数据准备到模型部署的方案过程解析,堪称产业落地的“自动导航”。
真实产业场景:与实际具有AI应用的企业合作共建,选取企业高频需求的AI应用场景如智慧城市-安全帽检测、智能制造-表计读数等;
完整代码实现:提供可一键运行的代码,在“AI Studio一站式开发平台”上使用免费算力一键Notebook运行;
详细过程解析:深度解析从数据准备和处理、模型选择、模型优化和部署的AI落地全流程,共享可复用的模型调参和优化经验;
直达项目落地:百度高工手把手教用户进行全流程代码实践,轻松直达项目POC阶段。
精彩课程预告
为了让小伙伴们更便捷地应用多任务视频推荐范例教程,百度高级研发工程师为大家深度解析从数据准备、方案设计到模型优化部署的开发全流程,手把手教大家进行代码实践。
关注飞桨公众号加入技术交流群
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~
本文同步分享在 博客“飞桨PaddlePaddle”(CSDN)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
边栏推荐
- Maintain the visibility of data automation: logging, auditing and error handling of the bridge of knowledge and action
- ModStartCMS 主题入门开发教程
- "." in the structure of C language And "- & gt;" Differences between
- A Tencent interview question
- How to set up a web server what is the price of the server
- What is a virtual host server? What are the advantages?
- 左滑从小窗到大窗口DispatchFrameLayout
- Record the creation process of a joke widget (II)
- [Numpy] Numpy对于NaN值的判断
- Prometheus PushGateway 碎碎念
猜你喜欢

ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计

Idea 1 of SQL injection bypassing the security dog

Black hat SEO actual combat search engine snapshot hijacking

618 promotion: mobile phone brand "immortal fight", high-end market "who dominates the ups and downs"?

元气森林推“有矿”,农夫山泉们跟着“卷”?
Thank you for your recognition! One thank-you note after another

一次 MySQL 误操作导致的事故,「高可用」都顶不住了!

Halcon knowledge: contour operator on region (2)
![[numpy] numpy's judgment on Nan value](/img/aa/dc75a86bbb9f5a235b1baf5f3495ff.png)
[numpy] numpy's judgment on Nan value

老弹出explorer.exe遇到问题已停止工作,怎么办?
随机推荐
618大促:手机品牌“神仙打架”,高端市场“谁主沉浮”?
Clickhouse synchronous asynchronous executor
Idea 1 of SQL injection bypassing the security dog
13. Tencent cloud IOT device side learning - data template function and Implementation
The collection method of penetration test, and which methods can be used to find the real IP
你了解TLS协议吗?
Exploration of web application component automatic discovery
Gaussian beam and its matlab simulation
左滑从小窗到大窗口DispatchFrameLayout
An open source monitoring data collector that can monitor everything
Do you understand TLS protocol?
What is a 1U server? What industries can 1U servers be used in?
Iguard6.0 - appropriate website protection system
Configuration process of easygbs access to law enforcement recorder
Hprof information in koom shark with memory leak
TCP three handshakes and four waves
On game safety (I)
[numpy] numpy's judgment on Nan value
Flutter series: offstage in flutter
Unable to access the CVM self built container outside the TKE cluster pod