CTR模型相关论文,大家已经看了很多了,如FNN、DeepFm、XDeepFM等,难免会"审美疲劳",所以这些模型真的充分挖掘了交叉特征了吗?这篇论文《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扩展为包含可加可乘的交互特征结构。
  • 本文提出了排序框架MaskNet,充分利用了MaskBlock作为基本单元,提出了串行MaskBlock和并行MaskBlock。
  • 在3个数据集上,MaskNet都表现最好,说明MaskBlock可以显著提升DNN挖掘复杂交互特征的能力。

 

MaskNet 这个CTR模型,有点意思_计算机视觉

Embedding Layer:

关于特征,对于稀疏特征,就直接embedding成k维,对于稠密特征,通过乘一个k维的向量转换成特征,最后把所有特征concat在一起,如下所示:

 

MaskNet 这个CTR模型,有点意思_python_02

f表示特征数量,每个特征都映射成了k维度,所Embedding Layer输出了f*k维的特征向量。

Instance-Guided Mask:
通过Instance-Guided,充分利用了输入样本得到的全局上下文信息,对特征层和前馈层中重要的包含信息的特征进行强化,在DNN中引入了乘法操作,使得模型更加有效的捕捉到复杂的交互特征。

 

MaskNet 这个CTR模型,有点意思_算法_03

如上图所示,两个使用了identity function全连接的FC层,可以注意到

第一个FC层是集成层,为了充分捕捉全局上下文特征,它要比下一层更"宽"。该层的参数为Wd1,这里d表示第d个mask层。第二个FC层是投射层,通过Wd2降低维度,如下所示:

 

MaskNet 这个CTR模型,有点意思_python_04

 

MaskNet 这个CTR模型,有点意思_深度学习_05

 

MaskNet 这个CTR模型,有点意思_深度学习_06

 

MaskNet 这个CTR模型,有点意思_深度学习_07

这里要注意projection layer的输出维度要等于feature embedding层或者mlp层,所以z > t,令r = t/z表示衰减比率,是一个超参。

该论文提出使用element-wise product来融合全局上下文信息(提取feature embeding层或前馈网络层特征),如下式所示:

 

MaskNet 这个CTR模型,有点意思_算法_08

 

MaskNet 这个CTR模型,有点意思_python_09

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,如下式所示:

 

MaskNet 这个CTR模型,有点意思_算法_10

在本文用的LN中,把每个特征都当作layer,做LN后concat在一起,如下所示:

 

MaskNet 这个CTR模型,有点意思_深度学习_11

前馈层后同样使用了LN:

 

MaskNet 这个CTR模型,有点意思_深度学习_12

最后maskblock如下图所示:

 

MaskNet 这个CTR模型,有点意思_计算机视觉_13

这个maskblock以另一个maskblock的输出和feature embedding layer为输入。相当于在maskblock的强特上,通过Vmask继续筛选强特。这种结构定义如下公式:

 

MaskNet 这个CTR模型,有点意思_深度学习_14

MaskNet:

所以最后网络结构长啥样?论文给了两种方案,serial masknet和parallel masknet,如下图所示:

 

MaskNet 这个CTR模型,有点意思_python_15

 

MaskNet 这个CTR模型,有点意思_深度学习_16

看图还是很好理解的,不赘述。最后prediction layer也比较简单,用logloss就好,还可以加上正则化。

 

MaskNet 这个CTR模型,有点意思_python_17

 

MaskNet 这个CTR模型,有点意思_算法_18

从实验我们可以看到serial masknet和parallel masknet在不同数据集上表现各有优劣,但是相较于其他模型都是最好的。

1.MaskNet: Introducing Feature-Wise Multiplication to CTR Ranking Models by Instance-Guided Mask