[阿里]基于多任务学习的CVR预估模型ESM2
今天介绍的文章名称是《Conversion Rate Prediction via Post-Click Behaviour Modeling》
论文下载地址为:https://arxiv.org/abs/1910.07099
在本系列的第十九篇文章中,我们已经介绍过一种基于多任务学习的CVR预估模型ESMM,同样是阿里发表的论文。本文可以看作是ESMM的升级版,一起来学习一下吧。
1、背景
一个包含推荐系统、用户行为的完整电商推荐流程如下图所示:
主要分为两个部分,一是推荐阶段,二是用户行为阶段。推荐阶段大都分为召回和精排两部分,精排之后有时候会通过一些规则进行打散,然后展示给用户。用户看到推荐的物品,称作Impression(可翻译为曝光),用户看到自己感兴趣的物品,会Click(点击),如果觉得还不错,会Buy(购买)。因此用户行为阶段的一般过程是Impression - Click - Buy。
此时我们就会有两个主要的概念:CTR和CVR,同时这两个指标也是电商推荐系统所要预估的重点部分。CTR是曝光到点击的概率,而CVR是点击到购买的概率。
传统的CVR预估问题存在两个主要的问题,一是样本选择偏差(sample selection bias,SSB),二是数据稀疏(data sparsity,DS),如下图所示:
样本选择偏差(sample selection bias,SSB):假设把给用户曝光过的产品看作是整个样本空间X,用户点击过的产品仅是中间的部分,定义为Xc。传统的推荐系统仅用Xc中的样本来训练CVR预估模型,但训练好的模型是在整个样本空间X去做推断的。由于点击事件相对于曝光事件来说要少很多,因此只是样本空间X的一个很小的子集,从Xc上提取的特征相对于从X中提取的特征而言是有偏的,甚至是很不相同。从而,按这种方法构建的训练样本集相当于是从一个与真实分布不一致的分布中采样得到的,这一定程度上违背了机器学习中独立同分布的假设。这种训练样本从整体样本空间的一个较小子集中提取,而训练得到的模型却需要对整个样本空间中的样本做推断预测的现象称之为样本选择偏差。样本选择偏差会伤害学到的模型的泛化性能。
数据稀疏(data sparsity,DS):推荐系统展现给用户的商品数量要远远大于被用户点击的商品数量,同时有点击行为的用户也仅仅只占所有用户的一小部分,因此有点击行为的样本空间Xc相对于整个样本空间X来说是很小的,通常来讲,量级要少1~3个数量级。这就是所谓的训练数据稀疏的问题,高度稀疏的训练数据使得模型的学习变得相当困难。
为解决上述两个问题,阿里曾经发表过多任务学习模型ESMM,简单回顾一下:
ESMM中有两个子网络,二者共享Embedding部分,分别输出CTR预估值pCTR和CVR预估值pCVR。Loss分为两部分,一是CTR预估带来的loss,二是pCTCVR(pCTR * pCVR)带来的loss。这样就可以在整个样本空间上训练CVR预估模型。
但是对于CVR预估来说,ESMM模型仍然面临一定的样本稀疏问题,毕竟从点击到购买的样本非常少。但挖掘用户行为,发现用户在购买前往往会有其他的行为,比如把想要购买的物品加入购物车或者心愿单。如下图所示:
加入心愿单/购物车的数据相较购买数据还是比较多的,因此可以基于这部分数据,通过多任务学习模型来求解CVR模型。如图所示,文中把加入购物车或者心愿单此类行为称作Deterministic Action (DAction) ,而其他对购买相关性不是很大的行为称作Other Action(OAction) 。此时原来的 Impression→Click→Buy过程变成了更加丰富的Impression→Click→DAction/OAction→Buy过程。
本文提出的模型基于Impression→Click→DAction/OAction→Buy过程来建模CVR预估问题,称作Elaborated Entire Space Supervised Multi-task Model(ESM2),一起来看下吧。
2、ESM2模型介绍
2.1 模型整体架构
模型整体架构如下:
可以看到,一共有四个任务,分别是:
Y1:点击率
Y2:点击到发生DAction的概率
Y3:发生DAction到购买的概率
Y4:发生OAction到购买的概率
这里好像少了一个从点击到OAction的概率,这是因为DAction和OAction是对立事件。
因此,此时CVR = (1 - Y2) * Y4 + Y2 * Y3
2.2 模型细节
上述的四个子任务,其用的样本相同的,在整个样本空间中进行训练。其输入首先经过共享嵌入模块(Shared Embedding Module (SEM))转换为对应的嵌入向量,随后通过四个独立的神经网络分别预估Y1、Y2、Y3和Y4。
2.3 损失函数
既然是在整个样本空间上的学习,那么计算的损失必须是从Impression开始的,那么计算损失首先需要计算下面三个部分:
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],由四个网络的输出共同得到。
随后通过三个logloss分别计算三个部分的损失:
而完整的损失函数由三部分加权得到:
而在预测时,只需要经过后三个网络,便可以计算对应的CVR。
3、实验结果
本文对比了几个模型在CVR预估上的效果:
GBDT
DNN使用Click→Buy的样本来训练CVR模型,使用Impression→Click的样本来训练CTR模型
DNN-OS,对Click→Buy的样本进行过采样,其他同DNN
ESMM
ESM2
评价指标包括AUC和GAUC,GAUC是对每个用户的AUC进行加权的结果:
实验结果表明本文提出的ESM2模型在CVR预估上表现较为突出:
好了,本文介绍就到这里,其他的实验结果以及模型的一些细节,大伙可以阅读原论文。
[阿里]基于多任务学习的CVR预估模型ESM2相关推荐
- CIKM 2021 | AutoHERI: 基于层次表示自动聚合的 CVR 预估模型
本文主要介绍阿里妈妈大外投广告算法团队在 CVR 预估模型与多任务学习方法上的一些探索.我们提出了一种基于层次表示自动聚合的 AutoHERI 模型(Automated Hierarchical Re ...
- 推荐系统模型之: 基于层次表示自动聚合的 CVR 预估模型
猜你喜欢 0.某视频APP推荐策略和推荐算法详解 1.如何搭建一套个性化推荐系统? 2.内容推荐策略产品经理的方法与实践 3.京东推荐算法精排技术实践 4.微博推荐算法实践与机器学习平台演进 5.腾讯 ...
- 阿里CVR预估模型之ESMM
本文介绍 阿里妈妈团队 发表在 SIGIR'2018 的论文<Entire Space Multi-Task Model: An Effective Approach for Estimating ...
- 基于多任务学习和负反馈的深度召回模型
简介:召回结果的好坏对整个推荐结果有着至关重要的影响,最近的一系列实践和研究表明,基于行为序列的深度学习推荐模型搭配高性能的近似检索算法可以实现既准又快的召回性能:与此同时,用户在天猫精灵上还可以进行 ...
- MTL-FFDET:基于多任务学习的森林火灾探测模型
1.文章信息 本次介绍的文章是2022年南京林业大学和国外团队共同发表的一篇基于计算机视觉的火灾检测文章.文章的题目为<MTL-FFDET: A Multi-Task Learning-Base ...
- 阿里妈妈2018的ESMM(CVR预估)
阿里CVR预估模型之ESMM 和Multi-Task-Learning框架,和迁移学习,扯上关系,高大上了. 一.Motivation 不同于CTR预估问题,CVR预估面临两个关键问题: Sample ...
- 前深度学习时代CTR预估模型的演化之路:从LR到FFM\n
本文是王喆在 AI 前线 开设的原创技术专栏"深度学习 CTR 预估模型实践"的第二篇文章(以下"深度学习 CTR 预估模型实践"简称"深度 CTR ...
- 前深度学习时代CTR预估模型的演化之路 [王喆观点]
毕业于清华大学计算机系的王喆学长梳理从传统机器学习时代到深度学习时代所有经典CTR(click through rate)模型的演化关系和模型特点.内容来源:https://zhuanlan.zhih ...
- 基于在线学习行为的评价模型的设计与实现
基于在线学习行为的评价模型的设计与实现 1.评估模型的需求分析 学习评价是学习者在学习过程中非常重要的部分,但因为在线学习和传统学习方式在学习环境.方式上的区别,所以在传统方式中的评价模式不太适用于在 ...
最新文章
- SpringMVC异常报406 (Not Acceptable)的解决办法
- Android之内存管理-内存监测-内存优化
- 二叉树题目----2 检查两颗树是否相同 和 对称二叉树的判定
- 获取redis中以某些字符串为前缀的KEY列表
- 网站服务器空间选择,网站服务器空间选择
- XJOI 3281 A * B Problem again 题解
- 实验一 线性表的顺序存储与实现_线性表的存储结构(java)
- 管网平差c语言编程,给水管网平差计算步骤
- 爬虫【11】易班刷网薪系统
- ASP.NET 实现快递单的打印及套打
- linux修复磁盘坏道
- YOLO V1 论文精讲
- 如何在阿里云服务器构建discuz论坛(快速lamp架构)
- 2018-2019-2 20175317 实验三《敏捷开发与XP实践》实验报告
- 解码Base64并展示图片
- ERP系统软件在国家电网公司中的应用
- 【碎碎念】今天服务器又down了……
- myeclipse重新编译java,反编译class文件并重新编译的方法
- 服务器上批量将.mp4格式的视频转化成.m3u8的shell脚本
- drwtsn32.exe
热门文章
- java虚拟机内存空间
- (*长期更新)软考网络工程师学习笔记——Section 18 计算机硬件基本知识
- 设置vmware vsphere web client_Arduino+前端高级应用-通过WEB网页控制Arduino开发板上的LED灯...
- python 定义变量怎么定义_python变量定义和定义规范
- Linux buff/cache和清理占用过高
- 怎么在php项目安装tp5框架,框架安装与基本配置
- 虚拟串口工具Virtual Serial Port Driver(VSPD)
- inventor如何钣金出弧面_SolidWorks如何在钣金弧面上雕刻公司名字?原来如此简单...
- python怎样遍历列表中数字_关于Python列表的遍历和数字列表
- cognos安装教程linux,linux环境下安装cognos10.2.1(菜鸟安装)