0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于CVR建模的多任务联合学习训练方法——ESMM

深度学习自然语言处理 来源:深度学习自然语言处理 作者:阿泽 2020-08-27 16:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:阿泽(阿泽的学习笔记)

本文介绍阿里妈妈广告算法团队发表于 2018 年 SIGIR 一篇论文《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》。

传统的 CVR 通常会面临样本选择偏差数据稀疏两大的问题,从而使得模型训练变得相当困难。本文作者提出 ESMM 算法,通过定义新型多任务联合训练的方式,以全新的视角对 CVR 进行建模。

通过淘宝推荐系统的实验表明,ESMM 的性能明显优于其他算法。

看到这里,大家可能有很多疑问:

CVR 预估任务中,样本选择偏差是什么问题?

ESMM 是怎样多任务训练的,又是如何联合训练的?

带着问题,我们来阅读以下内容。

Introduction

post-click conversion rate 翻译过来就是:点击后转化率,也就是说 CVR 是建立在用户点击的基础上的进行的。

作者将用户的行为简化为:曝光->点击->转换三个步骤,三者的区别如下图所示:

传统的 CVR 任务中,工程师通常将以点击未购买的样本作为负样本,而点击购买的样本作为正样本,并以此训练模型,将其部署到线上使用。

但这样的训练方式有一个问题,模型是针对点击的商品进行训练的,而线上数据集大部分都是未点击的,此时便会出现样本选择偏差(sample selection bias,SSB) 的问题。

此外,点击商品本身就非常少,所以通过这种方式构建的数据集还会面临数据稀疏(data sparsity,DS) 的问题。

SSB 问题会影响模型的泛化性能,而 DS 问题会影响模型的拟合。

现有的一些研究试图去解决这些问题,比如说:建立基于不同特征的分层估计器,并将其与 LR 模型相结合来解决 DS 问题,或者利用对未曝光未点击的样本做采样来缓解 SSB 问题。这些策略在一定程度上可以消除 SSB 和 DS 问题,但都显得不够优雅,并且也都不能真正解决 CVR 建模中的问题。

上述策略的一大关键在于没有考虑到 CTR 和 CVR 的顺序动作信息,而阿里妈妈的同学通过充分利用用户操作的顺序性提出了 ESMM 算法,该方法能够同时解决 SSB 和 DS 问题。

ESMM 中引入了两个辅助任务,分别是 CTR 和点击后转换的 CTCVR 任务。ESMM 并不是直接使用曝光样本来训练 CVR,而是利用 的关系,CTCVR 和 CTR 都可以通过曝光的样本进行训练,而 CVR 作为中间变量可以由 CTR 和 CTCVR 估算得到。因此,通过这种方法算出的 CVR 也适用于整个样本空间(与线上分布一致),这便解决了 SSB 问题。此外,CVR 和 CTR 共享网络表征,由于后者的训练样本更多,所以也可以减轻 DS 问题。

ESMM

接下来,我们来看 ESMM 的具体做法。

我们将上面的式子写具体,对于给定的曝光样本 x,我们可以得到 CTCVR 的概率:

基于这种关系,我们联合 Embedding 和 MLP 网络设计了 ESMM 架构:

ESMM 借鉴多任务学习的思想,将模型分为左右两个模块,左边是我们需要的 CVR 模块,右边是 CTR 和 CTCVR 辅助训练模块,恰当的引入了用户操作的顺序性,同时消除了 CVR 建模出现的两个问题。

值得注意的是,CVR 和 CTR 任务采用相同的特征输入并共享 Embedding Layer,CTR 任务中由于具有大量训练样本,可以对模型进行充分训练,这种参数共享的方式,可以降低数据稀疏带来的影响。

另外,pCVR 只是一个中间变量,受到上面公式的约束,而 pCTR 和 pCTCVR 才是 ESMM 中实际训练的主要因素。(可以这样理解,CVR 模型是没有监督信号的,而 CTR 和 CTCVR 都是有监督信号的,最后利用公式约束得到 CVR 模型。)

