返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十六、AutoInt [2018]

发布于 2023-07-17 23:38:25 字数 63089 浏览 0 评论 0 收藏 0

  1. 由于几个原因,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 的预测方法,而且还提供了良好的模型解释能力。
  2. 相关工作:

    • Learning Feature Interactions:学习特征交互是一个基本问题,因此在文献中得到了广泛的研究。

      • Factorization Machine: FM 用于捕获一阶特征交互和二阶特征交互,并被证明对推荐系统的许多任务是有效的。
      • Field-aware Factorization: FFM 建模不同 field 的特征之间的细粒度交互。
      • GBFMAFM 考虑了不同二阶特征交互的重要性。

      然而,所有这些方法都集中在建模低阶特征交互。最近有一些工作建模高阶特征交互:

      • NFM 将深度神经网络堆叠在二阶特征交互的输出之上,从而建模高阶特征交互。
      • PNN, FNN, DeepCrossing, Wide&Deep, DeepFM 也利用前馈神经网络来模拟高阶特征交互。

      然而,所有这些方法都是以隐式的方式学习高阶特征交互,因此缺乏良好的模型可解释性。相反,有三类工作是以显式方式学习特征交互:

      • 首先,Deep&CrossxDeepFM 分别在 bit-wise levelvector-wise level 上对特征进行外积outer product 。虽然它们进行了显式的特征交互,但要解释哪些组合是有用的并不简单。
      • 其次,一些基于树的方法结合了 embedding-based 模型和 tree-based 模型的力量,但不得不将训练过程分成多个阶段。
      • 第三,HOFM 提出了高效的高阶分解机的训练算法。然而,HOFM 需要太多的参数,只有它的低阶(通常小于 5 )形式可以实际使用。

      与现有工作不同的是,我们以端到端的方式显式地用注意力机制建模了特征交互,并通过可视化的方式探究学到的特征组合。

    • Attention and Residual Networks:我们的模型利用了深度学习文献中的最新技术:注意力机制和残差网络。

