写点什么

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

  • 2022 年 6 月 20 日
  • 本文字数:1681 字

    阅读完需:约 6 分钟

推荐系统的应用场景非常广泛,比如非常火爆的短视频推荐、电商平台商品推荐、搜索推荐等。但是你知道吗?短视频 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

用户头像

关注百度开发者中心,收获一手技术干货。 2018.11.12 加入

汇聚百度所有对外开放技术、平台和服务资源,提供全方位支持,助力开发者加速成功,实现开发者、消费者和百度三方共赢。https://developer.baidu.com/

评论

发布
暂无评论
多任务视频推荐方案,百度工程师实战经验分享_百度开发者中心_InfoQ写作社区