今天主要和大家聊聊多任务学习在转化率预估上的应用。

多任务学习(Multi-task learning,MTL)是机器学习中的一个重要领域,其目标是利用多个学习任务中所包含的有用信息来帮助每个任务学习得到更为准确的学习器,通过使用包含在相关任务的监督信号中的领域知识来改善泛化性能。深度学习流行之后,MTL在深度网络也有很多尝试和方法。

(0).背景介绍

名词定义:

CTR: 指曝光广告中,被点击的广告比例

CVR: 指被点击的广告中,最终形成转化的广告比例

CTCVR: 指曝光广告中,被点击且最终形成转化的广告比例

正如上一篇《oCPC中转化率模型与校准》中所讲,如果完全是按照CPC出价计费,那只需要建模CTR模型,而在oCPC场景下,需要对CTCVR进行建模,我们目前的业务恰好属于后者。前期分析表明,直接对CTCVR建模,会导致召回用户的CTR竞争力较低,影响最终曝光。所以建模需要同时考虑CTR和CTCVR两个指标。基于以上背景,我们在业务中引入多任务学习的建模方式。

(1).多任务学习介绍

多任务学习是指: 给定m个学习任务,其中所有或一部分任务是相关但并不完全一样的,多任务学习的目标是通过使用这m个任务中包含的知识来帮助提升各个任务的性能。联合学习(joint learning)、自主学习(learning to learn)和带有辅助任务的学习(learning with auxiliary task)等都可以指 MTL。一般来说,优化多个损失函数就等同于进行多任务学习(与单任务学习相反)。即使只优化一个损失函数(如在典型情况下),也有可能借助辅助任务来改善原任务模型。在深度学习中,多任务学习通常通过隐藏层的Hard或Soft参数共享两种方式来完成。

a. Hard参数共享

共享Hard参数是神经网络 MTL最常用的方法,在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定任务的输出层来实现。硬共享机制降低了过拟合的风险。事实上,有文献证明了这些共享参数过拟合风险的阶数是N,其中N为任务的数量,比任务相关参数的过拟合风险要小。直观来讲,这一点是非常有意义的。越多任务同时学习,我们的模型就能捕捉到越多任务的同一个表示,从而使得在我们原始任务上的过拟合风险越小。如下图所示:

b. Soft参数共享

在共享Soft参数时,每个任务都有自己的参数和模型。模型参数之间的距离是正则化的,以便鼓励参数相似化,业内常用L2距离进行正则化,或者使用迹范数(trace norm)。

(2). ESMM模型

ESMM:完整空间多任务模型(Entire Space Multi-Task Model),是阿里2018年提出的模型思想,是一个hard参数共享的MTL模型。主要为了解决传统CVR建模过程中样本选择偏差(sample selection bias, SSB)和数据稀疏(data sparsity,DS)问题。

样本选择偏差:用户在广告上的行为属于顺序行为模式impression -> click -> conversion,传统CVR建模训练时是在click的用户集合中选择正负样本,模型最终是对整个impression的用户空间进行CVR预估,由于click用户集合和impression用户集合存在差异(如下图),引起样本选择偏差。

数据稀疏:推荐系统中有click行为的用户占比是很低的,相比曝光用户少1~3个数量级,在实际业务中,有click行为的用户占比不到4%,就会导致CVR模型训练数据稀疏,高度稀疏的训练数据使得模型的学习变的相当困难。由于用户行为遵循impression -> click -> conversion的顺序行为模式,预估结果遵循以下关系:

ESMM算法引入两个辅助任务学习任务,分别拟合pCTR和pCTCVR,都是从整个样本空间选择样本,来同时消除上面提到的两个问题。其架构图如下:

从架构图可以看到,ESMM模型由两个子网络组成,左边的子网络用来拟合pCVR,右边的子网络用来拟合pCTR,最终两个网络结果相乘得到pCTCVR。pCVR只是作为模型训练的中间结果,最终根据模型输出的pCTCVR和pCTR结果计算最终的pCVR,计算公式如下:

模型很好的解决了样本偏差问题,训练过程使用的所有样本,均是从整个曝光的样本空间进行选择,其中有点击的为CTR正样本,否则为负样本;有点击且转化的为CTCVR的正样本,否则为负样本。同时模型两个子网络共享embedding层,由于CTR任务的训练样本量要大大超过CTCVR任务的训练样本量,ESMM模型中特征表示共享的机制能够使得CVR子任务也能够从只有展现没有点击的样本中学习,从而能够极大地缓解训练数据稀疏性问题。

(3). ESMM模型的优化

在ESMM模型的基础上,我们做了以下两点优化:

a. 优化网络embedding层,使其可以处理用户不定长行为特征

用户历史行为属于不定长行为,比如曾经点击过的ID列表,一般我们对这种行为引入网络中的时候,会将不定长进行截断成统一长度(比如:平均长度)的定长行为,方便网络使用。很多用户行为没有达到平均长度,则会在后面统一补0,这会导致用户embedding结果里面包含很多并未去过的节点0的信息。这里我们提出一种聚合-分发的特征处理方式,使得网络的特征embedding层可以处理不定长的特征。

由于单个特征节点的embedding结果是和用户无关的,比如:用户A点击k,用户B也点击了k,最终embedding得到的k结果是唯一的,对A和B两个用户访问的k都是一样的。基于该前提,我们采用聚合-分发的处理思想。将min-batch的所有用户的不定长行为聚合拼接成一维的长矩阵,并记录下各个用户行为的索引,在embedding完成之后,根据索引将各个用户的实际行为进行还原,并降维成固定长度,输入到dense层使用。

b. 由于训练正负样本差异比较大,模型引入Focal Loss,使训练过程更加关注数量较少的正样本

原始ESMM模型中,直接使用pCTCVR和pCTR两个模型的交叉熵之和作为总的loss函数,loss计算公式如下:

由于正负样本比例严重失衡,样本中会存在大量的easy samples,且都是属于负样本,这些easy negative examples会对loss起主要贡献作用,会主导梯度的更新方向,导致模型无法学到较好的区分能力。

我们在模型中引入Focal Loss,Focal Loss是对交叉熵的优化,引入平衡权重alpha,一般与样本权重成负相关,该类样本占比越少,在loss函数中的权重就越大,用来平衡正负样本比例不均的问题。引入难易因子gamma,是给loss函数中困难的、错分的样本权重更大,模型更偏向于学习困难错分的样本。Focal Loss函数定义如下:

模型实际使用中,根据每个batch里面正负样本分布来计算,优化focal loss之后,模型CTCVR-AUC基本持平,和优化前保持一致;CTCVR的分数在CTR上的AUC表现绝对值提升1.5%。focal loss在模型训练主任务的过程中学习到了更多CTR相关的能力,提升了模型在CTR表现。

结合ESMM结构和loss函数可以看出,原模型两个子网络dense层数据分别是pCTR和PCVR,所以在loss函数使用CTR*CVR来评估CTCVR的loss。由于我们模型是直接采用pCTCVR作为主任务,在评估的时候直接使用CTCVR的输出评估。最终的loss函数如下:

(4). 小结

本文主要介绍了多任务学习的基本概念以及我们在实际业务上对ESMM模型做的一些改进,后会有期,拜了个拜!

欢迎关注微信公众号:计算广告那些事儿