所以,对于给定曝光的样本,我们同时可以得到 CVR、CTR 和 CTCVR。

可能有同学会有疑问,为什么要通过公式进行约束,而不直接通过 pCTCVR/pCTR 来得到 pCVR。作者也做了这样的实验,但是结果并不好,主要原因在于 pCTR 通常非常小,除以一个非常小的数会引起数值不稳定,所以 ESMM 采用了乘法公式进行约束,而不是直接通过除法得到结果。

我们来看下 ESMM 的损失函数,由具有监督信息的 CVR 和 CTCVR 任务组成:

其中, 和 分别是 CTR 和 CVR 网络的参数; 为交叉熵损失函数。

Experiments

来看一下实验部分:

所有数据集是从淘宝日志中整理抽取出来的生产环境的数据集(Product Dataset),并且从中进行随机采样(1%)作为公共数据集(Public Dataset),同时也开源了这部分公共数据集。两个数据集的信息如下所示:

下图为不同模型在公共数据集中的表现:

其中 ESMM-NS 为 ESMM 的精简版,没有 Embedding Layer 的参数共享。

可以看到两个版本的 ESMM 在不同任务下的效果都取得了 SOTA 的成绩。

再看一下不同模型在生产数据集上的表现:

ESMM 模型在不同大小的数据集上都是处于领先地位的。

Code

放上 ESMM 的核心代码:

 1#-*-coding:UTF-8-*-
 2importtensorflowastf
 3fromtensorflow.python.estimator.cannedimportheadashead_lib
 4fromtensorflow.python.ops.lossesimportlosses
 5
 6defbuild_deep_layers(net,params):
 7#构建隐藏层
 8fornum_hidden_unitsinparams['hidden_units']:
 9net=tf.layers.dense(net,units=num_hidden_units,activation=tf.nn.relu,
10kernel_initializer=tf.glorot_uniform_initializer())
11returnnet
12
13defesmm_model_fn(features,labels,mode,params):
14net=tf.feature_column.input_layer(features,params['feature_columns'])
15last_ctr_layer=build_deep_layers(net,params)
16last_cvr_layer=build_deep_layers(net,params)
17
18head=head_lib._binary_logistic_or_multi_class_head(
19n_classes=2,weight_column=None,label_vocabulary=None,loss_reduction=losses.Reduction.SUM)
20ctr_logits=tf.layers.dense(last_ctr_layer,units=head.logits_dimension,
21kernel_initializer=tf.glorot_uniform_initializer())
22cvr_logits=tf.layers.dense(last_cvr_layer,units=head.logits_dimension,
23kernel_initializer=tf.glorot_uniform_initializer())
24#核心思想在这里:
25ctr_preds=tf.sigmoid(ctr_logits)
26cvr_preds=tf.sigmoid(cvr_logits)
27ctcvr_preds=tf.multiply(ctr_preds,cvr_preds)
28optimizer=tf.train.AdagradOptimizer(learning_rate=params['learning_rate'])
29ctr_label=labels['ctr_label']
30cvr_label=labels['cvr_label']
31
32user_id=features['user_id']
33click_label=features['label']
34conversion_label=features['is_conversion']
35
36
37ifmode==tf.estimator.ModeKeys.PREDICT:
38predictions={
39'ctr_preds':ctr_preds,
40'cvr_preds':cvr_preds,
41'ctcvr_preds':ctcvr_preds,
42'user_id':user_id,
43'click_label':click_label,
44'conversion_label':conversion_label
45}
46export_outputs={
47'regression':tf.estimator.export.RegressionOutput(predictions['cvr_preds'])
48}
49returntf.estimator.EstimatorSpec(mode,predictions=predictions,export_outputs=export_outputs)
50
51else:
52ctr_loss=tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(labels=ctr_label,logits=ctr_logits))
53ctcvr_loss=tf.reduce_sum(tf.losses.log_loss(labels=cvr_label,predictions=ctcvr_preds))
54loss=ctr_loss+ctcvr_loss#loss这儿可以加一个参数,参考multi-task损失的方法
55
56train_op=optimizer.minimize(loss,global_step=tf.train.get_global_step())
57returntf.estimator.EstimatorSpec(mode,loss=loss,train_op=train_op)

Conclusion

一句话总结:作者提出了一种用于 CVR 建模的多任务联合训练方法——ESMM,其充分利用了用户点击、转换的顺序性,并借助 CTR 和 CTCVR 两个辅助任务来训练 ESMM 模型,并通过三者的关系约束得到 CVR 模型。ESMM 模型可以很好的解决传统 CVR 建模中出现的样本选择偏差和数据稀疏的两大难题,并在真实数据集中取得 SOTA 的优秀表现。

此外,ESMM 模型中子网络也可以替换成其他更先进的模型,从而吸收其他模型的优势,进一步提升学习效果。

Reference

Ma X, Zhao L, Huang G, et al. Entire space multi-task model: An effective approach for estimating post-click conversion rate[C]//The 41st International ACM SIGIR Conference on Research & Development in Information Retrieval. 2018: 1137-1140.

github:x-deeplearning

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 多任务
    +关注

    关注

    0

    文章

    18

    浏览量

    9300
  • CVR
    CVR
    +关注

    关注

    0

    文章

    4

    浏览量

    6605
  • CTR
    CTR
    +关注

    关注

    0

    文章

    39

    浏览量

    14475
  • ESMM
    +关注

    关注

    0

    文章

    2

    浏览量

    997

原文标题:【CTR】ESMM:多任务联合学习

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    多任务系统中,如何平衡任务调度以防止因高负载导致的再次进入低功耗模式的延迟?

    多任务系统中,如何平衡任务调度以防止因高负载导致的再次进入低功耗模式的延迟?
    发表于 12-04 06:37

    爱普科技PSRAM加速wisun无线模块多任务处理

    爱普科技256Mb PSRAM(如APS256XXN-OBR-BG)为WiSUN无线模块提供高速数据缓存与临时存储解决方案,其166MHz速率、1.8V低功耗及小尺寸封装显著提升模块在智能电网、工业自动化中的多任务处理能力和稳定性。
    的头像 发表于 10-14 09:25 214次阅读
    爱普科技PSRAM加速wisun无线模块<b class='flag-5'>多任务</b>处理

    EASY EAl Orin Nano(RK3576) whisper语音识别训练部署教程

    1Whisper简介Whisper是OpenAI开源的,识别语音识别能力已达到人类水准自动语音识别系统。Whisper作为一个通用的语音识别模型,它使用了大量的多语言和多任务的监督数据来训练,能够在
    的头像 发表于 07-25 15:21 550次阅读
    EASY EAl Orin Nano(RK3576) whisper语音识别<b class='flag-5'>训练</b>部署教程

    【Sipeed MaixCAM Pro开发板试用体验】 + 04 + 机器学习YOLO体验

    /maixhub_train.html 我认为在线训练为数不多的缺点就是当训练 人数过多时 ,训练需要排队,从而导致 训练时长的增加 。 优点就是方便快捷简单易用 。 2.离线
    发表于 07-24 21:35

    EASY EAl Orin Nano(RK3576) whisper语音识别训练部署教程

    Whisper是OpenAI开源的,识别语音识别能力已达到人类水准自动语音识别系统。Whisper作为一个通用的语音识别模型,它使用了大量的多语言和多任务的监督数据来训练,能够在英语语音识别上达到接近人类水平的鲁棒性和准确性。
    的头像 发表于 07-17 14:55 1439次阅读
    EASY EAl Orin Nano(RK3576) whisper语音识别<b class='flag-5'>训练</b>部署教程

    NVIDIA Isaac Lab可用环境与强化学习脚本使用指南

    Lab 是一个适用于机器人学习的开源模块化框架,其模块化高保真仿真适用于各种训练环境,Isaac Lab 同时支持模仿学习(模仿人类)和强化学习(在尝试和错误中进行
    的头像 发表于 07-14 15:29 1828次阅读
    NVIDIA Isaac Lab可用环境与强化<b class='flag-5'>学习</b>脚本使用指南

    CPU密集型任务开发指导

    onmessage()方法接收Worker线程发送过来的消息,并通过调用postMessage()方法向Worker线程发送消息。例如向Worker线程发送训练和预测的消息,同时接收Worker线程发送
    发表于 06-19 06:05

    快速入门——LuatOS:sys库多任务管理实战攻略!

    在嵌入式开发中,多任务管理是提升系统效率的关键。本教程专为快速入门设计,聚焦LuatOS的sys库,通过实战案例带你快速掌握多任务创建、调度与同步技巧。无论你是零基础新手还是希望快速提升开发效率
    的头像 发表于 05-29 14:36 597次阅读
    快速入门——LuatOS:sys库<b class='flag-5'>多任务</b>管理实战攻略!

    基于RK3576开发板的yolov11-track多目标跟踪部署教程

    YOLO11是 Ultralytics YOLO系列实时物体检测器的最新版本,重新定义了在尖端准确度、速度和效率方面的可能性。在前几代 YOLO 版本的显著进步基础上,YOLO11 在架构和训练方法上引入了重大改进,使其成为广泛计算机视觉任务的灵活选择。
    的头像 发表于 05-24 15:07 2240次阅读
    基于RK3576开发板的yolov11-track多目标跟踪部署教程

    华为公布AI模型训练与车辆控制专利

    近日,华为技术有限公司在技术创新领域再次迈出重要一步,其申请的“模型的训练方法、车辆的控制方法及相关装置”专利于2月18日正式公布。这一专利的公布标志着华为在人工智能领域的又一重大突破。 据专利摘要
    的头像 发表于 02-20 09:14 725次阅读

    腾讯公布大语言模型训练新专利

    近日,腾讯科技(深圳)有限公司公布了一项名为“大语言模型的训练方法、装置、计算机设备及存储介质”的新专利。该专利的公布,标志着腾讯在大语言模型训练领域取得了新的突破。 据专利摘要显示,该方法通过在
    的头像 发表于 02-10 09:37 714次阅读

    【「基于大模型的RAG应用开发与优化」阅读体验】+大模型微调技术解读

    Tuning)和Prompt-Tuning:通过在输入序列中添加特定提示来引导模型生成期望的输出,简单有效,适用于多种任务。P-Tuning v1和P-Tuning v2:基于多任务学习的微调
    发表于 01-14 16:51

    传统机器学习方法和应用指导

    用于开发生物学数据的机器学习方法。尽管深度学习(一般指神经网络算法)是一个强大的工具,目前也非常流行,但它的应用领域仍然有限。与深度学习相比,传统方法在给定问题上的开发和测试速度更快。
    的头像 发表于 12-30 09:16 1982次阅读
    传统机器<b class='flag-5'>学习方法</b>和应用指导

    《具身智能机器人系统》第7-9章阅读心得之具身智能机器人与大模型

    和经验积累,使机器人能够自主发现工艺规律,优化作业参数。家庭服务机器人则采用混合任务规划策略:将预训练的基础技能与实时规划相结合,灵活应对开放环境中的各种情况。 第9章深入探讨了元学习在具身智能中
    发表于 12-24 15:03

    智慧光迅CVR视频融合云平台介绍

    种功能,构建了一套万物互联的核心网络。   即便有了这么多种功能,有些小伙伴们还是不知足,甚至还问我们什么时候监控,虽然做监控是不太可能了,但是我们可以做模块化平台呀!   所以,CVR视频融合平台他来了!!!   CVR视频融合平台简介 智慧光迅
    的头像 发表于 12-10 10:27 1351次阅读
    智慧光迅<b class='flag-5'>CVR</b>视频融合云平台介绍