二十六、AutoInt[2018]

  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 为用户 u 的特征和 item v 的特征的拼接,其中 categorical featuresone-hot encoding 来表示。点击率预测问题旨在根据特征向量 x 预测用户 u 点击item v 的概率。

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

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

  3. 定义 p 阶组合特征:给定输入特征向量 xRn ,一个 p 阶组合特征定义为 g(xi1,,xip) ,其中:每个特征来自于一个 distinct fieldp 为涉及的 feature fields 的数量,g() 是一个 non-additive 的组合函数,如乘法或外积。例如,xi1×xi2 为涉及field xi1,xi2 的二阶组合特征。

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

    问题定义:给定一个用于CTR 预测的输入特征向量 xRn ,我们的目标是学习 x 的低维representation ,它建模了高阶组合特征。

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

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

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

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

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

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

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

    (1)x=[x1x2xM]

    其中:Mfeature fields 的总数;xi 为第 ifieldfeature 为向量拼接。

    如果第 ifieldcategorical 特征,则 xione-hot 向量。如果第 ifieldnumerical 特征,则 xi 为标量。如下图所示。

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

    (2)ei=Vixi

    其中:Vifield iembedding matrixxifield ione-hot 向量。

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

    (3)ei=1qVixi

    其中:q 为样本在第 ifield 的取值的数量,xi 是它的 multi-hot 向量。

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

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

    (4)em=vmxm

    其中: vmfield membedding 向量,xm 为一个标量。

    这里 vmfield m 的所有取值上共享。

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

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

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

    其中:

    • ψ(h)(,) 为注意力函数,它定义了特征 mk 之间的相似性。可以通过神经网络或者简单的内积来定义注意力函数,这里我们使用内积的方式。
    • WQ(h),WK(h)Rd×d 为投影矩阵,它将原始的 embedding 空间投影到新的空间。d 为每个 field 的原始 embedding sized 为投影后的 embedding size

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

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

    其中 WV(h)Rd×d 为投影矩阵。

    这其实就是标准的 Transformer Encoder Blocksoftmax(QK)V

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

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

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

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

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

    其中 WResRdH×d 为投影矩阵。

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

    通过这样的交互层,每个特征的 representation em 将被更新为一个新的、高阶的 representation emRes 。我们可以将多个这样的层堆叠起来,将前一个交互层的输出作为下一个交互层的输入。通过这样做,我们可以建模任意阶次的组合特征。

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

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

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

    其中:wRdHM 为投影向量,bbiasσ(x)=1/(1+exp(x))sigmoid 函数。

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

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

    其中:yjground-truthy^j 为预估的 CTRN 为样本数量。

26.2 分析

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

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

    • embedding 层的参数规模为 nd ,其中 dembedding sizen 为输入特征的维度。
    • 交互层的参数为 {WQ(h),WK(h),WV(h),WRes}L 层交互层的参数数量为 L×(3dd+dHd)
    • 输出层的参数数量为 dHM+1

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

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

  3. 时间复杂度:O(MHd(M+d))

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

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

26.3 实验

  1. 数据集:CriteoAvazuKDD12MovieLens-1M

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

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

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

      (11)z(x)={log2(x), if x>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 设置为16batch size = 1024

    • AutoInt 有三个交互层,隐单元的数量 d=32 。在每个交互层中,注意力头的数量为 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 的影响。结果如下图所示。

  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 的性能。

二十七、Fi-GNN[2019]

  1. 建模复杂的特征交互,对CTR 预测的成功起到了核心作用。FM 是一个著名的模型,它通过向量内积来建模二阶特征交互。FFM 进一步考虑了 field 信息并引入了 field-aware embedding 。然而,这些 FM-based模型只能建模二阶交互。

    最近,许多基于深度学习的模型被提出来从而学习高阶特征交互,这些模型遵循一个通用的范式:简单地拼接 field embedding 向量,并将其馈入 DNN 或其他专门设计的模型,从而学习交互。例如 FNN, NFM, Wide&Deep, DeepFM 等。然而,这些基于 DNN 的模型都是以 bit-wise 的、隐式的方式来学习高阶特征交互,这缺乏良好的模型解释。

    一些模型试图通过引入专门设计的网络来显式地学习高阶交互。例如,Deep&Cross ]引入了 Cross Network: CrossNetxDeepFM 引入了压缩交互网络 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 的方式更新自己。

    AutoIntTransformer Encoder Block 建模 multi-field feature,而这里用 GNN 来建模 multi-field featureTransformer Encoder Block 可以视为一个简单的 GNN

    在每一个 time step 中,模型与邻居节点进行 one-hop 的交互。因此, interaction step 的数量等同于特征交互的阶次。此外,在 feature graph 中,边的权重反映了不同 feature interaction 对于 CTR 预测的重要性,而节点的权重反映了每个 feature field 对于 CTR 预测的重要性。这可以提供很好的解释。

    总的来说,论文提出的模型能够以显式的、灵活的方式建模复杂的特征交互,并提供良好的可解释性。论文贡献如下:

    • 论文指出了现有工作的局限性,即把 multi-field feature 视为 feature fieldunstructured combination 。为此,作者首次提出用图结构来表示 multi-field feature
    • 论文设计了一个新的模型 Feature interaction Graph Neural Network: Fi-GNN ,从而以更灵活的、显式的方式建模 graph-structured featurefeature field 之间的复杂交互。
    • 论文在两个真实世界的数据集上进行的广泛实验表明:所提出的方法不仅可以超越 SOTA 的方法,而且可以提供良好的模型解释。
  2. 相关工作:

    • 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 layerDNN layer 之间引入一个 product layer 来建模二阶交互和高阶交互。
      • 类似地,NFM 通过在 field embedding layerDNN layer 之间引入一个 Bi-Interaction Pooling layer 来建模二阶交互,但是随后的操作是 sum 操作,而不是像 PNN 中的拼接操作。

      另一个方向上的一些工作试图通过混合架构来联合建模二阶交互和高阶交互:Wide&DeepDeepFM 包含一个 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 walknode 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 预测建模特征交互。

27.1 模型

  1. 假设训练数据集由 mfieldcategorical feature 、以及表示用户点击行为的 label y{0,1} 组成。CTR 预测任务是对输入特征(包含 mfield )来预测用户点击的概率 y^

    下图是我们所提出方法的概览(m=4 ):

    • 输入的 sparse m-field feature vector 首先被映射成稀疏的 one-hot 向量,然后通过 embedding layermulti-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来估计点击率 y^

    这里的 Multi-head Self-Attention Layer 就是单层的 AutoInt,因此,Fi-GNN 相当于是 AutoIntGNN 的堆叠。实验并没有表明 AutoInt 在这里的贡献,而且即使是 AutoInt + Fi-GNN,模型在所有数据集上的整体效果提升也不明显,因此论文价值不大。

  2. Embedding Layer:我们将每个 field 表示为一个 ont-hot encoding 向量,然后将其嵌入到一个稠密向量中,记做 field embedding 向量 。mfieldfield embedding 向量被拼接为(沿着 feature field 维度拼接):

    (12)E=[e1||e2||||em]Rm×d

    其中:eiRdfield iembedding 向量,dfield embedding 向量的维度,|| 为沿着 feature field 维度拼接。

  3. Multi-head Self-attention Layer:我们利用多头自注意力机制来捕获不同语义子空间中的 pairwise 特征交互。

    遵从 《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》,给定 feature embedding 矩阵 E ,我们获取 feature representation ,它覆盖了 attention head i 中的 pairwise interaction

    (13)Hi=softmaxi(QKdk)VRm×diQ=EWi(Q),K=EWi(K),V=EWi(V)

    其中:Wi(Q),Wi(K),Wi(V)Rd×di 为针对 attention head i 的权重矩阵,dihead i 的维度。

    然后,我们将学到的每个 headfeature representation 结合起来,以保留每个语义子空间中的 pairwise feature interaction

    (14)H1=ReLU(H1H2Hh)Rm×d

    其中: 为拼接操作(沿着 embedding 维度),hattention head 数量,d=i=1hdi 为拼接后的 embedding 维度。

  4. Feature Graph:与以往简单地将 field embedding 向量拼接在一起并将其馈入模型中从而学习特征交互所不同的是,我们用图结构来表示 feature field 。具体而言,我们将每个输入的 multi-field feature 表示为一个 feature graph G=(N,E),其中每个节点 niN 对应一个 feature field i ,不同的 field 可以通过边进行交互,所以 |N|=m。因此,建模特征交互的任务可以转换为建模图上节点交互的任务。

    每个样本对应一张图,因此这是一个 graph-level 分类任务(二分类)。

  5. Feature Interaction Graph Neural NetworkFi-GNN 旨在以一种灵活的、显式的方式建模 feature graph 上的节点交互。在Fi-GNN 中,每个节点 ni 都关联一个 hidden state hit,图的状态由这些节点的状态组成:

    (15)Ht={h1t,h2t,,hmt}

    其中 t 表示 interaction step 。由多头自注意力层学到的 feature representation 作为图的初始状态 H1

    如下图所示,节点以循环方式进行交互并更新其状态。在每一个 interaction step 中,节点聚合邻居节点的状态信息(经过变换之后),然后根据聚合信息、以及节点历史状态通过 GRU 和残差连接来更新节点状态。

    • State Aggregation:在 interaction step t ,每个节点将聚合来自邻居节点的状态信息。具体而言,节点 ni 的聚合信息是其邻居节点的状态信息(转换之后)之和:

      (16)ait=(j,i)EAj,iWphjt1

      其中:Aj,i 为邻接矩阵 ARm×m ,它表示从 nj 指向 ni 的边 (j,i) 的权重,反映了这两个节点之间交互的重要性;Wp 是投影矩阵。

      显然,投影矩阵和邻接矩阵决定了节点之间的交互。由于每条边上的交互应该是不同的,我们的目标是建模边上的交互,这需要对每条边有一个 unique 的权重和投影矩阵。

      • 基于注意力的边权重:为了推断不同节点之间交互的重要性,我们建议通过注意力机制来学习边权重。具体而言,从节点 ninj 之间的边的权重通过它们的初始节点状态(即,field embedding 向量)来计算:

        (17)w(ni,nj)=exp(LeakyRelu(Ww[eiej]))kexp(LeakyRelu(Ww[eiek]))

        其中:WwR2d 为权重矩阵, 表示拼接操作(沿着 embedding 维度)。利用 softmax 函数进行归一化,使不同节点的权重容易比较。

        最终邻接矩阵为:

        (18)Ai,j={w(ni,nj), if ij0,else

        由于边的权重反映了不同交互的重要性,Fi-GNN 可以很好地解释输入样本的不同 feature field 之间的关系,这一点将在实验部分进一步讨论。

      • edge-wise 变换:如前所述,所有边上的固定的投影矩阵无法建模灵活的交互,对每个边进行 unique 的变换是必要的。然而,我们的图是完全图 complete graph (即,任意两个节点之间都存在边),因此包含大量的边。简单地给每条边分配一个 unique 的投影矩阵将消耗太多的参数空间和运行时间。为了减少时间和空间的复杂性,同时实现 edge-wise transformation ,我们为每个节点 ni 分配一个输出矩阵 Wouti 和一个输入矩阵 Wini 。如下图所示,当节点 ni 向节点 nj 发送其状态信息时,状态信息将首先被节点 ni 输出矩阵 Wouti 转换,然后在 nj 接收之前被节点 nj 的输入矩阵 Wini 转换。因此,从节点 ninj 的边 (i,j) 上的投影矩阵可以写作:

        (19)Wpij=WinjWouti

        因此聚合信息 ait 可以重写为:

        (20)ait=(j,i)EAj,iWiniWoutjhjt1

        这样一来,参数的数量与节点的数量成正比,而不是与边的数量成正比,这就大大降低了空间复杂性和时间复杂性,同时也实现了 edge-wise interaction

    • State Update :聚合状态信息之后,节点将通过 GRU 和残差连接来更新状态向量。

      • 通过 GRU 进行状态更新:根据传统的 GGNN ,节点 ni 的状态向量是根据节点 ni 的聚合状态信息、以及节点在上一个 step 的状态通过 GRU 更新的:

        (21)hit=GRU(hit1,ait)
      • 通过残差连接进行状态更新:我们引入了额外的残差连接(来自初始状态),与 GRU 一起更新节点状态,这可以促进低阶特征重用和梯度反向传播:

        (22)hit=GRU(hit1,ait)+hi1

        注意,这里是 hi1 的残差连接,而不是 hit1

  6. Attentional Scoring Layer:经过 Tpropagation step 之后,我们得到了 final node state

    (23)HT={h1T,h2T,,hmT}

    由于节点已经与它们的 T 阶邻居交互过,因此 Fi-GNN 建模了 T 阶特征交互。我们需要一个 graph-level output 来预测 CTR

    我们分别对每个 fieldfinal state 预测一个得分,并通过注意力机制将它们相加,这个注意力机制衡量它们对整体预测的影响。正式地,每个节点 ni 的预测得分、以及它的 attentional node weight 可以通过两个 MLP 分别得到:

    (24)y^i=MLP1(hiT),ai=MLP2(hiT)

    整体预测是所有节点的预测的加权和:

    (25)y^=i=1maiy^i
  7. 训练:损失函数为 logloss,即:

    (26)L=1Ni=1N(yilogy^i+(1yi)log(1y^i))

    其中:N 为总的训练样本数量;yi 为第 i 个训练样本的 labely^i 为第 i 个训练样本的预测 CTR

    我们采用 RMSProp 优化器。此外,为了平衡正负样本比例,在训练过程中,对于每个 batch 我们随机选择相同数量的正样本和负样本。

27.2 实验

  1. 数据集:Criteo, Avazu 。对于这两个数据集:

    • 我们移除了低频特征,并将低频特征替换为 "<unknown>" 。频次阈值分别为:Criteo 数据集为 10Avazu 数据集为 5 。即出现频次低于该阈值则移除。

    • 由于数值特征可能具有较大的方差,因此我们进行对数变换:

      (27)z={log2(x), if x>2x, else 

      这是由 Criteo 竞赛的获胜者提出的。

    • 数据集以 8:1:1 的比例随机拆分为训练集、验证集、测试集。

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

  2. 评估指标:AUC, LogLoss, Relative Improvement (RI)

    应该注意的是,对于真实世界的 CTR 任务来说,AUC 方面的微小改进被认为是显著的。为了估计我们的模型相对于 baseline 模型的相对改进,我们在此测量 RI-AUCRI-Logloss

    (28)RI-X=|X(model)X(base)|X(base)×100%

    其中 XAUCLogLoss

  3. 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 上建模特征交互。
  4. 实现细节:我们使用 Tensorflow 实现我们的方法。最优超参数由网格搜索策略确定。baseline 的实现遵循 《AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks》

    • 对于所有方法, field embedding 向量的维度是 16batch size = 1024
    • DeepCrossing 有四个前馈层,每层有 100 个隐单元。
    • NFMBi-Interaction layer 之上有一个大小为 200 的隐层,如原始论文中所推荐的。
    • CrossNetCIN 都有三个交互层。
    • 所有实验都是在配备了 8NVIDIA Titan X GPU 的服务器上进行的。
  5. 不同模型的性能比较,如下表所示。可以看到:

    • LR 在这些 baseline 中效果最差,这证明了单个特征在 CTR 预测中是不够的。
    • 在所有数据集上,建模二阶特征交互的 FMAFM 优于 LR ,这表明建模 feature field 之间的 pairwise 交互是有效的。此外,AFMFM 具有更好的表现,证明了在不同交互上的注意力的有效性。
    • 建模高阶特征交互的方法大多优于建模二阶特征交互的方法。这表明二阶特征交互是不够的。
    • DeepCrossing 优于 NFM ,证明了残差连接在 CTR 预测中的有效性。
    • 在两个数据集上,Fi-GNN 在所有这些方法中取得了最好的性能,尤其是在 Criteo 数据集上。
    • Fi-GNNCriteo 数据集上取得的相对改进,高于在 Avazu 数据集上取得的相对改进。这可能是因为 Criteo 数据集中有更多的 feature field ,可以更好地利用图结构的表达能力。

  6. 消融研究:我们提出的 Fi-GNN 模型是基于 GGNN 的,在此基础上我们主要做了两个改进:

    • 通过 attentional edge weightedge-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 interactionattentional edge weight: Wedge-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 transformationattentional edge weight 更有效。这是非常合理的,因为投影矩阵应该比标量的 attentional edge weightedge-wise interaction 有更强的影响。

  7. 超参数研究:

    • state 维度 d=i=1hdi 的影响:模型性能随着 d 的增加先升后降,在维度分别为 32Avazu 数据集)、64Criteo 数据集)时性能最佳。这是合理的,因为 Criteo 数据集更复杂,需要更大的维度来保持足够的信息。

      没有考虑 attention head 的影响?

    • interaction step T 的影响:interaction step等于特征交互的最高阶次。模型性能随着 T 的增加先升后降,在特征交互的最高阶次分别为 2Avazu 数据集)、3Criteo 数据集)时性能最佳。这是合理的,因为 Avazu 数据集有 23feature fieldCriteo 数据集有 39feature field 。因此,Criteo 数据集需要更多的 interaction step 来使 field nodefeature graph 中的其他节点完全交互。

  8. 模型可解释性:我们在 feature graph 的边上和节点上都应用了注意力机制,分别得到了 attentional edge weightattentional node weight ,可以从不同的角度给出解释。

    Multi-head Self-attention Layer 捕获的 pair-wise 交互是否也是可解释的?论文并没有说明这一点。

    • attentional edge weightattentional edge weight 反映了两个相连的 field node 之间交互的重要性,也反映了两个feature field 之间的关系。下图展示了 Avazu 数据集中所有样本的全局平均邻接矩阵的热力图,它可以在全局水平上反映不同 field 之间的关系。 由于有一些 field 是匿名的,我们只显示剩余的 13 个具有真实含义的 feature field

      可以看到:

      • 一些 feature field 倾向于与其他 field 有很强的关系,例如 site_categorysite_id 。这是有意义的,因为两个 feature field 都对应于投放广告的网站。
      • hour 是另一个与其他 field 有密切关系的特征。这是合理的,因为Avazu 专注于移动场景,用户可以在一天的任何时间在线冲浪。上网时间对其他的广告特征有很大的影响。
      • 另一方面,device_ipdevice_id 似乎与其他 feature field 的关系较弱。这可能是因为它们几乎等同于 user id ,相对固定,不易受其他特征的影响。

    • attentional node weightattentional node weight 反映了 feature field 对整体预测分数的影响的重要性。下图显示了 global-levelcase-levelattentional 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

