key word:
学术论文Motivation: 传统的
Embedding&MLP算法是通过内积和Hadamard product实现特征交互的,这篇文章的作者提出了采用SENET实现动态学习特征的重要性;作者认为简单的内积和Hadamard product无法有效对稀疏特征进行特征交互,因此提出bilinear function实现特征交互,提出了FIBINETpreface: 笔者认为这篇文章没有多大的模型创新点,本质上就是使用了
SENET和内积与Hadamard product的融合实现
一、模型设计
SENET
实现动态学习特征重要性,包括三个部分:
squeeze step,excitation stepandre-weight step,为了方便学习,笔者将这一过程更直观的展示出来
- Squeeze step:对每个- field实现mean pooling操作【原来SENET模型是采用max pooling操作】,得到一个标量值,每一个- field对应一个标量值,最后输出的向量维度: 1 × f i e l d 1 \times field 1×field;
- excitation step:将得到的标量向量经过两层全连接层,第一层先实现维度减小,第二层FC层再还原原来的维度从而得到每个- field的权重值;
- re-weight step:最后将得到的权重值与初始输入的embedding进行加权,从而提高重要特征的重要性,减少不相关特征的重要性;

Bilinear-Interaction Layer
本质上就是对内积和Hadamard product的融合,作者提出了三种不同
field的融合形式
一般性融合的形式化表达:
  p i j = v i ⋅ W ⊙ v j p_{ij}=v_i ·W \odot v_j pij=vi⋅W⊙vj
 其中, v i , v j v_i,v_j vi,vj表示不同field的embedding,而 W W W的不同设计决定了三种不同的融合形式:
- Field-All Type
所有
field共有同一个 W W W
- Field-Each Type
每个
field都有一个 W W W,共有field个
p i j = v i ⋅ W i ⊙ v j p_{ij}=v_i ·W_i \odot v_j pij=vi⋅Wi⊙vj
- Field-Interaction Type
每个
field和其他不同的field都有一个 W W W,共有field× \times ×field个
p i j = v i ⋅ W i j ⊙ v j p_{ij}=v_i ·W_{ij} \odot v_j pij=vi⋅Wij⊙vj
❓ 为什么作者把这个模块称为bilinear-interaction layer
作者对原始Embedding和经过
SENET的Embedding都进行了融合field,得到 p = [ p 1 , p 2 , . . . , p n ] , q = [ q 1 , q 2 , . . . , q n ] p=[p_1,p_2,...,p_n],q=[q_1,q_2,...,q_n] p=[p1,p2,...,pn],q=[q1,q2,...,qn]两个向量,并对两个向量实现concat操作合成一个新的向量 F c o n c a t ( p , q ) F_{concat}(p,q) Fconcat(p,q)
Output Layer
- 简单形式:直接对 F c o n c a t ( p , q ) F_{concat}(p,q) Fconcat(p,q)向量求和并通过 s i g m o i d sigmoid sigmoid函数;
- 复杂形式:再经过神经网络进行预测输出;

二、实验
实验数据集:
Criteo2 dataset:90%作为训练集
Avazu:80%作为训练集
评价指标
AUC
Log loss
实验结果
