本人微信公众号为“推荐算法学习笔记”,定期推出经典推荐算法文章,欢迎关注。
这篇文章主要介绍阿里的ESMM模型《Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate》。
一.介绍
我们知道在电商网站,用户行为遵循这样的模式:展示->点击->转化(购买)。假设我们要预测某个商品被点击之后转化(购买)的概率,那应该怎么建模呢。值得注意的是,这里的预测目标是商品被点击之后的转化率,而不是转化率,它们是有区别的。一个商品它的点击率很低,但是一旦被点击之后,用户购买的概率可能非常高,我们要预测的目标pCVR=p(conversion|click, impression)。
二.解决思路
方案一
把用户点击之后购买的商品作为正样本,把用户点击之后没有购买的商品作为负样本,然后放入到深度模型里面进行训练
存在的问题
(1)用户没有点击的商品没有参与到训练当中,我们预测的时候是对所有的商品进行预测,相当于训练的时候只采样了被点击的商品,导致最终的模型对没有点击的商品表达不足。这也就是论文当中所说的Sample selection bias problem。
(2)训练数据少。跟做点击预测的数据相比,训练数据相比非常少,导致更难训练和容易overfit。也就是论文所说的Data sparsity problem。
方案二
把用户点击之后购买的商品作为正样本,把用户没有点击或者点击之后没有购买的商品作为负样本,然后放入到深度模型里面进行训练
存在的问题
这样训练出来的模型是CVR=p(conversion| impression),而不是pCVR=p(conversion|click, impression)。它们是有区别的
方案三
训练一个转化率预估模型,然后再训练一个点击预测模型。再使用转化率预估的结果除以点击预测的结果。
存在问题
这个方案是可行的,但是这样要训练两个模型,有没有办法放到一个模型里面训练?
阿里提出的ESMM就可以解决以上几点提到的问题
三.ESMM模型
假设X表示我们的feature space,Y和Z分别表示用户是否点击和购买。我们的求解的问题可以表示为pCVR=p(z = 1|y = 1, x)。根据条件概率,可以得到以下的公式
假如我们可以预估出pCTCVR和pCTR,那pCVR就可以通过以下公式求解出来
基于此公式,阿里提出了以下模型,如图所示
可以看到左侧就是我们要求解的目标pCVR,通过引入右侧的两个辅助任务pCTCVR和pCTR,将我们的目标pCVR转化成深度模型的一个神经元,并共享输入feature的embedding空间。这样,就可以利用到我们点击和不点击的所有训练样本,缓解我们样本偏差和样本稀疏的问题,达到更好的训练效果。
损失函数包含两个部分,CTR和CTCVR,如下图所示
四.总结
ESMM巧妙的通过两个辅助任务对pCVR进行求解,是多任务学习的典范。以上就是ESMM的所有内容,如果有问题,欢迎和我交流。
本人微信公众号为“推荐算法学习笔记”,定期推出经典推荐算法文章,欢迎关注。