ESSM模型
2018 阿里妈妈 SIGIR
原文链接:Entire Space Multi-Task Model: An Effective Approach for Estimating Post-Click Conversion Rate
该论文基于Multi-Task Learning 的思路,提出一种新的CVR预估模型,有效解决了真实场景中CVR预估面临的数据稀疏以及样本选择偏差这两个关键问题。
- Sample Selection Bias (SSB):转化是在点击之后才“有可能”发生的动作,传统CVR模型通常以点击数据为训练集,其中点击未转化为负例,点击并转化为正例,即训练时模型在点击空间中训练。但是训练好的模型实际使用时,则是对整个空间的样本进行预估,即曝光空间中进行预估。训练数据与实际要预测的数据来自不同分布,这一定程度上违背了机器学习中独立同分布的假设,这个偏差对模型的泛化能力构成了很大挑战。
- Data Sparsity (DS) :作为CVR训练数据的点击样本数量远小于CTR预估训练使用的曝光样本。
在广告中,从点击到转化,这两个行为即具有强相关的链式关系,也具有一定的独立性,故使用多任务学习的方式是一个很好的选择。例如,CTR与CVR并不一定满足线性的关系,即CTR如果很低,其CVR并不一定低,因为CVR的预估的是在一个广告点击后,用户发生转化行为的概率。
点击(CTR)、转化(CVR)、点击然后转化(CTCVR)是三个不同的任务的关系:
模型结构
由CTCVR的公式可以看出,CTCVR和CTR的训练数据均在曝光空间中,故ESMM模型利用CTCVR和CTR间接得到CVR,即解决了数据选择性偏差又解决了数据稀疏的问题。
其实,通过公式的变化,我们可以通过除法来求得CVR,如下所示:
即我们分别训练一个CTCVR模型和CTR模型,然后两者相除就能得到CVR的结果,但事实上我们并不能用这样的方式,因为CTCVR和CTR都是很小的值,通过除法,结果波动性会很大,并且有可能模型得到的CTR值比CTCVR小,导致求出的CVR值大于1,没有实际意义。
故作者利用连乘的思路,增加CTR和CTCVR辅助任务,来间接训练CVR模型。在模型结构图中,PCVR节点是粉色的,代表该节点仅是网络中的一个variable,没有显示的监督信号。ESMM利用ctr和CTCVR在整个样本空间上训练,来间接求得CVR。其次,与CTR共享特征表示参数,解决数据稀疏问题。
LOSS函数
使用CTR和CTCVR两部分的loss进行训练,其中pCTCVR由pCTR乘pCVR得到。
由损失函数可以看出,CVR的参数根据CTCVR任务的损失梯度更新,CTR的参数根据CTCVR和CTR两个任务的损失梯度更新。
ESM2模型
阿里 ESMM的升级版 2020年
原文链接:Entire Space Multi-Task Modeling via Post-Click Behavior Decomposition for Conversion Rate Prediction
ESMM模型提出为了解决样本选择偏差以及数据稀疏两个问题,由于从点击到购买的样本还是非常的少,故ESMM模型仍然面临一定的数据稀疏问题。
故
E
S
M
2
ESM^2
ESM2基于ESMM进行改进,进一步解决数据稀疏问题。
挖掘用户行为,发现用户在购买前往往会有其他的行为,比如把想要购买的物品加入购物车或者心愿单。如下图所示:
加入心愿单/购物车的数据相较购买数据还是比较多的,因此可以基于这部分数据,通过多任务学习模型来求解CVR模型。如图所示,文中把加入购物车或者心愿单此类行为称作Deterministic Action (DAction) ,而其他对购买相关性不是很大的行为称作Other Action(OAction) 。此时原来的 Impression→Click→Buy过程变成了更加丰富的Impression→Click→DAction/OAction→Buy过程。
E S M 2 ESM^2 ESM2模型基于Impression→Click→DAction/OAction→Buy过程来建模CVR预估问题。
模型结构
模型共有四个任务,分别为:
- y1:点击率
- y2:点击到发生DAction的概率
- y3:发生DAction到购买的概率
- y4:发生OAction到购买的概率
因为DAction和OAction是对立事件,故未对从点击到OAction的概率进行建模。
CVR = (1 - y2) * y4 + y2 * y3
上述的四个子任务,其用的样本相同的,在整个样本空间中进行训练。
输入首先经过共享嵌入模块(Shared Embedding Module (SEM))转换为对应的嵌入向量,随后通过四个独立的MLP分别预估y1、y2、y3和y4。
LOSS
模型训练的LOSS是三个子LOSS的加权之和:
CTR:
CTAVR:
CTCVR:
LOSS: