【推荐算法】单目标精排模型——FiBiNET

key word: 学术论文

Motivation:传统的Embedding&MLP算法是通过内积和Hadamard product实现特征交互的,这篇文章的作者提出了采用SENET实现动态学习特征的重要性;作者认为简单的内积和Hadamard product无法有效对稀疏特征进行特征交互,因此提出bilinear function实现特征交互,提出了FIBINET

preface: 笔者认为这篇文章没有多大的模型创新点,本质上就是使用了SENET和内积与Hadamard product的融合实现

一、模型设计

SENET

实现动态学习特征重要性,包括三个部分:squeeze step, excitation step and re-weight step,为了方便学习,笔者将这一过程更直观的展示出来

  • Squeeze step:对每个field实现mean pooling操作【原来SENET模型是采用max pooling操作】,得到一个标量值,每一个field对应一个标量值,最后输出的向量维度:\(1 \times field\)
  • excitation step :将得到的标量向量经过两层全连接层,第一层先实现维度减小,第二层FC层再还原原来的维度从而得到每个field的权重值;
  • re-weight step:最后将得到的权重值与初始输入的embedding进行加权,从而提高重要特征的重要性,减少不相关特征的重要性;

image

Bilinear-Interaction Layer

本质上就是对内积和Hadamard product的融合,作者提出了三种不同field的融合形式

一般性融合的形式化表达:

\[p_{ij}=v_i ·W \odot v_j \]

其中,\(v_i,v_j\)表示不同field的embedding,而\(W\)的不同设计决定了三种不同的融合形式:

  • Field-All Type

所有field共有同一个\(W\)

  • Field-Each Type

每个field都有一个\(W\),共有field

\[p_{ij}=v_i ·W_i \odot v_j \]

  • Field-Interaction Type

每个field和其他不同的field都有一个\(W\),共有field \(\times\)field

\[p_{ij}=v_i ·W_{ij} \odot v_j \]

为什么作者把这个模块称为bilinear-interaction layer

作者对原始Embedding和经过SENET的Embedding都进行了融合field,得到\(p=[p_1,p_2,...,p_n],q=[q_1,q_2,...,q_n]\)两个向量,并对两个向量实现concat操作合成一个新的向量\(F_{concat}(p,q)\)

Output Layer

  • 简单形式:直接对\(F_{concat}(p,q)\)向量求和并通过\(sigmoid\)函数;
  • 复杂形式:再经过神经网络进行预测输出;

image

二、实验

实验数据集:

Criteo2 dataset:90%作为训练集

Avazu:80%作为训练集

评价指标

AUC

Log loss

实验结果

image

posted @ 2024-12-10 22:06  九年义务漏网鲨鱼  阅读(58)  评论(0)    收藏  举报