多任务学习(MTL)在转化率预估上的应用相关推荐

  1. 【推荐系统多任务学习 MTL】PLE论文精读笔记(含代码实现)

    论文地址: Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized ...

  2. 【推荐系统多任务学习MTL】ESMM 论文精读笔记(含代码实现)

    论文地址:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate ...

  3. 【推荐系统多任务学习MTL】MMoE论文精读笔记(含代码实现)

    论文地址: Google KDD 2018 MMOE (内含论文官方讲解视频) PDF Modeling Task Relationships in Multi-task Learning with ...

  4. 【机器学习基础】一文看透多任务学习

    作者:十方 大家在做模型的时候,往往关注一个特定指标的优化,如做点击率模型,就优化AUC,做二分类模型,就优化f-score.然而,这样忽视了模型通过学习其他任务所能带来的信息增益和效果上的提升.通过 ...

  5. 一文梳理多任务学习(MMoE/PLE/DUPN/ESSM等)

    大家在做模型的时候,往往关注一个特定指标的优化,如做点击率模型,就优化AUC,做二分类模型,就优化f-score.然而,这样忽视了模型通过学习其他任务所能带来的信息增益和效果上的提升.通过在不同的任务 ...

  6. 【推荐系统】多任务学习之ESMM模型

    学习总结 ESMM首创了利用用户行为序列数据在完整样本空间建模,并提出利用学习CTR和CTCVR的辅助任务,迂回学习CVR,避免了传统CVR模型经常遭遇的样本选择偏差和训练数据稀疏的问题,取得了显著的 ...

  7. 【datawhale202206】pyTorch推荐系统:多任务学习 ESMMMMOE

    结论速递 多任务学习是排序模型的一种发展方式,诞生于多任务的背景.实践表明,多任务联合建模可以有效提升模型效果,因其可以:任务互助:实现隐式数据增强:学到通用表达,提高泛化能力(特别是对于一些数据不足 ...

  8. 深度学习-多任务学习总结

    深度学习中多任务学习的方法和问题总结 为什么要做多任务学习 多任务学习的实现方法 介绍下ESSM 介绍下PLE 为什么要做多任务学习 多任务算法的应用场景还是很广泛的,只要是推荐技术涉及的业务,比如搜 ...

  9. DNN中多任务学习概述

    为什么大公司搜索推荐都用CTR/CVR Cotrain的框架? 一元@炼丹笔记 我们平时做项目/竞赛的时候,一般都是单指标优化的问题,很多时候我们模型的评估指标也是单个指标,例如AUC, GAUC, ...

最新文章

  1. XAPIAN简单介绍(三)
  2. 在scala中访问postgresql(使用sbt)
  3. delete[] 出错
  4. 打印helloworld,注释,从源文件到可执行文件
  5. 基于语义嵌入模型与交易信息的智能合约自动分类系统
  6. 3.2.3 OS之页面置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法、普通时钟置换算法、改造型时钟置换算法)
  7. The python debugger(PDB)的简介
  8. js修改css样式属性_这个笔记《CSS样式的常见属性及值》,让菜鸟轻松学会包粽子...
  9. 为什么在生产中进行硒自动化测试对于您的下一个版本至关重要?
  10. Docker原理剖析
  11. Facebook产品经理的三年叙事与协作思考
  12. PostgreSQL的使用-02-在Linux下的基本配置
  13. 听说你决定当全职自由漏洞猎人了?过来人想跟你聊聊
  14. 智能优化算法(源码)-生物地理学算法(Biogeography-Based Optimization,BBO)
  15. linux校园网自动登录命令,东北大学校园网登录登出shell脚本
  16. linux操作系统学习心得
  17. Flying Saucer一些问题
  18. android打包时出现***is not translated in zh-rCN (Chinese: China)
  19. Ubuntu 18.04 配置ibus中文拼音输入法
  20. GitHub秒变GayHub

热门文章

  1. SSM中(Spring-SpringMVC-Mybatis)(二:整合)
  2. Beta发布-----欢迎来怼团队
  3. HDU 5835 Danganronpa 贪心
  4. Android开发之 Android 的基本组件的概述
  5. Entity Framework 6.x - Code First 默认创建数据库的位置
  6. 【转载】Java 性能优化之String
  7. [Android] TabLayout设置下划线(Indicator)宽度
  8. Harbor 使用 Helm 一键安装
  9. Java判断一个数是不是快乐数
  10. [XJOI]noip44 T3还有这种操作