《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》
由于几个原因,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
的性能。