FiBiNET模型

2019-10-06  本文已影响0人  缄默笔记

论文:FiBiNET: Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction

https://arxiv.org/abs/1905.09433

简介

(1)FiBiNET通过SENET(Squeeze-and-Excitation network)机制动态学习特征重要性;

(2)当前的许多通过特征组合进行 CTR 预估的工作主要使用特征向量的内积或哈达玛积来计算交叉特征,这两种方法比较简单,在稀疏数据集上,很难有效地对特征交叉进行建模,文章提出一种双线性函数学习特征交叉。

1 网络结构

结构主要包含:输入层、Embedings层、SENET层、Bilinear-Interaction层、Combination层和DNN层。

2 SENET Layer

2.1 SENet

SeNet来源于CV,结构如下,包括三个过程:

(1)Squeeze:顺着空间维度来进行特征压缩,将每个二维的特征通道变成一个实数,这个实数某种程度上具有全局的感受野,并且输出的维度和输入的特征通道数相匹配。它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局的感受野,这一点在很多任务中都是非常有用的。

(2)Excitation:它是一个类似于循环神经网络中门的机制。通过参数 w 来为每个特征通道生成权重,其中参数 w 被学习用来显式地建模特征通道间的相关性。

(3)Scale:将 Excitation 的输出的权重看做是进过特征选择后的每个特征通道的重要性,然后通过乘法逐通道加权到先前的特征上,完成在通道维度上的对原始特征的重标定。

使用 global average pooling 作为 Squeeze 操作。紧接着两个 Fully Connected 层组成一个 Bottleneck 结构去建模通道间的相关性,并输出和输入特征同样数目的权重。我们首先将特征维度降低到输入的 1/16,然后经过 ReLu 激活后再通过一个 Fully Connected 层升回到原来的维度。这样做比直接用一个 Fully Connected 层的好处在于:

1)具有更多的非线性,可以更好地拟合通道间复杂的相关性;

2)极大地减少了参数量和计算量。然后通过一个 Sigmoid 的门获得 0~1 之间归一化的权重,最后通过一个 Scale 的操作来将归一化后的权重加权到每个通道的特征上。

2.2 SENET Layer

SENET层包含Squeeze、Excitation和Re-Weight三个过程:

Squeeze:输入为embeding层输出,对于embeding层的每个fields,进行pooling(均值pooling优于sum-pooling),维度由fields_num * embeding_size转化为fields_num

Excitation:连接两个fc层,先进行降维,然后升维到fields_num维度,得到每个fields的权重

Re-Weight:embeding层每个fields乘以对应权重,得到最终结果

3 Bilinear-Interaction Layer

传统的特征交叉方式广泛采用了内积 ( fm,ffm 等 ) 和哈达玛积 ( AFM,NFM 等 )。而这两种方式在稀疏数据上很难有效对特征交叉进行建模。文章提出结合内积和哈达玛积并引入一个额外的参数矩阵 W来学习特征交叉,

4 Combination Layer

(1)Combination层把embeding层原始输出交叉结果和SENET层输出交叉结果拼接在一起

(2)如果对Combination层输出,求和后直接接入sigmoid,则得到一个浅层网络

(3)如果对Combination层输出,接入DNN网络,则得到一个深层网络

(4)假如去掉SENET layer 和 Bilinear-Interaction layer,模型可以看作FNN模型,再去掉DNN部分,可以看作传统的FM模型

5 模型效果

4.1 浅层网络

4.2 深层网络

参考:

[1] RecSys19 | FiBiNET:结合特征重要性和双线性特征交互进行 CTR 预估

[2] Momenta详解ImageNet 2017夺冠架构SENet

上一篇 下一篇

猜你喜欢

热点阅读