二十八、FwFM[2018]

  1. 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: FMField-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 pairslabel 的关联程度明显不同。按照同样的惯例,论文称它为 field pair interaction
    • 基于上述观察,论文提出了 Field-weighted Factorization Machine: FwFM 。通过引入和学习 field pair weight matrixFwFM 可以有效地捕获 field pair interaction 的异质性。此外,FwFM 中的参数比 FFM 中的参数少几个数量级,这使得 FwFM 成为现实世界生产系统中的首选。
    • FwFM 通过用 embedding vector representation 取代线性项的 binary representation 而得到进一步的增强。这种新的处理方法可以有效地帮助避免过拟合,提高预测性能。
    • 论文在两个真实世界的 CTR 预估数据集上进行了综合实验,以评估 FwFM 与现有模型的性能。实验结果表明:FwFM 仅用FFM4% 的参数就能达到有竞争力的预测性能。当使用相同数量的参数时,FwFMFFMAUC 提升了 0.9%

28.1 模型

  1. 假设有 munique 特征 {f1,,fm},以及 n 个不同的 fields {F1,,Fn} 。每个特征 fi 仅属于一个 field,记做 F(i)

    给定数据集 S={y(s),x(s)}s=1N ,其中: y(s){1,1}label 表示是否点击; x(s){0,1}m 为二元特征向量,xi(s)=1 表示特征 fiactive 的。

    例如,假设有两个 field :性别、学历,那么 n=2 。假设有六个特征:f1=,f2=,f3=,f4=,f5=,f6= ,那么 f1,f2 属于性别这个 fieldf3f6 属于学历这个 field,它们的取值都是 01

    • LR 模型为:

      (29)minwλw22+s=1Nlog(1+exp(y(s)ΦLR(w,x(s))))

      其中:λ 为正则化系数,w 为模型权重,ΦLR(w,x)=w0+i=1mxiwi

      注意,因为这里将 label 取值空间设为 {1, -1} 而不是 {1, 0} ,因此这个损失函数与交叉熵不同,而是指数损失函数。

    • Poly2:然而,线性模型对于诸如 CTR 预估这样的任务来说是不够的,在这些任务中,特征交互是至关重要的。解决这个问题的一般方法是增加 feature conjunction 。已有研究表明,Degree-2 Polynomial: Poly2 模型可以有效地捕获特征交互。Poly2 模型考虑将 ΦLR 替换为:

      (30)ΦPoly2(w,x)=w0+i=1mxiwi+i=1mj=i+1mxixjwh(i,j)

      其中:h(i,j) 是一个哈希函数,它将 ij 哈希到位于哈希空间 H 中的一个自然数,从而减少参数规模。否则,模型中的参数数量将达到 O(m2) 的数量级。

    • FMFactorization Machine: FM 为每个特征学习一个 embedding 向量 viRK ,其中 K 为一个小的整数(如 K=10 )。FM 将两个特征 ij 之间的交互建模为它们相应的 embedding 向量 vivj 之间的内积:

      (31)ΦFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<vi,vj>

      其中:<,> 为向量的内积。

      在涉及稀疏数据的应用中(如 CTR 预估),FM 的表现通常优于 Poly2 模型。原因是,只要特征本身在数据中出现的次数足够多,FM 总能为每个特征学习到一些有意义的 embedding 向量,这使得内积能很好地估计两个特征的交互效应 interaction effect ,即使两个特征在数据中从未或很少一起出现。

    • FFM:然而,FM 忽略了这样一个事实:当一个特征与其他不同 field 的特征交互时,其行为可能是不同的。Field-aware Factorization Machines: FFM 通过为每个特征(如 i )学习 n1embedding 向量来显式地建模这种差异,并且只使用相应的 embedding 向量 vi,F(j) 与来自 field F(j) 的另一个特征 j 交互:

      (32)ΦFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<vi,F(j),vj,F(i)>

      虽然 FFMFM 有明显的性能改进,但其参数数量是 O(mnK) 的数量级。在现实世界的生产系统中,FFM 的巨大参数数量是不可取的。因此,设计具有竞争力的和更高内存效率的替代方法是非常有吸引力的。

  2. 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 (Fk,Fl) 和标签变量 Y 之间的互信息来量化 field pair 的交互强度:

    (33)MI((Fk,Fl),Y)=(i,j)(Fk,Fl)yYp((i,j),y)logp((i,j),y)p(i,j)p(y)

    其中:

    • p(i,j) 表示所有样本中,特征 fi=1 且特征 fj=1 的概率。
    • p(y) 表示所有样本中, y=1 的概率。
    • p((i,j),y) 表示所有样本中,特征 fi=1 且特征 fj=1y=1 的概率。

    下图是每个 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 的不同交互强度。

  3. FwFM:我们提出对不同 field pair 的不同交互强度进行显式的建模,其中 feature pair (i,j) 的交互被建模为:

    (34)xixj<vi,vj>rF(i),F(j)

    其中:rF(i),F(j)R 是用于建模 field pair (F(i),F(j)) 之间交互强度的权重。

    核心要点:在 FM 基础上乘以 rF(i),F(j) 。实现简单,效果好。

    进一步地,我们是否可以在 field 的概念之上继续遵循这种做法。比如,可以把 field 进行分组:用户年龄、性别等等 field 是一组,item 类别、品牌等等是另一组、用户历史行为序列是其它一组,然后设定 field group 的权重:

    (35)xixj<vi,vj>rF(i),F(j)×rG(i),G(j)

    其中 rG(i),G)jfield group 之间的权重。

    我们将得到的模型称为 Field-weighted Factorization Machine: FwFM

    • 模型复杂度:FM 的参数数量为 m+mK ,其中 m 为线性部分的参数数量,mKembedding 向量的参数数量。FwFM 使用了额外的 n(n1)/2 个参数用于每个 field pair,因此总的参数数量为 m+mK+n(n1)/2 。相比之下,FFM 的参数数量为 m+m(n1)K ,因为每个特征有 n1embedding 向量。

      考虑到通常 nm ,因此 FwFM 的参数与 FM 相当,显著少于 FFM

    • 线性项:我们认为,embedding 向量 vi 捕获到关于特征 i 的更多信息,因此我们提出使用 xivi 来在线性项中代表每个特征。

      我们为每个特征学习一个线性权重 wi ,因此 FwFM 的线性项变为:

      (36)i=1mxi<vi,wi>

      这需要 mK 个参数。因此,FwFM 的总参数数量为 2mK+n(n1)/2 ,记做 FwFM_FeLV

      这相当于为每个特征学习两个 embeddingembedding vi 用于建模特征交互,embedding wi 用于建模线性项。好处有两个:

      • 首先,这种方法的表达能力更强。
      • 其次,实现起来更简单。原始的线性项需要把特征表示成 sparse 形式从而节省内存和计算量(大量的零存在),在实现的时候需要特殊的逻辑(稀疏张量的转换和计算)。而这里直接用 embedding lookup,与现有的逻辑保持一致。

      或者,我们为每个 field 学习一个线性权重 wF(i) ,此时线性项变为:

      (37)i=1mxi<vi,wF(i)>

      此时总的参数数量为 nK+mK+n(n1)/2 ,记做 FwFM_FiLV

      这相当于为每个 field 学习一个 embedding

      原始线性权重的 FwFM 记做 FwFM_LW

      或者我们是否可以用 wi=s=1dvi,d 来作为权重?这相当于将 wF(i) 固定为全 1 的向量,一定程度上降低了参数规模同时缓解过拟合。原因如下:考虑 <vi,wi>+<vi,vj>+<vj,wj> ,如果 v 放大 10 倍、w 缩小 10 倍,则结果完全相同。因此这种方式的自由度太大,需要打破这种对称性,例如: <vi,1>+<vi,vj>+<vj,1> ,此时 v 方法或缩小会完全影响最终结果。

      在后面的实验部分,确实发现参数更少的 FwFM_FiLV 的测试 AUC 更高。那么是否 wF(i) 固定为全 1 的向量时效果还要好?

28.2 实验

  1. 数据集:

    • Criteo CTR 数据集:我们将数据按 60%: 20%: 20% 随机分成训练集、验证集和测试集。

    • Oath CTR 数据集:我们使用两周的点击日志作为训练集,下一天的数据作为验证集、下下一天的数据作为测试集。

      对于 Oath CTR 数据集,正样本的比例通常小于 1% 。我们对负样本进行降采样,使正负样本更加平衡。对验证集和测试集不做降采样,因为评估应该在反映实际流量分布的数据集上进行。

    对于这两个数据集,我们过滤掉所有在训练集中出现少于 τ 次的特征,用一个 NULL 特征代替,其中 τCriteo 数据集中被设置为20 ,在 Oath 数据集中为10

    这两个数据集的统计数字如下表所示:

  2. 实现:我们使用 LibLinear来训练 Poly2 ,并使用哈希技巧将 feature conjunctions 哈希到 107 的哈希空间。所有其他的模型都在 Tensorflow 中实现。TensorflowFwFM 的结构如下图所示。

    输入是一个稀疏的二元向量 xRm,只有 n 个非零项,因为有 nfield 。对每个样本而言每个 field 都有一个且只有一个活跃的特征。

  3. FwFM 和已有模型的比较:我们评估了带原始线性项的 FwFM ,即 FwFM_LW 。对于所有的超参数,我们在验证集上进行调优,然后在测试集上进行评估。可以看到:

    • 在两个数据集上,FwFM 都能取得比 LRPoly2FM 更好的性能。这种改进来自于 FwFM 显式地建模了 field pair 的不同交互强度。
    • FFM 总是在验证集和测试集上获得最佳性能。然而,FwFM 的性能相比 FFM 具有相当的竞争力。

  4. FwFMFFM 在具有相同参数规模的情况下的比较:

    FFM的一个关键缺点是其参数数量在 O(mnK) 的规模。有两种解决方案可以减少 FFM 的参数数量:使用较小的 K 、或者使用哈希技巧(具有较小的哈希空间 H )。《Field-aware factorization machines in a real-world online advertising system》 提出对 FFM 使用较小的 KFFM=2 ,以及通过使用较小的哈希空间 HFFM 从而将参数规模进一步减少到 O(nmFFMKFFM)

    这里我们通过选择合适的 KFFMHFFM ,使得 FFMFwFM 的参数数量相同。我们不计算线性项的参数,因为它们与交互项的数量相比可以忽略。我们选择 KFwFM=10KFFM=2 以及 KFFM=4 。实验结果如下表所示。可以看到:当使用相同数量的参数时,FwFMCriteoOath 数据集的测试集上得到更好的表现,提升幅度分别为 0.70%0.45%

  5. 具有不同线性项的 FwFM:下表给出了不同线性项的 FwFM 的性能。可以看到:

    • FwFM_LWFwFM_FeLV 在训练和验证集上比 FwFM_FiLV 能取得更好的性能。原因是这两个模型的线性项(mmK )比FwFM_FiLVnK )有更多的参数,所以它们能比 FwFM_FiLV 更好地拟合训练集和验证集。
    • 然而,FwFM_FiLV 在测试集上得到了最好的结果,这表明它有更好的泛化性能。
    • 此外,当我们使用相同数量的参数将 FwFM_FiLVFFM 进行比较时,在Oath 数据集和Criteo 数据集上的AUC 提升分别为0.92%0.47%

  6. 超参数调优:以下所有的评估都是 FwFM_FiLV 模型在 Oath 验证集上进行的。

    • L2 正则化系数 λ :如 Figure3 所示,λ=105 在验证集上得到最好的性能。

      正则化系数作用于所有的 parameters

    • 学习率 η:如 Figure4 所示,我们选择 η=104

    • embedding 维度 K :如下表所示,我们选择 K=10

  7. 学到的 field 交互强度:这里我们比较了 FMFFMFwFM 在捕获不同 field pair 的交互强度方面的能力。我们的结果表明,由于 field pair 交互权重 rFk,Fl 的存在,FwFM 可以比 FMFFM 更好地建模交互强度。

    field pair 的交互强度通过互信息( field pair 和标签之间的互信息 MI((Fk,Fl),Y) )进行量化,并在 Figure 5(a) 中通过热力图进行了可视化。

    为了衡量学到的 field 交互强度,我们定义了以下指标:

    (38)(i,j)(Fk,Fl)I(i,j)×#(i,j)(i,j)(Fk,Fl)#(i,j)

    其中:

    • #(i,j)feature pair (i,j) 在训练数据中出现的次数。

    • I(i,j)feature pair (i,j) 学到的交互强度。

      • 对于 FMI(i,j)=|<vi,vj>|
      • 对于 FFMI(i,j)=|<vi,Fl,vj,Fk>|
      • 对于 FwFMI(i,j)=|<vi,vj>×rFk,Fl|

    注意,我们将内积项的绝对值相加,否则正值和负值会相互抵消。

    如果一个模型能够很好地捕捉到不同 field pair 的交互强度,我们期望其学习到的 field 交互强度接近于互信息 MI((Fk,Fl),Y) 。为了便于比较,我们在 Figure 5 中以热力图的形式绘制了由 FM, FFM, FwFM 学到的field 交互强度,以及 field pair 和标签之间的互信息 MI((Fk,Fl),Y)。我们还计算了皮尔逊相关系数,以定量地衡量所学到的 field 交互强度与互信息的匹配程度。

    • Figure 5(b) 中我们观察到:FM 学到的交互强度与互信息完全不同。这并不奇怪,因为 FM 在建模特征交互强度时没有考虑 field 信息。
    • Figure 5(c) 中我们观察到:FFM 能够学习与互信息更相似的交互强度。
    • Figure 5(d) 中我们观察到:FwFM 学到的交互强度的热力图与互信息的热力图非常相似。

    为了了解权重 rFk,Fl 在建模 field pair 的交互强度方面的重要性,我们在 Figure 6 中绘制了 rFk,Fl 的热力图,以及没有 rFk,FlFwFM (退化回 FM )的学到的 field 交互强度。可以看到: rFk,Fl 的热力图与 Figure 5(a) 的互信息热力图、Figure 5(d)FwFM 学到的 field 交互强度都非常相似。这意味着 rFk,Fl 确实可以学到不同 field pair 的不同交互强度。

二十九、FM2[2021]

  1. CTR 预估所涉及的数据通常是 multi-field categorical data,这类数据具有以下特性:

    • 首先,所有的特征都是 categorical 的,并且是非常稀疏的,因为其中许多是 id 。因此,特征的总数很容易达到数百万或数千万。
    • 其次,每个特征都唯一地属于一个 field ,而且可能有几十到几百个 field

    针对 ctr 预测问题的一个卓越模型是具有交叉特征的逻辑回归。当考虑到所有的交叉特征时,产生的模型等同于二阶的多项式核。然而,要考虑所有可能的交叉特征需要太多的参数。为解决这个问题,人们提出了 matrix factorization: MFfactorization 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 方法在保持计算空间和时间效率的同时,实现了良好的准确性。

29.1 模型

  1. 假设有 munique 特征 {f1,,fm},以及 n 个不同的 fields {F1,,Fn} 。每个特征 fi 仅属于一个 field,记做 F(i)

    给定数据集 S={y(s),x(s)}s=1N ,其中: y(s){1,1}label 表示是否点击; x(s){0,1}m 为二元特征向量,xi(s)=1 表示特征 fiactive 的。

    • LR 模型为:

      (39)minwλw22+s=1Nlog(1+exp(y(s)ΦLR(w,x(s))))

      其中:λ 为正则化系数,w 为模型权重,ΦLR(w,x)=w0+i=1mxiwi

      然而,线性模型缺乏表示特征交互的能力。由于交叉特征可能比那些单一特征更重要,在过去的几十年里,人们提出了许多改进。

    • Poly2:然而,线性模型对于诸如 CTR 预估这样的任务来说是不够的,在这些任务中,特征交互是至关重要的。解决这个问题的一般方法是增加 feature conjunction 。已有研究表明,Degree-2 Polynomial: Poly2 模型可以有效地捕获特征交互。Poly2 模型考虑将 ΦLR 替换为:

      (40)ΦPoly2(w,x)=w0+i=1mxiwi+i=1mj=i+1mxixjwh(i,j)

      其中:h(i,j) 是一个哈希函数,它将 ij 哈希到位于哈希空间 H 中的一个自然数,从而减少参数规模。否则,模型中的参数数量将达到 O(m2) 的数量级。

    • FMFactorization Machine:FM 为每个特征学习一个 embedding 向量 viRK ,其中 K 为一个小的整数(如 K=10 )。FM 将两个特征 ij 之间的交互建模为它们相应的 embedding 向量 vivj 之间的内积:

      (41)ΦFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<vi,vj>

      其中:<,> 为向量的内积。

      在涉及稀疏数据的应用中(如 CTR 预估),FM 的表现通常优于 Poly2 模型。原因是,只要特征本身在数据中出现的次数足够多,FM 总能为每个特征学习到一些有意义的 embedding 向量,这使得内积能很好地估计两个特征的交互效应 interaction effect ,即使两个特征在数据中从未或很少一起出现。

    • FFM:然而,FM 忽略了这样一个事实:当一个特征与其他不同 field 的特征交互时,其行为可能是不同的。Field-aware Factorization Machines: FFM 通过为每个特征(如 i )学习 n1embedding 向量来显式地建模这种差异,并且只使用相应的 embedding 向量 vi,F(j) 与来自 field F(j) 的另一个特征 j 交互:

      (42)ΦFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<vi,F(j),vj,F(i)>

      虽然 FFMFM 有明显的性能改进,但其参数数量是 O(mnK) 的数量级。在现实世界的生产系统中,FFM 的巨大参数数量是不可取的。因此,设计具有竞争力的和更高内存效率的替代方法是非常有吸引力的。

    • FwFM:在 FwFM 中,feature pair (i,j) 的交互被建模为:

      (43)xixj<vi,vj>rF(i),F(j)

      其中:<,> 为向量的内积,rF(i),F(j)R 是建模 field pair (F(i),F(j)) 之间交互强度的权重。

      FwFM 的公式为:

      (44)ΦFwFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<vi,vj>rF(i),F(j)

      FwFMFM 的扩展,即它使用额外的权重 rF(i),F(j) 来显式地建模不同 feature pair 的不同交互强度。FFM 可以隐式地建模不同 feature pair 的不同交互强度,因为 FFM 为每个特征 i 学习了几个 embedding 向量,每个向量 vi,Fk 对应于其他的 field Fk,其中FkF(i) ,从而建模 F(i) 与不同 field 特征的不同交互。

    最近,也有很多关于基于深度学习的 CTR 预测模型的工作。这些模型同时捕获了低阶交互和高阶交互,并取得了明显的性能改进。然而,这些模型的在线推理复杂性比浅层模型要高得多。通常需要使用模型压缩技术,如剪枝、蒸馏或量化来加速这些模型的在线推理。在本文中,我们专注于改进低阶交互,所提出的模型可以很容易地作为这些深度学习模型中的浅层组件。

  2. 我们提出了一个新的模型,将 field pair 的交互表达为一个矩阵。与 FMFwFM 类似,我们为每个特征学习一个 embedding 向量。 我们定义一个矩阵 MF(i),F(j) 来表示 field F(i)field F(j) 之间的交互:

    (45)xixj<MF(i),F(j)vi,vj>

    其中:

    • vi,vj 分别为 feature ijembedding 向量。

    • F(i),F(j) 分别为 feature ijfield

    • MF(i),F(j)RK×K 为建模 field F(i)field F(j) 之间交互的矩阵。

      注意:MF(i),F(j)MF(j),F(i) ,因为它们作用的 embedding 向量不同。此外,考虑到 “ field F(i)field F(j) 之间的交互” 应该等于 “ field F(j)field F(i) 之间的交互”,因此有:

      (46)<MF(i),F(j)vi,vj>=<MF(j),F(i)vj,vi>

    我们称这个模型为 Field-matrixed Factorization Machine: FmFM(也叫做 FM2):

    (47)ΦFmFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixj<MF(i),F(j)vi,vj>

    FmFMFwFM 的扩展,它使用一个二维矩阵 MF(i),F(j) (而不是FwFM 中的标量 r )来建模不同field pair 的交互。通过这些矩阵,每个特征的 embedding 空间可以被转换到另外的 n1embedding 空间。我们将这些矩阵命名为 Field-Matrix

    核心思想:将 FwFM 中的标量 rF(i),F(j) 升级成矩阵 MF(i),F(j)

    下图展示了 feature pair (i,j)(i,k) 的交互,其中 i,j,k 来自于三个不同的 field 。计算可以分解为三步:

    • Embedding Lookup:从 embedding table 中查找 feature embedding 向量 vi,vj,vk
    • 转换:将 MF(i),F(j)MF(i),F(k) 分别与 vi 相乘,得到中间向量 vi,F(j)=MF(i),F(j)vi 用于 field F(j)vi,F(k)=MF(i),F(k)vi 用于 field F(k)
    • 点乘:最终的交互项将是 vi,F(j)vj 以及 vi,F(k)vk

29.2 FM2 作为统一框架

  1. FM 家族的统一框架:

    • FM:下图展示了 FM 中特征交互的计算。如果将 FmFM 中所有的 field matrix 都固定为单位矩阵,那么 FmFM 将退化为 FM 。由于单位矩阵是固定的、不可训练的,因此我们定义其自由度为 0

    • FwFM:下图展示了 FwFM 中特征交互的计算。如果将 FmFM 中的 MF(i),F(j) 定义为 rIKRK×K (如下图左边的矩阵所示),其中 r 为标量并且针对不同的 field pair 取不同的值,那么 FmFM 将退化为 FwFM 。我们定义 FwFM 的自由度为 1

    • FvFM:根据 Figure 3 的线索,我们将 FmFM 中的 MF(i),F(j) 定义为对角矩阵 DF(i),F(j)=diag(d1F(i),F(j),d2F(i),F(j),,dKF(i),F(j))RK ,其中不同 field pair 选择不同的对角矩阵,如 Figure3 的右边的矩阵所示,那么:

      (48)vi,F(j)=DF(i),F(j)vi=vidF(i),F(j)

      其中:dF(i),F(j)=(d1F(i),F(j),d2F(i),F(j),,dKF(i),F(j))

      我们将这种方法命名为 Field-vectorized Factorization Machine: FvFM ,它的自由度为 2

    • FmFM:它具有一个矩阵的所有自由度,即自由度为 3 。我们预期 FmFM 比其他 FM 模型有更强大的预测能力。

    总之,我们发现 FMFwFMFvFM 都是 FmFM 的特例,唯一的区别是它们的 field matrix的限制。根据它们的灵活性,我们把它们总结在下表中。

  2. FmFMOPNN 的关系:FmFM 也可以看做是通过加权外积来建模两个 feature embedding vector 的交互:

    (49)ΦFmFM((w,v),x)=w0+i=1mxiwi+i=1mj=i+1mxixjp(vi,vj,WF(i),F(j))WF(i),F(j)RK×K,p(vi,vj,WF(i),F(j))=k=1Kk=1Kvi,kvj,kwF(i),F(j),k,k

    OPNN 也提出通过外积来建模特征交互。然而,FmFM 在以下两个方面与 OPNN 不同:

    • 首先,FmFM 是一个简单的浅层模型,没有像 OPNN 中那样的全连接层。我们可以将 FmFM 作为任何深度 CTR 模型的一个浅层组件或构建块。
    • 其次,FmFM 支持针对不同 feature field 的可变 embedding size
  3. FFM vs FmFM ,即 Memorization vs Inference :与上述其他 FM 不同,FFM 不能被改造成 FmFM 框架。下图展示了 FFM 中特征交互的计算。 FFM 不共享 feature embedding,因此对于每个特征都有 n1embedding 从而分别与其它 n1field 进行交叉。在训练过程中,这些 field-specific embedding 将被独立学习,而且这些 embedding 之间没有任何限制,即使它们属于同一特征。

    这种 FFM 机制给了模型最大的灵活性来拟合数据,而且大量的 embedding 参数也具有惊人的记忆能力。同时,即使有数十亿的样本需要训练,也总是存在着过拟合的风险。特征分布的属性是一个长尾分布,而不是均匀分布,这使得 feature pair 的分布更加不平衡。

    以下图为例。假设 feature pair (i,j) 是高频组合、(i,k) 是低频(甚至是从未出现)组合。由于 vi,F(j)vi,F(k) 是两个独立的 embedding,因此 embedding vi,F(j) 可能被训练得很好而 vi,F(k) 未被训练得很好。由于特征的长尾分布,那些高频的 feature pair 可能占据了训练数据的绝大部分,而低频的 feature pair (占据了 feature pair 中的绝大多数)则不能被很好地训练。

    FmFM 使用共享 embedding 向量,因为每个特征只有一个 embedding 向量。它利用一个变换过程,将这一个 embedding向量投影到其他 n1field 。这基本上是一个推理过程,那些 n1embedding 向量 vi,F() 其实是与原始的 embedding 向量 vi 绑定的。有了这些 field matrix ,向量是可以前向变换和反向变换。这就是 FFMFmFM 的根本区别:在同一特征中那些可变换的中间向量(即,vi,F())有助于模型很好地学习那些低频 feature pair

    回到 Figure 1 的例子。即使 feature pair (i,k) 是低频的,feature embedding vi 仍然可以通过其他高频 feature pair (如 (i,j) )来训练。而 field matrix MF(i),F(k) 可以通过 field F(i)field F(k) 之间的其他特征交互得到良好的训练。因此,如果低频 feature pair (i,k) 在评估或测试过程中出现,中间向量 vi,F(k) 可以通过 MF(i),F(k)vi 推断出来。

    尽管 FFMFmFM 之间有这种差异,但它们有更多的共同点。Figure 4Figure 1 之间一个有趣的观察是:当所有变换完成后,FmFM 模型变成了 FFM 模型。我们可以缓存那些中间向量,避免在运行时进行矩阵操作。细节将在下一节讨论。

    相反,FFM 模型无法被改造成 FmFM 模型。那些 n1field feature embedding table 是独立的,因此很难将它们压缩成单个 feature embedding table ,并在需要时恢复它们。

  4. 模型复杂度:

    • FM 的参数数量为 m+mK ,其中 m 为线性部分每个特征的权重、mK 为所有特征的 embedding 向量。
    • FwFM 对每个 field 对使用 n(n1)/2 的额外参数,因此 FwFM 的参数总数为 m+mK+n(n1)/2
    • FmFM 对每个 field 对使用 n(n1)/2 个额外的矩阵,对应于 n(n1)2K2 个参数,因此 FwFM 的参数总数为 m+mK+n(n1)K2/2
    • FFM 的参数数量为 m+m(n1)K ,因为每个特征有 n1embedding 向量。

    在下表中,我们比较了到目前为止提到的所有模型的复杂度。我们还列出了每个模型的估计参数规模(模型配置,如 embedding size ,参考实验部分),这些模型使用了公共数据集 Criteo 。这些数字可以让我们对每个模型的规模有一个直观的印象。FMFwFMFmFM 的规模相近,而 FFM 的规模比其他模型大十几倍。

