ESMM-Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate
前言
这次带来阿里妈妈团队于18年发表在SIGIR的一篇多任务学习的文章,主要基于多任务学习的思想对CVR问题进行优化预估。
背景
首先说一下广告收费的形式,包括多种:
- cpt的广告
- 按照展示时间收费,典型如视频前的广告,这部分只要放出去就给钱,有点类似电视广告
- cpm
- 按照广告展示次数收费
- cpc
- 按照点击来收费,也就是典型的ctr场景
- cpv
- 按转化来收费,例如用户必须下载了app、必须买了商品才付费
- 等等…
那么我们分析一下平台和广告主的心理,平台最希望的是哪种形式呢?cpt、cpm这种,投放了就收费。
广告主则最喜欢的是cpv的广告,光展示没有转化对于广告主而言就是没有钱进口袋的。
ctr预估的论文已经比较多了,而针对cvr即转化率预估的相对更少,通常的做法其实和点击率预估一样,但是在样本选择时存在一定的不同,区别点主要在以下:
- 用户的行为序列是这样的:曝光->点击->转化,也就是说一定是先点击再产生转化。
- cvr预估的前提是已经产生了点击,即预估的是点击后再产生转化的概率,正样本是既点击又转化的样本,负样本是点击了却没有转化的样本,大致的关系图如下:
那么cvr预估就存在这样的一个问题,使用仅点击后的样本训练,而实际应用却是使用所有的样本,文章中称之为样本选择偏差smple selection bias (SSB),并且只是用点击样本训练还会使得很稀疏,因为用户点击本就不是一个经常发生的事件。
总结一下,存在的问题是以下两个:
- 样本选择偏差,cvr预估训练以及实际场景的数据不同
- 数据稀疏问题
这里想一下cvr任务可以使用全部曝光样本训练么?这就牵扯到业务形态的问题了,一般想当然来说用户愿意点当然更愿意转化啊,但是我自己实际的体验中不一定是这样,我一个朋友就遇到这么一个场景(请不要问我这个朋友是不是我):
首先看到推广的商品,封面是漂亮小姐姐,小姐姐很漂亮那么我点进去看一看=>我仅仅是进去看一看,我并不会买女装,所以你继续推漂亮的小姐姐给我,我还是会点击,但是我就是不会买。
从上面的场景可以看出来,点不点和素材内容关系很大,因为人是一个很靠感官判断的生物,但是具体需不需要那就又得另说了。
正文
前面说了这么多,其实就是引出两个问题,一个就是说cvr预估使用点击样本训练是没有问题的,第二个呢就是cvr预估只使用点击样本训练是有问题的。这两个问题看似很矛盾,但是居然可以通过ESMM解决,我第一次看这篇文章的时候其实有许多不理解的地方,直到自己在做ctr预估方面工作回看才觉得,这个真的有点东西,好,下面不啰嗦了。
pctr pcvr pctcvr
ctr就是点击率,cvr是转化率,ctcvr是点击转化率,即既点击又转化的概率,下面是三者的关系式:
根据上式,可以看到三者的关系非常明确,那么也就意味着,我只要得到了三者中的二者就可以方便地估计剩下的一个参数了。
聪明的同学可能已经想到了,既然我不想只用点击样本训练,那么ctr和ctcvr都是可以通过全部样本来训练的,这样我单独训练两个模型一除不就ok了?想法很美好,但是现实稍微有那么一点残忍…
因为pctr是一个很低的值,这样一除会使得结果很不稳定,而且很可能使得pcvr超过1,这明显不合理对吧,那么阿里妈妈团队是如何将上式与多任务学习结合在一起预估cvr值的呢?
=>既然除法不行,那就使用乘法,我学习cvr和ctr不就可以了,这样问题就绕回来了,你都学习了cvr了还要ctr干什么呢?不又回到cvr预估只是用点击样本的问题了么?
接下来,就是ESMM<哔哔>的地方了
ESMM
ESMM做的事情就是用全样本使用一个模型来同时学习cvr以及ctr,然后二者相乘拟合pctcvr,ctr预估以及ctcvr预估是可以使用全样本训练的,这么说可能不明白到底是个什么,直接来看网络结构。
绿色的pctr和pctcvr是模型训练的辅助任务,其核心要获取的是粉色的pcvr,这里应该还有很多人很困惑,这既然预估cvr了还要辅助任务干什么呢?
答案就是:该模型的loss不与该pcvr相关,loss只和pctr与pctcvr相关,而pctcvr是pcvr与pctr相乘得到的,模型拟合了pctr和pctcvr,那么pcvr相当于隐含地被训练了,并且pcvr这块输出使用sigmoid激活的保证了值域稳定,看一下loss的定义:
loss核心还是logloss,但是由两部分组成了,即pctr部分的logloss,以及pctcvr部分的logloss,也就是说虽然pcvr是我们想要的目标,但是他是被隐含训练出来的,是通过pctr、pcvr、pctcvr三者的关系隐含训练出来的副产物。
并且左右两边的模型结构是一致的,共享特征输入,即pcvr和pctr这两部分底层的参数是完全一致的,而且由于logloss拟合的目标是pctr和pctcvr的logloss了,训练样本都是全样本了,这不就解决了前面说的问题了么?
- 样本选择偏差,这下使用全样本来拟合pcvr
- 数据稀疏,这下使用全样本来搞了
以前没看明白,现在看明白了,只能说我在风中凌乱了…
总结
ESMM真的是个很巧妙的模型,真的是个让人眼前一亮的模型,而且据我的一些小伙伴说在他们公司的场景ESMM的效果很好,so…抓紧用起来啊?想啥呢。
ps:论文内容很短,只有四页,堪称短小精悍,非常值得一看以及一试。