写点什么

Multi-task 多任务学习在推荐算法中应用 (2)

  • 2019-11-28
  • 本文字数:1614 字

    阅读完需:约 5 分钟

Multi-task多任务学习在推荐算法中应用(2)

1. 阿里 ESM2:Conversion Rate Prediction via Post-Click Behaviour Modeling

我们之前介绍过一种基于多任务学习的 CVR 预估模型 ESMM,简单回顾下:



ESMM 中有两个子网络,分别是 Main Task 用于预估 CVR 值,Auxiliary Tasks 用于预估 CTR 值。二个网络共享 Embedding 部分。Loss 分为两部分,一是 CTR 预估带来的 loss,二是 pCTCVR(pCTR * pCVR)带来的 loss。CTCVR 是从 impression 到 buy,CTR 是从 impression 到 click,所以 CTR 和 CTCVR 都可以从整个 impression 样本空间进行训练,一定程度的消除了样本选择偏差。


但对于 CVR 预估来说,ESMM 模型仍面临一定的样本稀疏问题,因为 click 到 buy 的样本非常少。但是其实一个用户在购买某个商品之前往往会有其他的行为,比如把加购物车或者心愿单。如下图所示:



如上图所示,文中把加购物车或者心愿单的行为称作 Deterministic Action (DAction) ,而其他对购买相关性不是很大的行为称作 Other Action(OAction) 。那原来的 Impression→Click→Buy 购物过程就变为 Impression→Click→DAction/OAction→Buy 过程。


ESM2 模型结构:



那么该模型的多个任务分别是:Y1:点击率 Y2:点击到 DAction 的概率 Y3:DAction 到购买的概率 Y4:OAction 到购买的概率


并且从上图也可以看出,模型一共有 3 个 loss,计算过程分别是:


pCTR:Impression→Click 的概率是第一个网络的输出。


pCTAVR:Impression→Click→DAction 的概率,pCTAVR = Y1 * Y2,由前两个网络的输出结果相乘得到。


pCTCVR:Impression→Click→DAction/OAction→Buy 的概率,pCTCVR = CTR * CVR = Y1 * [(1 - Y2) * Y4 + Y2 * Y3],由四个网络的输出共同得到。其中 CVR=(1 - Y2) * Y4 + Y2 * Y3。是因为从点击到 DAction 和点击到 OAction 是对立事件。


随后通过三个 logloss 分别计算三部分的损失:



最终损失函数由三部分加权得到:



2. YouTube:Recommending What Video to Watch Next: A Multitask Ranking System


1)视频推荐中的多任务目标,比如不仅需要预测用户是否会观看外,还希望去预测用户对于视频的评分,是否会关注该视频的上传者,否会分享到社交平台等。


2)偏置信息。比如用户是否会点击和观看某个视频,并不一定是因为他喜欢,可能仅仅是因为它排在推荐页的最前面,这就会导致训练数据产生位置偏置的问题。


模型结构:



从上图可知,整个模型分为预测两大类目标,分别是:


engagement objectives:主要预测用户点击和观看视频的时长。其中通过二分类模型来预测用户的点击行为,而通过回归模型来预测用户观看视频的时长。


satisfaction objectives:主要预测用户在观看视频后的反馈。其中使用二分类模型来预测用户是否会点击喜欢该视频,而通过回归模型来预测用户对于视频的评分。


模型中有两个比较重要的结构:Multi-gate Mixture-of-Experts (MMoE)和消除位置偏置的 shallow tower。


MMoE 的结构为:



shallow tower 的结构为:



通过一个 shallow tower 来预测位置偏置信息,输入的特征主要是一些和位置偏置相关的特征,输出的是关于 selection bias 的 logits 值。然后将该输出值加到子任务模型中最后 sigmoid 层前,在预测阶段,不考虑 shallow tower 的结果。值得注意的是,位置偏置信息主要体现在 CTR 预估中,而预测用户观看视频是否会点击喜欢或者用户对视频的评分这些任务,是不需要加入位置偏置信息的。

3. 知乎推荐页 Ranking 模型

多目标模型,预测的任务包括点击率、收藏率、点赞率、评论率等等,共设计 8 个目标。从性能方面的考虑,我们将底层 embedding 权重设置成共享的, 最后一层根据不同的目标进行加权训练。


  1. 美图推荐排序多任务

  2. 模型结构:



参考文献:


https://arxiv.org/abs/1910.07099


https://www.jianshu.com/p/c06e9ed08dd1


https://www.jianshu.com/p/2f3dbbfc16a6


https://www.infoq.cn/article/g95hu67a4WheikGu*w9K


https://www.jiqizhixin.com/articles


本文转载自 Alex-zhai 知乎账号。


原文链接:https://zhuanlan.zhihu.com/p/91285359


2019-11-28 08:001647

评论

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

终于拿到了爆火全网的进一线大厂程序员必看的1700道java面试题

Java java面试 Java八股文 Java面试题 Java面试八股文

ES6中的Proxy

格斗家不爱在外太空沉思

JavaScript ES6 三周年连更

Java的访问修饰符

Java你猿哥

Java oop SSM框架

MySQL索引15连问,你扛得住吗?

Java MySQL 数据库 索引

劲爆!阿里巴巴面试参考指南(嵩山版)开源,程序员面试必刷

Java 程序员 面试

阿里巴巴灵魂一问:说说触发HashMap死循环根因

会踢球的程序源

hashmap Java1

京东面试题:说说synchronized和volatile的区别

Java volatile JMM synchronized

好用的pdf格式转换器:PDF to Word Document Converter 激活版

真大的脸盆

Mac PDF Mac 软件 PDF格式转换

2023最NB的JVM基础到调优笔记,光图文就超清晰,吃透阿里P6小case

Java你猿哥

Java JVM Java虚拟机 jvm调优

终于拿到了阿里技术专家分享的552页大型网站架构实战文档

Java 架构 网站架构

硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K

Java java面试 Java八股文 Java面试题 Java面试八股文

FastDFS收藏起来,现在开始用Minio吧

会踢球的程序源

Java fastdfs

CNStack 云服务&云组件:打造丰富的云原生技术中台生态

阿里巴巴云原生

阿里云 云原生 CNStack

带你浅谈下Quartz的简单使用

Java你猿哥

Java SSM框架 quartz

2023年超全前端面试题-背完稳稳拿offer(欢迎补充)

肥晨

三周年连更

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

亚马逊云科技 (Amazon Web Services)

Spring 事务及传播机制原理详解

Java spring 事务

霸榜Github三个月的「架构师成长手册」!成为架构师竟然也有捷径

Java你猿哥

Java 分布式 架构设计 架构师 SSM框架

面试官:类是如何加载的?

如果有一天当你的Redis 内存满了,该怎么办?

会踢球的程序源

Java redis 后端

从初学者角度聊一聊socket到底是什么?

会踢球的程序源

Java 后端 socket

让算力普惠、释放技术红利,阿里云让开发者成为创新主体

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

SpringBoot中如何解决Redis的缓存穿透、缓存击穿、缓存雪崩?

我给大家免费公开五份阿里Java架构师学习手册!助力金三银四

Java你猿哥

Java 架构 算法 高并发 Java性能调优

多线程&高并发(全网最新:面试题+导图+笔记)面试手稳心不慌

Java你猿哥

Java 多线程 面试题 高并发 多线程与高并发

限时开源!阿里京东架构师出品亿级高并发系统设计手册

会踢球的程序源

Java 架构 后端 java架构师

WebGPU 令人兴奋的 Web 发展

devpoint

WebGL webgpu #WebGPU 三周年连更

测试需要写测试用例吗?

老张

软件测试 质量保障 测试用例

工赋开发者社区 | MES/MOM数据采集系统需求分析和总体设计

工赋开发者社区

分布式事务的21种武器 - 1

俞凡

架构

Multi-task多任务学习在推荐算法中应用(2)_文化 & 方法_Alex-zhai_InfoQ精选文章