29.3 模型优化

  1. 这里我们可以设计出 3 种策略来进一步降低 FmFM 的复杂度:

    • field-specific embedding dimension:它是 FmFM 的一个独特属性,允许我们在 embedding table 中使用 field-specific 的维度,而不是全局的固定长度 K

      这里 field-specific 的维度是通过对训练好的 embedding table 进行降维来实现的。因此需要训练两遍。

    • 缓存中间向量:避免矩阵运算从而在运行时减少 FmFM 的计算复杂度(仅用于推断期间)。

    • 减少线性项:用 field-specific 权重来代替。

    这里面提到的优化方法大多数都不实用,无法优化训练速度,而仅聚焦于优化推断速度。实际上,如果想优化推断速度,那么可以用模型剪枝、模型量化、模型蒸馏技术。

  2. Field-specific Embedding Dimension:为了进行点积, FM 要求所有 feature embedding 的向量维度 K 相同,即使特征来自不同的 field 。改进后的模型如 FwFMFvFM 也采用了这个特性。然而,向量维度 K 只能全局优化。

    当我们利用 FmFM 中的矩阵乘法时,它实际上并不要求 field matrix 是方阵:我们可以通过改变 field matrixshape 来调整输出向量的维度。这一特性给了我们另一种灵活性,可以在 embedding table 中按需设置 field-specific 维度,如下图所示。

    embedding 向量的维度决定了它所能携带的信息量。例如,field user_gender 可能只包含 3 个值( male, female, other ),field top_level_domain 可能包含超过 1M 个特征。因此,user_genderembedding table 可能只需要 5 维,而 field top_level_domainembedding table 可能需要 7 维,因此它们之间的 field matrixshape(7,5)

    为了在不损失模型性能的前提下设计 field-specific embedding vector dimension ,我们提出了一种 2-pass 方法:

    • 在第一个 pass,我们对所有 field 使用较大的固定的 embedding 向量维度,如 K=16 ,并将 FmFM 训练为完整模型。从完整的模型中,我们了解到每个 field 有多少信息(方差),然后我们在每个 fieldembedding table 上应用标准的 PCA 降维方法。从实验部分中我们发现,包含 95%原始方差的新维度是一个很好的 tradeoff
    • 有了这个新的 field-specific 的维度设置,我们在第二个 pass 中从头开始训练模型。与第一个完整的模型相比,所得到的第二个模型没有任何明显的性能损失。

    这种方法训练时间翻倍。一般而言,CTR 预测任务的数据集很大、模型也比较复杂,因此整体训练时间会很长。翻倍的训练时间不太有利。

    并且,这种方法还需要仔细设计 field matrixshape,增加了开发成本。

    下表显示了 Criteo 数据集中每个 field 通过 PCA 进行优化后的维度。可以看到,这些维度的范围很大,从 214 ,而且大部分维度都小于 10 。平均 K¯只有 7.72 ,低于 FwFM 的最佳 K 值。由于保留了数据集的大部分方差,较低的平均维度意味着模型的参数较少,需要较少的内存。

  3. Intermediate Vectors Cache:在参数数量上,FmFM 是一个比 FFM 更低复杂度的模型。但是 FmFM 在变换步骤中需要昂贵的矩阵运算。在下表中,我们列出了每个模型的浮点运算( Floating Point Operations: FLOPs )的数量,并以典型的设置对其进行估计。

    注:典型设置为:n=39,K=16,H=200DNN 隐层的单元数, L=3DNN 的隐层数量,K=32AutoInt 中新空间的维度,sFwFM=90%sDNN=80% 分别为在 DeepLightFwFMDNN 组件的稀疏率。

    在这些 FM 模型中,FmFM 需要最多的操作来完成其计算,大约是FwFMFFMK 倍,但仍然比大多数 DNN 模型快。如前所述,我们已经表明,通过缓存所有的中间向量,可以将 FmFM 模型转化为 FFM 模型。在这个意义上,我们可以把它的操作数量减少到与FMFFM 相同的量级,这几乎是 20 倍的速度。

    首先,如何缓存?论文并未提到细节。

    其次,缓存中间向量仅在推理期间有效,因为此时所有参数都已经学好并固定不动。然而在训练期间,每经过一个 training iteration 参数都发生更新,因此缓存的中间向量到下一个 iteration 就没有意义。因此,读者估计,FmFM 的训练时间会非常的长。

    最后,这里给的计算复杂度及其估计值是针对推理期间的,而不是训练期间的。而 95% variance 是在训练完成之后进行的,在训练期间不可用。

  4. Embedding Dimension and Cache Optimization Combined :当我们把 field-specific embedding dimensional optimization 和缓存优化结合起来时,推理速度可以快得多,而且所需的内存也可以大大减少。这得益于 FmFM 的另一个特性:交互矩阵是对称的。这意味着:

    (50)<MF(i),F(j)vi,vj>=<MF(i),F(j)vj,vi>

    证明见原始论文。

    因此,我们可以选择缓存那些 field embedding 维度较低的中间向量,并在推理过程中与其他特征向量进行点乘。例如,在 Table 3 中,两个特征 ij 分别来自 field #16field #28 。有了这个对称性,当我们计算 ij 之间的交互时,我们可以缓存 M16,28vi 、或者缓存 M16,28vj

    • 由于 field matrix M16,28 的形状为 (14,2)M16,28vi 将维度从 2field #16 )增加到 14 (中间向量),然后与维度也为 14vj 进行点乘。它花费了 14 个单位的内存用于中间向量的缓存,在推理过程中需要 2*14FLOPs
    • 相比之下,后者 M16,28vj 将维度从 14field #28 )缩减到 2 (中间向量),然后与维度也是 2vi 进行点乘,它在中间向量缓存中花费 2 个单位的内存,并在推理中花费 2*2 FLOPs 。因此缓存维度为 2 的中间向量,可以节省 7 倍的内存和时间,而没有任何精度损失。

    通过这两种优化技术的结合,FmFM 模型的时间复杂度大大降低。在 Table 4 中,我们估计优化后的模型只需要 8,960FLOPs ,这只是FFM1/3 左右。在实验部分中,我们将说明这个优化的模型可以达到与完整模型相同的性能。

  5. Soft Pruningfield-specific embedding dimension 实际上也起到了类似于剪枝的作用。传统的剪枝,如 DeepLight ,给出了保留或放弃一个 field 或一个 field pair 的二元决定。而 field-specific embedding dimension 给了我们一个新的方法:按需确定每个 fieldfield pair 的重要性,并给每个 field 分配一个系数(即,emebdding 维度)来代表其重要性。例如,在 Table 3FmFM 模型中,cross field #17#20 是一个高强度的 field pair ,它在推理过程中需要 11 个单位的缓存和 2*11FLOPs ;相反,一个低强度的 field pair ,即 cross field #18#22 ,只需要 2 个单位的缓存和 2*2FLOPs

    缓存空间大小就是 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 pairlabel 之间的互信息分数的热力图,它代表了 field pair 在预测中的强度。Figure 7 显示了 cross field dimension ,这是两个 field 之间的较低维度,它表示每个 field pair 的参数和计算成本。显然,这两个热力图是高度相关的,这意味着优化后的 FmFM 模型在那些强度较高的 field pair 上分配了更多的参数和更多的计算,而在强度较低的 field pair 上分配了较少的参数和较少的计算。

  6. 线性项:线性部分为:

    (51)i=1mxiwi

    这需要为每个特征 i 学习一个额外的标量 wi 。然而,学到的 embedding 向量 vi 应该包含更多的信息,而权重 wi 可以通过简单的点乘从 vi 中学习。这种方式(即,从 vi 中学习 wi )的另一个好处是,它可以帮助从线性部分学习 embedding 向量。

    我们遵从 FwFM 的方法,通过学习一个 field-specific 向量 wF(i),这样所有来自同一 field F(i) 的特征将共享相同的线性权重向量。然后,线性项可以被改写为:

    (52)i=1mxi<vi,wF(i)>

    在本文的其余部分,我们默认对 FwFMFvFMFmFM 应用这种线性项优化。

