阿里近几年公开的推荐领域算法有许多,既有传统领域的探索如MLR算法,还有深度学习领域的探索如entire-space multi-task model,Deep Interest Network等,同时跟清华大学合作展开了强化学习领域的探索,提出了MARDPG算法。

上一篇,我们介绍了深度兴趣网络(Deep Interest Network),充分利用用户历史行为数据中的 DiversityLocal Activation 特性进行建模。再来回顾一下DIN的网络结构:

这一篇,我们将焦点转向CVR的预估,来看一下阿里提出的完整空间多任务模型ESSM是如何处理CVR预估中存在的样本选择偏差(sample selection bias)和数据稀疏(data sparsity)问题的。

论文地址: https://arxiv.org/abs/1804.07931

在正式开篇之前,我们先介绍一下几个名词:

impression:用户观察到曝光的产品

click:用户对impression的点击行为

conversion:用户点击之后对物品的购买行为

CTR:从impression到click的比例

CVR:从click到conversion的比例

CTCVR:从impression到conversion的比例

pCTR:p(click=1 | impression)

pCVR: p(conversion=1 | click=1,impression)

pCTCVR: p(conversion=1,click=1 |impression) = p(click=1 | impression) * p(conversion=1|click=1,impression)

1、背景

以电子商务平台为例,用户的购买行为一般遵循以下的顺序决策模式:impression-click-conversion,即用户先观察到系统推荐的产品,然后会对自己感兴趣的商品进行点击,进而产生购买行为。从点击到购买的转化我们称为post-click Conversion rate(以下简称CVR),CVR的预估在信息检索、推荐系统、在线广告投放等工业级应用中是至关重要的。

不过传统的CVR预估问题存在着两个主要的问题: 样本选择偏差稀疏数据。我们来看下面的图,我们把给用户曝光过的产品看作是整个样本空间X的话,用户点击过的产品仅是中间灰色的部分,我们定义为Xc,而用户购买过的产品仅是图中黑色的部分。

样本选择偏差(sample selection bias,SSB):传统的推荐系统仅用Xc中的样本来训练CVR预估模型,但训练好的模型是在整个样本空间X去做推断的。由于点击事件相对于曝光事件来说要少很多,因此只是样本空间X的一个很小的子集,从Xc上提取的特征相对于从X中提取的特征而言是有偏的,甚至是很不相同。从而,按这种方法构建的训练样本集相当于是从一个与真实分布不一致的分布中采样得到的,这一定程度上违背了机器学习中独立同分布的假设。这种训练样本从整体样本空间的一个较小子集中提取,而训练得到的模型却需要对整个样本空间中的样本做推断预测的现象称之为样本选择偏差。样本选择偏差会伤害学到的模型的泛化性能。

数据稀疏(data sparsity,DS):推荐系统展现给用户的商品数量要远远大于被用户点击的商品数量,同时有点击行为的用户也仅仅只占所有用户的一小部分,因此有点击行为的样本空间Xc相对于整个样本空间X来说是很小的,通常来讲,量级要少1~3个数量级。如下表所示,在淘宝公开的训练数据集上,Xc只占整个样本空间X的4%。这就是所谓的训练数据稀疏的问题,高度稀疏的训练数据使得模型的学习变得相当困难。

为了解决上面的两个问题,阿里提出了完整空间多任务模型ESSM。下一章,我们将会来学习一下阿里是如何设计整个网络的。

2、ESSM模型

2.1 模型结构

阿里妈妈的算法同学提出的ESMM模型借鉴了多任务学习的思路,引入了两个辅助的学习任务,分别用来拟合pCTR和pCTCVR,从而同时消除了上文提到的两个挑战。ESMM模型能够充分利用用户行为的顺序性模式,其模型架构下图所示:

可以看到,ESSM模型由两个子网络组成,左边的子网络用来拟合pCVR,右边的子网络用来拟合pCTR,同时,两个子网络的输出相乘之后可以得到pCTCVR。因此,该网络结构共有三个子任务,分别用于输出pCTR、pCVR和pCTCVR。

假设我们用x表示feature(即impression),y表示点击,z表示转化,那么根据pCTCVR = pCTR * pCVR,可以得到:

将乘法转化为除法,我们可以得到pCVR的计算:

2.2 模型特点

ESSM模型共有以下两个主要的特点:

在整个样本空间中进行建模

由上面提到的等式可以看出,pCVR是可以通过pCTR和pCTCVR的预估推导出来的。因此,我们只需要关注pCTR和pCTCVR两个任务即可。为什么是这两个任务呢?其实就是为了消除样本选择偏差嘛,因为CVR是从click到conversion,而CTCVR是从impression到conversion,CTR是从impression到conversion,所以CTR和CTCVR都可以从整个样本空间进行训练,一定程度的消除了样本选择偏差。

我们可以将有点击行为的曝光事件作为正样本,没有点击行为的曝光事件作为负样本,来做CTR预估的任务。将同时有点击行为和购买行为的曝光事件作为正样本,其他作为负样本来训练CTCVR的预估部分。

模型具体是怎么做的呢?可以看到,用来训练两个任务的输入x其实是相同的,但是label是不同的。CTR任务预估的是点击y,CTCVR预估的是转化z。因此,我们将(x,y)输入到CTR任务中,得到CTR的预估值,将(x,z)输入到CVR任务中,得到CVR的预估值,CTR和CVR的预估值相乘,便得到了CTCVR的预估值。因此,模型的损失函数可以定义为:

其中,θctr和θcvr分别是CTR网络和CVR网络的参数,l(⋅)是交叉熵损失函数。

共享特征表示

ESMM模型借鉴迁移学习的思路,在两个子网络的embedding层共享embedding向量(特征表示)词典。网络的embedding层把大规模稀疏的输入数据映射到低维的表示向量,该层的参数占了整个网络参数的绝大部分,需要大量的训练样本才能充分学习得到。由于CTR任务的训练样本量要大大超过CVR任务的训练样本量,ESMM模型中特征表示共享的机制能够使得CVR子任务也能够从只有展现没有点击的样本中学习,从而能够极大地有利于缓解训练数据稀疏性问题。

3、实验效果

3.1 对比模型介绍

为了验证ESSM的效果,阿里团队与如下的算法进行了对比:

3.2 公开数据集实验

下图展示了在公开实验数据集上模型的对比效果:

可以看到,ESSM模型相比于其他的模型,实验效果显著提升。

3.3 淘宝数据集实验

下图展示了ESMM模型在淘宝生产环境数据集上的测试效果对比: