深度学习推荐系统-特征交叉-MaskNet
深度学习推荐系统-特征交叉-MaskNet
MaskNet通过引入instance-guided mask方法,创新性地在特征嵌入层和前馈层同时使用element-wise product,有效提升了点击率模型的效果。这种结构不仅能够动态地融入全局上下文信息,还能突出重要的特征,为深度学习推荐系统提供了一种新的特征交叉方式。
背景
《MaskNet: Introducing Feature-Wise Multiplication to CTR Ranking Models by Instance-Guided Mask》提出了MaskBlock更好的挖掘交叉特征,提升点击率模型的效果。
这篇论文的贡献主要如下:
- 提出了一种instance-guided mask方法,该方法在DNN中的特征嵌入层和前馈层同时使用element-wise product。instance-guided mask包含全局上下文信息,动态地融入到特征嵌入层和前馈层,突出重要的特征。
- 提出了MaskBlock结构,该结构由3个部分组成,分别为instance-guided mask,前馈层,normalization层。通过这种结构,把标准的DNN扩展为包含可加可乘的交互特征结构。
模型介绍
Embedding Layer
关于特征,对于稀疏特征,就直接embedding成k维,对于稠密特征,通过乘一个k维的向量转换成特征,最后把所有特征concat在一起,如下所示:
f表示特征数量,每个特征都映射成了k维度,所Embedding Layer输出了f*k维的特征向量。
Instance-Guided Mask
通过Instance-Guided,充分利用了输入样本得到的全局上下文信息,对特征层和前馈层中重要的包含信息的特征进行强化,在DNN中引入了乘法操作,使得模型更加有效的捕捉到复杂的交互特征。
如上图所示,两个使用了identity function全连接的FC层,可以注意到
第一个FC层是集成层,为了充分捕捉全局上下文特征,它要比下一层更"宽"。该层的参数为Wd1,这里d表示第d个mask层。第二个FC层是投射层,通过Wd2降低维度,如下所示:
这里要注意projection layer的输出维度要等于feature embedding层或者mlp层,所以z > t,令r = t/z表示衰减比率,是一个超参。
该论文提出使用element-wise product来融合全局上下文信息(提取feature embeding层或前馈网络层特征),如下式所示:
instance-guided mask可以被看作为一种特殊的bit-wise attention或者是gate结构。Vmask可以直接看作为每一个bit的权重,可以加强重要的特征,减弱噪声对模型的影响。其实Vmask有点像之前介绍的SENET双塔,只不过SENET是field-wise mask,这里是bit-wise mask。
MaskBlock
了解了maskblock中最重要的instance-guided mask后,理解maskblock就很简单了,先简单回顾下layerNorm,如下式所示:
在本文用的LN中,把每个特征都当作layer,做LN后concat在一起,如下所示:
前馈层后同样使用了LN:
最后maskblock如下图所示:
这个maskblock以另一个maskblock的输出和feature embedding layer为输入。相当于在maskblock的强特上,通过Vmask继续筛选强特。这种结构定义如下公式:
MaskNet
所以最后网络结构长啥样?论文给了两种方案,serial masknet和parallel masknet,如下图所示:
看图还是很好理解的,不赘述。最后prediction layer也比较简单,用logloss就好,还可以加上正则化。
从实验我们可以看到serial masknet和parallel masknet在不同数据集上表现各有优劣,但是相较于其他模型都是最好的。
一句话总结
一种通用的特征交叉方式,对原有特征进行mask加权,提高特征表达能力,进而提升模型效果。
参考链接
- paper
- MaskNet 这个CTR模型,有点意思
- 一文搞懂Batch Normalization 和 Layer Normalization