写点什么

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

2019 年 11 月 28 日

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:00494

评论

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

甲方日常 36

句子

工作 随笔杂谈 日常

【得物技术】谈谈缓存的一二三四五

得物技术

缓存 架构 技术 缓存穿透 缓存击穿

分布式文件存储数据库 MongoDB

哈喽沃德先生

数据库 nosql mongodb mongo 非关系型数据库

Week 4学习总结

balsamspear

极客大学架构师训练营

Docker架构

混沌畅想

Docker 容器 Docker架构

一份超级完整实用的PyCharm图解教程,8K字赶紧收藏起来

计算机与AI

Python IDLE 开发环境

Scikit-Learn中的特征排名与递归特征消除

计算机与AI

学习 数据科学 特征选择 降维 scikit-learn

Java中的5大队列,你知道几个?

王磊

Java

架构师训练营第2期 第1周 作业二:学习总结.md

老坛酸菜

epoll服务器解析

菜鸟小sailor 🐕

week04 作业

xxx

分布式缓存架构,消息队列,负载均衡

garlic

极客大学架构师训练营

如果只推荐一本 Python 书,我要 Pick 它!

Python猫

Python 学习 编程 程序员 码农

Week 4命题作业

balsamspear

极客大学架构师训练营

C/C++最佳实践

jiangling500

c c++ 最佳实践

一文带你读懂 Swift 社区最新开源的算法库

镜画者

ios swift 算法 apple

服了,这款开源类库可以帮你简化每一行代码

沉默王二

Java GitHub 后端 hutool

编码之路,与君共勉

yes的练级攻略

程序人生

架构师训练营第2期 第1周 作业一:食堂就餐卡系统设计

老坛酸菜

App场景下投放外链时如何做设备识别和采集(1)

DeeperMan

采集 流量

6小时搞定云原生:从基础概念到上手实践

京东科技开发者

云原生

架构作业:一致性hash

Nick~毓

week04总结

xxx

Linux内核系统结构

林昱榕

Linux 操作系统 内核 系统调用 操作系统结构

java安全编码指南之:线程安全规则

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范 java代码安全

spring-boot-route(二十三)开发微信公众号

Java旅途

Java Spring Boot

数字货币交易所开发功能方案,交易所平台搭建app

WX13823153201

数字货币交易所开发

一文读懂线程池的工作原理(故事白话文)

捡田螺的小男孩

Java 面试 线程池 线程池工作原理

c++bind函数使用

良知犹存

c++

一文搞懂ReactNative生命周期的进化

凌宇之蓝

react.js 面试 大前端 React Native

「架构师训练营」第 1 周作业 - 食堂就餐卡系统设计

小黄鱼

极客大学架构师训练营

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

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