本文介绍的论文名称是:《Representation Learning-Assisted Click-Through Rate Prediction》 论文下载地址为:https://arxiv.org/abs/1906.04365
本文的一个核心的思想是通过多任务的思路,建模特征之间的特定联系,从而提升CTR预估的效果。同时感觉将召回阶段的方法和精排阶段用到的方法融合到一个网络结构中,一起来学习一下。
咱们前面也介绍过许多广告CTR预估中的常见模型了,如DeepFM、Wide & Deep。这些方法取得了一定的效果,但其存在一个弊端是仅考虑了特征与CTR之间的联系,而没有考虑特征之间存在的关系,如用户-广告 或者 广告-广告之间的关系,如下图所示:
特征之间的关系咱们举个简单的例子,如两个咖啡广告对应的Embedding,应该在空间中距离相近;而咖啡与服装的广告对应的Embedding,应该在空间中距离较远。DeepFM、Wide & Deep等方法并没有考虑这一层的关系,而仅仅考虑这些广告对应的Embedding对于CTR的影响。
基于上述的考虑,本文提出了DeepMCP模型,全拼是Deep Matching, Correlation and Prediction Model。从名字中也可以看出,该模型包含三个部分,分别是matching subnet、correlation subnet和prediction subnet。matching subnet用来建模用户和广告之间的关系、correlation subnet用来建模广告之间的关系,而prediction subnet则是用来建模特征-点击率之间的关系。
接下来咱们介绍下DeepMCP的模型结构。
模型的整体结构如下:
输入特征总体上可以分为四个部分,用户特征,如用户ID、年龄;query特征(搜索场景下),如query文本,query类别;广告特征,如广告ID,广告标题等等(图中的广告特征分为了三个部分,第一个可以理解为目标广告、其他两个是上下文广告和负样本广告,这两个只在correlation subnet中使用,后面详细介绍);其他特征,如hour of day, day of week等等。
从图中可以看到,每一部分使用的特征是不同的,但是每一个子网络使用的embedding是共享的。
接下来,详细介绍每一部分。
这里的Prediction Subnet是一个简单的DNN网络结构,输入特征包括用户特征、Query特征、目标广告特征和其他特征。
特征首先通过Embedding层转换为对应的Embedding,然后将特征进行横向拼接输入到DNN中,最后在输出层通过sigmoid函数转换为0-1之间的点击率预估值:
这一部分的损失使用logloss:
这里的Matching Subnet建模用户和广告之间的关系,感觉和点击率预估的任务有点重复,但思路还是不一样的。这里借鉴的是矩阵分解的思路,也就是说,如果用户点击过某个广告的话,我们就希望其对应的embedding是能够相近的:
如上图所示,Matching Subnet包含两部分,一部分用来计算用户的更高层表示,输入是用户特征和Query特征,输出计作vu;另一部分用来计算目标广告的更高层表示,输入时目标广告特征va。
并通过下面的式子计算matching score:
损失函数这里仍然选择的是logloss:
需要注意的一个点是计算用户和广告高层表示的时候,最后一层的激活函数是tanh,而非relu,这里主要的考虑是relu会导致很多位置的输出是0,这样在计算内积时,会导致内积趋近于0。
这里的correlation subnet建模广告之间的关系,借鉴的是Skip-Gram的思路,将用户点击的广告序列作为一个document,并最大化下面的log likelihood:
实现Skip-Gram有很多种方法,相信大家也有所了解,这里使用的是负采样的方式,因此这部分的loss是:
这一块介绍的比较简略,相信大家对于Skip-Gram都比较熟悉了,如果有不熟悉的同学,可以翻看word2vec相关的资料。
离线训练过程如下图所示:
训练目标是使如下的联合loss最小化:
由于主要的目标是提升点击率预估的效果,因此验证模型效果主要看一下在验证集上的AUC。
在线预测过程如下:
本文使用DeepMCP模型与LR、FM、DeepFM等模型进行了效果对比,在两个数据集上的AUC和Logloss表现如下:
本文提出的这个模型结构还是具有一定借鉴意义的,在传统的点击率预估中,一般会分召回和精排两个阶段,召回阶段通常使用的是协同过滤、双塔模型(一边计算item embedding,一边计算user embedding)。本文提出的模型感觉将召回阶段和精排阶段用到的方法进行了有效的融合,提升了点击率预估的效果。