29.4 实验

  1. 数据集:CriteoAvazu

    • 我们遵循那些已有的工作,将每个数据集随机分成三部分,80% 用于训练、10% 用于验证、10% 用于测试。

    • 对于 Criteo 数据集中的数值特征,我们采用 Criteo 竞赛冠军提出的对数变换来归一化数值特征:

      (53)z(x)={log(x)2, if x>2x,else
    • 对于 Avazu 数据集中的 date/hour 特征,我们将其转换为两个特征:day_of_week(0-6)hours(0-23)

    • 我们还删除了两组数据中那些低于阈值的低频特征,并用该 field 的默认 "unknown" 特征来替换。Criteo 数据集的阈值为 8Avazu 数据集的阈值为 5

    归一化后的数据集的统计数字如下表所示:

  2. baseline 方法:LRFMFwFMFFMFvFMFmFM

    我们遵循 PNN 原始论文中 LRFM 的实现,并遵循 FwFM 原始论文中 FFMFwFM 的实现。

  3. 评估指标:验证集的 AUC, logloss

  4. 模型配置:对于那些 SOTA 模型,它们都是 DNN 模型,可能需要更多的超参数调优,我们从它们的原始论文中提取它们的性能(AUCLog Loss ),以保持它们的结果最佳。我们列出他们的结果只是为了参考。

    Deep & Cross 网络是一个例外,因为他们的论文只列出了 logloss 而没有列出 AUC 。因此,我们实现了他们的模型,得到了类似的性能。

    对于所有模型中的正则化系数 λ 和学习率 η 等超参数,我们选择最佳验证集性能的超参数,然后在测试集上使用它们进行评估。

  5. 模型评估结果如下所示,其中对于 FmFM 我们不采用任何优化手段。可以看到:

    • 在这两个数据集上,FvFMFmFM 都能取得比 LRFMFwFM更好的性能,这也是我们所预期的。

    • 令人惊讶的是,FmFM 在两个测试集上都能取得比 FFM 更好的性能。正如我们之前提到的,即使 FFM 是一个比 FmFM 大几十倍的模型,我们的 FmFM 模型仍然在所有浅层模型中得到最好的 AUC

      FmFMFFM 的性能相差无几,非常接近。

    • 此外,如果我们比较训练集和测试集之间的 AUC 差异,我们发现 ΔAUCFmFM=0.0074 是那些 factorization machine 模型中最低的一个,这肯定了我们前面的假设:那些低频特征在交互矩阵的帮助下也被训练得不错,这种机制帮助 FmFM 避免过拟合。

      这里的数据和结论都不正确,ΔAUCFmFM 并不是最低的,而且数值也不是 0.0074 ,最低的是 LR 模型。

  6. Embedding Dimension Optimization:在这一部分,我们前面描述的方法,即我们有一个 full size 的模型,我们可以为每个 field 提取其 embedding table ,然后我们利用标准的 PCA 降维。在这里,我们做了几个实验,比较降维对模型性能的影响,并试图在模型大小、速度和性能之间找到一个平衡点。

    我们使用 Criteo 数据集,PCA 降维中分别保持 99%, 97%, 95%, 90%, 85%, 80% 的方差,并估计平均 embedding 维度和 FLOPS (具有缓存的中间向量)。在新的维度设置下,我们分别训练这些 FmFM 模型的第二遍,并观察测试集的 AUCLog Loss 变化。结果如下表所示。可以看到:

    • 当我们保持较少的 PCA 方差时,平均 embedding 维度明显减少。
    • 当我们保持 95% 的方差时,与 full size 模型相比,只有不到 1/2emebdding 维度和 1/3 的计算成本,而模型的性能没有明显变化。因此,当我们优化 FmFMembedding 维度时,95% 的方差是一个很好的 tradeoff

  7. 下图 显示了这些模型的性能(AUC )和它们的计算复杂性( FLOPs )。与所有的 baseline 模型相比,作为一个浅层模型,优化后的 FmFM 模型得到了更高的 AUC 以及更低的 FLOPs ,除了 Deep&CrossDeepLight 。然而 FmFM 的计算成本比这两个 ensembleDNN 模块和浅层模块的复杂模型(即,Deep&CrossDeepLight )要低得多,其 FLOPs 分别只有它们的 1.76%8.78% 。较低的 FLOPs 使得 FmFM 在计算延迟受到严格限制时更受欢迎,这也是实时在线广告 CTR 预测和推荐系统中的常见情况。

29.5 讨论

  1. 未来方向:

    • FmFM 仍然是一个线性模型,我们可以将非线性层引入到 field 交互中,让模型成为非线性模型,这样就更加灵活。
    • 所有的 FM 模型实际上都是二阶模型,它最多允许 2field 交互。这种限制主要是因为点积的原因。在未来,我们可以引入三维张量,允许 3field 的交互,或者甚至更高阶次。这项工作可能需要更多的模型优化,因为有太多的三阶交互。
    • 我们可以结合 DNN 模型,如 Wide & DeepDeepFMDeepLight,并尝试将 FmFM 作为 DNN 模型的一个构建模块,以进一步提高其性能。

三十、FiBiNET[2019]

  1. 近年来,许多基于深度学习的 CTR 模型被提出并取得了成功,如 Factorization-Machine Supported Neural Network: FNNWide&Deep model: WDLAttentional Factorization Machine: AFMDeepFMXDeepFM 等等。

    论文 《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 机制和双线性特征交互,论文的浅层模型在 CriteoAvazu 数据集上的浅层模型之间(如 FFM )实现了 SOTA
    • 为了进一步提高性能,论文将经典的深度神经网络组件与浅层模型相结合,构成一个深度模型。深度 FiBiNETCriteoAvazu 数据集上的表现一直优于其他 SOTA 的深度模型。
  2. 相关工作:

    • FM 及其变体:factorization machine: FMfield-aware factorization machine: FFM 是两个最成功的 CTR 模型。

      • FM 使用因子化的参数建模所有的特征交互。它的时间复杂度和空间复杂度都很低,在大型稀疏数据上表现很好。
      • FFM 引入了 field-aware 的潜在向量,并赢得了由 CriteoAvazu 主办的两个比赛。然而,FFM 的空间复杂度太高,不容易在互联网公司中使用。
    • Deep Learning based CTR Models:近年来,许多基于深度学习的 CTR 模型被提出。大多数基于神经网络的 CTR 模型的关键因素是:如何有效地建模特征交互。

      • Factorization-Machine Supported Neural Network: FNN 是一个前馈神经网络,使用 FM 来预训练 embedding layer 。然而,FNN 只能捕获高阶的特征交互。
      • Wide & Deep model: WDL 联合训练 wide linear modeldeep neural network ,从而为推荐系统来结合 memorizationgeneralization 的好处。然而,对于 WDLwide 部分的输入,仍然需要专业的特征工程,这意味着 cross-product transformation 也需要手工设计。
      • 为了减轻特征工程中的人工努力,DeepFMFM 取代了 WDLwide 部分,并在 FMdeep 组件之间共享 feature embeddingDeepFM 被认为是 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 模型

  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 layerembedding layerDeepFM 相同,它对输入特征采用稀疏表示并将原始特征嵌入到稠密向量中。

    • SENET layer 可以将 embedding layer 转换为 SENET-Like embedding feature ,这有助于提高特征的 discriminability

      由于原始 EmbeddingsSENET-Like Embeddings 都作为后续模块的输入,因此 SENET-Like Embeddings 仅仅是作为原始 Embeddings 的补充(类似于残差机制),而不是作为原始 Embeddings 重要性的解释。

      如果仅仅将 SENET-Like Embeddings 作为后续模块的输入,这时候才具有可解释性。

    • 接下来的 Bilinear-Interaction layer 分别对原始 embeddingSENET-Like embedding 的二阶特征交互进行建模。

    • combination layer 拼接了 Bilinear-Interaction layer 的输出。

    • 最后,我们将combination layer 的输出馈入一个深度神经网络从而得到预测分数。

  2. Sparse Input and Embedding layersparse input layer 对原始输入特征采用了 sparse representationembedding layersparse feature 嵌入到一个低维稠密的实值向量中。embedding layer 的输出是由 field embedding 向量所拼接而来:e=[e1,e2,,ef]Rfk ,其中 eiRkffield 数量,kfield embedding 维度。

  3. SENET Layer:我们都知道,不同的特征对目标任务有不同的重要性。例如,当我们预测一个人的收入时,职业这个特征比爱好这个特征更重要。受到 SENET 在计算机视觉领域的成功启发,我们引入了 SENET 机制,让模型更加关注特征的重要性。对于特定的 CTR 预估任务,我们可以通过 SENET 机制动态地增加重要特征的权重、减少不重要特征的权重。

    feature embedding 作为输入,SENET 针对 field embedding 产生权重向量 a=(a1,,af)Rf ,然后用向量 a 来重新缩放原始的 embedding e 从而得到一个新的 embedding (即,SENET-Like embedding):

    (54)v=[v1,v2,,vf]Rfk,vi=ai×eiRk

    其中: aiR 是一个标量,表示第 ifield 的权重;viRk 为第 ifieldSENET-Like embedding

    如下图所示,SENET 由三个步骤组成:squeeze stepexcitation stepre-weight step

    • squeeze:这一步是用来计算每个 field embeddingsummary statistics 的。具体而言,我们使用一些池化方法(如 max/mean)从而将原始的 embedding e=[e1,e2,,ef] 挤压为一个统计向量 z=(z1,,zf)Rf ,其中 ziR 为一个标量,表示第 i 个特征表示的全局信息。

      zi 的计算公式为 zi=Fsq(ei) ,其中 Fsq() 可以为均值池化、sum 池化、或者最大池化。

      (55)zi=Fsq(ei)=1kt=1kei,t,zi=Fsq(ei)=t=1kei,t,zi=Fsq(ei)=max1tk{ei,t}

      原始 SENET 论文中的 squeeze 函数是最大池化。然而,我们的实验结果表明,均值池化的性能比最大值池化的性能更好。

    • excitation:这一步可以用来基于统计向量 z 来学习每个 field embedding 的权重。我们使用两个全连接层来学习权重:

      • 第一个全连接层是一个降维层,参数为 W1,降维率 r 是一个超参数,非线性函数为 σ1
      • 第一个全连接层是一个升维层,参数为 W2 ,非线性函数为 σ2

      正式地,field embedding 的权重的计算公式为:

      (56)a=Fex(z)=σ2(W2σ1(W1z))Rf

      其中:σ1,σ2 为激活函数;W1Rf×fr,W2Rfr×f

      这一步是降维,从而最多保留最重要的 r 个权重。

    • re-weightSENET 的最后一步是 reweight ,在原始论文中被称为 re-scaleSENET-Like embedding v 可以被计算为:

      (57)v=FReweight(a,e)=[a1×e1,,af×ef]=[v1,,vf]

  4. Bilinear-Interaction LayerInteraction layer 用于计算二阶的特征交互。特征交互的经典方法是内积和 Hadamard 积,其形式分别为:{(vivj)xixj}(i,j)Rx 以及 {(vivj)xixj}(i,j)Rx ,其中 Rx={(i,j)}i,j{1,,f},j>i 。内积和Hadamard 积过于简单,不能有效地建模稀疏数据集中的特征交互。因此,我们提出了一种更加细粒度的方法来结合内积和 Hadamard 积,如下图 (c) 所示。

    具体来说,我们在Interaction layer 提出了三种类型的双线性函数,并称这一层为 Bilinear-Interaction layer 。以第 ifield embedding vi 和第 jfield embedding vj 为例,特征交互的结果pi,j 可以计算为:

    • Field-All Type

      (58)pi,j=(Wvi)vjRk

      其中:WRk×k 为权重矩阵,它在所有的 field interaction pair 之间共享。

    • Field-Each Type

      (59)pi,j=(Wivi)vjRk

      其中:WiRk×k 为权重矩阵,每个 field 都有一个。

    • Field-Interactoin Type

      (60)pi,j=(Wi,jvi)vjRk

      其中:Wi,jRk×k 为权重矩阵,每个 field interaction pair 都有一个。

    Figure 1 所示,我们有两种 embedding:原始 embeddingSENET-like embedding 。对于每一种 embedding,我们可以选择采用 bilinear 函数或 Hadamard 积。

    最终,Bilinear-Interaction layer 可以从原始 embeddign e 中输出一个 interaction vector p=[p1,,pf] ,从 SENET-like embedding v中输出一个 interaction vector q=[q1,,qf]

  5. Combination Layercombination layerinteraction vector pq 拼接起来:

    (61)c=Fconcat[p1,,pf,q1,,qf]=[c1,,c2f]

    如果我们将向量 c 中的每个元素相加,然后用一个 sigmoid 函数来输出预测值,我们就有了一个浅层的 CTR 模型。

    为了进一步提高性能,我们将浅层组件和 DNN 组件组合成一个统一的模型,形成深度网络结构。这个统一的模型在本文中称为深度模型。

    而更好的办法是:拼接 c 之后进行线性加权,即:

    (62)scorep=i=1fj=1fwi,j(p)×pi,j,scoreq=i=1fj=1fwi,j(q)×qi,jscore=scorep+scoreq
  6. Deep Network:深度网络由多个全连接层组成,隐式地捕获了高阶的特征交互。

    Deep Network 的输入是什么?论文没有说明。但是根据 Figure 1,应该是 c

  7. Output Layer:我们模型的输出为:

    (63)y^=σ(w0+i=02fkwici+yd)

    其中:σsigmoid 函数,yddeep part 的输出,w0+i=02fkwiciwide part 的输出。

    目标函数为交叉熵损失:

    (64)L=1Ni=1N(yilogy^i+(1yi)log(1y^i))

    其中:N 为样本数量,yiground-truth

  8. FM, FNN 的联系:

    • 假设我们去掉 SENET layerBilinear-Interaction layer,不难发现我们的模型将退化为 FNN
    • 当我们进一步去掉 DNN 部分,同时使用常数的 sum ,那么浅层 FiBiNET 就退化为传统的 FM 模型。

30.2 实验

  1. 数据集:

    • Criteo:包含有 4500 万个样本的点击日志。在 Criteo 数据集中有 26 个匿名的 categorical feature field13continuous feature field 。我们将数据集随机分成两部分:90% 用于训练,其余用于测试。
    • Avazu:包含有 4000 万个样本的点击日志。对于每个点击数据,有24feature field 。我们将其随机分成两部分:80% 用于训练,而其余部分用于测试。
  2. 评估指标:AUC, LogLoss

  3. baseline 方法:

    • 浅层 baseline 模型:LRFMFFMAFM
    • 深层 baseline 模型:FNNDCNDeepFMXDeepFM
  4. 实现细节:

    • 所有模型用 TensorFlow 来实现。
    • embedding layer 的维度:Criteo 数据集设为 10Avazu 数据集设为 50
    • 使用 Adam 优化器,Criteo 数据集的 batch size = 1000Avazu 数据集的 batch size = 500,学习率设为 0.0001
    • 对于所有的深度模型,层深度都是 3 、激活函数都是 RELUdropout rate 都是 0.5Criteo 数据集的隐层维度为 400Avazu 数据集的隐层维度为 2000
    • 对于 SENET 部分,两个全连接层中的激活函数是 RELU 函数,缩减率设置为 r=3
    • 硬件配置:2Tesla K40 GPU
  5. Table 1Table 2 中分别总结了浅层模型和深层模型在 Criteo 测试集和 Avazu 测试集上的总体表现。

    这里 Interaction layer 使用 Field-All 双线性函数,如表格的标题所示。

    • 浅层模型:我们的浅层 SE-FM-All 模型一直优于其他模型,如 FMFFMAFM等。

      • 一方面,结果表明,将 SENET 机制与稀疏特征上的 bilinear interaction 结合起来,对于许多现实世界的数据集来说是一种有效的方法。
      • 另一方面,对于经典的浅层模型来说, SOTA 的模型是 FFM ,但是它受到大内存的限制,不能轻易用于互联网公司。我们的浅层模型的参数较少,但仍然比 FFM 表现更好。因此,它可以被视为 FFM 的一个替代方案。

    • 深层模型:

      • 将浅层部分和 DNN 结合成一个统一的模型,浅层模型可以获得进一步的性能提升。我们可以从实验结果中推断,隐式的高阶特征交互有助于浅层模型获得更多的表达能力。

      • 在所有的比较方法中,我们提出的深度 FiBiNET 取得了最好的性能。在 Criteo 数据集上和 Avazu 数据集上,我们的深度模型以 0.222%0.59%AUC0.494%0.6%logloss )优于DeepFM

      • 结果表明,将 SENET 机制与 DNN 中的Bilinear-Interaction 相结合进行预测是有效的。

        一方面,SENET 固有地引入了以输入为条件的动态性,有助于提高特征的discriminability ;另一方面,与内积或 Hadamard 积等其他方法相比,双线性函数是一种有效的方法来建模特征交互。

  6. 不同的特征交互方式:我们将讨论在 Bilinear-Interaction layer 中,双线性函数和 Hadamard 积不同类型的组合的影响。为方便起见,我们用01来表示在 Bilinear-Interaction layer 使用哪种函数:1 表示使用双线性函数,而 0 表示使用 Hadamard 积。

    Interaction layer 使用 Field-Each 双线性函数。很奇怪Table3Table1/2 使用了不同的双线性函数。

    我们有两个 embedding ,所以使用两个数字。第一个数字表示用于原始 embedding 的特征交互方法,第二个数字表示用于 SENET-like embedding 的特征交互方法。例如:10 表示双线性函数被用作原始 embedding 的特征交互方法、Hadamard 函数被用作 SENET-like embedding 的特征交互方法。

    实验结果如下表所示。可以看到,在 Criteo 数据集上:

    • 11 的组合在浅层模型中表现最好,但是在深度模型中表现最差。
    • 深层模型中的首选组合应该是 01 。这种组合意味着双线性函数只适用于 SENET-Like embedding layer

    不同数据集的结论不同,因此这个双线性函数的组合方式需要根据不同的数据进行调优。

  7. Bilinear-InteractionField 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 的性能取决于数据集。

  8. 超参数:

    • Embedding 部分:我们将 embedding size10 改变到 50。可以看到:

      • 随着维度从 10 扩大到 50 ,在 Avazu 数据集上我们的模型可以获得大幅改善。

      • 当我们增加 Criteo数据集的 embedding size 时,性能就会下降。

        扩大 embedding size 意味着增加 embedding layerDNN 部分的参数数量。我们猜测可能是 Criteo 数据集的特征比Avazu 数据集多得多,导致了优化的困难。

        有两个原因:过拟合、以及优化困难。因为这两个数据集的样本量都在 4000 万以上,因此二者的过拟合程度应该相差无几。

    • SENET 部分:

      • squeeze 函数:下表总结了不同 squeeze 函数的性能,我们发现 GlobalMeanPoolingCriteo 数据集和 Avazu 数据集上优于 GlobalMaxPoolingGlobalSumPooling

      • 激活函数:我们改变了激活函数的组合,如下表所示。

        • 在这些激活函数的组合中,Relu-Relu 略胜于其他组合。
        • 与原始 SENET 的设置不同,FiBiNETSENET 组件中的第二个激活函数是Relu函数,其性能比sigmoid 函数更好。

      • 此外,我们还改变了压缩率( 1r5 ),发现压缩率的最佳设置是 r=3

    • DNN 部分:

      • 网络层数:增加层数可以增加模型的复杂性。我们可以从下图中观察到,增加层数在开始时可以提高模型性能。然而,如果层数不断增加,性能就会下降。这是因为过于复杂的模型很容易过拟合。对于Avazu 数据集和Criteo数据集,将隐藏层的数量设置为 3 是一个不错的选择。

      • 隐层神经元数量:同样,增加每层的神经元数量也会引入复杂性。在下图中,我们发现对于 Criteo 数据集,每层设置 400个神经元比较好;对于 Avazu 数据集,每层设置 2000 个神经元比较好。

  9. 消融研究:目前为止,我们还没有分离出 FiBiNET 的每个组件的具体贡献。在本节中,我们对 FiBiNET 进行了消融实验,以便更好地了解它们的相对重要性。我们将 DeepSE-FM-Interaction 设定为基础模型,并以下列方式进行:

    • No BI :从 FiBiNET 中删除 Bilinear-Interaction layer
    • No SE :从 FiBiNET 中删除 SENET layer

    如果同时我们删除 SENET layerBilinear-Interaction layer,我们的浅层 FiBiNET 和深层 FiBiNET 将降级为 FMFNN 。实验结果如下表所示。

    • Bilinear-Interaction layerSENET layer 对于 FiBiNET 的性能都是必要的。我们可以看到,当我们删除任何组件时,性能将明显下降。
    • FiBiNET 中,Bilinear-Interaction layerSENET layer 一样重要。

三十一、AutoFIS[2020]

  1. 显式的特征交互可以显著提高 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: DeepFMProduct-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 阶特征交互, 则搜索空间为 2Cm2,其中 mfeature 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 表明,AutoFISCTRCVR 方面将 DeepFM 模型平均提高了约 20%

  2. 相关工作:

    • factorization machine: FM 将每个特征投影到一个低维向量中,并通过内积来建模特征交互,这对于稀疏的数据来说效果很好。Field-aware factorization machine: FFM 进一步使每个特征有多个 vector representation 从而与其他 field 的特征进行交互。

    • 最近,深度学习模型在一些公共 benchmark 上取得了 SOTA 的性能。有几个模型使用 MLP 来改进 FM,如 Attention FMNeural FM

      • Wide & Deep 联合训练了一个 wide 模型(采用人工特征)、和一个 deep 模型(采用原始特征)。

      • DeepFM 使用一个 FM layer 来代替 Wide & Deep 中的 wide 组件。

      • PNN 使用 MLP 来建模 FM layerfeature embeddings 的交互,而 PIN 引入了 network-in-network 架构来建模 pairwise 特征交互,而不是 PNNDeepFM 的内积操作。

        PNN 用内积/外积来建模 feature embeddings 的交互。

      需要注意的是:现有的因子分解模型都是简单地枚举所有二阶的特征交互,其中包含了许多无用的和噪音的交互。

    • gradient boosting decision tree: GBDT 是一种通过决策树算法进行特征工程和搜索交互的方法。然后,转换后的特征交互可以被送入逻辑回归或 FFM 模型。在实践中,树状模型更适合于连续数据,但不适合推荐系统中的高维 categorical data ,因为 categorical feature 的使用率很低。

    • 同时,也有一些工作使用 AutoML 技术来处理推荐系统中的问题。人们提出了 AutoCross 在许多候选特征的子集上进行搜索,从而识别有效的交互。这需要训练整个模型来评估每一个所选择的特征交互,但候选集多得令人难以置信:例如,对于一个有 mfield 的数据集,仅仅考虑二阶特征交互就有 2Cm2 个候选集合。因此,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 来联合训练这两类参数,并以所有数据作为训练集。

