多任务视频推荐方案,百度工程师实战经验分享
推荐系统的应用场景非常广泛,比如非常火爆的短视频推荐、电商平台商品推荐、搜索推荐等。但是你知道吗?短视频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
多任务视频推荐方案,百度工程师实战经验分享相关推荐
- Spring Cloud在云计算SaaS中的实战经验分享
摘要 云帐房CTO张英磊基于自己的个人经验,分享Spring Cloud在云计算SaaS中的实战经验,希望能为大家带来一些思路上的帮助. 内容来源:2017年5月6日,云帐房CTO张英磊在" ...
- MongoDB实战经验分享
2019独角兽企业重金招聘Python工程师标准>>> 转自: http://www.cnblogs.com/ymind/archive/2012/04/25/2470551.htm ...
- 网站服务器和seo,网站更换服务器而不影响SEO的两个关键因素【实战经验分享】...
本文信息本文由方法SEO顾问发表于2015-03-1700:00:48,共 1726 字,转载请注明:网站更换服务器而不影响SEO的两个关键因素[实战经验分享]_[方法SEO顾问],如果我网站的文章对 ...
- 【实战经验分享】一劳永逸的解决网线随意热插拔问题
[实战经验分享]一劳永逸的解决网线随意热插拔问题 参考文章: (1)[实战经验分享]一劳永逸的解决网线随意热插拔问题 (2)https://www.cnblogs.com/armfly/p/11818 ...
- 【线上直播】深度学习简介与落地实战经验分享
分享嘉宾: 嘉宾简介: 郑泽宇,知衣科技联合创始人兼CEO,美国Carnegie Mellon University(CMU)硕士,畅销书<TensorFlow:实战Google深度学习框架&g ...
- RabbitMQ实战经验分享
RabbitMQ实战经验分享 原文:RabbitMQ实战经验分享 前言 最近在忙一个高考项目,看着系统顺利完成了这次高考,终于可以松口气了.看到那些即将参加高考的学生,也想起当年高三的自己. 下面分享 ...
- 应用交付工程师Troubleshooting经验分享2
本文接续之前的文章:应用交付工程师Troubleshooting经验分享 前面讲述了设备登录管理以及可能遇到的网络问题,下面继续讲述4-7层配置及调试中可能遇到的问题: (一)服务器负载均衡 1. ...
- 基金知识汇总和实战经验分享
基金知识汇总和实战经验分享 分享一份基金知识给大家,同时分享下个人观点: 引用PMP项目风险管理的经验,无论是玩基金还是股票都要清晰明确的认识到自身的风险承受力,通俗一点就是你最多能接受你投入的本钱亏 ...
- IT实施计划实战经验分享:避免失败
我们在之前文章<IT实施计划实战经验分享:如何制定>中描述了如何针对企业新的业务项目制定高质量的IT实施计划,例如首先针对新应用的设计和发布开发成熟的模式和方法论来实施标准化的流程等等.本 ...
最新文章
- Android IOC模块,利用了Java反射和Java注解
- 高并发架构系列:如何从0到1设计一个MQ消息队列
- lstm原理_Mamp;DL | LSTM:遗忘门、记忆门、输出门
- Oracle对象之序列
- 信息系统项目管理师论文范文-风险管理
- 关于setTimeout
- 最浅显易懂的 SAPGUI 里 ABAP 调试器的使用方法介绍
- Windows平台下动态链接库的总结
- python使用print不换行
- JavaScript 4行代码找出重复出现次数最多的元素及次数
- 不同应用系统之间数据交互的几种方式
- Gogs代码托管系统安装配置手册
- 非参数统计的Python实现—— HL 检验
- UITextView使用与YYlabel使用比较
- 大数据系列 | 阿里云datav数据可视化(使用json文件生成可视化动态图标)
- 人机平台:商业未来行动路线图
- JavaScript:实现返回格式化的电话号码的字符串算法(附完整源码)
- python cv2 轮廓的包络 面积_Python科学计算——检包络与去包络
- 二维码扫描+长按识别二维码demo
- Mybatis如何实现分页