Multi-Task是推荐系统必定会面临的问题,业内也有多种处理方式。这里重点介绍一下阿里发表在 SIGIR’2018 的论文《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》。分成两部分,速读论文和个人理解。
论文速读
论文是基于share-bottom multi-task learning的,在share-bottom的基础上讲两个关联紧密的task组合成单个学习任务。
论文是基于广告领域的CVR预估,思想非常简洁:CTCVR=CTR * CVR。点击(CTR)、转化(CVR)、点击然后转化(CTCVR)。广告的转化,首先依赖展现和用户点击,在点击的基础上实现转化。但是,用户对一个广告完成转化的可能性,和用户点击这个广告的可能性没有必然联系。理清这层关系后,我们看下基础公式:
点击后转化的概率,等于点击的概率乘转化的概率。
然后我们看下常规的思路会遇到哪些问题:
- 转化样本稀疏,稀疏样本通常很难学到比较准确的表达,而且容易过拟合。
- 转化样本有偏。训练样本里的转化广告是用户点击基础上的,而未点击的样本我们并不知道它是否会转化。所以在历史转化样本上学习转化率是有偏的。
再看看esmm模型是怎么处理了的:
- share-bottom。联合训练,底层共享,能缓解样本稀疏的问题,并且捕捉到点击和转化的相关性。
- 利用条件概率,构造loss。捕捉到先点击后转化的物理关系,模型和loss的表示更加贴近样本的真实情况。
网络结构如下:
网络结构其实很简单,组网比较容易。改组网的几个关键点:
- 底层share-bottom
- 整体是两个大的部分,主网络和辅助网络,最终输出pCTCVR = pCVR * pCTR。
Loss如下:
loss的设计是ESMM的关键,主网络loss加最终输出部分的loss。简单的说,就是CTR的loss加CTCVR的loss,模型没有直接监督CVR,而是通过这种间接的方式来学习CVR。具体这么做的原理前面已经提过了,主要是为了消除训练样本和转化率的偏差。
具体使用:
论文里的说法,主要是使用训练的CVR部分。这里两部分模型联合使用也是可以的。
浅谈个人理解
ESMM提供了一种联合训练和消除样本偏差的思路。具体可以根据业务情况变化主任务和辅任务,同时组网结构也有很多可以扩展的地方。
- 业务的迁移。很多业务场景可以迁移,比如点击和点击后点赞、观看时长等等。
- 组网结构可以优化。在ESMM的loss设计的基础上,组网结构可以进一步细化,比如加入deepFM结构,或者融合google的MMOE(share-bottom替换成MMOE结构,亲测AUC有提升)。
- 比起正常的单任务模型训练,个人观察AUC无显著差异。可能和数据集有关。
总的来说ESMM提供了一种很好的有依赖关系的多任务融合思路,可以借鉴并扩展。
这里先埋个MMOE的坑(google有两篇相关的论文),回头再填。