31.1 模型

31.1.1 Factorization Model: Base Model

  1. 因子分解模型是指:通过内积或神经网络等操作将来自不同特征的几个 embedding 的交互建模为一个实数。我们将 FMDeepFMIPNN 作为实例来描述我们的算法,并探索在各种数据集上的性能。下图展示了 FMDeepFMIPNN 模型的结构。

    • FM 由一个 feature embedding layer 和一个 feature interaction layer 组成。
    • DeepFMIPNN 模型除了 feature embedding layerfeature interaction layer 之外,还有一个额外的 MLP layerDeepFMIPNN 的区别在于:在 DeepFM 中,feature interaction layerMLP layer 是并行工作的,而在 IPNN 中是堆叠排列的。

  2. Feature Embedding Layer:在大多数 CTR 预测任务中,数据是以 multi-field categorical form 收集的。一个典型的数据预处理是:通过 one-hot encodingmulti-hot encoding 将每个数据实例转化为高维稀疏向量。只有当一个 fieldmultivariate 的时候,它才被表示为 multi-hot encoding vector 。一个数据样本可以被表示为:

    (65)x=[x1,x2,,xm]

    其中: mfield 数量,xi 为第 ifieldone-hot/multi-hot encoding vector

    feature embedding layer 用于将 encoding vector 转化为低维向量,即:

    (66)ei=VixiRd

    其中:ViRd×ni 为第 ifieldembedding 矩阵;ni 为第 ifieldfeature value 数量;d 为低维向量的维度。

    • 如果 xione-hot encoding vector,其中第 j 个元素为 1,那么 ei=vi(j) ,其中 vi(j)RdVi 的第 j 列。
    • 如果 ximulti-hot encoding vector ,其中第 {j1,,jik} 个元素为 1,那么:ei=j{j1,,jik}vi(j)sum 池化)或者 ei=1ikj{j1,,jik}vi(j) (均值池化)。

    feature embedding layer 的输出为多个 embedding 向量的拼接:e=[e1,e2,,em]Rmd

  3. Feature Interaction Layer:将特征转换到低维空间后,可以用 feature interaction layer 在这样的空间中建模特征交互。

    • 首先,计算pairwise特征交互的内积:

      (67)[<e1,e2>,<e1,e3>,,<em1,em>]

      其中:ei 为第 ifieldfeature embedding<,> 为两个向量的内积。

      这里 pairwise特征交互的数量为 Cm2

      可以根据 xixj=(xi)2(xi2) 进行简化,此时的计算复杂度降低到 O(m)

    • 然后,在 FMDeepFM 模型中,feature interaction layer 的输出为:

      (68)lfm=<w,x>+i=1mj>im<ei,ej>∈R

      在这里,所有的特征交互以相同的贡献被传递到下一层。正如前面内容所指出的(并将在实验部分得到验证),并非所有的特征交互都具有同等的预测性,无用的特征交互甚至会降低性能。因此,我们提出了 AutoFIS 算法来有效选择重要的特征交互。

    • 为了研究我们的方法是否可以用来识别重要的高阶特征交互,我们将具有三阶交互(即三个 field 的组合)的 feature interaction layer 定义为:

      (69)lfm3rd=<w,x>+i=1mj>im<ei,ej>+i=1mj>imt>jm<ei,ej,et>∈R

      其中 <a,b,c>=s=1dai×bi×ci

  4. MLP LayerMLP Layer 由若干个带激活函数的全连接层组成,它学习特征的 relationshipcombination 。单层 MLP Layer 的输出为:

    (70)h(l+1)=relu(W(l)h(l)+b(l))

    其中:h(l) 为第 l 层的输入; W(l),b(l) 为第 l 层的权重和 biasrelurelu 激活函数。

  5. Output Layer

    • FM 模型没有 MLP Layer,它直接将 feature interaction layerprediction layer 相连:

      (71)y^FM=sigmoid(lfm)=11+exp(lfm)

      其中:y^FMpredicted CTR

    • DeepFM 以并行的方式将 feature interaction layerMLP layer 进行组合:

      (72)y^DeepFM=sigmoid(lfm+MLP(e))
    • IPNN 以堆叠的方式将 feature interaction layerMLP layer 进行组合:

      (73)y^IPNN=sigmoid(MLP([e,lfm]))

      请注意,IPNNMLP layer 也可以作为不同特征交互的 re-weighting ,从而捕获其相对重要性。这也是 IPNNFMDeepFM 有更高容量的原因。然而,在 IPNN 的公式中,人们无法检索到对应于每个特征交互的相对贡献的精确值。因此,IPNN 中无用的特征交互既不能被识别、也不能被丢弃,这给模型带来了额外的噪声和计算成本。

  6. Objective FunctionFMDeepFMIPNN 有着相同的目标函数,即最小化预测值和标签的交叉熵:

    (74)L(y,y^M)=ylogy^M(1y)log(1y^M)

    其中:y{0,1}label0y^M1 为预测 y=1 的概率。

31.1.2 AutoFIS

  1. AutoFIS 自动选择有用的特征交互,可以应用于任何因子分解模型的 feature interaction layerAutoFIS 可以分为两个阶段:

    • 搜索阶段 search stage :检测有用的特征交互
    • 重训练阶段 re-train stage :对具有选定特征交互的模型进行重训练。

    核心思想:根据 data-driven 的权重 α 来学习 field 交互特征的重要性,并裁剪不重要的 field 交互特征。

    AutoFISAFM 很类似,它们都是学习每个交互特征的重要性,然而:

    • AutoFIS 通过自由参数来描述交互特征的重要性,可以视为 global-level 的建模。
    • AFM 通过 attention 机制来描述交互特征的重要性,可以视为 sample-level 的建模。理论上而言,对于给定的 field-pair,我们可以统计所有样本在它上面的注意力权重,从而得到 global-level 的重要性。
    • 此外,AFM 用逐元素乘积来描述交互特征,而 AutoFIS 用内积。
a. 搜索阶段
  1. 为了便于介绍算法,我们引入了 gate 操作来控制是否选择一个特征交互:一个打开的 gate 对应于选择一个特征交互,而一个关闭的 gate 则导致丢弃一个特征交互。所有二阶特征交互对应的 gate 的总数为 Cm2 。要想以暴力的方式找到最佳的 open gate 的集合是非常具有挑战性的,因为我们面临着一个难以置信的巨大空间 O(2Cm2) 来搜索。

    在这项工作中,我们从不同的角度来处理这个问题:我们不是在一个离散的 open gate 的集合上进行搜索,而是通过引入架构参数 αchoice 放宽为连续的,这样就可以通过梯度下降学习每个特征交互的相对重要性。下图显示了所提出的 AutoFIS 的概览。

  2. 这种通过梯度学习的架构选择方案受到 DARTS的启发,其中,DARTS 的目标是从卷积神经网络架构的一组候选操作中选择一个操作。具体而言,我们将因子分解模型中的 interaction layer 重新表述为:

    (75)lAutoFIS=<w,x>+i=1mj>imα(i,j)×<ei,ej>

    其中:α={α(1,2),,α(m1,m)} 为架构参数。

    AutoFIS 的搜索阶段,我们可以学习 α(i,j) 使得它代表每个特征交互对最终预测的相对贡献。然后,我们可以通过将那些不重要的特征交互(即 α(i,j)=0 )关闭从而决定每个特征交互的 gate 状态。

    如何确保 α 的稀疏性?论文采用特殊的优化器 GRDA Optimizer 来实现。

    此外,是否可以保留最重要的 field ,而不仅仅是最重要的 field pair ?实际上,如果 field i 的线性项权重 wi=0 、交互项权重 {αi,1,,αi,m} 全部都接近零(或者等于零),那么 field i 就可以被裁剪掉。

  3. Batch Normalization:从整个神经网络的角度来看,特征交互的贡献由 α(i,j)×<ei,ej> 来衡量。但是,完全相同的贡献可以通过重新缩放来实现:(α(i,j)η)×(η<ei,ej>) ,其中 η 为任意非零的实数。

    由于 <ei,ej> 的值是与 α(i,j) 共同学习的,它们的 scale 耦合会导致对 α(i,j) 的不稳定估计,这样 α(i,j) 就不能再代表 <ei,ej> 的相对重要性。为了解决这个问题,我们对 <ei,ej> 应用 Batch Normalization: BN 来消除其 scale 问题。

    原始的 BN 采用 mini-batch 统计量从而对 activated output 进行标准化。具体而言:

    (76)z^=zinμBσB2+ϵ,zout=θz^+β

    其中:zinBN 层的输入;zoutBN 层的输出;μBσB2zinmini-batch B 上的均值和标准差;θ,βBN 层的可训练的 scale/shift parametersϵ 为一个小的常数从而用于数值稳定性; 以及除法都是逐元素进行的。

    为了获得对 α(i,j) 的稳定估计,我们将 scale/shift parameters 分别设为 10 。对每个特征交互<ei,ej>BN 操作计算如下:

    (77)<ei,ej>BN=<ei,ej>μB(<ei,ej>)σB2(<ei,ej>)+ϵ

    其中:μB,σB2<ei,ej>mini-batch B 上的均值和标准差。

  4. GRDA Optimizergeneralized regularized dual averaging: GRDA 优化器旨在获得一个稀疏的深度神经网络。为了在每个梯度step t 用数据 Zt 更新 α ,我们使用以下公式:

    (78)αt+1=argminα{α(α0+γi=0tL(αt;Zi+1)+g(t,γ)α1+12α22)}

    其中:g(t,γ)=cγ1/2(tγ)uγ 为学习率,cu 为可调的超参数从而权衡准确性和稀疏度。

    在搜索阶段,我们使用 GRDA 优化器来学习架构参数 α ,并得到一个稀疏的解决方案。那些不重要的特征交互(即具有零值的 α(i,j))将被自动丢弃。

    除了 α 之外的其他参数由 Adam 优化器学习。

  5. One-level Optimization:为了在 AutoFIS 的搜索阶段学习结构参数 α(i,j) ,我们建议将 α 与所有其他网络权重共同优化。这与DARTS 不同。DARTSα 作为 higher-level 决策变量、将网络权重 Θ 作为lower-level 变量,然后用 bi-level 优化算法对其进行优化。在 DARTS 中,假设只有当网络权重被正确学习后,模型才能选择操作,从而使 α 能够 "做出正确的决定"。

    AutoFIS 的公式中,这意味着我们可以在网络权重被正确训练后决定 gate 应该打开还是关闭,这使我们回到了问题:完全训练 2Cm2 个模型来做决策。为了避免这个问题,DARTS 建议只用一个梯度下降步来近似计算网络权重的最优值,并迭代地训练 αΘ

    我们认为,这种近似的不精确性可能会降低性能。因此,我们建议不使用 bi-level 优化,而是用 one-level 优化来联合优化 αΘ 。具体而言,参数 αΘ 使用训练集通过梯度下降一起更新,基于:

    (79)ΘLtrain(Θt1,αt1),αLtrain(Θt1,αt1)

    在这种情况下, αΘ 可以自由地探索它们的设计空间,直到收敛,并且 α 被学习作为单个特征交互的贡献。

    在实验部分中,我们将展示 one-level optimizationtwo-level optimization 的优越性。

b. 重训练阶段
  1. 在搜索阶段的训练结束后,根据搜索阶段的架构参数 α ,一些不重要的交互被自动丢弃。我们用 G(i,j) 表示特征交互<ei,ej>gate 状态,当 α(i,j)=0 时,将 G(i,j)=0;否则 G(i,j)=1。在重训练阶段,这些不重要的特征交互的 gate 状态被固定为永久关闭。

    在移除这些不重要的交互后,我们重新训练新的模型。具体来说, feature interaction layer 被替换为:

    (80)lfmre=<w,x>+i=1mj>imα(i,j)×G(i,j)×<ei,ej>

    注意这里 α(i,j) 不再作为决定一个特征交互是否应该包括在模型中的指标(如搜索阶段)。取而代之的是,它作为一个注意力单元,让架构学习被保留下来的特征交互的相对重要性。在这个阶段,我们不需要选择特征交互。因此,所有的参数都由 Adam 优化器学习。

    这里 Gi,j 被初始化为 01 (根据特征交互的选择的结果),并且在训练过程中保持不变。

    重训练阶段,所有参数(包括 α )都用 Adam 优化器来优化。