26.1 模型

  1. 定义 CTR Prediction:令xRn$ \mathbf{\vec x}\in \mathbb R^n $ 为用户u$ u $ 的特征和 itemv$ v $ 的特征的拼接,其中 categorical featuresone-hot encoding 来表示。点击率预测问题旨在根据特征向量x$ \mathbf {\vec x} $ 预测用户u$ u $ 点击itemv$ v $ 的概率。

  2. 针对 CTR 预测问题的一个直接的解决方案是:将x$ \mathbf{\vec x} $ 作为输入特征并馈入分类器,如逻辑回归。然而,由于原始特征向量x$ \mathbf{\vec x} $ 非常稀疏和高维,该模型将很容易过拟合。因此,最好能在低维连续空间中表示原始输入特征。

    此外,如现有文献所示,利用高阶组合特征来产生良好的预测性能是至关重要的。

  3. 定义 p 阶组合特征:给定输入特征向量xRn$ \mathbf{\vec x}\in \mathbb R^n $ ,一个 p 阶组合特征定义为g(xi1,,xip)$ g(x_{i_1},\cdots,x_{i_p}) $ ,其中:每个特征来自于一个 distinct fieldp$ p $ 为涉及的 feature fields 的数量,g()$ g(\cdot) $ 是一个 non-additive 的组合函数,如乘法或外积。例如,xi1×xi2$ x_{i_1}\times x_{i_2} $ 为涉及fieldxi1,xi2$ x_{i_1},x_{i_2} $ 的二阶组合特征。

  4. 传统上,有意义的高阶组合特征是由领域专家手工制作的。然而,这非常耗费时间,而且很难推广到其他领域。此外,几乎不可能手工制作出所有有意义的高阶特征。因此,我们的目标是开发一种能够自动发现有意义的高阶组合特征的方法,同时将所有这些特征映射到低维的连续空间。

    问题定义:给定一个用于CTR 预测的输入特征向量xRn$ \mathbf{\vec x}\in \mathbb R^n $ ,我们的目标是学习x$ \mathbf{\vec x} $ 的低维representation ,它建模了高阶组合特征。

  5. 我们的方法的目标是:将原始稀疏的高维特征向量映射到低维空间,同时建模高阶特征交互。如下图所示:

    • 我们的方法将稀疏的特征向量x$ \mathbf{\vec x} $ 作为输入,然后是一个 embedding layer,将所有的特征(即 categorical 特征和数值特征)投影到同一个低维空间。

    • 接下来,我们将所有 fieldembedding 馈入一个新的交互层 interacting layer ,该层被实现为一个多头自注意力神经网络。

      对于每个交互层,高阶特征通过注意力机制进行组合,不同种类的组合可以通过多头机制进行评估,这些多头机制将特征映射到不同的子空间。

    • 最后一个交互层的输出是输入特征的低维 representation ,它建模了高阶组合特征,并进一步通过一个 sigmoid 函数来估计 CTR

    核心思想:将 Transformer Encoder Block 作用到 feature field embedding 上。

  6. Input Layer:我们首先将用户画像和 item 属性表示为一个稀疏向量,它是所有 field 的拼接:

    (1)x=[x1x2xM]

    其中:M$ M $ 为 feature fields 的总数;xi$ \mathbf{\vec x}_i $ 为第i$ i $ 个 fieldfeature$ \oplus $ 为向量拼接。

    如果第i$ i $ 个 fieldcategorical 特征,则xi$ \mathbf{\vec x}_i $ 为 one-hot 向量。如果第i$ i $ 个 fieldnumerical 特征,则xi$ \mathbf{\vec x}_i $ 为标量。如下图所示。

  7. Embedding Layer:我们用一个低维向量来表示每个 categorical 特征,即:

    (2)ei=Vixi

    其中:Vi$ \mathbf V_i $ 为 fieldi$ i $ 的 embedding matrixxi$ \mathbf{\vec x}_i $ 为 fieldi$ i $ 的 one-hot 向量。

    很多时候,categorical 特征可以是多值的,即,xi$ \mathbf{\vec x}_i $ 是一个 multi-hot 向量。因此,我们将 multi-valued feature field 表示为相应 feature embedding vectors的平均值:

    (3)ei=1qVixi

    其中:q$ q $ 为样本在第i$ i $ 个 field 的取值的数量,xi$ \mathbf{\vec x}_i $ 是它的 multi-hot 向量。

    可以用更复杂的、有效的操作来代替均值操作。

    为了允许 categorical 特征和 numerical 特征之间的交互,我们也在同一个低维特征空间中表示 numerical 特征。我们将 numerical 特征表示为:

    (4)em=vmxm

    其中:vm$ \mathbf{\vec v}_m $ 为 fieldm$ m $ 的 embedding 向量,xm$ x_m $ 为一个标量。

    这里vm$ \mathbf{\vec v}_m $ 在 fieldm$ m $ 的所有取值上共享。

    最终,embedding layer 的输出将是多个嵌入向量的拼接。

  8. Interacting Layer:我们采用注意力机制来确定哪些特征组合是有意义的。以特征m$ m $ 为例,我们首先定义在特定的注意头h$ h $ 下,特征m$ m $ 和特征k$ k $ 的相关性如下:

    (5)αm,k(h)=exp(ψ(h)(em,ek))l=1Mexp(ψ(h)(em,el)),ψ(h)(em,ek)=WQ(h)em,WK(h)ek

    其中:

    • ψ(h)(,)$ \psi^{(h)}(\cdot,\cdot) $ 为注意力函数,它定义了特征m$ m $ 和k$ k $ 之间的相似性。可以通过神经网络或者简单的内积来定义注意力函数,这里我们使用内积的方式。
    • WQ(h),WK(h)Rd×d$ \mathbf W_Q^{(h)}, \mathbf W_K^{(h)}\in \mathbb R^{d^\prime\times d} $ 为投影矩阵,它将原始的 embedding 空间投影到新的空间。d$ d $ 为每个 field 的原始 embedding sized$ d^\prime $ 为投影后的 embedding size

    然后,我们通过αm,k(h)$ \alpha_{m,k}^{(h)} $ 所指导的所有相关特征来更新特征m$ m $ 在子空间h$ h $ 中的 representation

    (6)e~m(h)=k=1Mαm,k(h)WV(h)ek

    其中WV(h)Rd×d$ \mathbf W_V^{(h)}\in \mathbb R^{d^\prime\times d} $ 为投影矩阵。

    这其实就是标准的 Transformer Encoder Blocksoftmax(QK)V$ \text{softmax}\left(\mathbf Q\mathbf K^\top\right) \mathbf V $ 。

    我们通过使用多个头来创建不同的子空间,分别学习不同的特征交互。我们收集在所有子空间学到的组合特征如下:

    (7)e~m=e~m(1)e~m(2)e~m(H)

    其中:$ \oplus $ 为拼接操作,H$ H $ 为总的头数。

    为了保留先前学到的组合特征,包括原始特征(即,一阶特征),我们在网络中加入了标准的残差连接:

    (8)emRes=ReLU(e~m+WResem)

    其中WResRdH×d$ \mathbf W_\text{Res}\in \mathbb R^{d^\prime H\times d} $ 为投影矩阵。

    标准的 Transformer 中也包含残差连接。

    通过这样的交互层,每个特征的 representationem$ \mathbf{\vec e}_m $ 将被更新为一个新的、高阶的 representationemRes$ \mathbf{\vec e}_m^\text{Res} $ 。我们可以将多个这样的层堆叠起来,将前一个交互层的输出作为下一个交互层的输入。通过这样做,我们可以建模任意阶次的组合特征。

    这就是标准的 Transformer Encoder Block ,将其应用到 feature field embedding 上。

  9. Output Layer:交互层的输出是一组特征向量{emRes}m=1M$ \left\{\mathbf{\vec e}_m^\text{Res}\right\}_{m=1}^M $ 。对于最终的 CTR 预估,我们简单地将它们全部拼接起来,然后应用非线性投影:

    (9)y^=σ(w(e1Rese2ReseMRes)+b)

    其中:wRdHM$ \mathbf w\in \mathbb R^{d^\prime HM} $ 为投影向量,b$ b $ 为 biasσ(x)=1/(1+exp(x))$ \sigma(x) = 1/(1+\exp(-x)) $ 为 sigmoid 函数。

  10. 训练:损失函数为 log loss

    (10)L=1Nj=1N[yjlogy^j+(1yj)log(1y^j)]

    其中:yj$ y_j $ 为 ground-truthy^j$ \hat y_j $ 为预估的 CTRN$ N $ 为样本数量。

