由于几个原因,CTR
预测问题非常具有挑战性:
首先,输入特征是极其稀疏和高维的。
在现实世界的应用中,相当比例的用户人口统计学和item
属性通常是离散的。为了应用监督学习,这些特征首先被转换为 one-hot embedding
向量,这很容易导致特征具有数百万的维度。面对如此稀疏的、高维的输入特征,机器学习模型很容易过拟合。
其次,正如大量文献所示,高阶特征交互 feature interaction
对良好的性能至关重要。然而,寻找这种有意义的高阶组合特征在很大程度上依赖于领域专家。此外,几乎不可能手工制作出所有有意义的组合。
有人可能会问,我们可以列举出所有可能的高阶特征,让机器学习模型选择有意义的特征。然而,枚举所有可能的高阶特征将指数级地增加输入特征的维度和稀疏度,导致更严重的模型过拟合问题。
Factorization Machine: FM
结合了多项式回归模型和因子分解技术从而建模特征交互,并在各种任务中证明了有效性。然而,受其多项式的限制,它只对低阶特征交互建模有效,而无法捕获高阶特征交互。
最近,人们提出许多基于深度神经网络的工作从而建模高阶特征交互。具体而言,通常使用多层非线性神经网络来捕获高阶特征交互。然而,这类方法有两个局限性:
multiplicative
的特征交互方面效率低下。在论文 《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》
中,作者提出了一种基于多头自注意力机制的方法。具体而言:
categorical
特征和 numerical
特征首先被嵌入到低维空间中,这降低了输入特征的维度,同时允许不同类型的特征通过向量运算(如求和和内积)来交互。
然后,AutoInt
提出了一个新的交互层 interacting layer
,以促进不同特征之间的交互。在每个交互层内,允许每个特征与所有其他特征进行交互,并能够通过多头注意力机制自动识别相关特征以形成有意义的高阶特征。此外,多头机制将一个特征投射到多个子空间中,因此它可以在不同的子空间中捕获不同的特征交互。
论文使用注意力机制来度量特征之间的相关性,这提供了良好的模型可解释性。
论文贡献:
CTR
预测任务上的实验结果表明,所提出的方法不仅优于现有的 SOTA
的预测方法,而且还提供了良好的模型解释能力。相关工作:
Learning Feature Interactions
:学习特征交互是一个基本问题,因此在文献中得到了广泛的研究。
Factorization Machine: FM
用于捕获一阶特征交互和二阶特征交互,并被证明对推荐系统的许多任务是有效的。Field-aware Factorization: FFM
建模不同 field
的特征之间的细粒度交互。GBFM
和 AFM
考虑了不同二阶特征交互的重要性。然而,所有这些方法都集中在建模低阶特征交互。最近有一些工作建模高阶特征交互:
NFM
将深度神经网络堆叠在二阶特征交互的输出之上,从而建模高阶特征交互。PNN, FNN, DeepCrossing, Wide&Deep, DeepFM
也利用前馈神经网络来模拟高阶特征交互。然而,所有这些方法都是以隐式的方式学习高阶特征交互,因此缺乏良好的模型可解释性。相反,有三类工作是以显式方式学习特征交互:
Deep&Cross
和 xDeepFM
分别在 bit-wise level
和 vector-wise level
上对特征进行外积outer product
。虽然它们进行了显式的特征交互,但要解释哪些组合是有用的并不简单。embedding-based
模型和 tree-based
模型的力量,但不得不将训练过程分成多个阶段。HOFM
提出了高效的高阶分解机的训练算法。然而,HOFM
需要太多的参数,只有它的低阶(通常小于 5
)形式可以实际使用。与现有工作不同的是,我们以端到端的方式显式地用注意力机制建模了特征交互,并通过可视化的方式探究学到的特征组合。
Attention and Residual Networks
:我们的模型利用了深度学习文献中的最新技术:注意力机制和残差网络。
定义 CTR Prediction
:令 item
categorical features
用 one-hot encoding
来表示。点击率预测问题旨在根据特征向量 item
针对 CTR
预测问题的一个直接的解决方案是:将
此外,如现有文献所示,利用高阶组合特征来产生良好的预测性能是至关重要的。
定义 p
阶组合特征:给定输入特征向量 p
阶组合特征定义为 distinct field
,feature fields
的数量,non-additive
的组合函数,如乘法或外积。例如,field
传统上,有意义的高阶组合特征是由领域专家手工制作的。然而,这非常耗费时间,而且很难推广到其他领域。此外,几乎不可能手工制作出所有有意义的高阶特征。因此,我们的目标是开发一种能够自动发现有意义的高阶组合特征的方法,同时将所有这些特征映射到低维的连续空间。
问题定义:给定一个用于CTR
预测的输入特征向量 representation
,它建模了高阶组合特征。
我们的方法的目标是:将原始稀疏的高维特征向量映射到低维空间,同时建模高阶特征交互。如下图所示:
我们的方法将稀疏的特征向量 embedding layer
,将所有的特征(即 categorical
特征和数值特征)投影到同一个低维空间。
接下来,我们将所有 field
的 embedding
馈入一个新的交互层 interacting layer
,该层被实现为一个多头自注意力神经网络。
对于每个交互层,高阶特征通过注意力机制进行组合,不同种类的组合可以通过多头机制进行评估,这些多头机制将特征映射到不同的子空间。
最后一个交互层的输出是输入特征的低维 representation
,它建模了高阶组合特征,并进一步通过一个 sigmoid
函数来估计 CTR
。
核心思想:将
Transformer Encoder Block
作用到feature field embedding
上。
Input Layer
:我们首先将用户画像和 item
属性表示为一个稀疏向量,它是所有 field
的拼接:
其中:feature fields
的总数;field
的 feature
;
如果第 field
是 categorical
特征,则 one-hot
向量。如果第 field
是 numerical
特征,则
Embedding Layer
:我们用一个低维向量来表示每个 categorical
特征,即:
其中:field
embedding matrix
;field
one-hot
向量。
很多时候,categorical
特征可以是多值的,即,multi-hot
向量。因此,我们将 multi-valued feature field
表示为相应 feature embedding vectors
的平均值:
其中:field
的取值的数量,multi-hot
向量。
可以用更复杂的、有效的操作来代替均值操作。
为了允许 categorical
特征和 numerical
特征之间的交互,我们也在同一个低维特征空间中表示 numerical
特征。我们将 numerical
特征表示为:
其中: field
embedding
向量,
这里
在 field
的所有取值上共享。
最终,embedding layer
的输出将是多个嵌入向量的拼接。
Interacting Layer
:我们采用注意力机制来确定哪些特征组合是有意义的。以特征
其中:
embedding
空间投影到新的空间。field
的原始 embedding size
,embedding size
。然后,我们通过 representation
:
其中
这其实就是标准的
Transformer Encoder Block
:。
我们通过使用多个头来创建不同的子空间,分别学习不同的特征交互。我们收集在所有子空间学到的组合特征如下:
其中:
为了保留先前学到的组合特征,包括原始特征(即,一阶特征),我们在网络中加入了标准的残差连接:
其中
标准的
Transformer
中也包含残差连接。
通过这样的交互层,每个特征的 representation
representation
这就是标准的
Transformer Encoder Block
,将其应用到feature field embedding
上。
Output Layer
:交互层的输出是一组特征向量 CTR
预估,我们简单地将它们全部拼接起来,然后应用非线性投影:
其中:bias
,sigmoid
函数。
训练:损失函数为 log loss
:
其中:ground-truth
、CTR
、
建模任意阶次的组合特征:可以看到,AutoInt
是以 hierarchical
的方式学习特征交互,即从低阶交互到高阶交互,所有的低阶特征交互都由残差连接来承载。具体分析参考原始论文。
空间复杂度:
embedding
层的参数规模为 embedding size
,因此,总的空间复杂度为 field embedding
维度,field embedding
维度,vocab size
的总和)。
论文的结论是:空间复杂度几乎被交互层的参数所统治。结论不正确,实际上空间复杂度几乎是被
embedding table
所统治。
时间复杂度:
head
中,注意力权重的时间复杂度为 head
中的组合特征的时间复杂度也是 考虑有 field
数量。
数据集:Criteo
、Avazu
、KDD12
、MovieLens-1M
。
我们对 MovieLens-1M
进行了二元化:我们将评分小于 3
的样本视为负样本,将评分大于 3
的样本视为正样本,并删除中性样本(即评分等于 3
的样本)。
我们删除不经常出现的特征(出现次数少于阈值),并将其作为一个单一的特征 "<unknown>"
,其中阈值对Criteo
、Avazu
和 KDD12
数据集分别设置为 {10,5,10}
。
由于数值特征可能有很大的方差,对机器学习算法造成伤害,我们采用 Criteo
竞赛的冠军提出的方案进行数值特征归一化:
我们随机选择 80%
的样本进行训练,并将剩下的样本随机分成大小相同的验证集和测试集。
数据集的统计信息如下表所示。
评估指标:AUC, Logloss
。
baseline
方法:
LR
:仅建模原始特征的线性组合。FM
:使用因子化技术建模二阶特征交互。AFM
:通过注意力机制来区分二阶组合特征的重要性,从而扩展了 FM
。DeepCrossing
:采用带残差连接的深度全连接神经网络,以隐式的方式学习非线性的特征交互。NFM
:将深度神经网络堆叠在二阶特征交互层之上。通过神经网络隐式地捕获高阶特征。CrossNet
:CrossNet
是 Deep&Cross
的核心,它在 bit-wise level
上执行 concatenated
特征向量的外积,从而显式地建模特征交互。CIN
:Compressed Interaction Network: CIN
是 xDeepFM
模型的核心,在vector-wise level
上对堆叠的特征矩阵进行外积。HOFM
:提出了高效的 kernel-based
算法来训练高阶FM
。我们实现了一个三阶FM
。实现细节:
对于 AutoInt
和所有 baseline
方法,我们根据经验将 embedding
维度 16
,batch size = 1024
。
AutoInt
有三个交互层,隐单元的数量
为了防止过拟合,我们用网格搜索法在 {0.1 - 0.9}
范围内为 MovieLens-1M
数据集选择 dropout rate
,我们发现 dropout
对其他三个大数据集来说是没有必要的。
对于 baseline
方法,我们按照他们的论文建议:
NFM
的 Bi-Interaction
层上使用一个大小为 200
的隐藏层。CN
和 CIN
,和 AutoInt
一样,我们使用三个交互层。DeepCrossing
有四个前馈层,隐单元的数量为 100
,因为它在使用三个前馈层时表现很差。一旦所有的网络结构都固定下来,我们还对 baseline
方法应用网格搜索,以获得最佳的超参数。
我们使用 Adam
来优化所有基于深度神经网络的模型。
模型效果:我们将 10
次不同运行的平均结果总结到下表,可以看到:
探索二阶特征交互的 FM
和 AFM
在所有的数据集上都以很大的幅度超过 LR
,这表明单个特征在 CTR
预估中是不够的。
一个有趣的观察是:一些捕捉高阶特征交互的模型的劣势。例如:DeepCrossing
和 NFM
使用深度神经网络作为学习高阶特征交互的核心组件,但它们并不能保证比 FM
和 AFM
有更大的改进。这可能是由于它们是以隐式的方式学习特征交互的。相反,CIN
显式地做到了这一点,并持续优于低阶模型。
此外,尽管
HOFM
可以学习比FM
更高阶的特征交互,但是HOFM
在Avazu, KDD12
上的效果比FM
更差。
AutoInt
在四个真实世界的数据集中的三个上取得了最佳性能。在 Avazu
数据集上,CIN
在 AUC
评估中的表现比 AutoInt
好一点,但我们得到的 Logloss
更低。
请注意,我们提出的 AutoInt
与 DeepCrossing
共享相同的结构,除了特征交互层,这表明使用注意力机制来学习显式的组合特征是至关重要的。
模型效率:我们在下图中展示了不同算法在四个数据集上的运行时间。可以看到:
LR
由于其简单性而成为最高效的算法。FM
和 NFM
在运行时间方面表现相似,因为 NFM
只在二阶交互层之上堆叠了一个前馈隐藏层。CIN
在所有 baseline
中实现了最好的预测性能,但由于其复杂的交叉层,它要耗费更多的时间。AutoInt
有足够的效率,这与高效算法 DeepCrossing
和 NFM
相当。我们还比较了不同模型的大小(即参数的数量),作为效率评估的另一个标准。如下表所示,与 baseline
模型中的最佳模型 CIN
相比,AutoInt
的参数数量要小得多。
综上所述,AutoInt
在所有 baseline
模型中取得了最好的性能。与最具竞争力的 baseline
模型 CIN
相比,AutoInt
需要的参数要少得多,而且在在线推理过程中效率更高。
消融研究:
残差结构的影响:为了证明残差单元的贡献,我们把它们从标准模型中分离出来,并保持其他结构不变。如下表所示,如果去除残差连接,所有数据集的性能都会下降。
网络深度的影响:我们考虑不同交互层的数量的影响。注意,当交互层的数量为零时,意味着不考虑组合特征。结果如下图所示。
embedding
维度的影响:我们考虑不同
可解释性:我们以 MovieLens-1M
数据集为例。
case-level
:下图 (a)
展示了不同 field
的输入特征之间的相关性,这些相关性是由注意力得分得到的,其中该样本的 label = 1
。我们可以看到:AutoInt
能够识别出有意义的组合特征 <Gender=Male, Age=[18-24], MovieGenre=Action&Triller>
(即红色的虚线矩形)。这是非常合理的,因为年轻男子很可能喜欢动作片和惊悚片。
这种相关性是怎么计算的?如果是利用了
attention
矩阵,那么对于多个交互层,使用哪一层的结果?读者猜测是第一个交互层的attention
矩阵。
global-level
:下图 (b)
展示了不同 feature field
之间在整个数据中的平均注意力得分,从而衡量各 feature field
之间的相关性。可以看到:<Gender, Genre>, <Age, Genre>, <RequestTime, ReleaseTime>, <Gender, Age, Genre>
是强相关的(即,绿色的实心区域),这是推荐的可解释性规则。
是考虑所有样本还是仅考虑正样本?读者猜测是仅考虑正样本。
集成隐式交互:前馈神经网络能够建模隐式的特征交互,并被广泛集成到现有的 CTR
预测方法中。为了研究集成隐式的特征交互是否能进一步提高性能,我们通将 AutoInt
与两层前馈神经网络相结合(并行集成,而不是堆叠)。我们将这个联合模型命名为 AutoInt+
,并将其与以下算法进行比较:Wide&Deep
、DeepFM
、Deep&Cross
、xDeepFM
。
结果如下表所示。可以看到:
通过集成前馈神经网络,我们的方法在所有数据集上的性能都有所提高。这表明,集成隐式的特征交互确实提高了 AutoInt
的预测能力。
然而,从最后两栏可以看出,与其他模型相比,性能提高的幅度相当小,表明我们的单个模型 AutoInt
是相当强大的。
集成了隐式的特征交互之后,AutoInt+
的性能超过了所有的 baseline
方法,并取得了新的 SOTA
的性能。
建模复杂的特征交互,对CTR
预测的成功起到了核心作用。FM
是一个著名的模型,它通过向量内积来建模二阶特征交互。FFM
进一步考虑了 field
信息并引入了 field-aware embedding
。然而,这些 FM-based
模型只能建模二阶交互。
最近,许多基于深度学习的模型被提出来从而学习高阶特征交互,这些模型遵循一个通用的范式:简单地拼接 field embedding
向量,并将其馈入 DNN
或其他专门设计的模型,从而学习交互。例如 FNN, NFM, Wide&Deep, DeepFM
等。然而,这些基于 DNN
的模型都是以 bit-wise
的、隐式的方式来学习高阶特征交互,这缺乏良好的模型解释。
一些模型试图通过引入专门设计的网络来显式地学习高阶交互。例如,Deep&Cross
]引入了 Cross Network: CrossNet
,xDeepFM
引入了压缩交互网络 Compressed Interaction Network: CIN
。尽管如此,它们仍然不够有效和显式,因为它们仍然遵循将 feature field
组合在一起的通用范式来建模交互。简单的 unstructured combination
将不可避免地限制了灵活地、显式地建模不同 feature field
之间复杂交互的能力。
在论文 《Fi-GNN: Modeling Feature Interactions via Graph Neural Networks for CTR Prediction》
中,作者考虑了 multi-field feature
的结构。具体来说,作者用一个名为 feature graph
的图结构来表示 multi-field feature
。直观而言,图中的每个节点对应于一个 feature field
,不同 field
可以通过边进行交互。因此,建模 feature field
之间复杂交互的任务可以转化为建模 feature graph
上的节点交互的任务。为此,作者在 Graph Neural Network: GNN
的基础上设计了一个新的 Feature interaction Graph Neural Network: Fi-GNN
,它能够以灵活的、显式的方式建模复杂的节点交互(即,特征交互)。在 Fi-GNN
中,节点将通过与邻居节点交流 node state
来进行交互,并以 recurrent
的方式更新自己。
AutoInt
用Transformer Encoder Block
建模multi-field feature
,而这里用GNN
来建模multi-field feature
。Transformer Encoder Block
可以视为一个简单的GNN
。
在每一个 time step
中,模型与邻居节点进行 one-hop
的交互。因此, interaction step
的数量等同于特征交互的阶次。此外,在 feature graph
中,边的权重反映了不同 feature interaction
对于 CTR
预测的重要性,而节点的权重反映了每个 feature field
对于 CTR
预测的重要性。这可以提供很好的解释。
总的来说,论文提出的模型能够以显式的、灵活的方式建模复杂的特征交互,并提供良好的可解释性。论文贡献如下:
multi-field feature
视为 feature field
的 unstructured combination
。为此,作者首次提出用图结构来表示 multi-field feature
。Feature interaction Graph Neural Network: Fi-GNN
,从而以更灵活的、显式的方式建模 graph-structured feature
上 feature field
之间的复杂交互。 SOTA
的方法,而且可以提供良好的模型解释。相关工作:
Feature Interaction in CTR Predict
:建模特征交互是 CTR
预测成功的关键,因此在文献中得到了广泛的研究。
LR
是一种线性方法,它只能对原始单个特征的线性组合建模一阶交互。
FM
通过向量内积来建模二阶特征交互。之后,FM
的不同变体也被提出:
Field-aware factorization machine: FFM
考虑了 field
信息并引入了 field-aware embedding
。AFM
考虑了不同二阶特征交互的权重。然而,这些方法只能建模二阶交互,这是不够的。
随着 DNN
在各个领域的成功,研究人员开始用它来学习高阶特征交互,因为它有更深的结构和非线性激活函数。一般的范式是将 field embedding
向量拼接在一起,并将其馈入 DNN
来学习高阶特征交互。
《A convolutional click prediction model》
利用卷积网络建模特征交互。FNN
在应用 DNN
之前,在 field embedding
上使用预训练的 FM
。PNN
通过在 field embedding layer
和 DNN layer
之间引入一个 product layer
来建模二阶交互和高阶交互。NFM
通过在 field embedding layer
和 DNN layer
之间引入一个 Bi-Interaction Pooling layer
来建模二阶交互,但是随后的操作是 sum
操作,而不是像 PNN
中的拼接操作。另一个方向上的一些工作试图通过混合架构来联合建模二阶交互和高阶交互:Wide&Deep
和 DeepFM
包含一个 wide
组件来建模低阶交互、一个 deep
组件来建模高阶交互。
然而,所有这些利用 DNN
的方法都是以隐式的、 bit-wise
的方式学习高阶特征交互,因此缺乏良好的模型解释能力。 最近,一些工作试图通过专门设计的网络以显式的方式学习特征交互:
Deep&Cross
引入了一个在 bit-level
上对特征进行外积的 CrossNet
。xDeepFM
引入了一个在 vector-level
对特征进行外积的 CIN
。然而,他们仍然没有解决最根本的问题,即把 field embedding
向量拼接起来。
对 feature field
进行简单的 unstructured combination
将不可避免地限制了以灵活的、显式的方式建模不同 field
之间复杂交互的能力。为此,我们提出用图结构表示 multi-field feature
,每个节点代表一个 field
,不同的 feature field
可以通过边进行交互。因此,我们可以在图上建模不同 feature field
之间的灵活交互。
Graph Neural Network
:图是一种数据结构,它对一组对象(节点)和它们的关系(边)进行建模。早期的工作通常将图结构的数据转换成序列结构的数据来处理。
DeepWalk
算法受 word2vec
的启发,用于学习基于 random walk
的 node embedding
。LINE
算法保留了图的一阶结构信息和二阶结构信息。node2vec
引入了一个有偏的随机行走。然而,这些方法的计算成本很高,而且对于大型图而言也不是最优的。图形神经网络(graph neural network: GNN
)就是为了解决这些问题而设计的,它是基于深度学习的方法,在 graph domain
上运行。现在已经有很多 GNN
的变种,这里我们只介绍一些有代表性的经典方法:
Gated Graph Neural Network: GGNN
使用 GRU
作为更新器。Graph Convolutional Network: GCN
考虑了图的 spectral structure
并利用卷积聚合器。GraphSAGE
考虑了空间信息,并引入了三种聚合器:mean aggregator, LSTM aggregator, Pooling aggregator
。graph attention network: GAT
将注意力机制纳入消息传播步骤。由于 GNN
具有令人信服的性能和较高的可解释性,GNN
已经成为一种广泛应用的图分析方法。在这项工作中,我们提出了一个基于 GGNN
的模型 Fi-GNN
来为 CTR
预测建模特征交互。
假设训练数据集由 field
的 categorical feature
、以及表示用户点击行为的 label
CTR
预测任务是对输入特征(包含 field
)来预测用户点击的概率
下图是我们所提出方法的概览(
sparse m-field feature vector
首先被映射成稀疏的 one-hot
向量,然后通过 embedding layer
和 multi-head self-attention layer
嵌入到稠密的 field embedding
向量中。field embedding
向量被表示为一个 feature graph
,其中每个节点对应于一个 feature field
,不同的 feature field
可以通过边进行交互。因此,建模交互的任务可以转换为建模 feature graph
上的节点交互。因此, feature graph
被馈入 Fi-GNN
从而建模节点交互。Fi-GNN
的输出上应用一个 Attentional Scoring Layer
来估计点击率 这里的
Multi-head Self-Attention Layer
就是单层的AutoInt
,因此,Fi-GNN
相当于是AutoInt
和GNN
的堆叠。实验并没有表明AutoInt
在这里的贡献,而且即使是AutoInt + Fi-GNN
,模型在所有数据集上的整体效果提升也不明显,因此论文价值不大。
Embedding Layer
:我们将每个 field
表示为一个 ont-hot encoding
向量,然后将其嵌入到一个稠密向量中,记做 field embedding
向量 。field
的 field embedding
向量被拼接为(沿着 feature field
维度拼接):
其中:field
embedding
向量,field embedding
向量的维度,feature field
维度拼接。
Multi-head Self-attention Layer
:我们利用多头自注意力机制来捕获不同语义子空间中的 pairwise
特征交互。
遵从 《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》
,给定 feature embedding
矩阵 feature representation
,它覆盖了 attention head
pairwise interaction
:
其中:attention head
head
然后,我们将学到的每个 head
的 feature representation
结合起来,以保留每个语义子空间中的 pairwise feature interaction
:
其中:embedding
维度),attention head
数量,embedding
维度。
Feature Graph
:与以往简单地将 field embedding
向量拼接在一起并将其馈入模型中从而学习特征交互所不同的是,我们用图结构来表示 feature field
。具体而言,我们将每个输入的 multi-field feature
表示为一个 feature graph
feature field
field
可以通过边进行交互,所以
每个样本对应一张图,因此这是一个
graph-level
分类任务(二分类)。
Feature Interaction Graph Neural Network
:Fi-GNN
旨在以一种灵活的、显式的方式建模 feature graph
上的节点交互。在Fi-GNN
中,每个节点 hidden state
其中 interaction step
。由多头自注意力层学到的 feature representation
作为图的初始状态
如下图所示,节点以循环方式进行交互并更新其状态。在每一个 interaction step
中,节点聚合邻居节点的状态信息(经过变换之后),然后根据聚合信息、以及节点历史状态通过 GRU
和残差连接来更新节点状态。
State Aggregation
:在 interaction step
其中:
显然,投影矩阵和邻接矩阵决定了节点之间的交互。由于每条边上的交互应该是不同的,我们的目标是建模边上的交互,这需要对每条边有一个 unique
的权重和投影矩阵。
基于注意力的边权重:为了推断不同节点之间交互的重要性,我们建议通过注意力机制来学习边权重。具体而言,从节点 field embedding
向量)来计算:
其中:embedding
维度)。利用 softmax
函数进行归一化,使不同节点的权重容易比较。
最终邻接矩阵为:
由于边的权重反映了不同交互的重要性,Fi-GNN
可以很好地解释输入样本的不同 feature field
之间的关系,这一点将在实验部分进一步讨论。
edge-wise
变换:如前所述,所有边上的固定的投影矩阵无法建模灵活的交互,对每个边进行 unique
的变换是必要的。然而,我们的图是完全图 complete graph
(即,任意两个节点之间都存在边),因此包含大量的边。简单地给每条边分配一个 unique
的投影矩阵将消耗太多的参数空间和运行时间。为了减少时间和空间的复杂性,同时实现 edge-wise transformation
,我们为每个节点
因此聚合信息
这样一来,参数的数量与节点的数量成正比,而不是与边的数量成正比,这就大大降低了空间复杂性和时间复杂性,同时也实现了 edge-wise interaction
。
State Update
:聚合状态信息之后,节点将通过 GRU
和残差连接来更新状态向量。
通过 GRU
进行状态更新:根据传统的 GGNN
,节点 step
的状态通过 GRU
更新的:
通过残差连接进行状态更新:我们引入了额外的残差连接(来自初始状态),与 GRU
一起更新节点状态,这可以促进低阶特征重用和梯度反向传播:
注意,这里是
的残差连接,而不是 。
Attentional Scoring Layer
:经过 propagation step
之后,我们得到了 final node state
:
由于节点已经与它们的 Fi-GNN
建模了 graph-level output
来预测 CTR
。
我们分别对每个 field
的 final state
预测一个得分,并通过注意力机制将它们相加,这个注意力机制衡量它们对整体预测的影响。正式地,每个节点 attentional node weight
可以通过两个 MLP
分别得到:
整体预测是所有节点的预测的加权和:
训练:损失函数为 logloss
,即:
其中:label
;CTR
。
我们采用 RMSProp
优化器。此外,为了平衡正负样本比例,在训练过程中,对于每个 batch
我们随机选择相同数量的正样本和负样本。
数据集:Criteo, Avazu
。对于这两个数据集:
我们移除了低频特征,并将低频特征替换为 "<unknown>"
。频次阈值分别为:Criteo
数据集为 10
、Avazu
数据集为 5
。即出现频次低于该阈值则移除。
由于数值特征可能具有较大的方差,因此我们进行对数变换:
这是由 Criteo
竞赛的获胜者提出的。
数据集以 8:1:1
的比例随机拆分为训练集、验证集、测试集。
数据集的统计信息如下表所示。
评估指标:AUC, LogLoss, Relative Improvement (RI)
。
应该注意的是,对于真实世界的 CTR
任务来说,AUC
方面的微小改进被认为是显著的。为了估计我们的模型相对于 baseline
模型的相对改进,我们在此测量 RI-AUC
和 RI-Logloss
:
其中 X
为 AUC
或 LogLoss
。
baseline
方法:
LR
:通过原始特征的线性组合来建模一阶特征交互。FM
:通过 field embedding
向量的内积来建模二阶特征交互。 AFM
:是 FM
的一个扩展,利用注意力机制考虑不同二阶特征交互的权重。DeepCrossing
:利用具有残差连接的 DNN
以隐式的方式学习高阶特征交互。NFM
:利用 Bi-Interaction Pooling layer
来建模二阶特征交互,然后将拼接的二阶组合特征馈入 DNN
来建模高阶特征交互。CrossNet(Deep&Cross)
:是 Deep&Cross
模型的核心,它通过采用拼接的 feature vector
的外积,从而显式地在 bit-wise level
上建模特征交互。CIN(xDeepFM)
:是 xDeepFM
模型的核心,它通过采用堆叠的 feature matrix
的外积,从而显式地在 vector-wise level
上建模特征交互。实现细节:我们使用 Tensorflow
实现我们的方法。最优超参数由网格搜索策略确定。baseline
的实现遵循 《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》
。
field embedding
向量的维度是 16
, batch size = 1024
。DeepCrossing
有四个前馈层,每层有 100
个隐单元。NFM
在 Bi-Interaction layer
之上有一个大小为 200
的隐层,如原始论文中所推荐的。CrossNet
和 CIN
都有三个交互层。8
个 NVIDIA Titan X GPU
的服务器上进行的。不同模型的性能比较,如下表所示。可以看到:
LR
在这些 baseline
中效果最差,这证明了单个特征在 CTR
预测中是不够的。FM
和 AFM
优于 LR
,这表明建模 feature field
之间的 pairwise
交互是有效的。此外,AFM
比 FM
具有更好的表现,证明了在不同交互上的注意力的有效性。DeepCrossing
优于 NFM
,证明了残差连接在 CTR
预测中的有效性。Fi-GNN
在所有这些方法中取得了最好的性能,尤其是在 Criteo
数据集上。Fi-GNN
在 Criteo
数据集上取得的相对改进,高于在 Avazu
数据集上取得的相对改进。这可能是因为 Criteo
数据集中有更多的 feature field
,可以更好地利用图结构的表达能力。消融研究:我们提出的 Fi-GNN
模型是基于 GGNN
的,在此基础上我们主要做了两个改进:
attentional edge weight
和 edge-wise transformation
实现 edge-wise node interaction
。GRU
一起更新节点状态。为了评估两种改进的有效性,我们对比了三个变体:
Fi-GNN(-E/R)
:同时没有上述两个改进的变体。Fi-GNN(-E)
:没有 edge-wise interaction: E
的变体。即,用二元邻接矩阵、以及所有边上共享的投影矩阵。Fi-GNN(-R)
:没有 residual connection: R
的变体。对比结果如下图 (a)
所示。可以看到:
Fi-GNN(-E)
的性能相比完整的 Fi-GNN
大幅下降,这表明建模 edge-wise interaction
是至关重要的。Fi-GNN(-E)
取得了比 Fi-GNN(-E/R)
更好的性能,证明了残差连接确实可以提供有用的信息。Fi-GNN
优于三种变体,表明我们所做的两种改进,即残差连接和 edge-wise interaction
,可以联合提高性能。在 Fi-GNN
中,我们采用两种方法来实现 edge-wise node interaction
:attentional edge weight: W
、edge-wise transformation: T
。为了进一步研究巨大的改进来自哪,我们比较了另外三个变体:
Fi-GNN(-W/T)
:即 Fi-GNN-(E)
。Fi-GNN(-W)
:没有 attentional edge weight
。Fi-GNN(-T)
:没有 edge-wise transformation
,即所有边上共享投影矩阵。对比结果如下图 (b)
所示。可以看到:
Fi-GNN(-T)
和 Fi-GNN(-W)
都优于 Fi-GNN(-W/T)
,这证明了它们的有效性。Fi-GNN(-W)
比 Fi-GNN(-T)
实现了更大的改进,这表明在建模 edge-wise interaction
方面, edge-wise transformation
比 attentional edge weight
更有效。这是非常合理的,因为投影矩阵应该比标量的 attentional edge weight
对 edge-wise interaction
有更强的影响。超参数研究:
state
维度 32
(Avazu
数据集)、64
(Criteo
数据集)时性能最佳。这是合理的,因为 Criteo
数据集更复杂,需要更大的维度来保持足够的信息。
没有考虑
attention head
的影响?
interaction step
interaction step
等于特征交互的最高阶次。模型性能随着 2
(Avazu
数据集)、3
(Criteo
数据集)时性能最佳。这是合理的,因为 Avazu
数据集有 23
个 feature field
、Criteo
数据集有 39
个 feature field
。因此,Criteo
数据集需要更多的 interaction step
来使 field node
与feature graph
中的其他节点完全交互。
模型可解释性:我们在 feature graph
的边上和节点上都应用了注意力机制,分别得到了 attentional edge weight
和 attentional node weight
,可以从不同的角度给出解释。
Multi-head Self-attention Layer
捕获的pair-wise
交互是否也是可解释的?论文并没有说明这一点。
attentional edge weight
:attentional edge weight
反映了两个相连的 field node
之间交互的重要性,也反映了两个feature field
之间的关系。下图展示了 Avazu
数据集中所有样本的全局平均邻接矩阵的热力图,它可以在全局水平上反映不同 field
之间的关系。 由于有一些 field
是匿名的,我们只显示剩余的 13
个具有真实含义的 feature field
。
可以看到:
feature field
倾向于与其他 field
有很强的关系,例如 site_category
和 site_id
。这是有意义的,因为两个 feature field
都对应于投放广告的网站。hour
是另一个与其他 field
有密切关系的特征。这是合理的,因为Avazu
专注于移动场景,用户可以在一天的任何时间在线冲浪。上网时间对其他的广告特征有很大的影响。device_ip
和 device_id
似乎与其他 feature field
的关系较弱。这可能是因为它们几乎等同于 user id
,相对固定,不易受其他特征的影响。attentional node weight
:attentional node weight
反映了 feature field
对整体预测分数的影响的重要性。下图显示了 global-level
和 case-level
的 attentional node weight
的热力图。左边的是 Avazu
数据集中所有样本的全局平均值,右边的是Avazu
数据集中随机选择的四个样本(预测分数分别为 [0.97, 0.12, 0.91, 0.99]
,标签分别为 [1, 0, 1, 1]
)。
global level
,我们可以看到 featuer field app_category
对点击行为的影响最大。这是合理的,因为 Avazu
专注于移动场景,而 app
是最重要的因素。case level
,我们观察到,在大多数情况下,最终的点击行为主要取决于一个关键的 feature field
。CTR
预估所涉及的数据通常是 multi-field categorical data
,这类数据具有以下特性:
categorical
的,并且是非常稀疏的,因为其中许多是 id
。因此,特征的总数很容易达到数百万或数千万。field
,而且可能有几十到几百个 field
。下表是一个用于 CTR
预估的现实世界 multi-field categorical data set
的例子。
multi-field categorical data
的特性对建立有效的机器学习模型进行 CTR
预测提出了几个独特的挑战:
feature interaction
是普遍存在的,需要专门建模。在和标签关联方面,特征拼接 feature conjunction
与单个特征不同。例如,nba.com
上展示的耐克广告的点击率,通常比所有网站上耐克广告的平均点击率、或 nba.com
上展示的所有广告的平均点击率高很多。这种现象在文献中通常被称为特征交互。field
的特征往往与来自其他不同 field
的特征有不同的交互。例如,我们观察到,来自 field GENDER
的特征通常与 field ADVERTISER
的特征有很强的交互,而它们与 field DEVICE_TYPE
的特征交互却相对较弱。这可能是由于具有特定性别的用户更偏向于他们正在观看的广告,而不是他们正在使用的设备类型。为了解决这些挑战的一部分,研究人员已经建立了几个解决方案,Factorization Machine: FM
和 Field-aware Factorization Machine: FFM
是其中最成功的:
FM
通过将 pairwise
特征交互的影响建模为两个 embedding
向量的内积来解决第一个挑战。然而, field
信息在 FM
中根本没有被利用。FFM
已经成为 CTR
预估中表现最好的模型之一。FFM
为每个特征学习不同的 embedding
向量,从而用于当特征与其他不同 field
的特征进行交互。通过这种方式,第二个挑战被显式地解决了。然而,FFM
的参数数量是特征数量乘以 field
数量的数量级,很容易达到数千万甚至更多。这在现实世界的生产系统中是不可接受的。在论文 《Field-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertising》
中,作者引入了 Field-weighted Factorization Machines: FwFM
来同时解决所有这些挑战。论文贡献:
field pairs
与 label
的关联程度明显不同。按照同样的惯例,论文称它为 field pair interaction
。Field-weighted Factorization Machine: FwFM
。通过引入和学习 field pair weight matrix
,FwFM
可以有效地捕获 field pair interaction
的异质性。此外,FwFM
中的参数比 FFM
中的参数少几个数量级,这使得 FwFM
成为现实世界生产系统中的首选。FwFM
通过用 embedding vector representation
取代线性项的 binary representation
而得到进一步的增强。这种新的处理方法可以有效地帮助避免过拟合,提高预测性能。CTR
预估数据集上进行了综合实验,以评估 FwFM
与现有模型的性能。实验结果表明:FwFM
仅用FFM
的 4%
的参数就能达到有竞争力的预测性能。当使用相同数量的参数时,FwFM
比 FFM
的 AUC
提升了 0.9%
。假设有 unique
特征 fields
field
,记做
给定数据集 label
表示是否点击; active
的。
例如,假设有两个
field
:性别、学历,那么。假设有六个特征: ,那么 属于性别这个 field
,属于学历这个 field
,它们的取值都是0
或1
。
LR
模型为:
其中:
注意,因为这里将
label
取值空间设为{1, -1}
而不是{1, 0}
,因此这个损失函数与交叉熵不同,而是指数损失函数。
Poly2
:然而,线性模型对于诸如 CTR
预估这样的任务来说是不够的,在这些任务中,特征交互是至关重要的。解决这个问题的一般方法是增加 feature conjunction
。已有研究表明,Degree-2 Polynomial: Poly2
模型可以有效地捕获特征交互。Poly2
模型考虑将
其中:
FM
:Factorization Machine: FM
为每个特征学习一个 embedding
向量 FM
将两个特征 embedding
向量
其中:
在涉及稀疏数据的应用中(如 CTR
预估),FM
的表现通常优于 Poly2
模型。原因是,只要特征本身在数据中出现的次数足够多,FM
总能为每个特征学习到一些有意义的 embedding
向量,这使得内积能很好地估计两个特征的交互效应 interaction effect
,即使两个特征在数据中从未或很少一起出现。
FFM
:然而,FM
忽略了这样一个事实:当一个特征与其他不同 field
的特征交互时,其行为可能是不同的。Field-aware Factorization Machines: FFM
通过为每个特征(如 embedding
向量来显式地建模这种差异,并且只使用相应的 embedding
向量 field
虽然 FFM
比 FM
有明显的性能改进,但其参数数量是 FFM
的巨大参数数量是不可取的。因此,设计具有竞争力的和更高内存效率的替代方法是非常有吸引力的。
field pair
的交互强度:我们特别感兴趣的是,在 field level
,交互强度是否不同。即,不同 feature pair
的平均交互强度是否不同。这里的平均交互强度指的是:给定一个 field pair
,它包含的所有 feature pair
的平均交互强度。
例如,在CTR
预估数据中,来自 field ADVERTISER
的特征通常与来自 field PUBLISHER
的特征有很强的交互,因为 advertiser
通常针对一群有特定兴趣的人,而 PUBLISHER
的受众自然也是按兴趣分组的。另一方面, field HOUR_OF_DAY
的特征往往与 field DAY_OF_WEEK
的特征没有什么交互,这不难理解,因为凭直觉,它们的交互对点击量没有什么贡献。
为了验证 field pair interaction
的异质性,我们使用 field pair
field pair
的交互强度:
其中:
下图是每个 field pair
和标签之间的互信息的可视化,由 Oath CTR
数据计算得出。不出所料,不同 field pair
的交互强度是相当不同的。一些 field pair
有非常强的交互,如 (AD_ID,SUBDOMAIN)
、(CREATIVE_ID,PAGE_TLD)
,而其他一些 field pair
有非常弱的交互,如 (LAYOUT_ID,GENDER)
、(Day_OF_WEEK,AD_POSITION_ID)
。
虽然分析结果并不令人惊讶,但我们注意到,现有的模型都没有考虑到这种 field level interaction
的异质性 。这促使我们建立一个有效的机器学习模型来捕获不同 field pair
的不同交互强度。
FwFM
:我们提出对不同 field pair
的不同交互强度进行显式的建模,其中 feature pair
其中:field pair
核心要点:在
FM
基础上乘以。实现简单,效果好。 进一步地,我们是否可以在
field
的概念之上继续遵循这种做法。比如,可以把field
进行分组:用户年龄、性别等等field
是一组,item
类别、品牌等等是另一组、用户历史行为序列是其它一组,然后设定field group
的权重:其中
为 field group
之间的权重。
我们将得到的模型称为 Field-weighted Factorization Machine: FwFM
。
模型复杂度:FM
的参数数量为 embedding
向量的参数数量。FwFM
使用了额外的 field pair
,因此总的参数数量为 FFM
的参数数量为 embedding
向量。
考虑到通常 FwFM
的参数与 FM
相当,显著少于 FFM
。
线性项:我们认为,embedding
向量
我们为每个特征学习一个线性权重 FwFM
的线性项变为:
这需要 FwFM
的总参数数量为 FwFM_FeLV
。
这相当于为每个特征学习两个
embedding
:embedding
用于建模特征交互, embedding
用于建模线性项。好处有两个:
- 首先,这种方法的表达能力更强。
- 其次,实现起来更简单。原始的线性项需要把特征表示成
sparse
形式从而节省内存和计算量(大量的零存在),在实现的时候需要特殊的逻辑(稀疏张量的转换和计算)。而这里直接用embedding lookup
,与现有的逻辑保持一致。
或者,我们为每个 field
学习一个线性权重
此时总的参数数量为 FwFM_FiLV
。
这相当于为每个
field
学习一个embedding
。
原始线性权重的 FwFM
记做 FwFM_LW
。
或者我们是否可以用
来作为权重?这相当于将 固定为全 1
的向量,一定程度上降低了参数规模同时缓解过拟合。原因如下:考虑,如果 放大 倍、 缩小 倍,则结果完全相同。因此这种方式的自由度太大,需要打破这种对称性,例如: ,此时 方法或缩小会完全影响最终结果。 在后面的实验部分,确实发现参数更少的
FwFM_FiLV
的测试AUC
更高。那么是否固定为全 1
的向量时效果还要好?
数据集:
Criteo CTR
数据集:我们将数据按 60%: 20%: 20%
随机分成训练集、验证集和测试集。
Oath CTR
数据集:我们使用两周的点击日志作为训练集,下一天的数据作为验证集、下下一天的数据作为测试集。
对于 Oath CTR
数据集,正样本的比例通常小于 1%
。我们对负样本进行降采样,使正负样本更加平衡。对验证集和测试集不做降采样,因为评估应该在反映实际流量分布的数据集上进行。
对于这两个数据集,我们过滤掉所有在训练集中出现少于 NULL
特征代替,其中 Criteo
数据集中被设置为20
,在 Oath
数据集中为10
。
这两个数据集的统计数字如下表所示:
实现:我们使用 LibLinear
来训练 Poly2
,并使用哈希技巧将 feature conjunctions
哈希到 Tensorflow
中实现。Tensorflow
中 FwFM
的结构如下图所示。
输入是一个稀疏的二元向量 field
。对每个样本而言每个 field
都有一个且只有一个活跃的特征。
FwFM
和已有模型的比较:我们评估了带原始线性项的 FwFM
,即 FwFM_LW
。对于所有的超参数,我们在验证集上进行调优,然后在测试集上进行评估。可以看到:
FwFM
都能取得比 LR
、Poly2
和 FM
更好的性能。这种改进来自于 FwFM
显式地建模了 field pair
的不同交互强度。FFM
总是在验证集和测试集上获得最佳性能。然而,FwFM
的性能相比 FFM
具有相当的竞争力。FwFM
与 FFM
在具有相同参数规模的情况下的比较:
FFM
的一个关键缺点是其参数数量在 FFM
的参数数量:使用较小的 《Field-aware factorization machines in a real-world online advertising system》
提出对 FFM
使用较小的
这里我们通过选择合适的 FFM
和 FwFM
的参数数量相同。我们不计算线性项的参数,因为它们与交互项的数量相比可以忽略。我们选择 FwFM
在 Criteo
和Oath
数据集的测试集上得到更好的表现,提升幅度分别为 0.70%
和 0.45%
。
具有不同线性项的 FwFM
:下表给出了不同线性项的 FwFM
的性能。可以看到:
FwFM_LW
和 FwFM_FeLV
在训练和验证集上比 FwFM_FiLV
能取得更好的性能。原因是这两个模型的线性项(FwFM_FiLV
(FwFM_FiLV
更好地拟合训练集和验证集。FwFM_FiLV
在测试集上得到了最好的结果,这表明它有更好的泛化性能。FwFM_FiLV
与 FFM
进行比较时,在Oath
数据集和Criteo
数据集上的AUC
提升分别为0.92%
和 0.47%
。超参数调优:以下所有的评估都是 FwFM_FiLV
模型在 Oath
验证集上进行的。
L2
正则化系数 Figure3
所示,
正则化系数作用于所有的
parameters
。
学习率 Figure4
所示,我们选择
embedding
维度
学到的 field
交互强度:这里我们比较了 FM
、FFM
和 FwFM
在捕获不同 field pair
的交互强度方面的能力。我们的结果表明,由于 field pair
交互权重 FwFM
可以比 FM
和 FFM
更好地建模交互强度。
field pair
的交互强度通过互信息( field pair
和标签之间的互信息 Figure 5(a)
中通过热力图进行了可视化。
为了衡量学到的 field
交互强度,我们定义了以下指标:
其中:
feature pair
feature pair
FM
,FFM
,FwFM
,注意,我们将内积项的绝对值相加,否则正值和负值会相互抵消。
如果一个模型能够很好地捕捉到不同 field pair
的交互强度,我们期望其学习到的 field
交互强度接近于互信息 Figure 5
中以热力图的形式绘制了由 FM, FFM, FwFM
学到的field
交互强度,以及 field pair
和标签之间的互信息 field
交互强度与互信息的匹配程度。
Figure 5(b)
中我们观察到:FM
学到的交互强度与互信息完全不同。这并不奇怪,因为 FM
在建模特征交互强度时没有考虑 field
信息。Figure 5(c)
中我们观察到:FFM
能够学习与互信息更相似的交互强度。Figure 5(d)
中我们观察到:FwFM
学到的交互强度的热力图与互信息的热力图非常相似。为了了解权重 field pair
的交互强度方面的重要性,我们在 Figure 6
中绘制了 FwFM
(退化回 FM
)的学到的 field
交互强度。可以看到: Figure 5(a)
的互信息热力图、Figure 5(d)
的 FwFM
学到的 field
交互强度都非常相似。这意味着 field pair
的不同交互强度。
CTR
预估所涉及的数据通常是 multi-field categorical data
,这类数据具有以下特性:
categorical
的,并且是非常稀疏的,因为其中许多是 id
。因此,特征的总数很容易达到数百万或数千万。field
,而且可能有几十到几百个 field
。针对 ctr
预测问题的一个卓越模型是具有交叉特征的逻辑回归。当考虑到所有的交叉特征时,产生的模型等同于二阶的多项式核。然而,要考虑所有可能的交叉特征需要太多的参数。为解决这个问题,人们提出了 matrix factorization: MF
和 factorization machine: FM
,这些方法通过两个 feature embedding
向量的点乘来学习交叉特征的影响。在 FM
的基础上,人们提出了 Field-aware Factorization Machine: FFM
,从而考虑 field
信息来建模来自不同 field pair
的不同的特征交互。最近,人们又提出了 Field-weighted Factorization Machine: FwFM
模型,以一种更加 parameter-efficient
的方式来考虑 field
信息。
现有的考虑 field
信息的模型要么有太多的参数(如 FFM
),要么不是很有效(如 FwFM
)。论文 《FM2: Field-matrixed Factorization Machines for Recommender Systems》
建议使用两个特征向量之间的 field matrix
来建模这两个特征向量之间的交互,其中矩阵是为每个 field-pair
单独学习的。论文表明,field-pair matrix
方法在保持计算空间和时间效率的同时,实现了良好的准确性。
假设有 unique
特征 fields
field
,记做
给定数据集 label
表示是否点击; active
的。
LR
模型为:
其中:
然而,线性模型缺乏表示特征交互的能力。由于交叉特征可能比那些单一特征更重要,在过去的几十年里,人们提出了许多改进。
Poly2
:然而,线性模型对于诸如 CTR
预估这样的任务来说是不够的,在这些任务中,特征交互是至关重要的。解决这个问题的一般方法是增加 feature conjunction
。已有研究表明,Degree-2 Polynomial: Poly2
模型可以有效地捕获特征交互。Poly2
模型考虑将
其中:
FM
:Factorization Machine:FM
为每个特征学习一个 embedding
向量 FM
将两个特征 embedding
向量
其中:
在涉及稀疏数据的应用中(如 CTR
预估),FM
的表现通常优于 Poly2
模型。原因是,只要特征本身在数据中出现的次数足够多,FM
总能为每个特征学习到一些有意义的 embedding
向量,这使得内积能很好地估计两个特征的交互效应 interaction effect
,即使两个特征在数据中从未或很少一起出现。
FFM
:然而,FM
忽略了这样一个事实:当一个特征与其他不同 field
的特征交互时,其行为可能是不同的。Field-aware Factorization Machines: FFM
通过为每个特征(如 embedding
向量来显式地建模这种差异,并且只使用相应的 embedding
向量 field
虽然 FFM
比 FM
有明显的性能改进,但其参数数量是 FFM
的巨大参数数量是不可取的。因此,设计具有竞争力的和更高内存效率的替代方法是非常有吸引力的。
FwFM
:在 FwFM
中,feature pair
其中:field pair
FwFM
的公式为:
FwFM
是 FM
的扩展,即它使用额外的权重 feature pair
的不同交互强度。FFM
可以隐式地建模不同 feature pair
的不同交互强度,因为 FFM
为每个特征 embedding
向量,每个向量 field
field
特征的不同交互。
最近,也有很多关于基于深度学习的 CTR
预测模型的工作。这些模型同时捕获了低阶交互和高阶交互,并取得了明显的性能改进。然而,这些模型的在线推理复杂性比浅层模型要高得多。通常需要使用模型压缩技术,如剪枝、蒸馏或量化来加速这些模型的在线推理。在本文中,我们专注于改进低阶交互,所提出的模型可以很容易地作为这些深度学习模型中的浅层组件。
我们提出了一个新的模型,将 field pair
的交互表达为一个矩阵。与 FM
和 FwFM
类似,我们为每个特征学习一个 embedding
向量。 我们定义一个矩阵 field
field
其中:
feature
embedding
向量。
feature
field
。
field
field
注意:
,因为它们作用的 embedding
向量不同。此外,考虑到 “field
和 field
之间的交互” 应该等于 “ field
和 field
之间的交互”,因此有:
我们称这个模型为 Field-matrixed Factorization Machine: FmFM
(也叫做 FM2
):
FmFM
是 FwFM
的扩展,它使用一个二维矩阵 FwFM
中的标量 field pair
的交互。通过这些矩阵,每个特征的 embedding
空间可以被转换到另外的 embedding
空间。我们将这些矩阵命名为 Field-Matrix
。
核心思想:将
FwFM
中的标量升级成矩阵 。
下图展示了 feature pair
field
。计算可以分解为三步:
Embedding Lookup
:从 embedding table
中查找 feature embedding
向量 field
field
FM
家族的统一框架:
FM
:下图展示了 FM
中特征交互的计算。如果将 FmFM
中所有的 field matrix
都固定为单位矩阵,那么 FmFM
将退化为 FM
。由于单位矩阵是固定的、不可训练的,因此我们定义其自由度为 0
。
FwFM
:下图展示了 FwFM
中特征交互的计算。如果将 FmFM
中的 field pair
取不同的值,那么 FmFM
将退化为 FwFM
。我们定义 FwFM
的自由度为 1
。
FvFM
:根据 Figure 3
的线索,我们将 FmFM
中的 field pair
选择不同的对角矩阵,如 Figure3
的右边的矩阵所示,那么:
其中:
我们将这种方法命名为 Field-vectorized Factorization Machine: FvFM
,它的自由度为 2
。
FmFM
:它具有一个矩阵的所有自由度,即自由度为 3
。我们预期 FmFM
比其他 FM
模型有更强大的预测能力。
总之,我们发现 FM
、FwFM
、FvFM
都是 FmFM
的特例,唯一的区别是它们的 field matrix
的限制。根据它们的灵活性,我们把它们总结在下表中。
FmFM
与 OPNN
的关系:FmFM
也可以看做是通过加权外积来建模两个 feature embedding vector
的交互:
OPNN
也提出通过外积来建模特征交互。然而,FmFM
在以下两个方面与 OPNN
不同:
FmFM
是一个简单的浅层模型,没有像 OPNN
中那样的全连接层。我们可以将 FmFM
作为任何深度 CTR
模型的一个浅层组件或构建块。FmFM
支持针对不同 feature field
的可变 embedding size
。FFM vs FmFM
,即 Memorization vs Inference
:与上述其他 FM
不同,FFM
不能被改造成 FmFM
框架。下图展示了 FFM
中特征交互的计算。 FFM
不共享 feature embedding
,因此对于每个特征都有 embedding
从而分别与其它 field
进行交叉。在训练过程中,这些 field-specific embedding
将被独立学习,而且这些 embedding
之间没有任何限制,即使它们属于同一特征。
这种 FFM
机制给了模型最大的灵活性来拟合数据,而且大量的 embedding
参数也具有惊人的记忆能力。同时,即使有数十亿的样本需要训练,也总是存在着过拟合的风险。特征分布的属性是一个长尾分布,而不是均匀分布,这使得 feature pair
的分布更加不平衡。
以下图为例。假设 feature pair
embedding
,因此 embedding
feature pair
可能占据了训练数据的绝大部分,而低频的 feature pair
(占据了 feature pair
中的绝大多数)则不能被很好地训练。
FmFM
使用共享 embedding
向量,因为每个特征只有一个 embedding
向量。它利用一个变换过程,将这一个 embedding
向量投影到其他 field
。这基本上是一个推理过程,那些 embedding
向量 embedding
向量 field matrix
,向量是可以前向变换和反向变换。这就是 FFM
和 FmFM
的根本区别:在同一特征中那些可变换的中间向量(即,feature pair
。
回到 Figure 1
的例子。即使 feature pair
feature embedding
feature pair
(如 field matrix
field
field
feature pair
尽管 FFM
和 FmFM
之间有这种差异,但它们有更多的共同点。Figure 4
和 Figure 1
之间一个有趣的观察是:当所有变换完成后,FmFM
模型变成了 FFM
模型。我们可以缓存那些中间向量,避免在运行时进行矩阵操作。细节将在下一节讨论。
相反,FFM
模型无法被改造成 FmFM
模型。那些 field feature embedding table
是独立的,因此很难将它们压缩成单个 feature embedding table
,并在需要时恢复它们。
模型复杂度:
FM
的参数数量为 embedding
向量。FwFM
对每个 field
对使用 FwFM
的参数总数为 FmFM
对每个 field
对使用 FwFM
的参数总数为 FFM
的参数数量为 embedding
向量。在下表中,我们比较了到目前为止提到的所有模型的复杂度。我们还列出了每个模型的估计参数规模(模型配置,如 embedding size
,参考实验部分),这些模型使用了公共数据集 Criteo
。这些数字可以让我们对每个模型的规模有一个直观的印象。FM
、FwFM
和 FmFM
的规模相近,而 FFM
的规模比其他模型大十几倍。
这里我们可以设计出 3
种策略来进一步降低 FmFM
的复杂度:
field-specific embedding dimension
:它是 FmFM
的一个独特属性,允许我们在 embedding table
中使用 field-specific
的维度,而不是全局的固定长度
这里
field-specific
的维度是通过对训练好的embedding table
进行降维来实现的。因此需要训练两遍。
缓存中间向量:避免矩阵运算从而在运行时减少 FmFM
的计算复杂度(仅用于推断期间)。
减少线性项:用 field-specific
权重来代替。
这里面提到的优化方法大多数都不实用,无法优化训练速度,而仅聚焦于优化推断速度。实际上,如果想优化推断速度,那么可以用模型剪枝、模型量化、模型蒸馏技术。
Field-specific Embedding Dimension
:为了进行点积, FM
要求所有 feature embedding
的向量维度 field
。改进后的模型如 FwFM
、FvFM
也采用了这个特性。然而,向量维度
当我们利用 FmFM
中的矩阵乘法时,它实际上并不要求 field matrix
是方阵:我们可以通过改变 field matrix
的 shape
来调整输出向量的维度。这一特性给了我们另一种灵活性,可以在 embedding table
中按需设置 field-specific
维度,如下图所示。
embedding
向量的维度决定了它所能携带的信息量。例如,field user_gender
可能只包含 3
个值( male, female, other
),field top_level_domain
可能包含超过 1M
个特征。因此,user_gender
的 embedding table
可能只需要 5
维,而 field top_level_domain
的 embedding table
可能需要 7
维,因此它们之间的 field matrix
的 shape
为
为了在不损失模型性能的前提下设计 field-specific embedding vector dimension
,我们提出了一种 2-pass
方法:
pass
,我们对所有 field
使用较大的固定的 embedding
向量维度,如 FmFM
训练为完整模型。从完整的模型中,我们了解到每个 field
有多少信息(方差),然后我们在每个 field
的 embedding table
上应用标准的 PCA
降维方法。从实验部分中我们发现,包含 95%
原始方差的新维度是一个很好的 tradeoff
。field-specific
的维度设置,我们在第二个 pass
中从头开始训练模型。与第一个完整的模型相比,所得到的第二个模型没有任何明显的性能损失。这种方法训练时间翻倍。一般而言,
CTR
预测任务的数据集很大、模型也比较复杂,因此整体训练时间会很长。翻倍的训练时间不太有利。并且,这种方法还需要仔细设计
field matrix
的shape
,增加了开发成本。
下表显示了 Criteo
数据集中每个 field
通过 PCA
进行优化后的维度。可以看到,这些维度的范围很大,从 2
到 14
,而且大部分维度都小于 10
。平均 7.72
,低于 FwFM
的最佳
Intermediate Vectors Cache
:在参数数量上,FmFM
是一个比 FFM
更低复杂度的模型。但是 FmFM
在变换步骤中需要昂贵的矩阵运算。在下表中,我们列出了每个模型的浮点运算( Floating Point Operations: FLOPs
)的数量,并以典型的设置对其进行估计。
注:典型设置为:DNN
隐层的单元数, DNN
的隐层数量,AutoInt
中新空间的维度,DeepLight
中 FwFM
和 DNN
组件的稀疏率。
在这些 FM
模型中,FmFM
需要最多的操作来完成其计算,大约是FwFM
和 FFM
的 DNN
模型快。如前所述,我们已经表明,通过缓存所有的中间向量,可以将 FmFM
模型转化为 FFM
模型。在这个意义上,我们可以把它的操作数量减少到与FM
和 FFM
相同的量级,这几乎是 20
倍的速度。
首先,如何缓存?论文并未提到细节。
其次,缓存中间向量仅在推理期间有效,因为此时所有参数都已经学好并固定不动。然而在训练期间,每经过一个
training iteration
参数都发生更新,因此缓存的中间向量到下一个iteration
就没有意义。因此,读者估计,FmFM
的训练时间会非常的长。最后,这里给的计算复杂度及其估计值是针对推理期间的,而不是训练期间的。而
95% variance
是在训练完成之后进行的,在训练期间不可用。
Embedding Dimension and Cache Optimization Combined
:当我们把 field-specific embedding dimensional optimization
和缓存优化结合起来时,推理速度可以快得多,而且所需的内存也可以大大减少。这得益于 FmFM
的另一个特性:交互矩阵是对称的。这意味着:
证明见原始论文。
因此,我们可以选择缓存那些 field embedding
维度较低的中间向量,并在推理过程中与其他特征向量进行点乘。例如,在 Table 3
中,两个特征 field #16
和 field #28
。有了这个对称性,当我们计算
field matrix
2
( field #16
)增加到 14
(中间向量),然后与维度也为 14
的 14
个单位的内存用于中间向量的缓存,在推理过程中需要 2*14
个 FLOPs
。14
(field #28
)缩减到 2
(中间向量),然后与维度也是 2
的 2
个单位的内存,并在推理中花费 2*2 FLOPs
。因此缓存维度为 2
的中间向量,可以节省 7
倍的内存和时间,而没有任何精度损失。通过这两种优化技术的结合,FmFM
模型的时间复杂度大大降低。在 Table 4
中,我们估计优化后的模型只需要 8,960
个 FLOPs
,这只是FFM
的 1/3
左右。在实验部分中,我们将说明这个优化的模型可以达到与完整模型相同的性能。
Soft Pruning
:field-specific embedding dimension
实际上也起到了类似于剪枝的作用。传统的剪枝,如 DeepLight
,给出了保留或放弃一个 field
或一个 field pair
的二元决定。而 field-specific embedding dimension
给了我们一个新的方法:按需确定每个 field
和 field pair
的重要性,并给每个 field
分配一个系数(即,emebdding
维度)来代表其重要性。例如,在 Table 3
的 FmFM
模型中,cross field
#17
和 #20
是一个高强度的 field pair
,它在推理过程中需要 11
个单位的缓存和 2*11
个 FLOPs
;相反,一个低强度的 field pair
,即 cross field
#18
和 #22
,只需要 2
个单位的缓存和 2*2
个 FLOPs
。
缓存空间大小就是
field pair
中最短的那个emebdding
维度。
在传统的剪枝方法中,当我们放弃一个 field pair
时,它的信号就完全消失了。而在我们的方法中,一个 field pair
仍然以最小的代价保留主要信息(即,很小的 embedding
维度)。这是一个 soft pruning
的版本,类似于 Softmax
。它的效率更高,在 soft pruning
过程中性能下降更少。
然后这种剪枝方法依赖于
emebdding
维度,而embedding
维度是针对embedding table
进行降维而得到的。这意味着在正式训练之前,先要完成一个训练从而得到embedding table
。此外,PCA
降维方法无法应用到大规模embedding table
。
Figure 6
显示了 Criteo
数据集中 field pair
和 label
之间的互信息分数的热力图,它代表了 field pair
在预测中的强度。Figure 7
显示了 cross field dimension
,这是两个 field
之间的较低维度,它表示每个 field pair
的参数和计算成本。显然,这两个热力图是高度相关的,这意味着优化后的 FmFM
模型在那些强度较高的 field pair
上分配了更多的参数和更多的计算,而在强度较低的 field pair
上分配了较少的参数和较少的计算。
线性项:线性部分为:
这需要为每个特征 embedding
向量 embedding
向量。
我们遵从 FwFM
的方法,通过学习一个 field-specific
向量 field
在本文的其余部分,我们默认对 FwFM
、FvFM
和 FmFM
应用这种线性项优化。
数据集:Criteo
、Avazu
。
我们遵循那些已有的工作,将每个数据集随机分成三部分,80%
用于训练、10%
用于验证、10%
用于测试。
对于 Criteo
数据集中的数值特征,我们采用 Criteo
竞赛冠军提出的对数变换来归一化数值特征:
对于 Avazu
数据集中的 date/hour
特征,我们将其转换为两个特征:day_of_week(0-6)
、hours(0-23)
。
我们还删除了两组数据中那些低于阈值的低频特征,并用该 field
的默认 "unknown"
特征来替换。Criteo
数据集的阈值为 8
,Avazu
数据集的阈值为 5
。
归一化后的数据集的统计数字如下表所示:
baseline
方法:LR
、FM
、FwFM
、FFM
、FvFM
、FmFM
。
我们遵循 PNN
原始论文中 LR
和 FM
的实现,并遵循 FwFM
原始论文中 FFM
和 FwFM
的实现。
评估指标:验证集的 AUC, logloss
。
模型配置:对于那些 SOTA
模型,它们都是 DNN
模型,可能需要更多的超参数调优,我们从它们的原始论文中提取它们的性能(AUC
和 Log Loss
),以保持它们的结果最佳。我们列出他们的结果只是为了参考。
Deep & Cross
网络是一个例外,因为他们的论文只列出了 logloss
而没有列出 AUC
。因此,我们实现了他们的模型,得到了类似的性能。
对于所有模型中的正则化系数
模型评估结果如下所示,其中对于 FmFM
我们不采用任何优化手段。可以看到:
在这两个数据集上,FvFM
和 FmFM
都能取得比 LR
、FM
和 FwFM
更好的性能,这也是我们所预期的。
令人惊讶的是,FmFM
在两个测试集上都能取得比 FFM
更好的性能。正如我们之前提到的,即使 FFM
是一个比 FmFM
大几十倍的模型,我们的 FmFM
模型仍然在所有浅层模型中得到最好的 AUC
。
FmFM
和FFM
的性能相差无几,非常接近。
此外,如果我们比较训练集和测试集之间的 AUC
差异,我们发现 factorization machine
模型中最低的一个,这肯定了我们前面的假设:那些低频特征在交互矩阵的帮助下也被训练得不错,这种机制帮助 FmFM
避免过拟合。
这里的数据和结论都不正确,
并不是最低的,而且数值也不是 0.0074
,最低的是LR
模型。
Embedding Dimension Optimization
:在这一部分,我们前面描述的方法,即我们有一个 full size
的模型,我们可以为每个 field
提取其 embedding table
,然后我们利用标准的 PCA
降维。在这里,我们做了几个实验,比较降维对模型性能的影响,并试图在模型大小、速度和性能之间找到一个平衡点。
我们使用 Criteo
数据集,PCA
降维中分别保持 99%, 97%, 95%, 90%, 85%, 80%
的方差,并估计平均 embedding
维度和 FLOPS
(具有缓存的中间向量)。在新的维度设置下,我们分别训练这些 FmFM
模型的第二遍,并观察测试集的 AUC
和 Log Loss
变化。结果如下表所示。可以看到:
PCA
方差时,平均 embedding
维度明显减少。95%
的方差时,与 full size
模型相比,只有不到 1/2
的 emebdding
维度和 1/3
的计算成本,而模型的性能没有明显变化。因此,当我们优化 FmFM
的 embedding
维度时,95%
的方差是一个很好的 tradeoff
。下图 显示了这些模型的性能(AUC
)和它们的计算复杂性( FLOPs
)。与所有的 baseline
模型相比,作为一个浅层模型,优化后的 FmFM
模型得到了更高的 AUC
以及更低的 FLOPs
,除了 Deep&Cross
和 DeepLight
。然而 FmFM
的计算成本比这两个 ensemble
了 DNN
模块和浅层模块的复杂模型(即,Deep&Cross
和 DeepLight
)要低得多,其 FLOPs
分别只有它们的 1.76%
和8.78%
。较低的 FLOPs
使得 FmFM
在计算延迟受到严格限制时更受欢迎,这也是实时在线广告 CTR
预测和推荐系统中的常见情况。
未来方向:
FmFM
仍然是一个线性模型,我们可以将非线性层引入到 field
交互中,让模型成为非线性模型,这样就更加灵活。FM
模型实际上都是二阶模型,它最多允许 2
个 field
交互。这种限制主要是因为点积的原因。在未来,我们可以引入三维张量,允许 3
个 field
的交互,或者甚至更高阶次。这项工作可能需要更多的模型优化,因为有太多的三阶交互。DNN
模型,如 Wide & Deep
、DeepFM
、DeepLight
,并尝试将 FmFM
作为 DNN
模型的一个构建模块,以进一步提高其性能。近年来,许多基于深度学习的 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
的准确性。我们的目标是以一种细粒度的方式动态地学习特征的重要性和特征交互。为此,我们提出了用于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
向量所拼接而来:field
数量,field embedding
维度。
SENET Layer
:我们都知道,不同的特征对目标任务有不同的重要性。例如,当我们预测一个人的收入时,职业这个特征比爱好这个特征更重要。受到 SENET
在计算机视觉领域的成功启发,我们引入了 SENET
机制,让模型更加关注特征的重要性。对于特定的 CTR
预估任务,我们可以通过 SENET
机制动态地增加重要特征的权重、减少不重要特征的权重。
以 feature embedding
作为输入,SENET
针对 field embedding
产生权重向量 embedding
embedding
(即,SENET-Like embedding
):
其中: field
的权重;field
的 SENET-Like embedding
。
如下图所示,SENET
由三个步骤组成:squeeze step
、excitation step
、re-weight step
。
squeeze
:这一步是用来计算每个 field embedding
的 summary statistics
的。具体而言,我们使用一些池化方法(如 max/mean
)从而将原始的 embedding
sum
池化、或者最大池化。
原始 SENET
论文中的 squeeze
函数是最大池化。然而,我们的实验结果表明,均值池化的性能比最大值池化的性能更好。
excitation
:这一步可以用来基于统计向量 field embedding
的权重。我们使用两个全连接层来学习权重:
正式地,field embedding
的权重的计算公式为:
其中:
这一步是降维,从而最多保留最重要的
个权重。
re-weight
:SENET
的最后一步是 reweight
,在原始论文中被称为 re-scale
。 SENET-Like embedding
Bilinear-Interaction Layer
:Interaction layer
用于计算二阶的特征交互。特征交互的经典方法是内积和 Hadamard
积,其形式分别为:Hadamard
积过于简单,不能有效地建模稀疏数据集中的特征交互。因此,我们提出了一种更加细粒度的方法来结合内积和 Hadamard
积,如下图 (c)
所示。
具体来说,我们在Interaction layer
提出了三种类型的双线性函数,并称这一层为 Bilinear-Interaction layer
。以第 field embedding
field embedding
Field-All Type
:
其中:field interaction pair
之间共享。
Field-Each Type
:
其中:field
都有一个。
Field-Interactoin Type
:
其中:field interaction pair
都有一个。
如 Figure 1
所示,我们有两种 embedding
:原始 embedding
、SENET-like embedding
。对于每一种 embedding
,我们可以选择采用 bilinear
函数或 Hadamard
积。
最终,Bilinear-Interaction layer
可以从原始 embeddign
interaction vector
SENET-like embedding
interaction vector
Combination Layer
:combination layer
将 interaction vector
如果我们将向量 sigmoid
函数来输出预测值,我们就有了一个浅层的 CTR
模型。
为了进一步提高性能,我们将浅层组件和 DNN
组件组合成一个统一的模型,形成深度网络结构。这个统一的模型在本文中称为深度模型。
而更好的办法是:拼接
之后进行线性加权,即:
Deep Network
:深度网络由多个全连接层组成,隐式地捕获了高阶的特征交互。
Deep Network
的输入是什么?论文没有说明。但是根据Figure 1
,应该是。
Output Layer
:我们模型的输出为:
其中:sigmoid
函数,deep part
的输出,wide part
的输出。
目标函数为交叉熵损失:
其中:ground-truth
。
与 FM, FNN
的联系:
SENET layer
和 Bilinear-Interaction layer
,不难发现我们的模型将退化为 FNN
。DNN
部分,同时使用常数的 sum
,那么浅层 FiBiNET
就退化为传统的 FM
模型。数据集:
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
函数,缩减率设置为 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
函数更好。此外,我们还改变了压缩率(
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
一样重要。显式的特征交互可以显著提高 CTR
模型的性能。早期的协同过滤推荐算法,如矩阵分解matrix factorization: MF
和分解机factorization machine: FM
,用一个 bi-linear learning model
抽取二阶信息。
然而,并非所有的交互都有利于性能。一些基于树的方法已经被提出来,以自动找到有用的特征交叉。gradient boosting decision tree: GBDT
试图找到损失函数梯度较高的交互。AutoCross
在一个树状结构的空间中搜索有效的交互。但是树型模型在 multi-field categorical data
的推荐系统中只能探索所有可能的特征交互中的一小部分,所以它们的探索 exploration
能力受到限制。
同时,深度神经网络 DNN
模型被提出。它们的表达能力更强,而且根据通用近似特性universal approximation property
,它们可以探索大多数的特征交互。然而,使用基于梯度的优化,并不能保证 DNN
自然地收敛到任何预期的函数。简单的 DNN
模型可能无法找到合适的特征交互。因此,人们提出了各种复杂的架构,如深度兴趣网络 Deep Interest Network: DIN
、深度分解机Deep Factorization Machine: DeepFM
、Product-based Neural Network: PNN
、以及 Wide & Deep
。因子分解模型 Factorization Model
(如 FM, DeepFM, PNN, Attention Factorization Machine: AFM, Neural Factorization Machine: NFM
),已被提出采用 feature extractor
来探索显式的特征交互。
然而,所有这些模型要么是简单地枚举所有的特征交互,要么是需要人为的努力来识别重要的特征交互。前者总是给模型带来巨大的内存和计算成本,并且难以扩展到高阶交互。此外,无用的特征交互可能带来不必要的噪音,使训练过程复杂化。后者,如在 Wide & Deep
中手动识别重要的特征交互,具有很高的人力成本,并有可能错过一些反直觉的(但重要的)特征交互。
如果在这些因子分解模型中可以事先识别出有用的特征交互,那么模型就可以专注于对它们的学习而不必处理无用的特征交互。通过去除无用甚至有害的特征交互,我们期望模型能在降低计算成本的情况下表现得更好。
为了自动学习哪些特征交互是必要的,我们为每个特征交互引入了一个 gate
(处于打开或关闭状态),以控制其输出是否应该被传递到下一层。在以前的工作中, gate
的状态要么是由专家知识事先指定、要么是设置为全部打开。从数据驱动的角度来看,一个 gate
是打开还是关闭,应该取决于每个特征交互对最终预测的贡献。显然,那些贡献小的特征交互应该关闭,从而防止给模型学习引入额外的噪音。然而,要找到模型性能的最佳 open gate
集合是一个 NP-Hard
问题,因为我们面临着一个巨大的空间(如果我们只考虑 2
阶特征交互, 则搜索空间为 feature field
的数量)来搜索。
受最近用于神经架构搜索的 DARTS
的启发,论文 《AutoFIS: Automatic Feature Interaction Selection in Factorization Models for Click-Through Rate Prediction》
提出了一个两阶段的方法 AutoFIS
,用于自动选择因子分解模型中的低阶特征交互和高阶特征交互:
AutoFIS
不是在一组离散的候选特征交互上进行搜索,而是通过引入一组架构参数 architecture parameters
(每个特征交互一个)从而将 choice
松弛为连续的,这样就可以通过梯度下降学习每个特征交互的相对重要性。架构参数与神经网络权重由 GRDA
优化器(一种容易产生稀疏解的优化器)联合优化,这样训练过程可以自动丢弃不重要的特征交互(架构参数为零)而保留那些重要的特征交互。re-train
阶段,AutoFIS
选择架构参数值非零的特征交互,用选定的特征交互重新训练模型,同时将架构参数作为注意力单元 attention unit
,而不是交互重要性的指标。论文在三个大规模的数据集上进行了广泛的实验(两个公开的 benchmark
、一个是 private
数据集)。实验结果表明:AutoFIS
可以显著提高所有数据集上因子分解模型的 CTR
预估性能。由于 AutoFIS
可以去除大约 50%-80%
的二阶特征交互,原始模型总是可以实现效率的提升。通过学习每个三阶特征交互的重要性,论文还将 AutoFIS
应用于三阶交互的选择。实验结果表明:在选择了大约1%-10%
的三阶交互之后,因子分解模型的 AUC
可以提高 0.1%-0.2%
,而不会引入很多计算成本。
实验结果表明,使用 AutoFIS
进行高阶特征交互的自动选择是一个很有前景的方向。实验还表明,重要的二阶特征交互和三阶特征交互,通过在FM
中由 AutoFIS
所识别,也可以大大提升目前 SOTA
模型的性能,这意味着我们可以使用一个简单的模型进行交互选择 interaction selection
,并将选择结果应用于其他模型。此外,论文在真实数据和人工合成数据上分析了AutoFIS
所选择的特征交互的有效性。此外,在华为应用商店的推荐服务中进行了为期十天的 online A/B test
,其中 AutoFIS
产生的推荐模型比DeepFM
实现了 20.3%
的CTR
改善、以及 20.1%
的 CVR
改善,这为业务收入的增长做出了巨大贡献。
综上所述,本文的主要贡献如下:
论文通过经验验证:在训练因子分解模型时,去除冗余的特征交互是有益的。
论文提出了一个两阶段的算法 AutoFIS
来自动选择因子分解模型中重要的低阶特征交互和高阶特征交互。
AutoFIS
可以在一个完整的训练过程中通过架构参数学习每个特征交互的相对重要性。在三个大规模数据集上的离线实验证明了 AutoFIS
在因子分解模型中的优越性能。此外,AutoFIS
还可以找到一组重要的高阶特征交互,以提升现有模型的性能,而没有引入太多的计算成本。一个为期十天的 online A/B test
表明,AutoFIS
在 CTR
和 CVR
方面将 DeepFM
模型平均提高了约 20%
。
相关工作:
factorization machine: FM
将每个特征投影到一个低维向量中,并通过内积来建模特征交互,这对于稀疏的数据来说效果很好。Field-aware factorization machine: FFM
进一步使每个特征有多个 vector representation
从而与其他 field
的特征进行交互。
最近,深度学习模型在一些公共 benchmark
上取得了 SOTA
的性能。有几个模型使用 MLP
来改进 FM
,如 Attention FM
、Neural FM
。
Wide & Deep
联合训练了一个 wide
模型(采用人工特征)、和一个 deep
模型(采用原始特征)。
DeepFM
使用一个 FM layer
来代替 Wide & Deep
中的 wide
组件。
PNN
使用 MLP
来建模 FM layer
和 feature embeddings
的交互,而 PIN
引入了 network-in-network
架构来建模 pairwise
特征交互,而不是 PNN
和 DeepFM
的内积操作。
PNN
用内积/外积来建模feature embeddings
的交互。
需要注意的是:现有的因子分解模型都是简单地枚举所有二阶的特征交互,其中包含了许多无用的和噪音的交互。
gradient boosting decision tree: GBDT
是一种通过决策树算法进行特征工程和搜索交互的方法。然后,转换后的特征交互可以被送入逻辑回归或 FFM
模型。在实践中,树状模型更适合于连续数据,但不适合推荐系统中的高维 categorical data
,因为 categorical feature
的使用率很低。
同时,也有一些工作使用 AutoML
技术来处理推荐系统中的问题。人们提出了 AutoCross
在许多候选特征的子集上进行搜索,从而识别有效的交互。这需要训练整个模型来评估每一个所选择的特征交互,但候选集多得令人难以置信:例如,对于一个有 field
的数据集,仅仅考虑二阶特征交互就有 AutoCross
通过两个方面的近似来加速:
beam search
贪心地构建局部最优的特征集合。field-aware LR
模型来评估新生成的特征集合。由于这两种近似,从 AutoCross
中提取的高阶特征交互可能对深度模型没有用。
与 AutoCross
相比,我们提出的 AutoFIS
只需要执行一次搜索阶段来评估所有特征交互的重要性,这要高效得多。此外, AutoFIS
学到的有用的交互将改善深度模型,因为这些特征交互是在该深度模型中直接学习和评估的。
最近, one-shot
架构搜索方法(如 DARTS
)已经成为最流行的神经架构搜索 neural architecture search: NAS
算法,以有效地搜索网络架构。在推荐系统中,这种方法被用来为协同过滤模型搜索适当的交互函数。《Efficient Neural Interaction Function Search for Collaborative Filtering》
中的模型主要是为特征交互识别适当的交互函数,而我们的模型主要是搜索和保留重要的特征交互。
受最近用于神经架构搜索的 DARTS
工作的启发,我们将搜索有效特征交互的问题表述为一个包含架构参数 architecture parameters
的连续搜索问题。与 DARTS
使用 two-level optimization
来交替优化架构参数和模型权重,并通过训练集和验证集进行迭代不同,我们使用 one-level optimization
来联合训练这两类参数,并以所有数据作为训练集。
因子分解模型是指:通过内积或神经网络等操作将来自不同特征的几个 embedding
的交互建模为一个实数。我们将 FM
、DeepFM
和 IPNN
作为实例来描述我们的算法,并探索在各种数据集上的性能。下图展示了 FM
、DeepFM
和 IPNN
模型的结构。
FM
由一个 feature embedding layer
和一个 feature interaction layer
组成。DeepFM
和 IPNN
模型除了 feature embedding layer
、 feature interaction layer
之外,还有一个额外的 MLP layer
。DeepFM
和 IPNN
的区别在于:在 DeepFM
中,feature interaction layer
和 MLP layer
是并行工作的,而在 IPNN
中是堆叠排列的。Feature Embedding Layer
:在大多数 CTR
预测任务中,数据是以 multi-field categorical form
收集的。一个典型的数据预处理是:通过 one-hot encoding
或 multi-hot encoding
将每个数据实例转化为高维稀疏向量。只有当一个 field
是 multivariate
的时候,它才被表示为 multi-hot encoding vector
。一个数据样本可以被表示为:
其中: field
数量,field
的 one-hot/multi-hot encoding vector
。
feature embedding layer
用于将 encoding vector
转化为低维向量,即:
其中:field
的 embedding
矩阵;field
的 feature value
数量;
one-hot encoding vector
,其中第 1
,那么 multi-hot encoding vector
,其中第 1
,那么:sum
池化)或者 feature embedding layer
的输出为多个 embedding
向量的拼接:
Feature Interaction Layer
:将特征转换到低维空间后,可以用 feature interaction layer
在这样的空间中建模特征交互。
首先,计算pairwise
特征交互的内积:
其中:field
的 feature embedding
;
这里 pairwise
特征交互的数量为
可以根据
进行简化,此时的计算复杂度降低到 。
然后,在 FM
和 DeepFM
模型中,feature interaction layer
的输出为:
在这里,所有的特征交互以相同的贡献被传递到下一层。正如前面内容所指出的(并将在实验部分得到验证),并非所有的特征交互都具有同等的预测性,无用的特征交互甚至会降低性能。因此,我们提出了 AutoFIS
算法来有效选择重要的特征交互。
为了研究我们的方法是否可以用来识别重要的高阶特征交互,我们将具有三阶交互(即三个 field
的组合)的 feature interaction layer
定义为:
其中
MLP Layer
:MLP Layer
由若干个带激活函数的全连接层组成,它学习特征的 relationship
和 combination
。单层 MLP Layer
的输出为:
其中:bias
;relu
为 relu
激活函数。
Output Layer
:
FM
模型没有 MLP Layer
,它直接将 feature interaction layer
和 prediction layer
相连:
其中:predicted CTR
。
DeepFM
以并行的方式将 feature interaction layer
和 MLP layer
进行组合:
IPNN
以堆叠的方式将 feature interaction layer
和 MLP layer
进行组合:
请注意,IPNN
的 MLP layer
也可以作为不同特征交互的 re-weighting
,从而捕获其相对重要性。这也是 IPNN
比 FM
和DeepFM
有更高容量的原因。然而,在 IPNN
的公式中,人们无法检索到对应于每个特征交互的相对贡献的精确值。因此,IPNN
中无用的特征交互既不能被识别、也不能被丢弃,这给模型带来了额外的噪声和计算成本。
Objective Function
:FM
、DeepFM
和 IPNN
有着相同的目标函数,即最小化预测值和标签的交叉熵:
其中:label
;
AutoFIS
自动选择有用的特征交互,可以应用于任何因子分解模型的 feature interaction layer
。AutoFIS
可以分为两个阶段:
search stage
:检测有用的特征交互re-train stage
:对具有选定特征交互的模型进行重训练。核心思想:根据
data-driven
的权重来学习 field
交互特征的重要性,并裁剪不重要的field
交互特征。
AutoFIS
和AFM
很类似,它们都是学习每个交互特征的重要性,然而:
AutoFIS
通过自由参数来描述交互特征的重要性,可以视为global-level
的建模。AFM
通过attention
机制来描述交互特征的重要性,可以视为sample-level
的建模。理论上而言,对于给定的field-pair
,我们可以统计所有样本在它上面的注意力权重,从而得到global-level
的重要性。- 此外,
AFM
用逐元素乘积来描述交互特征,而AutoFIS
用内积。
为了便于介绍算法,我们引入了 gate
操作来控制是否选择一个特征交互:一个打开的 gate
对应于选择一个特征交互,而一个关闭的 gate
则导致丢弃一个特征交互。所有二阶特征交互对应的 gate
的总数为 open gate
的集合是非常具有挑战性的,因为我们面临着一个难以置信的巨大空间
在这项工作中,我们从不同的角度来处理这个问题:我们不是在一个离散的 open gate
的集合上进行搜索,而是通过引入架构参数 choice
放宽为连续的,这样就可以通过梯度下降学习每个特征交互的相对重要性。下图显示了所提出的 AutoFIS
的概览。
这种通过梯度学习的架构选择方案受到 DARTS
的启发,其中,DARTS
的目标是从卷积神经网络架构的一组候选操作中选择一个操作。具体而言,我们将因子分解模型中的 interaction layer
重新表述为:
其中:
在 AutoFIS
的搜索阶段,我们可以学习 gate
状态。
如何确保
的稀疏性?论文采用特殊的优化器 GRDA Optimizer
来实现。此外,是否可以保留最重要的
field
,而不仅仅是最重要的field pair
?实际上,如果field
的线性项权重 、交互项权重 全部都接近零(或者等于零),那么 field
就可以被裁剪掉。
Batch Normalization
:从整个神经网络的角度来看,特征交互的贡献由
由于 scale
耦合会导致对 Batch Normalization: BN
来消除其 scale
问题。
原始的 BN
采用 mini-batch
统计量从而对 activated output
进行标准化。具体而言:
其中:BN
层的输入;BN
层的输出;mini-batch
BN
层的可训练的 scale/shift parameters
;
为了获得对 scale/shift parameters
分别设为 1
和 0
。对每个特征交互BN
操作计算如下:
其中:mini-batch
GRDA Optimizer
:generalized regularized dual averaging: GRDA
优化器旨在获得一个稀疏的深度神经网络。为了在每个梯度step
其中:
在搜索阶段,我们使用 GRDA
优化器来学习架构参数
除了 Adam
优化器学习。
One-level Optimization
:为了在 AutoFIS
的搜索阶段学习结构参数 DARTS
不同。DARTS
将higher-level
决策变量、将网络权重 lower-level
变量,然后用 bi-level
优化算法对其进行优化。在 DARTS
中,假设只有当网络权重被正确学习后,模型才能选择操作,从而使
在 AutoFIS
的公式中,这意味着我们可以在网络权重被正确训练后决定 gate
应该打开还是关闭,这使我们回到了问题:完全训练 DARTS
建议只用一个梯度下降步来近似计算网络权重的最优值,并迭代地训练
我们认为,这种近似的不精确性可能会降低性能。因此,我们建议不使用 bi-level
优化,而是用 one-level
优化来联合优化
在这种情况下,
在实验部分中,我们将展示 one-level optimization
比 two-level optimization
的优越性。
在搜索阶段的训练结束后,根据搜索阶段的架构参数 gate
状态,当 gate
状态被固定为永久关闭。
在移除这些不重要的交互后,我们重新训练新的模型。具体来说, feature interaction layer
被替换为:
注意这里 Adam
优化器学习。
这里
被初始化为 0
或1
(根据特征交互的选择的结果),并且在训练过程中保持不变。重训练阶段,所有参数(包括
)都用 Adam
优化器来优化。
数据集:两个 public
数据集(Avazu, Criteo
)、一个 private
数据集。
Avazu
:在 Kaggle
的 CTR
预估竞赛中被发布。随机拆分80%
的数据作为训练和验证,剩余 20%
用于测试。出现次数少于 20
次的 categories
将被删除从而进行降维。
Criteo
:包含一个月的点击日志,有数十亿的数据样本。我们选择 "data 6-12"
作为训练集和验证集,同时选择 "day-13"
进行评估。为了应对标签的不平衡,我们采用了负降采样的方法,使正样本比例大致保持在 50%
左右。13
个数值字段通过分桶被转换为 one-hot
特征,其中某个字段中出现少于 20
次的特征被设置为 dummy feature "other"
。
如何分桶?论文并未说明。
Private
:从华为应用商店的游戏推荐场景中收集的。该数据集包含 app
特征(如 ID, category
),用户特征(如用户的行为历史)和上下文特征。
数据集统计结果如下表所示。
baseline
:我们将 AutoFIS
应用于 FM
和 DeepFM
模型以显示其有效性(分别表示为 AutoFM
和 AutoDeepFM
)。
baseline
方法为:GBDT-based
的方法( GBDT+LR, GBDT+FFM
),FM
模型(AFM, FwFM, FFM, IPNN
)。
由于其巨大的计算成本和源代码的不可用,我们没有将我们的模型与 AutoCross
进行比较。
评估指标:AUC, Log loss
。
超参数配置:
实现细节:
AutoFM
和 AutoDeepFM
选择二阶特征交互:在搜索阶段,我们首先在所有训练数据上联合训练 AutoFM
和 AutoDeepFM
选择三阶特征交互:我们复用所选中的二阶交互,并在搜索阶段枚举三阶特征交互从而学习其重要性。最后,我们用选中的二阶交互和三阶交互来重新训练我们的模型。注意,在搜索阶段,架构参数 GRDA
优化器优化,而其他参数 Adam
优化器优化。在重新训练阶段,所有参数都由 Adam
优化器优化。
AutoFIS
选择的特征交互:Table 1
和 Table3
总结了 AutoFM
和 AutoDeepFM
在 Avazu, Criteo, Private
数据集上自动选择二阶重要交互和三阶重要交互的性能。可以看到:
对于 Avazu
数据集,FM/DeepFM
分别可以移除 71%/76%
的二阶交互。移除这些无用的交互:
AutoFM(2nd)
和 AutoDeepFM(2nd)
的推理时间明显少于 FM
和 DeepFM
。AUC
来看,AutoFM(2nd)
比 FM
的相对性能提高了 0.49%
、AutoDeepFM(2nd)
比 DeepFM
的相对性能提高了 0.20%
。类似的改进也可以从其他数据集中得出。
对于高阶特征交互的选择,只有 2%-10%
的三阶特征交互需要包含在模型中。
AutoFM(3rd)
和 AutoDeepFM(3rd)
的推理时间远远少于 FM(3rd)
和 DeepFM(3rd)
(与 FM
和 DeepFM
相当)。
同时,通过移除不重要的三阶特征交互,准确率得到了显著的提高。即在 Avazu
上的 AUC
指标上,AutoFM(3rd)
比 FM(3rd)
的相对性能提高了 0.22%
、AutoDeepFM(3rd)
比 DeepFM(3rd)
提高了 0.20%
。
对 Criteo
的观察也是如此。
所有这些性能提升都是以边际时间成本 marginal time cost
实现的。例如,AutoDeepFM(3rd)
在 Avazu
和 Criteo
用一块 GPU
卡搜索重要的二阶特征交互和三阶特征交互需要 24
分钟和 128
分钟。同样的结果可能需要人类工程师花很多小时或几天的时间来手动识别这些重要的特征交互。
注意,在 FM
和 DeepFM
中直接枚举三阶特征交互会使推理时间增加 7
到 12
倍,这在工业应用中是不可接受的。
所选特征的可迁移性:我们研究了由 AutoFM
(这是一个简单的模型)所学到的特征交互是否可以迁移到 SOTA
的模型(如 IPNN
)从而提高其性能。
如下表所示:
AutoFM
选择的二阶特征交互(即 AutoIPNN(2nd)
)实现了与 IPNN
相当的性能,在 Avazu
和 Criteo
的所有交互中约占 30%
和 50%
。AutoFM
选择的二阶特征交互和三阶特征交互(即 AutoIPNN(3rd)
),性能得到明显改善。这两个证据都验证了 AutoFM
所选择的特征交互的可迁移性。
所选特征的效果:
在真实数据上:我们定义 statistics_AUC
来表示一个特征交互对最终预测的重要性。对于一个给定的特征交互。我们构建一个只考虑该交互的 predictor
,其中 prediction
为训练集中特定特征交互的 statistical CTR
(#downloads/#impressions
)。然后,这个 predictor
的 AUC
是相对于这个给定的特征交互的 statistics_AUC
。 statistics_AUC
越高,表明该特征交互在预测中的作用越重要。然后,我们将 statistics_AUC
和
即,仅仅以这一对特征作为输入,
label
不变。这个predictor
如何构建?论文并未说明。可以选择LR
或FM
模型。
如下图所示,我们可以发现,被我们模型选中的大多数特征交互(绝对值较高的 statistics_AUC
,但并非所有具有高 statistics_AUC
的特征交互都被选中。这是因为这些交互中的信息也可能存在于其它交互中,而这些其它交互也被我们模型所选中。
为了评估我们的模型所选择的特征交互的有效性,我们还根据 statistics_AUC
选择了 top-N
特征交互( statistics_AUC
选择的特征交互的模型。
在人工合成数据上:合成数据集是由一个不完整的 poly-2
函数产生的,其中的双线性项类似于 categories
之间的交互。基于这个数据集,我们研究了:我们的模型是否能够找到重要的交互、我们的模型与其他FM
模型相比的性能。
数据集的输入 field
的 binary
标签:
其中,数据分布 data pair
是独立同分布采样来构建训练集和测试集。我们还在采样的数据中加入一个小的随机噪声
我们使用 FM
和我们的模型来拟合人工合成数据。我们在测试数据集上使用 AUC
来评估这些模型。
我们选择 Figure 4
展示了我们的模型与FM
的性能比较,这表明了我们的模型的优越性。
如 Figure 5
所示,我们的模型可以精确地提取重要的特征交互:
在线实验:我们在华为应用商店的推荐系统中进行了在线实验,以验证 AutoDeepFM
的卓越性能。
具体而言,在 App Store
的游戏推荐场景中进行了为期 10
天的 A/B test
。我们在线实验的 baseline
是 DeepFM
,这是一个强大的baseline
,因为它具有优秀的准确性和高效率,已经在商业系统中部署了很长一段时间。
5%
的用户,并向他们展示由 DeepFM
生成的推荐。5%
的用户,并向他们展示由 AutoDeepFM
生成的推荐。Figure 6
和 Figure 7
显示了实验组比对照组在 CTR
(#downloads/#impressions
)和 CVR
(#downloads/#user
)上的改进。可以看到:
A/A test
期间,CTR
和 CVR
都在8%
以内波动。AutoDeepFM
模型在第 8
天被启动到实时系统中。从第 8
天开始,我们观察到在 CTR
和 CVR
方面比 baseline
模型有明显的改善。在 10
天的 A/B test
中,CTR
的平均改进为 20.3%
,CVR
的平均改进为 20.1%
。这些结果证明了我们所提出的模型的巨大有效性。18
天开始,我们再次进行 A/A test
,在实验组中用 baseline
模型替换我们的 AutoDeepFM
模型。我们观察到实验组的性能急剧下降,这再次验证了实验组在线性能的改善确实是由我们提出的模型引入的。消融研究:
不同随机数种子下 Avazu
上用不同的随机数种子运行 AutoFM
的搜索阶段。
由不同随机数种子估计的 Pearson
相关性约为 0.86
,这验证了 BN
,这个Pearson
相关性会下降到 0.65
左右。
AutoFIS
组件的效果:为了验证 AutoFIS
中各个组件的有效性,我们提出了几个变体,如 Table 6
所示。
AutoFIS
搜索阶段的有效性,我们将其与 "Random"
策略(即,随机选择特征交互)进行比较。BN
和 注意,对于
AutoFM-BN
,仅仅是在重训练阶段没有BN
,而在搜索阶段还是用了BN
的。
Table 7
列出了这些变体的性能。对于 "Random"
策略,我们选择与 AutoFM
相同的交互数量,我们尝试了 10
种不同的 "Random"
策略,并对结果进行了平均。
结论:
比较 AutoFM-BN-𝛼
和 Random+FM
,我们可以看到:在相同数量的交互下,AutoFIS
的选择总是能取得比随机选择更好的性能。这说明在搜索阶段 AutoFIS
就能识别出重要的交互。
在 Criteo
数据集中,Random+FM
和 FM
之间的性能差距表明:在某些情况下,随机选择的特征交互可能优于保留所有特征交互的模型。这支持了我们的说法:移除一些无用的特征交互可以提高性能。
类似于
xgboost
中的feature sample
。在
Avazu
数据集中,Random+FM
略逊于FM
。
AutoFM
和 AutoFM-BN
之间的比较验证了 BN
在重训练阶段的有效性,其中的原因在 AutoFIS
章节已经说明。
AutoFM-BN
和 AutoFM-BN-𝛼
之间的性能差距表明:
one-level optimization vs bi-level optimization
:结果如 Table 8
所示。可以看到:AutoFM
和 Bi-AutoFM
(以及AutoDeepFM
和 Bi-AutoDeepFM
)之间的性能差距表明了 one-level optimization
比 bi-level optimization
的优越性,其原因在 one-level optimization
章节已经说明。
有效的特征交叉 feature cross
对于许多 learning to rank: LTR
模型的成功至关重要。特征交叉提供了单个特征之外的额外交互信息。例如,"国家" 和 "语言" 的组合比其中单个特征更有信息量。在线性模型时代,机器学习从业者依靠手动识别这种特征交叉来增加模型的表达能力。不幸的是,这涉及到一个组合搜索空间,在数据大多是 categorical
的 web-scale
的应用中,这个搜索空间很大而且很稀疏。在这种情况下的搜索是耗时耗力的,往往需要领域的专业知识,并使模型更难以泛化。
后来, embedding
技术被广泛采用,将特征从高维稀疏向量投影到更低维的稠密向量。Factorization Machine: FM
利用 embedding
技术,通过两个 latent vector
的内积来建模 pairwise
特征交互。与那些传统的线性模型中的特征交叉相比,FM
带来了更多的泛化能力。
在过去的十年中,随着更大的算力和巨大的数据规模,工业界的 LTR
模型已经逐渐从线性模型和 FM-based
的模型迁移到深度神经网络(DNN
)。这使得搜索和推荐系统的模型性能得到了全面的提升。人们普遍认为 DNN
是通用的函数近似器,可以潜在地学习各种特征交互。然而,最近的研究(《Latent cross: Making use of context in recurrent recommender systems》
、《Deep & Cross Network for Ad Click Predictions》
)发现:DNN
甚至对二阶特征交叉或三阶特征交叉进行近似建模都是低效的。
为了更准确地捕捉有效的特征交叉,常见的补救措施是通过更宽或更深的网络进一步提高模型容量。这自然是一把双刃剑:
QPS
,因此对实时推理有非常严格的延迟要求。可能,serving
系统已经被推到了一个极限,无法承受更大的模型。这已经揭示了设计一个能够有效地学习 predictive
特征交互的模型的关键需求,特别是在一个处理数十亿用户的实时流量的资源限制环境中。 最近的许多工作试图解决这一挑战。共同的思想是:利用那些从DNN
学到的隐式高阶交叉、以及显式的和有界的特征交叉(在线性模型中已经发现,显式的和有界的特征交叉是有效的)。隐式交叉是指通过端到端的函数来学习交互,而没有任何明确的公式来建模这种交叉。另一方面,显式交叉是通过一个具有可控交互阶次的显式公式来建模的。
在所有这些方法中,Deep & Cross Network: DCN
是有效和优雅的。然而,在大规模工业系统中部署 DCN
面临许多挑战。DCN
的 cross network
是有局限性的:
cross network
代表的多项式仅由 random cross patterns
的灵活性。cross network
和 DNN
之间的分配容量是不平衡的。当将 DCN
应用于大规模生产数据时,这种差距明显增加。绝大部分的参数将被用于学习 DNN
中的隐式交叉。在论文 《DCN V2: Improved Deep & Cross Network and Practical Lessons forWeb-scale Learning to Rank Systems》
中,作者提出了一个新的模型 DCN-V2
,改进了原来的DCN
模型。作者已经在整个谷歌的相当多的 learning to rank system
中成功部署了 DCN-V2
,在离线模型准确性和在线业务指标方面都有显著的提高。
DCN-V2
首先通过 cross layer
学习输入(通常是 embedding layer
)的显式特征交互,然后与深度网络相结合从而学习互补的隐式交互。DCN-V2
的核心是 cross layer
,它继承了 DCN
中 cross network
的简单结构,然而在学习显式的和有界的交叉特征方面的表达能力显著增强。论文研究了以点击为正标签的数据集,然而 DCN-V2
与标签无关,可以应用于任何 learning to rank system
。
论文贡献:
论文提出了一个新的模型 DCN-V2
来学习有效的显式特征交叉和隐式特征交叉。与现有的方法相比, DCN-V2
更具有表达能力,但仍然是高效和简单的。
观察到 DCN-V2
中所学到的矩阵的低秩性质,论文提出利用低秩技术从而在子空间中近似feature cross
,以获得更好的性能和延迟的 trade-off
。
此外,论文提出了一种基于 Mixture-of-Expert
架构的技术,以进一步将矩阵分解为多个较小的子空间。然后,这些子空间通过一个门控机制被聚合起来。
论文利用人工合成数据集进行并提供了广泛的研究,证明了传统的基于 ReLU
的神经网络学习高阶特征交叉的低效率。
通过全面的实验分析,论文证明了的 DCN-V2
模型在 Criteo
和 MovieLen-1M
基准数据集上的表现明显优于 SOTA
算法。
论文提供了一个案例研究,并分享了在一个大规模工业 ranking
系统中部署 DCN-V2
的经验,这带来了显著的离线收益和在线收益。
相关工作:最近 feature interaction learning
工作的核心思想是利用显式的和隐式的特征交叉。为了建模显式交叉,最近的工作引入了乘法运算(pairwise interaction
。我们根据他们如何结合显式部分和隐式部分来组织相关工作。
并行结构:一个工作方向是联合训练两个并行网络,其灵感来自于 wide and deep
模型,其中 wide
组件将原始特征的交叉作为输入,而 deep
组件是一个 DNN
模型。然而,为 wide
组件选择交叉特征又回到了线性模型的特征工程问题。尽管如此, wide and deep
模型已经激发了许多工作从而采用这种并行的架构并改进 wide
部分。
DeepFM
通过在 wide
组件采用 FM
模型从而自动进行 feature interaction learning
。
xDeepFM
通过生成多个 feature map
增加了 DCN
的表达能力,每个 feature map
都编码了当前 level
和输入 level
的特征之间的 pairwise
交互。此外,它还将每个 feature embedding
unit
,而不是将每个元素 unit
。不幸的是,它的计算成本很高( #params
的 10
倍),使得它在工业规模的应用中不实用。
此外,DeepFM
和 xDeepFM
都要求所有的 feature embedding
具有相同的大小,这在应用于工业数据时又是一个限制,因为工业数据的词表大小( categorical features
的大小)从
AFM
通过一个注意力网络为每个特征交互分配重要性。
AutoInt
利用带残差连接的 multi-head self-attention
机制。
InterHAt
进一步采用了分层注意力。
堆叠结构:另一个工作方向是在 embedding layer
和 DNN
模型之间引入一个 interaction layer
,该 interaction layer
创建了显式的特征交叉。这个 interaction layer
在早期阶段捕捉到了特征交互,并促进了后续隐层的学习。
product-based neural network: PNN
引入了 inner product layer
(IPNN
)和 outer product layer
(OPNN
)作为 pairwise interaction layer
。OPNN
的一个缺点在于其高计算成本。Neural FM: NFM
通过用 Hadamard
积代替内积来扩展 FM
。DLRM
遵从 FM
,通过内积来计算特征交叉。这些模型只能创建到二阶显式交叉。
AFN
将特征转化为对数空间,并自适应地学习任意阶的特征交互。与 DeepFM
和 xDeepFM
类似,这些方法只接受大小相等的 embedding size
。
尽管这些年经过了许多发展,我们的综合实验表明,DCN
仍然是一个强大的基线。我们将此归因于其简单的结构,它促进了 optimization
。然而,正如所讨论的,其有限的表达能力使其无法在 web-scale
的系统中学习更有效的特征交叉。在下文中,我们提出了一个新的架构,它继承了 DCN
的简单结构,同时提高了它的表达能力。
这里描述了一个新颖的模型架构 DCN-V2
来学习显式特征交互和隐式特征交互。DCN-V2
从一个 embedding layer
开始,然后是一个包含多个 cross layer
的 cross network
(用于建模显式特征交互),然后结合一个深度神经网络(用于建模隐式特征交互)。
DCN-V2
中的改进对于将 DCN
用于高度优化的生产系统至关重要。DCN-V2
极大地提高了 DCN
在 web-scale
的生产数据中在建模复杂的显式的交叉项的表达能力,同时保持其优雅的公式,便于部署。DCN-V2
所建模的函数族是 DCN
所建模的函数族的严格超集。
模型整体架构如下图所示,有两种方式将 cross network
与 deep network
结合起来:堆叠式、并行式。此外,考虑到 cross layer
的低秩性质,我们建议利用 low-rank cross layer
的混合来实现模型性能和效率之间更健康的 trade-off
。
Embedding Layer
:embedding layer
将 categorical (sparse)
特征和 dense
特征的组合作为输入,并输出 DCN
类似的 setting
。与 DeepFM, NFM, xDeepFM, DLRM, IPNN, FM
不同的是,DCN-V2
接受任意的 embedding size
。这对于词表规模从
Cross Network
:DCN-V2
和核心在于 cross layer
,它创建了显式的特征交叉。其中第 cross layer
如下所示:
其中:
base layer
,它包含原始的一阶特征,通常被设置为 embedding layer
。bias
向量。下图展示了一个单独的 cross layer
。
对于一个 cross network
,最高的多项式阶数是 DCN-V2
退化到 DCN
。
cross layer
仅能建模有界的多项式类,而其他任何复杂的函数空间只能被近似。因此,我们接下来引入了一个 deep network
来补充数据中固有分布的建模。
DCN V1
的公式为:。相比之下, DCN V2
的公式为:。如果不考虑 bias
项和残差项 ,那么: 即:
DCN V1
中,的权重在所有输出位置 上共享; DCN V2
中,的权重在所有输出位置 行独立。因此, DCN V2
的模型容量更高。
DCN V2
的核心:用代替 。读者感觉没什么创新点。
Deep Network
:第 deep layer
的公式为:
其中:
deep layer
的的输入和输出。 bias
向量。ReLU
。Deep and Cross Combination
:我们提出了两种结构:
Stacked Structure
(如 Figure 1a
):输入 cross network
,然后是 deep network
,最后是输出层输出 Parallel Structure
(如 Figure 1b
):输入 cross network
和 deep network
,然后这两个网络的输出拼接起来作为最终输出 prediction
为:
其中:sigmoid
函数。
对于损失函数,我们使用 logloss
(带正则化项)。注意,DCN-V2
本身是对 prediction-task
和损失函数无关的。
Cost-Effective Mixture of Low-Rank DCN
:对于那些生产模型来说,模型容量往往受到有限的 serving
资源、严格的 latency
要求的限制。因此,我们寻求使 DCN-v2
更具 cost-efficient
的方法。
DCN-V2
结构简单,计算瓶颈在于 matrix-vector
乘法,这使得我们可以利用矩阵近似技术来降低成本:通过两个低秩矩阵 gap
或快速的谱衰减时,该方法是最有效的。在许多情况下,我们确实观察到所学的矩阵
下图 (a)
显示了 DCN-V2
中来自生产模型的学到的矩阵
因此,我们定义第 cross layer
的低秩版本为:
其中:
这个新的公式有两种解释:
我们在一个子空间中学习特征交叉。
这个解释启发我们采用Mixture-of-Experts: MoE
的思想。MoE-based
模型由两部分组成:experts
(通常是一个小网络)和gating
(输入的一个函数)。在我们的案例中,我们不是依靠一个单一的专家来学习特征交叉,而是利用多个这样的专家,每个专家在不同的子空间学习特征交互,并使用门控机制(取决于输入 mixture
的公式如下(如下图 (b)
所示):
其中:
sigmoid
或 softmax
函数。我们将输入
这个解释激励我们利用投影空间的低维性质。我们不是立即从 refine the representation
:
其中:
我们旨在有效利用固定的内存/时间预算来学习有意义的特征交叉。以下公式从上到下都代表一个严格意义上的、逐渐增大的函数族:
这一组模型有比较大的工程参考意义,它描述了从简单模型到复杂模型的升级路径,同时也具有一定的物理意义。
算法复杂度:令 embedding size
,cross layers
数量, DCN
专家的数量。此外,我们假设每个专家具有相同的小维度 cross network
的时间复杂度和空间复杂度为 mixDCN
(低秩 DCN
) 的时间复杂度和空间复杂度为
从 bit-wise
和 feature-wise
的角度来看,对于 cross network
,cross network
能够创造出直到
与 DCN
相比,DCN-V2
用更多的参数来刻画相同的多项式类,表达能力更强。此外,DCN-V2
中的特征交互具有更强的表达能力,可以从 bit-wise
和 feature-wise
两方面来看;而在DCN
中,它只是从 bit-wise
的角度来看。
"CrossNet"
或 "CN"
代表 cross network
,"Mix"
代表低秩混合版本。大多数工作只研究了具有未知交叉模式和噪音的数据的公共数据集。很少有工作在一个干净的环境中用已知的 ground-truth
模型进行研究。因此,重要的是要了解:
DCN-V2
中每个组件的作用。我们用 DCN
模型中的 cross network
来表示那些特征交叉方法,并与工业推荐系统中常用的 ReLU
进行比较。为了简化实验和便于理解,我们假设每个特征
难度增加时的性能:仅考虑二阶特征交叉,令 ground-truth model
为
因此,我们创建了难度不断增加的人工合成数据集:
其中: [-1, 1]
之间均匀采样的。
下表报告了 5
次运行和 model size
的平均 RMSE
。可以看到:
DCN-V2
和 DCN
都很有效。DCN-V2
仍然准确,而 DCN
则准确性下降了。DNN
的性能仍然很差。这表明 DNN
在建模单项式模式时效率不高。每个组件的作用:我们还分别对 3
阶和 4
阶的同质多项式进行了消融研究。对于3
阶和 4
阶,我们从 20
个交叉项。下图展示了层深度对于平均 RMSE
的影响。
2
层对 3
阶多项式取得的最佳性能得到验证(4
阶多项式也是类似的)。在其他层,性能明显下降。DCN
(红色虚线)在复杂的交叉模式建模方面的有限表达能力。总而言之,ReLU
(即,ReLU
激活函数的 DNN
)在捕获显式的特征交叉(乘法关系)方面效率不高,即使有更深更大的网络。DCN
准确地捕捉到了简单的交叉模式,但在更复杂的模式中却失败了。DCN-V2
对于复杂的交叉模式仍然是准确和有效的。
数据集:
Criteo
:包含 7
天内的用户日志,包含 45M
个样本和 39
个特征。我们使用前6
天的数据进行训练,并将最后一天的数据随机平均分成验证集和测试集。我们对 13
个 dense
特征执行 log
归一化(feature-2
为 26
个 categorical feature
。MovieLen-1M
:包含 740k
个样本和 7
个特征。每个训练样本包括一个 <user-features, movie-features, rating>
三元组。我们将任务形式化为一个回归问题:所有一分和两分的评分都被归一化为 0
、四分和五分被归一化为 1
、三分被删除。使用和嵌入 6
个 non-multivalent categorical feature
。数据被随机分成 80%
用于训练、10%
用于验证、10%
用于测试。baseline
方法:SOTA
的 feature interaction learning
算法,如下表所示。
实现细节:所有 baseline
和我们的方法都在 TensorFlow v1
中实现。为了公平比较,除了特征交互组件,所有模型的实现都是相同的。
embedding
:除了 DNN
和 DCN
模型,所有的 baseline
都要求每个特征的 embedding size
是相同的。因此,我们将所有的模型固定为 Criteo
为 39
、Movielen-1M
为 30
)。
optimization
:Adam
优化器,batch size = 512
(MovieLen batch size = 128
)。权重以 He Normal
来初始化,bias
被初始化为零,梯度被截断为范数 10
。对参数采用 decay = 0.9999
的指数移动平均。
超参数调优:对于所有的 baseline
,我们对超参数进行了粗粒度(大范围)的网格搜索,然后再进行细粒度(小范围)的搜索。为了确保可重复性和减少模型方差,对于每个方法和数据集,我们报告了最佳配置的 5
次独立运行的均值和标准差。我们在下面描述了 Criteo
的详细设置。对于 MovieLens
,我们也遵循类似的过程。
对于 Criteo
的所有 baseline
:
{150k, 160k, 200k, 250k, 300k}
{1, 2, 3, 4}
。{562, 768, 1024}
。每个模型自己的超参数:
DCN
:交叉层的数量调优范围 {1, 2, 3, 4}
。AutoInt
:注意力层的数量调优范围 {2, 3, 4}
;attention embedding size
调优范围 {20, 32, 40}
;attention head
数量调优范围 {2, 3}
;残差连接调优范围 {enable, disable}
。xDeepFM
:CIN layer size
调优范围 {100, 200}
,CIN layer depth
调优范围 {2, 3, 4}
,激活函数为恒等映射,计算为 direct
或 indirect
。DLRM
:bottom MLP layer size
和数量的调优范围 {(512,256,64), (256,64)}
。PNN
:我们运行了 IPNN
、OPNN
和 PNN*
,对于后两者,kernel type
调优范围 {full matrix, vector, number}
。对于所有的模型,参数总数上限为
DCN-V2
和 baseline
比较结果:每个模型的最佳 setting
是超参数空间中搜索出来的。如果两个 setting
的性能相当,我们就报告成本较低的那个。可以看到:
我们看到,DCN-V2
的表现一直优于 baseline
(包括 DNN
),并实现了健康的 quality/cost trade-off
。
注意,在我们为 baseline
模型的最佳 setting
而进行的彻底的超参数搜索中,我们确实探索了更宽、更深的模型。然而,更大的模型也不能产生更多的质量收益,清楚地表明许多 bseline
的瓶颈是质量而不是效率。
Best Setting
:
对于 DCN-V2
模型,"stacked"
和 "parallel"
结构都优于所有 baseline
,而"stacked"
在 Criteo
上效果更好、 "parallel"
在Movielen-1M
上效果更好。
在实践中,我们发现:"stacked"
结构更能提高质量,而 "parallel"
结构有助于减少模型方差。
与 baseline
的比较:
DLRM
的表现不如 DeepFM
,尽管它们都来自FM
。这可能是由于 DLRM
在点积层之后省略了一阶稀疏特征。xDeepFM
、AutoInt
和 DCN
在 Criteo
上的表现相似;而在 MovieLens
上,xDeepFM
在 Logloss
上表现出很高的方差。DCN-V2
在 Criteo
上取得了最好的性能,它显式地建模三阶特征交互。DCN-Mix
有效地利用了内存,并在保持准确性的同时减少了 30%
的成本。单独的 CrossNet
在两个数据集上的表现都优于 DNN
。与 DNN
的比较:我们调优了 DNN
模型,并使用了更大的 layer size
。令我们惊讶的是,DNN
的表现与大多数 baseline
相差无几,甚至超越了某些模型。
我们的假设是:那些来自 baseline
的显式特征交叉的模型并不是以一种富有表达能力、以及易于优化的方式建立的。前者使其性能容易被具有大容量的 DNN
所匹配,后者则容易导致可训练性问题从而使模型不稳定。因此,当与 DNN
组合时,整体性能被DNN
组件所支配。
在表达能力方面,考虑二阶方法。PNN
的模型比 DeepFM
和 DLRM
更具有表达能力,这导致它在 MovieLen-1M
上的表现更出色。这也解释了 DCN
与 DCN-V2
相比性能较差的原因。
在可训练性方面,某些模型可能天生就比较难训练,导致性能不尽如人意。
在 Criteo
上,PNN
的平均性能与 DNN
相当。这是由 PNN
的不稳定性造成的。虽然它的最好成绩比DNN
好,但它在多次试验中的高标准差推高了平均损失。
模型效率:
FLOPS
大约是参数数量的 2
倍。然而,对于 xDeepFM
,FLOPS
要高出参数数量一个量级,这使得它在工业规模的应用中难以部署。DCN-V2
提供了最好的性能,同时保持了相对的效率。DCN-Mix
进一步降低了成本,在模型效率和质量之间取得了更好的 trade-off
。超参数研究:
Depth of Cross Layer
:根据设计,cross network
捕获的最高阶特征交叉随着层深的增加而增加。如图 Figure 5 (a)
所示:
cross network
的加深,质量有了稳定的提高,表明它能够捕捉到更多有意义的交叉。我们还用一个同样大小的 DNN
作为参考。当有 ≤2
层时,DNN
的表现优于交叉网络;当有更多层时,cross network
开始缩小性能差距,甚至优于 DNN
的表现。
矩阵的秩:模型是 3
个交叉层,然后是 3
个 512-size ReLU
层。如图 Figure 5 (b)
所示:
4
时,性能与其他 baseline
持平。4
增加到 64
时,LogLoss
几乎随 64
进一步增加到满时,LogLoss
的改善速度减慢了。我们把 64
称为 rank
阈值。从 64
开始的明显放缓表明:刻画特征交叉的重要信号可以在前 64
个奇异值中捕获。
专家数量:我们观察到:
setting
(专家数量、gate
类型、激活函数类型)受到数据集和模型架构的影响。setting
的最佳表现模型产生了相似的结果。更多的 lower-rank experts
并没有比单个 higher-rank expert
表现更好,这可能是朴素的 gating
函数、以及采取的 optimizations
所导致。我们相信更复杂的 gating
和 optimization
会在 mixture of experts
架构下产生更好的结果。模型可视化:DCN-V2
中的权重矩阵 block-wise
视图(由
下图展示了第一个交叉层中学到的权重矩阵 (a)
中,由于版权的原因,特征名称被省略了;深色的像素代表较大的权重。在图 (b)
中,每个 block
代表它的 Frobenius
范数。
图 (a)
展示了整个矩阵,橙色方框突出了一些值得注意的特征交叉。非对角线的 block
对应于重要的交叉,这表明 DCN-V2
的有效性。对角线的 block
对应于 self-interaction
(即,
图 (b)
表现学到的一些强交互,如 Gender × UserId
、MovieId × UserId
。
图
(a)
包含的特征更多,因此方块更小;图(b)
包含很少的特征,因此方块显得很大。
DCN-V2
在谷歌中的产品化:我们通过 DCN-V2
同时在离线模型的准确性、以及在线关键业务指标方面都取得了显著的收益。与公共数据集相比,收益也更加明显,这可能是由于生产数据集的数据量明显更大,数据分布更复杂。
生产数据和模型:生产数据是由数以千亿计的训练样本组成的抽样用户日志。稀疏特征的词表规模从 2
到数百万不等。baseline
模型是一个全连接的多层感知机,采用 ReLU
激活函数。
与生产模型的比较:与生产模型相比,DCN-V2
产生了 0.6%
的 AUCLoss
(即,1.0 - AUC
)改进。我们还观察到显著的在线关键业务指标收益。
baseline
为多层感知机,所以DCN-V2
表现好是符合预期的。为什么不和DeepFM
进行比较?
我们分享一些我们通过产品化 DCN-V2
学到的实际经验:
DNN
的输入层和隐层之间插入交叉层。1-2
个交叉层,准确性得到了一致的提高。超过 2
个交叉层,收益开始趋于平稳。stacking layers
可以学到高阶的特征交互,而拼接层concatenating layers
(类似于多头机制)可以捕获到互补的交互。rank = (input size)/4
的 low-rank DCN
始终保持了 full-rank DCN-V2
的准确性。