31.2 实验

  1. 数据集:两个 public 数据集(Avazu, Criteo )、一个 private 数据集。

    • Avazu:在 KaggleCTR 预估竞赛中被发布。随机拆分80% 的数据作为训练和验证,剩余 20% 用于测试。出现次数少于 20 次的 categories 将被删除从而进行降维。

    • Criteo:包含一个月的点击日志,有数十亿的数据样本。我们选择 "data 6-12" 作为训练集和验证集,同时选择 "day-13" 进行评估。为了应对标签的不平衡,我们采用了负降采样的方法,使正样本比例大致保持在 50% 左右。13 个数值字段通过分桶被转换为 one-hot 特征,其中某个字段中出现少于 20 次的特征被设置为 dummy feature "other"

      如何分桶?论文并未说明。

    • Private:从华为应用商店的游戏推荐场景中收集的。该数据集包含 app 特征(如 ID, category ),用户特征(如用户的行为历史)和上下文特征。

    数据集统计结果如下表所示。

  2. baseline:我们将 AutoFIS 应用于 FMDeepFM 模型以显示其有效性(分别表示为 AutoFMAutoDeepFM )。

    baseline 方法为:GBDT-based 的方法( GBDT+LR, GBDT+FFM),FM 模型(AFM, FwFM, FFM, IPNN)。

    由于其巨大的计算成本和源代码的不可用,我们没有将我们的模型与 AutoCross 进行比较。

  3. 评估指标:AUC, Log loss

  4. 超参数配置:

  5. 实现细节:

    • AutoFMAutoDeepFM 选择二阶特征交互:在搜索阶段,我们首先在所有训练数据上联合训练 αΘ 。然后,我们删除无用的交互,重新训练我们的模型。
    • AutoFMAutoDeepFM 选择三阶特征交互:我们复用所选中的二阶交互,并在搜索阶段枚举三阶特征交互从而学习其重要性。最后,我们用选中的二阶交互和三阶交互来重新训练我们的模型。

    注意,在搜索阶段,架构参数 αGRDA 优化器优化,而其他参数 ΘAdam 优化器优化。在重新训练阶段,所有参数都由 Adam 优化器优化。

  6. AutoFIS 选择的特征交互:Table 1Table3 总结了 AutoFMAutoDeepFMAvazu, Criteo, Private 数据集上自动选择二阶重要交互和三阶重要交互的性能。可以看到:

    • 对于 Avazu 数据集,FM/DeepFM 分别可以移除 71%/76% 的二阶交互。移除这些无用的交互:

      • 不仅可以使模型在推理时更快:AutoFM(2nd)AutoDeepFM(2nd) 的推理时间明显少于 FMDeepFM
      • 而且可以明显提高预测准确性:从 AUC 来看,AutoFM(2nd)FM 的相对性能提高了 0.49%AutoDeepFM(2nd)DeepFM 的相对性能提高了 0.20%

      类似的改进也可以从其他数据集中得出。

    • 对于高阶特征交互的选择,只有 2%-10% 的三阶特征交互需要包含在模型中。

      • AutoFM(3rd)AutoDeepFM(3rd) 的推理时间远远少于 FM(3rd)DeepFM(3rd) (与 FMDeepFM 相当)。

      • 同时,通过移除不重要的三阶特征交互,准确率得到了显著的提高。即在 Avazu 上的 AUC 指标上,AutoFM(3rd)FM(3rd) 的相对性能提高了 0.22%AutoDeepFM(3rd)DeepFM(3rd) 提高了 0.20%

        Criteo 的观察也是如此。

    • 所有这些性能提升都是以边际时间成本 marginal time cost 实现的。例如,AutoDeepFM(3rd)AvazuCriteo 用一块 GPU 卡搜索重要的二阶特征交互和三阶特征交互需要 24 分钟和 128 分钟。同样的结果可能需要人类工程师花很多小时或几天的时间来手动识别这些重要的特征交互。

    注意,在 FMDeepFM 中直接枚举三阶特征交互会使推理时间增加 712 倍,这在工业应用中是不可接受的。

  7. 所选特征的可迁移性:我们研究了由 AutoFM (这是一个简单的模型)所学到的特征交互是否可以迁移到 SOTA 的模型(如 IPNN )从而提高其性能。

    如下表所示:

    • 使用 AutoFM 选择的二阶特征交互(即 AutoIPNN(2nd) )实现了与 IPNN 相当的性能,在 AvazuCriteo 的所有交互中约占 30%50%
    • 使用 AutoFM 选择的二阶特征交互和三阶特征交互(即 AutoIPNN(3rd) ),性能得到明显改善。

    这两个证据都验证了 AutoFM 所选择的特征交互的可迁移性。

  8. 所选特征的效果:

    • 在真实数据上:我们定义 statistics_AUC 来表示一个特征交互对最终预测的重要性。对于一个给定的特征交互。我们构建一个只考虑该交互的 predictor ,其中 prediction 为训练集中特定特征交互的 statistical CTR#downloads/#impressions )。然后,这个 predictorAUC 是相对于这个给定的特征交互的 statistics_AUCstatistics_AUC 越高,表明该特征交互在预测中的作用越重要。然后,我们将 statistics_AUCα(i,j) 值之间的关系可视化。

      即,仅仅以这一对特征作为输入,label 不变。这个 predictor 如何构建?论文并未说明。可以选择 LRFM 模型。

      如下图所示,我们可以发现,被我们模型选中的大多数特征交互(绝对值较高的 α(i,j))都有较高的 statistics_AUC ,但并非所有具有高 statistics_AUC 的特征交互都被选中。这是因为这些交互中的信息也可能存在于其它交互中,而这些其它交互也被我们模型所选中。

      为了评估我们的模型所选择的特征交互的有效性,我们还根据 statistics_AUC 选择了 top-N 特征交互( 𝑁 是我们的模型所选择的二阶特征交互的数量),并利用这些特征交互重新训练模型。如下表所示,在计算成本相同的情况下,我们的模型的性能远远好于通过 statistics_AUC 选择的特征交互的模型。

    • 在人工合成数据上:合成数据集是由一个不完整的 poly-2 函数产生的,其中的双线性项类似于 categories 之间的交互。基于这个数据集,我们研究了:我们的模型是否能够找到重要的交互、我们的模型与其他FM 模型相比的性能。

      数据集的输入 xmfieldN 个类目中随机采样的。输出 ybinary 标签:

      (81)y=σ(i=1mwixi+(i,j)Cvi,jxixj+b+ϵ)σ(z)={1, if zthreshold0, otherwise 

      其中,数据分布 p(x) 、双线性项集合 C 、参数 w,v,b 都是随机采样和固定的。data pair 是独立同分布采样来构建训练集和测试集。我们还在采样的数据中加入一个小的随机噪声 ϵ

      我们使用 FM 和我们的模型来拟合人工合成数据。我们在测试数据集上使用 AUC 来评估这些模型。

      我们选择 m=6,N=60 来测试我们模型的有效性。C 被随机初始化为 C={(x0,x1),(x2,x5),(x3,x4)}Figure 4 展示了我们的模型与FM 的性能比较,这表明了我们的模型的优越性。

      Figure 5 所示,我们的模型可以精确地提取重要的特征交互:C 中的交互具有最高的 α(i,j) 值,一些不重要的特征交互被移除。

  9. 在线实验:我们在华为应用商店的推荐系统中进行了在线实验,以验证 AutoDeepFM 的卓越性能。

    具体而言,在 App Store 的游戏推荐场景中进行了为期 10 天的 A/B test 。我们在线实验的 baselineDeepFM ,这是一个强大的baseline ,因为它具有优秀的准确性和高效率,已经在商业系统中部署了很长一段时间。

    • 对照组:随机选择 5% 的用户,并向他们展示由 DeepFM 生成的推荐。
    • 实验组:随机选择 5% 的用户,并向他们展示由 AutoDeepFM 生成的推荐。

    Figure 6Figure 7 显示了实验组比对照组在 CTR#downloads/#impressions )和 CVR#downloads/#user )上的改进。可以看到:

    • 该系统是相当稳定的,在 A/A test 期间,CTRCVR 都在8% 以内波动。
    • 我们的 AutoDeepFM 模型在第 8 天被启动到实时系统中。从第 8 天开始,我们观察到在 CTRCVR 方面比 baseline 模型有明显的改善。在 10 天的 A/B test 中,CTR 的平均改进为 20.3%CVR 的平均改进为 20.1% 。这些结果证明了我们所提出的模型的巨大有效性。
    • 从第 18 天开始,我们再次进行 A/A test,在实验组中用 baseline 模型替换我们的 AutoDeepFM 模型。我们观察到实验组的性能急剧下降,这再次验证了实验组在线性能的改善确实是由我们提出的模型引入的。

  10. 消融研究:

    • 不同随机数种子下 α 估计的稳定性:对 α 的稳定估计意味着模型的决定(哪种交互是重要)不受随机数种子的影响。我们在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+FMFM 之间的性能差距表明:在某些情况下,随机选择的特征交互可能优于保留所有特征交互的模型。这支持了我们的说法:移除一些无用的特征交互可以提高性能。

        类似于 xgboost 中的 feature sample

        Avazu 数据集中, Random+FM 略逊于 FM

      • AutoFMAutoFM-BN 之间的比较验证了 BN 在重训练阶段的有效性,其中的原因在 AutoFIS 章节已经说明。

      • AutoFM-BNAutoFM-BN-𝛼 之间的性能差距表明: α 提高了性能,因为它区分了不同特征交互在重训练阶段的贡献。

    • one-level optimization vs bi-level optimization:结果如 Table 8 所示。可以看到:AutoFMBi-AutoFM (以及AutoDeepFMBi-AutoDeepFM )之间的性能差距表明了 one-level optimizationbi-level optimization 的优越性,其原因在 one-level optimization 章节已经说明。

三十二、DCN V2[2020]

  1. 有效的特征交叉 feature cross 对于许多 learning to rank: LTR 模型的成功至关重要。特征交叉提供了单个特征之外的额外交互信息。例如,"国家" 和 "语言" 的组合比其中单个特征更有信息量。在线性模型时代,机器学习从业者依靠手动识别这种特征交叉来增加模型的表达能力。不幸的是,这涉及到一个组合搜索空间,在数据大多是 categoricalweb-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 面临许多挑战。DCNcross network 是有局限性的:

    • cross network 代表的多项式仅由 O(input size) 的参数来刻画,这在很大程度上限制了它建模 random cross patterns 的灵活性。
    • 此外,cross networkDNN 之间的分配容量是不平衡的。当将 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 ,它继承了 DCNcross network 的简单结构,然而在学习显式的和有界的交叉特征方面的表达能力显著增强。论文研究了以点击为正标签的数据集,然而 DCN-V2 与标签无关,可以应用于任何 learning to rank system

    论文贡献:

    • 论文提出了一个新的模型 DCN-V2 来学习有效的显式特征交叉和隐式特征交叉。与现有的方法相比, DCN-V2 更具有表达能力,但仍然是高效和简单的。

    • 观察到 DCN-V2 中所学到的矩阵的低秩性质,论文提出利用低秩技术从而在子空间中近似feature cross ,以获得更好的性能和延迟的 trade-off

      此外,论文提出了一种基于 Mixture-of-Expert 架构的技术,以进一步将矩阵分解为多个较小的子空间。然后,这些子空间通过一个门控机制被聚合起来。

    • 论文利用人工合成数据集进行并提供了广泛的研究,证明了传统的基于 ReLU 的神经网络学习高阶特征交叉的低效率。

    • 通过全面的实验分析,论文证明了的 DCN-V2 模型在 CriteoMovieLen-1M 基准数据集上的表现明显优于 SOTA 算法。

    • 论文提供了一个案例研究,并分享了在一个大规模工业 ranking 系统中部署 DCN-V2 的经验,这带来了显著的离线收益和在线收益。

  2. 相关工作:最近 feature interaction learning 工作的核心思想是利用显式的和隐式的特征交叉。为了建模显式交叉,最近的工作引入了乘法运算(x1×x2) ,然后设计一个函数 f(x1,x2) 来有效地、显式地建模特征 x1x2 之间的 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 xi 视为一个 unit ,而不是将每个元素 xi 视为一个unit 。不幸的是,它的计算成本很高( #params10 倍),使得它在工业规模的应用中不实用。

        此外,DeepFMxDeepFM 都要求所有的 feature embedding 具有相同的大小,这在应用于工业数据时又是一个限制,因为工业数据的词表大小( categorical features 的大小)从 O(10) 到数百万不等。

      • AFM 通过一个注意力网络为每个特征交互分配重要性。

      • AutoInt 利用带残差连接的 multi-head self-attention 机制。

      • InterHAt 进一步采用了分层注意力。

    • 堆叠结构:另一个工作方向是在 embedding layerDNN 模型之间引入一个 interaction layer ,该 interaction layer 创建了显式的特征交叉。这个 interaction layer 在早期阶段捕捉到了特征交互,并促进了后续隐层的学习。

      • product-based neural network: PNN 引入了 inner product layerIPNN)和 outer product layerOPNN)作为 pairwise interaction layerOPNN 的一个缺点在于其高计算成本。
      • Neural FM: NFM 通过用 Hadamard 积代替内积来扩展 FM
      • DLRM 遵从 FM ,通过内积来计算特征交叉。

      这些模型只能创建到二阶显式交叉。

      • AFN 将特征转化为对数空间,并自适应地学习任意阶的特征交互。

      DeepFMxDeepFM 类似,这些方法只接受大小相等的 embedding size

    尽管这些年经过了许多发展,我们的综合实验表明,DCN 仍然是一个强大的基线。我们将此归因于其简单的结构,它促进了 optimization 。然而,正如所讨论的,其有限的表达能力使其无法在 web-scale 的系统中学习更有效的特征交叉。在下文中,我们提出了一个新的架构,它继承了 DCN 的简单结构,同时提高了它的表达能力。