26.2 分析

  1. 建模任意阶次的组合特征:可以看到,AutoInt 是以 hierarchical 的方式学习特征交互,即从低阶交互到高阶交互,所有的低阶特征交互都由残差连接来承载。具体分析参考原始论文。

  2. 空间复杂度:O(LddH+nd)$ O(Ldd^\prime H + nd) $ ,其中L$ L $ 为交互层的层数。

    • embedding 层的参数规模为nd$ nd $ ,其中d$ d $ 为 embedding sizen$ n $ 为输入特征的维度。
    • 交互层的参数为{WQ(h),WK(h),WV(h),WRes}$ \left\{\mathbf W_Q^{(h)},\mathbf W_K^{(h)},\mathbf W_V^{(h)},\mathbf W_\text{Res}\right\} $ ,L$ L $ 层交互层的参数数量为L×(3dd+dHd)$ L\times (3dd^\prime + d^\prime Hd) $ 。
    • 输出层的参数数量为dHM+1$ d^\prime HM + 1 $ 。

    因此,总的空间复杂度为O(LddH+nd)$ O(Ldd^\prime H + nd) $ 。其中:L$ L $ 为交互层的数量,d$ d $ 为原始的 field embedding 维度,d$ d^\prime $ 为投影后的 field embedding 维度,H$ H $ 为投影子空间数量,n$ n $ 为输入特征的维度(几乎等于所有 vocab size 的总和)。

    论文的结论是:空间复杂度几乎被交互层的参数所统治。结论不正确,实际上空间复杂度几乎是被 embedding table 所统治。

  3. 时间复杂度:O(MHd(M+d))$ O(MHd^\prime(M+d)) $ 。

    • 一个 head 中,注意力权重的时间复杂度为O(Mdd+M2d)$ O(Mdd^\prime + M^2d^\prime) $ 。
    • 然后,构建一个 head 中的组合特征的时间复杂度也是O(Mdd+M2d)$ O(Mdd^\prime + M^2d^\prime) $ 。

    考虑有H$ H $ 个头,因此总的时间复杂度为O(MHd(M+d))$ O(MHd^\prime(M+d)) $ 。其中:M$ M $ 为 field 数量。

