准确的估计CVR(点击后转化率)对于推荐和广告这类排序系统来说非常关键。传统的CVR模型采用流行的深度学习方法达到目前最好的效果。但是也遇到了一些问题。比如,传统的CVR模型采用点击后的数据训练,但是要在整体数据上做预测。这导致样本选择偏差问题。另外,还存在比较严重的数据稀疏问题。本文我们从一个全新的角度建模CVR预估问题,充份利用用户行为序列:曝光 -> 点击 -> 转化。ESMM(全量空间多任务模型)解决了采样偏差和数据稀疏的问题,通过1)在全量数据上直接建模CVR模型,2)引入特征表示迁移学习策略。
本文中,我们主要关注点击后CVR估计问题。为了简化问题,我们以电商系统中的推荐系统为例。给定推荐的物品,用户可能会点击感兴趣的物品,然后有可能会购买。用户的行为是线性的:物品报告->点击->转换。CVR模型的目标就是预测这曝光并且点击之后的转换概率:
p C V R = p ( c o n v e r s i o n ∣ c l i c k , i m p r e s s i o n ) pCVR=p(conversion|click,impression) pCVR=p(conversion∣click,impression)
传统的CVR模型一般采用CTR类似的方法,比如最近流行的深度网络[2,3]。但是CVR预估问题中存在一些特有的问题。比如,关键的两个问题1).样本偏差(SSB)问题[12]。如下图所示:
传统的CVR模型在点击数据上进行训练,然后在整个数据上进行预测。SSB问题会严重影响模型的泛化能力。2).数据稀疏问题(DS)。CVR的训练数据会远小于CTR的数据量,DS使CVR模型的拟合更加困难。
一些研究试图解决这些问题。[5]采用联合不同特征上的多个分层模型解决数据稀疏问题。但是它依赖先验的知识来构建分层的结构。大规模的推荐系统上难以采用。过采样方法[11]拷贝稀有类型样本,可以降低数据稀疏的影响,但是对采样率比较敏感。AMAN(缺失值作为负样本)方法随机选择未点击数据作为负样本[6],通过引入未被观察的样本可以一定程度的降低采样误差的问题,但是会导致估计值偏低的问题。无偏差方法[10]通过拒绝采样来拟合样本实际分布,但会遇到数值不稳定问题。总之,采样偏差和数据稀疏问题都没有被很好的解决。并且还没有一个方法利用了序列行为的信息。
本文中通过充分利用序列行为的信息,我们提出全量数据多任务模型,解决了样本偏差和数据稀疏的问题。ESMM中,存在两个辅助任务:曝光后的点击率预测CTR任务,和曝光点击后的转化率CTCVR预测任务。ESMM没有直接在点击数据上训练CVR模型,而是将pCVR作为中间变量,乘以pCTR得到pCTCVR.在用整体的样本拟合pCTCVR和pCTR。因此,推导得到pCVR适用于整体的样本。也就是说采样偏差问题解决了。另外,CVR和CTR的特征表示层的参数是共享的。后者是在更丰富的样本空间上训练的。这种迁移学习的方式帮助降低数据稀疏问题的影响。
我们假设观察数据集合为 S = { ( x i , y i → z i ) } ∣ i = 1 N S=\{(\boldsymbol{x}_i,y_i \rightarrow z_i)\}|_{i=1}^N S={(xi,yi→zi)}∣i=1N, 样本 ( x , y , → z ) (\boldsymbol{x},y,\rightarrow z) (x,y,→z)按照某种分布 D D D采样自域 X × Y × Z X\times Y\times Z X×Y×Z。其中 X X X为特征空间, Y , Z Y,Z Y,Z为标记空间,N为样本数量。 x \boldsymbol x x表示观察样本的特征向量,通常是高维的稀疏向量[8]. y , z y,z y,z是二值标签,表示是否点击或是否转化。
CVR模型的任务就是估计概率值 p C V R = p ( z = 1 ∣ y = 1 , x ) pCVR=p(z=1|y=1,\boldsymbol{x}) pCVR=p(z=1∣y=1,x).相关的两个概率值为 p C T R = p ( y = 1 ∣ x ) pCTR=p(y=1|\boldsymbol{x}) pCTR=p(y=1∣x)和 p C T C V R = p ( z = 1 , y = 1 ∣ x ) pCTCVR=p(z=1,y=1|\boldsymbol{x}) pCTCVR=p(z=1,y=1∣x),关系如下:
p ( y = 1 , z = 1 ∣ x ) = p ( z = 1 ∣ y = 1 , x ) p ( y = 1 ∣ x ) p(y=1,z=1|\boldsymbol{x})=p(z=1|y=1,\boldsymbol{x})p(y=1|\boldsymbol{x}) p(y=1,z=1∣x)=p(z=1∣y=1,x)p(y=1∣x)
近期基于深度学习的方法在CVR估计问题上取得了目前最好的成绩。大部分的方法都采用了Embedding+MLP这样的结构模式[3].如下图的左边部分,我们称之为BASE模型.
传统的CVR模型直接估计 p ( z = 1 ∣ y = 1 , x ) p(z=1|y=1,\boldsymbol{x}) p(z=1∣y=1,x),在点击样本 S c = { ( x j ) , y j → z j } ∣ j = 1 M S_c=\{(\boldsymbol{x}_j),y_j\rightarrow z_j\}|_{j=1}^M Sc={(xj),yj→zj}∣j=1M上训练。其中 M M M表示点击数据的数量。显然, S c S_c Sc是 S S S的一个子集。 S c S_c Sc当中没有转化的样本作为CVR模型的负样本。实际当中这种方式导致了几个问题:
采样偏差:实际上,传统的CVR模型采用了近似计算 p ( z = 1 ∣ y = 1 , x ) ≈ q ( z = 1 ∣ x c ) p(z=1|y=1,\boldsymbol{x})\approx q(z=1|\boldsymbol{x}_c) p(z=1∣y=1,x)≈q(z=1∣xc).引入一个辅助的特征空间 X c X_c Xc,相关的样本空间为 S c S_c Sc。通过这种方式,模型在空间 X c X_c Xc和训练集 S c S_c Sc上拟合 q ( z = 1 ∣ x c ) q(z=1|\boldsymbol{x}_c) q(z=1∣xc), 然后在 X X X空间上预测 q ( z = 1 ∣ x ) q(z=1|\boldsymbol{x}) q(z=1∣x),并假设对于任何样本 ( x , y = 1 ) , x ∈ X (\boldsymbol{x},y=1),x\in X (x,y=1),x∈X都满足 x ∈ X c x\in X_c x∈Xc。这个假设十分的牵强。实际上 X c X_c Xc是 X X X的一个子集。并且,缺少足够的采样的情况下, X c X_c Xc和 X X X的差异非常大。这种问题会导致分布漂移问题,并严重的影响模型的泛化能力。
数据稀疏:传统的CVR模型在点击数据 S c S_c Sc上训练。点击时间本身就比较少,导致点击数据量比较稀疏。一般比CTR的训练数据少1-3个数量级。
如上图2,ESMM借鉴了多任务学习[9]的思想,引入了CTR和CTCVR两个辅助任务。
整体上,ESMM同事输出pCTR,pCVR和pCTCVR.主要有两个子网络组成:左边的CVR网络和右边的CTR网络。两个子网络都采用BASE网络结构。
ESMM在全局空间建模CVR模型:
p ( z = 1 ∣ y = 1 , x ) = p ( z = 1 , y = 1 ∣ x ) p ( y = 1 ∣ x ) p(z=1|y=1,\boldsymbol{x})=\frac{p(z=1,y=1|\boldsymbol{x})}{p(y=1|\boldsymbol{x})} p(z=1∣y=1,x)=p(y=1∣x)p(z=1,y=1∣x)
其中 p ( y = 1 , z = 1 ∣ x ) p(y=1,z=1|\boldsymbol{x}) p(y=1,z=1∣x)和 p ( y = 1 ∣ x ) p(y=1|\boldsymbol{x}) p(y=1∣x)都是在集合 S S S上训练。为了避免除法的数值计算不稳定性,ESMM将pCVR作为中间将上述等式转化了乘法形式。
ESMM的损失函数包含CTR和CTCVR两部分:
L ( θ c v r , θ c t r ) = ∑ i = 1 N l ( y i , f ( x i ; θ c t r ) ) + ∑ i = 1 N l ( y i & z i , f ( x i ; θ c t r ) × f ( x i ; θ c v r ) ) L(\theta_{cvr}, \theta_{ctr})=\sum_{i=1}^Nl(y_i, f(\boldsymbol{x}_i;\theta_{ctr}))+\sum_{i=1}^Nl(y_i\&z_i,f(\boldsymbol{x}_i;\theta_{ctr})\times f(\boldsymbol{x}_i;\theta_{cvr})) L(θcvr,θctr)=i=1∑Nl(yi,f(xi;θctr))+i=1∑Nl(yi&zi,f(xi;θctr)×f(xi;θcvr))
其中 θ c t r \theta_{ctr} θctr和 θ c v r \theta_{cvr} θcvr分别表示CTR和CVR网络参数。 l l l表示交叉墒损失函数。
并且在ESMM模型中,CVR与CTR网络共享embeding层参数,这种参数迁移的方式显著降低了CVR模型的数据稀疏问题。另外,ESMM中子网络可以替换为其他的模型[2,3]。