32.1 模型

  1. 这里描述了一个新颖的模型架构 DCN-V2 来学习显式特征交互和隐式特征交互。DCN-V2 从一个 embedding layer 开始,然后是一个包含多个 cross layercross network (用于建模显式特征交互),然后结合一个深度神经网络(用于建模隐式特征交互)。

    DCN-V2 中的改进对于将 DCN 用于高度优化的生产系统至关重要。DCN-V2 极大地提高了 DCNweb-scale的生产数据中在建模复杂的显式的交叉项的表达能力,同时保持其优雅的公式,便于部署。DCN-V2 所建模的函数族是 DCN 所建模的函数族的严格超集。

    模型整体架构如下图所示,有两种方式将 cross networkdeep network 结合起来:堆叠式、并行式。此外,考虑到 cross layer 的低秩性质,我们建议利用 low-rank cross layer 的混合来实现模型性能和效率之间更健康的 trade-off

  2. Embedding Layerembedding layercategorical (sparse) 特征和 dense 特征的组合作为输入,并输出 x0Rd 。它遵循与 DCN 类似的 setting 。与 DeepFM, NFM, xDeepFM, DLRM, IPNN, FM 不同的是,DCN-V2 接受任意的 embedding size 。这对于词表规模从 O(10)O(108) 不等的工业级推荐器尤为重要。

  3. Cross NetworkDCN-V2 和核心在于 cross layer,它创建了显式的特征交叉。其中第 (l+1)cross layer如下所示:

    (82)xl+1=x0(Wlxl+bl)+xl

    其中:

    • x0Rdbase layer ,它包含原始的一阶特征,通常被设置为 embedding layer
    • xl,xl+1Rd 分别代表第 (l+1) 个交叉层的输入和输出。
    • WlRd×d,blRd 是待学习的权重矩阵和 bias 向量。
    • 为逐元素乘法。

    下图展示了一个单独的 cross layer

    对于一个 l 层的 cross network ,最高的多项式阶数是 l+1,网络包含了所有的、直到最高阶次 l+1 阶的所有其它阶次的特征交叉。当 W=1w 时,DCN-V2 退化到 DCN

    cross layer 仅能建模有界的多项式类,而其他任何复杂的函数空间只能被近似。因此,我们接下来引入了一个 deep network 来补充数据中固有分布的建模。

    DCN V1 的公式为:xl+1=(x0xl)wl+bl+xl 。相比之下,DCN V2 的公式为:xl+1=x0(Wlxl+bl)+xl 。如果不考虑 biasbl 和残差项 xl ,那么:

    (83)DCN V1 : xl+1,i=x0,i×j=1dxl,j×wl,jDCN V2 : xl+1,i=x0,i×j=1dxl,j×Wl,i,j

    即:DCN V1 中,xl,j 的权重在所有输出位置 i 上共享;DCN V2 中,xl,j 的权重在所有输出位置 i 行独立。因此,DCN V2 的模型容量更高。

    DCN V2 的核心:用 W 代替 w 。读者感觉没什么创新点。

  4. Deep Network:第 ldeep layer 的公式为:

    (84)hl+1=f(Wlhl+bl)

    其中:

    • hlRdl,hl+1Rdl+1 为第 ldeep layer 的的输入和输出。
    • WlRdl×dl+1,blRdl+1 为待学习的权重矩阵和 bias 向量。
    • f() 为逐元素的激活函数,我们将其设置为 ReLU
  5. Deep and Cross Combination:我们提出了两种结构:

    • Stacked Structure(如 Figure 1a):输入 x0 被馈入 cross network,然后是 deep network,最后是输出层输出 xfinal 。整体结构为 fdeepfcross(x0)
    • Parallel Structure (如 Figure 1b):输入 x0 被并行馈入到 cross networkdeep network,然后这两个网络的输出拼接起来作为最终输出 xfinal 。整体结构为 fdeep(x0) concat fcross(x0)

    prediction 为:

    (85)y^i=σ(wlogitxfinal)

    其中:wlogit 为待学习的参数,σ(x)sigmoid 函数。

    对于损失函数,我们使用 logloss(带正则化项)。注意,DCN-V2 本身是对 prediction-task 和损失函数无关的。

  6. Cost-Effective Mixture of Low-Rank DCN:对于那些生产模型来说,模型容量往往受到有限的 serving 资源、严格的 latency 要求的限制。因此,我们寻求使 DCN-v2 更具 cost-efficient 的方法。

    DCN-V2 结构简单,计算瓶颈在于 matrix-vector 乘法,这使得我们可以利用矩阵近似技术来降低成本:通过两个低秩矩阵 U,VRd×r 来逼近稠密矩阵 WRd×d。当 rd/2 时,成本会降低。然而,当矩阵 M 显示出较大的奇异值 gap 或快速的谱衰减时,该方法是最有效的。在许多情况下,我们确实观察到所学的矩阵 W 在实践中在数值上是低秩的。

    下图 (a) 显示了 DCN-V2 中来自生产模型的学到的矩阵 W 的奇异值衰减模式。可以看到,初始的矩阵相比,学到的矩阵显示出更快的谱衰减模式。给定奇异值 σ1σ2σn,定义秩 RT 为:

    (86)RT=argmink(σk<T×σ1)

    因此,我们定义第 (l+1)cross layer 的低秩版本为:

    (87)xl+1=x0(Ul(Vlxl)+bl)+xl

    其中:Ul,VlRd×r,rd

    这个新的公式有两种解释:

    • 我们在一个子空间中学习特征交叉。

      这个解释启发我们采用Mixture-of-Experts: MoE 的思想。MoE-based 模型由两部分组成:experts (通常是一个小网络)和gating (输入的一个函数)。在我们的案例中,我们不是依靠一个单一的专家来学习特征交叉,而是利用多个这样的专家,每个专家在不同的子空间学习特征交互,并使用门控机制(取决于输入 x )自适应地结合学到的交叉。所得到的低秩交叉层的 mixture 的公式如下(如下图 (b) 所示):

      (88)xl+1=i=1KGi(xl)Ei(xl)+xlEi(xl)=x0(Ul(i)((Vl(i))xl)+bl)

      其中:

      • K 为专家的数量。
      • Gi():RdR 为门控函数,通常是 sigmoidsoftmax 函数。
      • Ei():RdRd 为学习特征交叉的第 i 个专家。

      Gi() 针对每个输入 x 从而动态地为每个专家进行加权。当 Gi()=1 时,上式退化为:xl+1=x0(Ul(Vlxl)+bl)+xl

    • 我们将输入 x 投影到低维的 Rr,然后再投影回 Rd

      这个解释激励我们利用投影空间的低维性质。我们不是立即从 Rd 投影回 Rd,dd,而是在投影空间中进一步应用非线性变换来 refine the representation

      (89)Ei(xl)=x0(Ul(i)g(Ci(i)g((Vl(i))xl))+bl)

      其中:g() 为非线性激活函数。

  7. 我们旨在有效利用固定的内存/时间预算来学习有意义的特征交叉。以下公式从上到下都代表一个严格意义上的、逐渐增大的函数族:

    (90)xl+1=x0(Wlxl+bl)+xlxl+1=x0(Ul(Vlxl)+bl)+xlxl+1=i=1KGi(xl)Ei(xl)+xl,Ei(xl)=x0(Ul(i)((Vl(i))xl)+bl)xl+1=i=1KGi(xl)Ei(xl)+xl,Ei(xl)=x0(Ul(i)g(Ci(i)g((Vl(i))xl))+bl)

    这一组模型有比较大的工程参考意义,它描述了从简单模型到复杂模型的升级路径,同时也具有一定的物理意义。

  8. 算法复杂度:令 dembedding sizeLccross layers 数量, K 为低秩 DCN 专家的数量。此外,我们假设每个专家具有相同的小维度 rcross network 的时间复杂度和空间复杂度为 O(d2Lc) ,对于 mixDCN(低秩 DCN) 的时间复杂度和空间复杂度为 O(2drKLc)

  9. bit-wisefeature-wise 的角度来看,对于 l 层的 cross networkcross network 能够创造出直到 l+1 阶的所有的特征交互。

    DCN 相比,DCN-V2 用更多的参数来刻画相同的多项式类,表达能力更强。此外,DCN-V2 中的特征交互具有更强的表达能力,可以从 bit-wisefeature-wise 两方面来看;而在DCN 中,它只是从 bit-wise 的角度来看。

32.2 实验

  1. "CrossNet""CN" 代表 cross network"Mix" 代表低秩混合版本。

32.2.1 人工合成数据集

  1. 大多数工作只研究了具有未知交叉模式和噪音的数据的公共数据集。很少有工作在一个干净的环境中用已知的 ground-truth 模型进行研究。因此,重要的是要了解:

    • 在哪些情况下,传统的神经网络会变得没有效率。
    • 在我们提出的模型 DCN-V2 中每个组件的作用。

    我们用 DCN 模型中的 cross network 来表示那些特征交叉方法,并与工业推荐系统中常用的 ReLU 进行比较。为了简化实验和便于理解,我们假设每个特征 xiR ,单项式 x1α1x2α2xdαd 代表一个 αd=|α|1 阶的特征交叉。

  2. 难度增加时的性能:仅考虑二阶特征交叉,令 ground-truth modelf(x)=|α|1=2wαx1α1x2α2xdαd 。学习 f(x) 的难度取决于:

    • 稀疏性 (wα=0):交叉的数量。
    • 交叉模式的相似性(Var(wα) 来刻画):意味着一个特征的变化会同时影响大多数特征交叉达到多大程度。

    因此,我们创建了难度不断增加的人工合成数据集:

    (91)f1(x)=x12+x1x2+x3x1+x4x1f2(x)=x12+0.1x1x2+x2x3+0.1x32f3(x)=(i,j)Swi,jxixj,xR100,|S|=100

    其中: S 和权重 wi,j 都是随机选择的,xi 为区间 [-1, 1] 之间均匀采样的。

    下表报告了 5 次运行和 model size 的平均 RMSE 。可以看到:

    • 当交叉模式很简单时(即,f1 ),DCN-V2DCN 都很有效。
    • 当模式变得更加复杂时(即,f3),DCN-V2 仍然准确,而 DCN 则准确性下降了。
    • 即使采用更宽更深的结构,DNN 的性能仍然很差。这表明 DNN 在建模单项式模式时效率不高。

  3. 每个组件的作用:我们还分别对 3 阶和 4 阶的同质多项式进行了消融研究。对于3 阶和 4 阶,我们从 xR50 中随机选择 20 个交叉项。下图展示了层深度对于平均 RMSE 的影响。

    • 显然,x0(Wlxl+bl) 在第 l1 层建模了 l 阶交叉,这在第 2 层对 3 阶多项式取得的最佳性能得到验证(4 阶多项式也是类似的)。在其他层,性能明显下降。
    • DCN (红色虚线)在复杂的交叉模式建模方面的有限表达能力。

  4. 总而言之,ReLU (即,ReLU 激活函数的 DNN)在捕获显式的特征交叉(乘法关系)方面效率不高,即使有更深更大的网络。DCN 准确地捕捉到了简单的交叉模式,但在更复杂的模式中却失败了。DCN-V2 对于复杂的交叉模式仍然是准确和有效的。

32.2.2 真实数据集

  1. 数据集:

    • Criteo:包含 7 天内的用户日志,包含 45M 个样本和 39 个特征。我们使用前6 天的数据进行训练,并将最后一天的数据随机平均分成验证集和测试集。我们对 13dense 特征执行 log 归一化(feature-2log(x+4) ,其它为 log(x+1) ),并且嵌入剩下的 26categorical feature
    • MovieLen-1M:包含 740k 个样本和 7 个特征。每个训练样本包括一个 <user-features, movie-features, rating> 三元组。我们将任务形式化为一个回归问题:所有一分和两分的评分都被归一化为 0 、四分和五分被归一化为 1、三分被删除。使用和嵌入 6non-multivalent categorical feature 。数据被随机分成 80% 用于训练、10% 用于验证、10% 用于测试。
  2. baseline 方法:SOTAfeature interaction learning 算法,如下表所示。

  3. 实现细节:所有 baseline 和我们的方法都在 TensorFlow v1 中实现。为了公平比较,除了特征交互组件,所有模型的实现都是相同的。

    • embedding:除了 DNNDCN 模型,所有的 baseline 都要求每个特征的 embedding size 是相同的。因此,我们将所有的模型固定为 Avgvocab(6×(vocab cardinality)1/4)Criteo39Movielen-1M30 )。

    • optimizationAdam 优化器,batch size = 512MovieLen batch size = 128)。权重以 He Normal 来初始化,bias 被初始化为零,梯度被截断为范数 10 。对参数采用 decay = 0.9999 的指数移动平均。

    • 超参数调优:对于所有的 baseline ,我们对超参数进行了粗粒度(大范围)的网格搜索,然后再进行细粒度(小范围)的搜索。为了确保可重复性和减少模型方差,对于每个方法和数据集,我们报告了最佳配置的 5 次独立运行的均值和标准差。我们在下面描述了 Criteo 的详细设置。对于 MovieLens ,我们也遵循类似的过程。

      对于 Criteo 的所有 baseline

      • 学习率调优范围:对数尺度上从 104 调优到 101 、然后在线性尺度上从 104 调优到 5×104
      • 训练步数调优范围:{150k, 160k, 200k, 250k, 300k}
      • 隐层深度调优范围:{1, 2, 3, 4}
      • 隐层维度调优范围:{562, 768, 1024}
      • 正则化参数调优范围: {0,3×105,104}

      每个模型自己的超参数:

      • DCN:交叉层的数量调优范围 {1, 2, 3, 4}
      • AutoInt:注意力层的数量调优范围 {2, 3, 4}attention embedding size 调优范围 {20, 32, 40}attention head 数量调优范围 {2, 3} ;残差连接调优范围 {enable, disable}
      • xDeepFMCIN layer size 调优范围 {100, 200}CIN layer depth 调优范围 {2, 3, 4} ,激活函数为恒等映射,计算为 directindirect
      • DLRMbottom MLP layer size 和数量的调优范围 {(512,256,64), (256,64)}
      • PNN:我们运行了 IPNNOPNNPNN* ,对于后两者,kernel type 调优范围 {full matrix, vector, number}

      对于所有的模型,参数总数上限为 10242×5 ,从而限制搜索空间并避免过于昂贵的计算。

  4. DCN-V2baseline 比较结果:每个模型的最佳 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 在点积层之后省略了一阶稀疏特征。
      • 对于高阶方法,xDeepFMAutoIntDCNCriteo 上的表现相似;而在 MovieLens 上,xDeepFMLogloss 上表现出很高的方差。
      • DCN-V2Criteo 上取得了最好的性能,它显式地建模三阶特征交互。DCN-Mix 有效地利用了内存,并在保持准确性的同时减少了 30% 的成本。单独的 CrossNet 在两个数据集上的表现都优于 DNN
    • DNN 的比较:我们调优了 DNN 模型,并使用了更大的 layer size 。令我们惊讶的是,DNN 的表现与大多数 baseline 相差无几,甚至超越了某些模型。

      我们的假设是:那些来自 baseline 的显式特征交叉的模型并不是以一种富有表达能力、以及易于优化的方式建立的。前者使其性能容易被具有大容量的 DNN 所匹配,后者则容易导致可训练性问题从而使模型不稳定。因此,当与 DNN 组合时,整体性能被DNN 组件所支配。

      • 在表达能力方面,考虑二阶方法。PNN 的模型比 DeepFMDLRM 更具有表达能力,这导致它在 MovieLen-1M 上的表现更出色。这也解释了 DCNDCN-V2 相比性能较差的原因。

      • 在可训练性方面,某些模型可能天生就比较难训练,导致性能不尽如人意。

        Criteo 上,PNN 的平均性能与 DNN 相当。这是由 PNN 的不稳定性造成的。虽然它的最好成绩比DNN 好,但它在多次试验中的高标准差推高了平均损失。

    • 模型效率:

      • 对于大多数模型,FLOPS 大约是参数数量的 2 倍。然而,对于 xDeepFMFLOPS 要高出参数数量一个量级,这使得它在工业规模的应用中难以部署。
      • 在所有的方法中,DCN-V2 提供了最好的性能,同时保持了相对的效率。
      • DCN-Mix 进一步降低了成本,在模型效率和质量之间取得了更好的 trade-off

  5. 超参数研究:

    • Depth of Cross Layer:根据设计,cross network 捕获的最高阶特征交叉随着层深的增加而增加。如图 Figure 5 (a) 所示:

      • 随着cross network 的加深,质量有了稳定的提高,表明它能够捕捉到更多有意义的交叉。
      • 然而,当使用更多的层时,改善的速度放缓了。这表明高阶交叉的贡献比低阶交叉的贡献要小。

      我们还用一个同样大小的 DNN 作为参考。当有 ≤2 层时,DNN 的表现优于交叉网络;当有更多层时,cross network 开始缩小性能差距,甚至优于 DNN 的表现。

    • 矩阵的秩:模型是 3 个交叉层,然后是 3512-size ReLU 层。如图 Figure 5 (b) 所示:

      • r 小于 4 时,性能与其他 baseline 持平。
      • r4增加到 64 时,LogLoss 几乎随 r 线性下降(即,模型的改进)。
      • r64 进一步增加到满时,LogLoss 的改善速度减慢了。

      我们把 64 称为 rank 阈值。从 64 开始的明显放缓表明:刻画特征交叉的重要信号可以在前 64 个奇异值中捕获。

    • 专家数量:我们观察到:

      • 表现最好的setting(专家数量、gate 类型、激活函数类型)受到数据集和模型架构的影响。
      • 每种 setting 的最佳表现模型产生了相似的结果。更多的 lower-rank experts 并没有比单个 higher-rank expert 表现更好,这可能是朴素的 gating 函数、以及采取的 optimizations 所导致。我们相信更复杂的 gatingoptimization 会在 mixture of experts 架构下产生更好的结果。

  6. 模型可视化:DCN-V2 中的权重矩阵 W 确切地揭示了模型学到的重要特征交叉。假设第 i 个特征被嵌入为 xi ,那么 block-wise 视图(由 Wi,j 所刻画)展示了特征 xixj 之间交互的重要性:

    (92)x(Wx)=[x1x2xk][W1,1W1,2W1,kW2,1W2,2W2,kWk,1Wk,2Wk,k][x1x2xk]

    下图展示了第一个交叉层中学到的权重矩阵 W 。行/列代表特征。在图 (a) 中,由于版权的原因,特征名称被省略了;深色的像素代表较大的权重。在图 (b) 中,每个 block 代表它的 Frobenius 范数。

    • (a) 展示了整个矩阵,橙色方框突出了一些值得注意的特征交叉。非对角线的 block 对应于重要的交叉,这表明 DCN-V2 的有效性。对角线的 block 对应于 self-interaction (即,x2 )。

    • (b) 表现学到的一些强交互,如 Gender × UserIdMovieId × UserId

      (a) 包含的特征更多,因此方块更小;图 (b) 包含很少的特征,因此方块显得很大。

  7. 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)/4low-rank DCN 始终保持了 full-rank DCN-V2 的准确性。