数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
三十、FiBiNET [2019]
近年来,许多基于深度学习的
CTR
模型被提出并取得了成功,如Factorization-Machine Supported Neural Network: FNN
、Wide&Deep model: WDL
、Attentional Factorization Machine: AFM
、DeepFM
、XDeepFM
等等。论文
《FiBiNET: Combining Feature Importance and Bilinear Feature Interaction for Click-Through Rate Prediction》
提出了一个叫做FiBiNET
的新模型,它是Feature Importance and Bilinear feature Interaction NETwork
的缩写,用于动态地学习特征重要性和细粒度的特征交互。- 众所周知,不同的特征对目标任务有不同的重要性。例如,当我们预测一个人的收入时,职业这个特征比爱好这个特征更重要。考虑到这一点,论文引入了
Squeeze-and-Excitation network: SENET
来动态地学习特征的权重。 - 此外,特征交互是
CTR
预测领域的一个关键挑战,许多相关工作以简单的方式计算特征交互,如Hadamard
积和内积。论文提出了一种新的细粒度的方法采用双线性函数来计算特征交互。
论文主要贡献:
- 受
SENET
在计算机视觉领域的成功启发,论文使用SENET
机制来动态地学习特征的权重。 - 论文引入了三种类型的双线性交互层
Bilinear-Interaction layer
,以一种精细的方式学习特征交互。而之前的工作用Hadamard
积或内积来计算特征交互。 - 结合
SENET
机制和双线性特征交互,论文的浅层模型在Criteo
和Avazu
数据集上的浅层模型之间(如FFM
)实现了SOTA
。 - 为了进一步提高性能,论文将经典的深度神经网络组件与浅层模型相结合,构成一个深度模型。深度
FiBiNET
在Criteo
和Avazu
数据集上的表现一直优于其他SOTA
的深度模型。
- 众所周知,不同的特征对目标任务有不同的重要性。例如,当我们预测一个人的收入时,职业这个特征比爱好这个特征更重要。考虑到这一点,论文引入了
相关工作:
FM
及其变体:factorization machine: FM
和field-aware factorization machine: FFM
是两个最成功的CTR
模型。FM
使用因子化的参数建模所有的特征交互。它的时间复杂度和空间复杂度都很低,在大型稀疏数据上表现很好。FFM
引入了field-aware
的潜在向量,并赢得了由Criteo
和Avazu
主办的两个比赛。然而,FFM
的空间复杂度太高,不容易在互联网公司中使用。
Deep Learning based CTR Models
:近年来,许多基于深度学习的CTR
模型被提出。大多数基于神经网络的CTR
模型的关键因素是:如何有效地建模特征交互。Factorization-Machine Supported Neural Network: FNN
是一个前馈神经网络,使用FM
来预训练embedding layer
。然而,FNN
只能捕获高阶的特征交互。Wide & Deep model: WDL
联合训练wide linear model
和deep neural network
,从而为推荐系统来结合memorization
和generalization
的好处。然而,对于WDL
的wide
部分的输入,仍然需要专业的特征工程,这意味着cross-product transformation
也需要手工设计。- 为了减轻特征工程中的人工努力,
DeepFM
用FM
取代了WDL
的wide
部分,并在FM
和deep
组件之间共享feature embedding
。DeepFM
被认为是CTR
预估领域中的SOTA
模型之一。 Deep & Cross Network: DCN
以一种显式的方式有效地捕捉了有界阶次的特征交互。eXtreme Deep Factorization Machine: xDeepFM
也通过提出一个新颖的Compressed Interaction Network : CIN
组件来显式地建模低阶特征交互和高阶特征交互。- 正如
《Attentional factorization machines: Learning the weight of feature interactions via attention networks》
所提到的,FM
的一个不足是它对所有特征交互采用相同的权重,然而并不是所有的特征交互都同样有用和具有预测性。因此,他们提出了Attentional Factorization Machine: AFM
模型,该模型使用注意力网络来学习特征交互的权重。 Deep Interest Network: DIN
用兴趣分布interest distribution
表示用户的多样化兴趣,并设计了一个类似注意力的网络结构从而根据候选广告局部地激活相关的兴趣。
SENET Module
:《Squeeze-and-excitation networks》
提出了Squeeze-and-Excitation Network: SENET
,通过显式地建模卷积特征通道之间的相互依赖关系,从而提高网络的表达能力。SENET
被证明在图像分类任务中是成功的,并在ILSVRC 2017
分类任务中赢得了第一名。除了图像分类,
SENET
还有其他的应用。《Recalibrating Fully Convolutional Networks with Spatial and Channel’Squeeze & Excitation’Blocks》
介绍了三种用于语义分割任务的SE
模块的变体。- 对常见的胸部疾病进行分类,以及对胸部
X
光片上的可疑病变区域进行定位(《Weakly Supervised Deep Learning for Thoracic Disease Classifcation and Localization on Chest X-rays》
)是另一个应用领域。 《Global-andlocal attention networks for visual recognition》
用global-and-local attention: GALA
模块扩展了SENET
模块,在ILSVRC
上获得SOTA
的准确性。
30.1 模型
我们的目标是以一种细粒度的方式动态地学习特征的重要性和特征交互。为此,我们提出了用于
CTR
预估任务的Feature Importance and Bilinear feature Interaction NETwork: FiBiNET
。我们的模型结构如下图所示。为了清晰起见,我们省略了
logistic regression
的部分,这部分可以很容易地纳入。我们的模型由以下部分组成:sparse input layer, embedding layer, SENET layer, Bilinear-Interaction layer, combination layer, multiple hidden layers, output layer
。sparse input layer
和embedding layer
与DeepFM
相同,它对输入特征采用稀疏表示并将原始特征嵌入到稠密向量中。SENET layer
可以将embedding layer
转换为SENET-Like embedding feature
,这有助于提高特征的discriminability
。由于原始
Embeddings
和SENET-Like Embeddings
都作为后续模块的输入,因此SENET-Like Embeddings
仅仅是作为原始Embeddings
的补充(类似于残差机制),而不是作为原始Embeddings
重要性的解释。如果仅仅将
SENET-Like Embeddings
作为后续模块的输入,这时候才具有可解释性。接下来的
Bilinear-Interaction layer
分别对原始embedding
和SENET-Like embedding
的二阶特征交互进行建模。combination layer
拼接了Bilinear-Interaction layer
的输出。最后,我们将
combination layer
的输出馈入一个深度神经网络从而得到预测分数。
Sparse Input and Embedding layer
:sparse input layer
对原始输入特征采用了sparse representation
,embedding layer
将sparse feature
嵌入到一个低维稠密的实值向量中。embedding layer
的输出是由field embedding
向量所拼接而来: $ \mathbf{\vec e} = \left[\mathbf{\vec e}_1,\mathbf{\vec e}_2,\cdots,\mathbf{\vec e}_f\right]\in \mathbb R^{fk} $ ,其中 $ \mathbf{\vec e}_i\in \mathbb R^k $ , $ f $ 为field
数量, $ k $ 为field embedding
维度。SENET Layer
:我们都知道,不同的特征对目标任务有不同的重要性。例如,当我们预测一个人的收入时,职业这个特征比爱好这个特征更重要。受到SENET
在计算机视觉领域的成功启发,我们引入了SENET
机制,让模型更加关注特征的重要性。对于特定的CTR
预估任务,我们可以通过SENET
机制动态地增加重要特征的权重、减少不重要特征的权重。以
feature embedding
作为输入,SENET
针对field embedding
产生权重向量 $ \mathbf{\vec a}=(a_1,\cdots,a_f)\in \mathbb R^f $ ,然后用向量 $ \mathbf{\vec a} $ 来重新缩放原始的embedding
$ \mathbf{\vec e} $ 从而得到一个新的embedding
(即,SENET-Like embedding
):其中:
$ a_i\in \mathbb R $ 是一个标量,表示第 $ i $ 个field
的权重; $ \mathbf{\vec v}_i\in \mathbb R^k $ 为第 $ i $ 个field
的SENET-Like embedding
。如下图所示,
SENET
由三个步骤组成:squeeze step
、excitation step
、re-weight step
。squeeze
:这一步是用来计算每个field embedding
的summary statistics
的。具体而言,我们使用一些池化方法(如max/mean
)从而将原始的embedding
$ \mathbf{\vec e} = \left[\mathbf{\vec e}_1,\mathbf{\vec e}_2,\cdots,\mathbf{\vec e}_f\right] $ 挤压为一个统计向量 $ \mathbf{\vec z}=(z_1,\cdots,z_f)\in \mathbb R^f $ ,其中 $ z_i\in \mathbb R $ 为一个标量,表示第 $ i $ 个特征表示的全局信息。 $ z_i $ 的计算公式为 $ z_i = F_\text{sq}(\mathbf{\vec e}_i) $ ,其中 $ F_\text{sq}(\cdot) $ 可以为均值池化、sum
池化、或者最大池化。原始
SENET
论文中的squeeze
函数是最大池化。然而,我们的实验结果表明,均值池化的性能比最大值池化的性能更好。excitation
:这一步可以用来基于统计向量 $ \mathbf{\vec z} $ 来学习每个field embedding
的权重。我们使用两个全连接层来学习权重:- 第一个全连接层是一个降维层,参数为
$ \mathbf W_1 $ ,降维率 $ r $ 是一个超参数,非线性函数为 $ \sigma_1 $ 。 - 第一个全连接层是一个升维层,参数为
$ \mathbf W_2 $ ,非线性函数为 $ \sigma_2 $ 。
正式地,
field embedding
的权重的计算公式为:其中:
$ \sigma_1,\sigma_2 $ 为激活函数; $ \mathbf W_1\in \mathbb R^{f\times \frac{f}{r}}, \mathbf W_2\in \mathbb R^{\frac{f}{r}\times f} $ 。这一步是降维,从而最多保留最重要的
$ r $ 个权重。- 第一个全连接层是一个降维层,参数为
re-weight
:SENET
的最后一步是reweight
,在原始论文中被称为re-scale
。SENET-Like embedding
$ \mathbf{\vec v} $ 可以被计算为:
Bilinear-Interaction Layer
:Interaction layer
用于计算二阶的特征交互。特征交互的经典方法是内积和Hadamard
积,其形式分别为: $ \left\{\left(\mathbf{\vec v}_i\cdot \mathbf{\vec v}_j\right)x_ix_j\right\}_{(i,j)\in \mathcal R_x} $ 以及 $ \left\{\left(\mathbf{\vec v}_i\odot\mathbf{\vec v}_j\right)x_ix_j\right\}_{(i,j)\in \mathcal R_x} $ ,其中 $ \mathcal R_x=\{(i,j)\}_{i,j\in \{1,\cdots,f\}, j\gt i} $ 。内积和Hadamard
积过于简单,不能有效地建模稀疏数据集中的特征交互。因此,我们提出了一种更加细粒度的方法来结合内积和Hadamard
积,如下图(c)
所示。具体来说,我们在
Interaction layer
提出了三种类型的双线性函数,并称这一层为Bilinear-Interaction layer
。以第 $ i $ 个field embedding
$ \mathbf{\vec v}_i $ 和第 $ j $ 个field embedding
$ \mathbf{\vec v}_j $ 为例,特征交互的结果 $ p_{i,j} $ 可以计算为:Field-All Type
:其中:
$ \mathbf W\in \mathbb R^{k\times k} $ 为权重矩阵,它在所有的field interaction pair
之间共享。Field-Each Type
:其中:
$ \mathbf W_i\in \mathbb R^{k\times k} $ 为权重矩阵,每个field
都有一个。Field-Interactoin Type
:其中:
$ \mathbf W_{i,j}\in \mathbb R^{k\times k} $ 为权重矩阵,每个field interaction pair
都有一个。
如
Figure 1
所示,我们有两种embedding
:原始embedding
、SENET-like embedding
。对于每一种embedding
,我们可以选择采用bilinear
函数或Hadamard
积。最终,
Bilinear-Interaction layer
可以从原始embeddign
$ \mathbf{\vec e} $ 中输出一个interaction vector
$ \mathbf{\vec p}=\left[\mathbf{\vec p}_1,\cdots,\mathbf{\vec p}_f\right] $ ,从SENET-like embedding
$ \mathbf{\vec v} $ 中输出一个interaction vector
$ \mathbf{\vec q}=\left[\mathbf{\vec q}_1,\cdots,\mathbf{\vec q}_f\right] $ 。Combination Layer
:combination layer
将interaction vector
$ \mathbf{\vec p} $ 和 $ \mathbf{\vec q} $ 拼接起来:如果我们将向量
$ \mathbf{\vec c} $ 中的每个元素相加,然后用一个sigmoid
函数来输出预测值,我们就有了一个浅层的CTR
模型。为了进一步提高性能,我们将浅层组件和
DNN
组件组合成一个统一的模型,形成深度网络结构。这个统一的模型在本文中称为深度模型。而更好的办法是:拼接
$ \mathbf{\vec c} $ 之后进行线性加权,即:Deep Network
:深度网络由多个全连接层组成,隐式地捕获了高阶的特征交互。Deep Network
的输入是什么?论文没有说明。但是根据Figure 1
,应该是 $ \mathbf{\vec c} $ 。Output Layer
:我们模型的输出为:其中:
$ \sigma $ 为sigmoid
函数, $ y_d $ 为deep part
的输出, $ w_0+\sum_{i=0}^{2fk}w_ic_i $ 为wide part
的输出。目标函数为交叉熵损失:
其中:
$ N $ 为样本数量, $ y_i $ 为ground-truth
。与
FM, FNN
的联系:- 假设我们去掉
SENET layer
和Bilinear-Interaction layer
,不难发现我们的模型将退化为FNN
。 - 当我们进一步去掉
DNN
部分,同时使用常数的sum
,那么浅层FiBiNET
就退化为传统的FM
模型。
- 假设我们去掉
30.2 实验
数据集:
Criteo
:包含有4500
万个样本的点击日志。在Criteo
数据集中有26
个匿名的categorical feature field
和13
个continuous feature field
。我们将数据集随机分成两部分:90%
用于训练,其余用于测试。Avazu
:包含有4000
万个样本的点击日志。对于每个点击数据,有24
个feature field
。我们将其随机分成两部分:80%
用于训练,而其余部分用于测试。
评估指标:
AUC, LogLoss
。baseline
方法:- 浅层
baseline
模型:LR
、FM
、FFM
、AFM
。 - 深层
baseline
模型:FNN
、DCN
、DeepFM
、XDeepFM
。
- 浅层
实现细节:
- 所有模型用
TensorFlow
来实现。 embedding layer
的维度:Criteo
数据集设为10
、Avazu
数据集设为50
。- 使用
Adam
优化器,Criteo
数据集的batch size = 1000
,Avazu
数据集的batch size = 500
,学习率设为0.0001
。 - 对于所有的深度模型,层深度都是
3
、激活函数都是RELU
、dropout rate
都是0.5
。Criteo
数据集的隐层维度为400
、Avazu
数据集的隐层维度为2000
。 - 对于
SENET
部分,两个全连接层中的激活函数是RELU
函数,缩减率设置为 $ r=3 $ 。 - 硬件配置:
2
个Tesla K40 GPU
。
- 所有模型用
Table 1
和Table 2
中分别总结了浅层模型和深层模型在Criteo
测试集和Avazu
测试集上的总体表现。这里
Interaction layer
使用Field-All
双线性函数,如表格的标题所示。浅层模型:我们的浅层
SE-FM-All
模型一直优于其他模型,如FM
、FFM
、AFM
等。- 一方面,结果表明,将
SENET
机制与稀疏特征上的bilinear interaction
结合起来,对于许多现实世界的数据集来说是一种有效的方法。 - 另一方面,对于经典的浅层模型来说,
SOTA
的模型是FFM
,但是它受到大内存的限制,不能轻易用于互联网公司。我们的浅层模型的参数较少,但仍然比FFM
表现更好。因此,它可以被视为FFM
的一个替代方案。
- 一方面,结果表明,将
深层模型:
将浅层部分和
DNN
结合成一个统一的模型,浅层模型可以获得进一步的性能提升。我们可以从实验结果中推断,隐式的高阶特征交互有助于浅层模型获得更多的表达能力。在所有的比较方法中,我们提出的深度
FiBiNET
取得了最好的性能。在Criteo
数据集上和Avazu
数据集上,我们的深度模型以0.222%
和0.59%
的AUC
(0.494%
和0.6%
的logloss
)优于DeepFM
。结果表明,将
SENET
机制与DNN
中的Bilinear-Interaction
相结合进行预测是有效的。一方面,
SENET
固有地引入了以输入为条件的动态性,有助于提高特征的discriminability
;另一方面,与内积或Hadamard
积等其他方法相比,双线性函数是一种有效的方法来建模特征交互。
不同的特征交互方式:我们将讨论在
Bilinear-Interaction layer
中,双线性函数和Hadamard
积不同类型的组合的影响。为方便起见,我们用0
和1
来表示在Bilinear-Interaction layer
使用哪种函数:1
表示使用双线性函数,而0
表示使用Hadamard
积。Interaction layer
使用Field-Each
双线性函数。很奇怪Table3
和Table1/2
使用了不同的双线性函数。我们有两个
embedding
,所以使用两个数字。第一个数字表示用于原始embedding
的特征交互方法,第二个数字表示用于SENET-like embedding
的特征交互方法。例如:10
表示双线性函数被用作原始embedding
的特征交互方法、Hadamard
函数被用作SENET-like embedding
的特征交互方法。实验结果如下表所示。可以看到,在
Criteo
数据集上:11
的组合在浅层模型中表现最好,但是在深度模型中表现最差。- 深层模型中的首选组合应该是
01
。这种组合意味着双线性函数只适用于SENET-Like embedding layer
。
不同数据集的结论不同,因此这个双线性函数的组合方式需要根据不同的数据进行调优。
Bilinear-Interaction
的Field Types
:这里我们研究了Bilinear-Interaction layer
的不同field
类型(Field-All, Field-Each, Field-Interaction
)的影响。对于深层模型,Bilinear-Interaction layer
的组合被设置为01
;对于浅层模型,Bilinear-Interaction layer
的组合被设置为11
。- 对于浅层模型,与
Field-All
类型相比(见Table 1
),Field-Interaction
类型可以在Criteo
数据集上获得0.382%
(相对提升0.476%
)的AUC
改进。 - 对于深层模型,与
Field-All
类型相比(见Table 2
),Criteo
数据集的Field-Interaction
类型、以及Avazu
数据集的Field-Each
类型可以分别获得一些改进。 - 不同类型的
Bilinear-Interaction layer
的性能取决于数据集。
- 对于浅层模型,与
超参数:
Embedding
部分:我们将embedding size
从10
改变到50
。可以看到:随着维度从
10
扩大到50
,在Avazu
数据集上我们的模型可以获得大幅改善。当我们增加
Criteo
数据集的embedding size
时,性能就会下降。扩大
embedding size
意味着增加embedding layer
和DNN
部分的参数数量。我们猜测可能是Criteo
数据集的特征比Avazu
数据集多得多,导致了优化的困难。有两个原因:过拟合、以及优化困难。因为这两个数据集的样本量都在
4000
万以上,因此二者的过拟合程度应该相差无几。
SENET
部分:squeeze
函数:下表总结了不同squeeze
函数的性能,我们发现GlobalMeanPooling
在Criteo
数据集和Avazu
数据集上优于GlobalMaxPooling
或GlobalSumPooling
。激活函数:我们改变了激活函数的组合,如下表所示。
- 在这些激活函数的组合中,
Relu-Relu
略胜于其他组合。 - 与原始
SENET
的设置不同,FiBiNET
的SENET
组件中的第二个激活函数是Relu
函数,其性能比sigmoid
函数更好。
- 在这些激活函数的组合中,
此外,我们还改变了压缩率(
$ 1\le r\le 5 $ ),发现压缩率的最佳设置是 $ r=3 $ 。
DNN
部分:网络层数:增加层数可以增加模型的复杂性。我们可以从下图中观察到,增加层数在开始时可以提高模型性能。然而,如果层数不断增加,性能就会下降。这是因为过于复杂的模型很容易过拟合。对于
Avazu
数据集和Criteo
数据集,将隐藏层的数量设置为3
是一个不错的选择。隐层神经元数量:同样,增加每层的神经元数量也会引入复杂性。在下图中,我们发现对于
Criteo
数据集,每层设置400
个神经元比较好;对于Avazu
数据集,每层设置2000
个神经元比较好。
消融研究:目前为止,我们还没有分离出
FiBiNET
的每个组件的具体贡献。在本节中,我们对FiBiNET
进行了消融实验,以便更好地了解它们的相对重要性。我们将DeepSE-FM-Interaction
设定为基础模型,并以下列方式进行:No BI
:从FiBiNET
中删除Bilinear-Interaction layer
。No SE
:从FiBiNET
中删除SENET layer
。
如果同时我们删除
SENET layer
和Bilinear-Interaction layer
,我们的浅层FiBiNET
和深层FiBiNET
将降级为FM
和FNN
。实验结果如下表所示。Bilinear-Interaction layer
和SENET layer
对于FiBiNET
的性能都是必要的。我们可以看到,当我们删除任何组件时,性能将明显下降。- 在
FiBiNET
中,Bilinear-Interaction layer
与SENET layer
一样重要。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论