26.3 实验

  1. 数据集:CriteoAvazuKDD12MovieLens-1M

    • 我们对 MovieLens-1M 进行了二元化:我们将评分小于 3 的样本视为负样本,将评分大于 3 的样本视为正样本,并删除中性样本(即评分等于 3 的样本)。

    • 我们删除不经常出现的特征(出现次数少于阈值),并将其作为一个单一的特征 "<unknown>" ,其中阈值对CriteoAvazuKDD12 数据集分别设置为 {10,5,10}

    • 由于数值特征可能有很大的方差,对机器学习算法造成伤害,我们采用 Criteo 竞赛的冠军提出的方案进行数值特征归一化:

      (11)z(x)={log2(x),ifx>22,else
    • 我们随机选择 80% 的样本进行训练,并将剩下的样本随机分成大小相同的验证集和测试集。

    数据集的统计信息如下表所示。

  2. 评估指标:AUC, Logloss

  3. baseline 方法:

    • LR:仅建模原始特征的线性组合。
    • FM:使用因子化技术建模二阶特征交互。
    • AFM:通过注意力机制来区分二阶组合特征的重要性,从而扩展了 FM
    • DeepCrossing:采用带残差连接的深度全连接神经网络,以隐式的方式学习非线性的特征交互。
    • NFM:将深度神经网络堆叠在二阶特征交互层之上。通过神经网络隐式地捕获高阶特征。
    • CrossNetCrossNetDeep&Cross 的核心,它在 bit-wise level 上执行 concatenated 特征向量的外积,从而显式地建模特征交互。
    • CINCompressed Interaction Network: CINxDeepFM 模型的核心,在vector-wise level 上对堆叠的特征矩阵进行外积。
    • HOFM:提出了高效的 kernel-based 算法来训练高阶FM 。我们实现了一个三阶FM
  4. 实现细节:

    • 对于 AutoInt 和所有 baseline 方法,我们根据经验将 embedding 维度d$ d $ 设置为16batch size = 1024

    • AutoInt 有三个交互层,隐单元的数量d=32$ d^\prime = 32 $ 。在每个交互层中,注意力头的数量为H=2$ H=2 $ 。

    • 为了防止过拟合,我们用网格搜索法在 {0.1 - 0.9} 范围内为 MovieLens-1M 数据集选择 dropout rate ,我们发现 dropout 对其他三个大数据集来说是没有必要的。

    • 对于 baseline 方法,我们按照他们的论文建议:

      • NFMBi-Interaction层上使用一个大小为 200 的隐藏层。
      • 对于 CNCIN ,和 AutoInt 一样,我们使用三个交互层。
      • DeepCrossing 有四个前馈层,隐单元的数量为 100 ,因为它在使用三个前馈层时表现很差。

      一旦所有的网络结构都固定下来,我们还对 baseline 方法应用网格搜索,以获得最佳的超参数。

    • 我们使用 Adam 来优化所有基于深度神经网络的模型。

  5. 模型效果:我们将 10 次不同运行的平均结果总结到下表,可以看到:

    • 探索二阶特征交互的 FMAFM 在所有的数据集上都以很大的幅度超过 LR,这表明单个特征在 CTR 预估中是不够的。

    • 一个有趣的观察是:一些捕捉高阶特征交互的模型的劣势。例如:DeepCrossingNFM 使用深度神经网络作为学习高阶特征交互的核心组件,但它们并不能保证比 FMAFM 有更大的改进。这可能是由于它们是以隐式的方式学习特征交互的。相反,CIN 显式地做到了这一点,并持续优于低阶模型。

      此外,尽管 HOFM 可以学习比 FM 更高阶的特征交互,但是 HOFMAvazu, KDD12 上的效果比 FM 更差。

    • AutoInt在四个真实世界的数据集中的三个上取得了最佳性能。在 Avazu 数据集上,CINAUC 评估中的表现比 AutoInt 好一点,但我们得到的 Logloss 更低。

      请注意,我们提出的 AutoIntDeepCrossing 共享相同的结构,除了特征交互层,这表明使用注意力机制来学习显式的组合特征是至关重要的。

  6. 模型效率:我们在下图中展示了不同算法在四个数据集上的运行时间。可以看到:

    • LR 由于其简单性而成为最高效的算法。
    • FMNFM 在运行时间方面表现相似,因为 NFM 只在二阶交互层之上堆叠了一个前馈隐藏层。
    • 在所有列出的方法中,CIN 在所有 baseline 中实现了最好的预测性能,但由于其复杂的交叉层,它要耗费更多的时间。
    • AutoInt有足够的效率,这与高效算法 DeepCrossingNFM 相当。

    我们还比较了不同模型的大小(即参数的数量),作为效率评估的另一个标准。如下表所示,与 baseline 模型中的最佳模型 CIN相比,AutoInt 的参数数量要小得多。

    综上所述,AutoInt 在所有 baseline 模型中取得了最好的性能。与最具竞争力的 baseline 模型 CIN相比,AutoInt 需要的参数要少得多,而且在在线推理过程中效率更高。

  7. 消融研究:

    • 残差结构的影响:为了证明残差单元的贡献,我们把它们从标准模型中分离出来,并保持其他结构不变。如下表所示,如果去除残差连接,所有数据集的性能都会下降。

    • 网络深度的影响:我们考虑不同交互层的数量的影响。注意,当交互层的数量为零时,意味着不考虑组合特征。结果如下图所示。

      • 如果使用一个交互层,即考虑到特征交互,在两个数据集上的性能都会大幅提高,这表明组合特征对于预测来说是非常有参考价值的。
      • 随着交互层数量的进一步增加,即高阶组合特征被考虑在内,模型的性能进一步提高。
      • 当层数达到三层时,性能变得稳定,表明增加更高阶特征对预测没有参考价值。

    • embedding 维度的影响:我们考虑不同d$ d $ 的影响。结果如下图所示。

  8. 可解释性:我们以 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> 是强相关的(即,绿色的实心区域),这是推荐的可解释性规则。

      是考虑所有样本还是仅考虑正样本?读者猜测是仅考虑正样本。

  9. 集成隐式交互:前馈神经网络能够建模隐式的特征交互,并被广泛集成到现有的 CTR 预测方法中。为了研究集成隐式的特征交互是否能进一步提高性能,我们通将 AutoInt 与两层前馈神经网络相结合(并行集成,而不是堆叠)。我们将这个联合模型命名为 AutoInt+ ,并将其与以下算法进行比较:Wide&DeepDeepFMDeep&CrossxDeepFM

    结果如下表所示。可以看到:

    • 通过集成前馈神经网络,我们的方法在所有数据集上的性能都有所提高。这表明,集成隐式的特征交互确实提高了 AutoInt 的预测能力。

      然而,从最后两栏可以看出,与其他模型相比,性能提高的幅度相当小,表明我们的单个模型 AutoInt 是相当强大的。

    • 集成了隐式的特征交互之后,AutoInt+ 的性能超过了所有的 baseline 方法,并取得了新的 SOTA 的性能。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文