三十三、AFN [2020]

  1. 手工制作有用的交叉特征是昂贵的、耗时的,而且结果可能无法泛化到未见过的特征交互。为了解决这个问题,人们提出了 Factorization Machine: FM ,通过将交叉特征的权重参数化为原始特征的 embedding 向量的内积从而显式地建模二阶交叉特征。为了更加通用,在最初的工作中还引入了涉及高阶特征组合的高阶FMHOFM)。

    尽管有卓越的预测能力,但在 FM/HOFM 中仍有两个关键问题需要回答:

    • 首先,我们应该考虑交叉特征的最大阶次是什么?虽然较大的阶次可以建模更复杂的特征交互,并且似乎是有益的,但交叉特征的数量会随着最高阶次的增加而呈指数级增长,从而导致高的计算复杂度。这限制了高阶交叉特征的实际使用。
    • 其次,在最高阶数下有用的交叉特征集合是什么?必须认识到,并非所有的特征都包含针对估计目标的有用信号,不同的交叉特征通常具有不同的预测能力。不相关的特征之间的交互可以被认为是噪音,对预测没有贡献,甚至会降低模型的性能。AFM 通过用注意力分数来 reweighing 每个交叉特征来区分特征交互的重要性。然而,在复杂的特征组合上应用注意力机制会大大增加计算成本。因此,AFM 旨在仅仅建模二阶的特征交互。

    在论文 《Adaptive Factorization Network: Learning Adaptive-Order Feature Interactions》 中,作者认为现有的因子分解方法未能适当地回答上述两个问题。通常而言,现有的因子分解方法是按照列举、以及过滤的方式来建模特征交互:首先定义最大阶次,然后枚举最大阶次以内的所有交叉特征,最后通过训练来过滤不相关的交叉特征。这个过程包括两个主要的缺点:

    • 首先,预设最大阶数(通常较小)限制了模型在寻找有 discriminative 的交叉特征方面的潜力,因为要在表达能力和计算复杂性之间进行 trade-off
    • 其次,考虑所有的交叉特征可能会引入噪音并降低预测性能,因为并非所有无用的交叉特征都能被成功过滤掉。

    因此,论文 《Adaptive Factorization Network: Learning Adaptive-Order Feature Interactions》 提出了 Adaptive Factorization Network: AFN,从数据中自适应地学习任意阶次的交叉特征及其权重。其关键思想是:将 feature embedding 编码到一个对数空间中,并将特征的幂次转换为乘法。AFN 的核心是一个对数神经转换层 logarithmic neural transformation layer ,由多个 vector-wise 对数神经元组成。每个对数神经元的目的是:在可能有用的特征组合中,自动学习特征的幂次(即,阶次)。在对数神经转换层上,AFN 应用前馈神经网络来建模 element-wise 的特征交互。与 FM/HOFM 不同的是,AFN 能够自适应地从数据中学习有用的交叉特征,而且最大阶次可以通过数据自动学到。

    论文主要贡献:

    • 据作者所知,他们是第一个将对数转换结构与神经网络结合起来,从而建模任意阶次的特征交互。
    • 基于所提出的对数转换层,作者提出了 AFN 从而从数据中自适应地学习任意阶次的交叉特征及其权重。
    • 作者表明:FM/HOFM 可以被解释为 AFN 的两种特例,并且 AFN 中学到的阶次允许在不同的交叉特征中 rescaling feature embedding
    • 论文在四个公共数据集上进行了广泛的实验。结果表明:所学的交叉特征的阶次跨度很大;与 SOTA 方法相比,AFN 取得了卓越的预测性能。

33.1 背景

  1. Feature Embedding:遵从传统,我们将每个输入样本表示为一个稀疏的向量:

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

    其中:mfeature field 的数量,xi 为第 ifeature fieldrepresentation[,] 为向量的拼接。

    • 由于大多数 categorical features 是稀疏的、高维的,一个常见的做法是将它们映射到低维潜空间中的稠密向量(即,embedding )。具体而言,一个 categorical feature xi 被初始化为一个 one-hot encoded vector ,然后计算 embedding 向量 ei

      (2)ei=Vixi

      其中 Vifeature field iembedding matrix

    • 对于数值特征 xj ,它的 representation 是一个标量 xj 。为了捕获数值特征和 categorical feature 之间的交互,xj 也被转换为同一低维空间中的密集向量:

      (3)ej=vjxj

      其中:vjfield jembedding vector (由该 field 内的所有特征取值所共享)。

    最终我们得到 feature embedding 集合 e={e1,e2,,em} 从而用于 FM 或其他模型。

  2. FMFM 显式建模高维数据的二阶特征交互。从公式上看,FM 的预测为:

    (4)y=<w,x>+j2>j1m<ej1,ej2>

    其中 <,> 为内积。

    直观地,第一项 <w,x> 是原始特征的线性组合,第二项是 feature embeddingpair-wise 内积之和。

    此外,Higher-Order Factorization Machine: HOFM 用于捕获高阶的特征交互:

    (5)y=<w,x>+j2>j1m<ej1,ej2>+j3>j2>j1m<ej1,ej2,ej3>++jn>>j1m<ej1,,ejn>

    其中:n 为交叉特征的最大阶次;内积运算被扩展为多个 feature embeddingelement-wise 的乘积之和。

    HOFM 的时间复杂度为 O(kmn) ,其中 kfeature embedding 的维度。由于计算复杂度高,HOFM 很少被应用于真正的工业系统。

    FMHOFM 的一个共同局限性是:它们以相同的权重来建模所有的特征交互。由于并非所有的交叉特征都是有用的,纳入所有的交叉特征进行预测可能会引入噪音并降低模型性能。

    如前所述,一些方法致力于缓解这一问题:AFM 利用注意力机制为不同的交叉特征分配非均匀的权重,xDeepFM 只为保留的交叉特征学习权重。然而,这些方法引入了额外的成本,并且在模型训练前仍被限制在一个预设的最大特征交互阶次 n 。在实践中,n 通常被设置为一个小值,以使模型大小适中。这样的设计阻碍了寻找具有 discriminative 的高阶交叉特征的机会。

    在本文中,我们建议从数据中自适应地学习任意阶交叉特征。最大阶次和交叉特征集合都将通过模型训练自适应地确定,从而在不牺牲预测能力的前提下实现高计算效率。

  3. Logarithmic Neural Network: LNN:对数神经网络 Logarithmic Neural Network 最初是为了近似 unbounded 的非线性函数而提出的。LNN 由多个对数神经元组成,其结构如下图所示。从形式上看,一个对数神经元可以表述为:

    (6)y=exp(iwilnxi)=ixiwi

    LNN 的理念是将输入转换到对数空间,将乘法转化为加法,除法转化为减法,幂次转化为乘法。尽管多层感知机(multi-layer perceptron: MLP)是众所周知的通用函数逼近器,但当输入无界时,它们在逼近某些函数如乘法、除法和幂次方面的能力有限。相反,LNN 能够在整个输入范围内很好地逼近这些函数。

    在本文中,我们利用对数神经元来自适应地学习数据中交叉特征的每个feature field的幂次。我们强调 LNN 和我们提出的 AFN 之间的三个关键区别:

    • AFN 学到的幂次被应用到 vector-wise level ,并且在相同 field 的所有 feature embedding 之间共享。

    • 我们模型的输入是待学习的 feature embedding 。因此,我们需要使用一些技术来保持梯度稳定,并学习适当的 feature embeddingcombination

    • AFN 中,我们在学到的交叉特征上进一步应用前馈隐层,以增强我们模型的表达能力。

      AFN 有几个显著的缺点:

      • 要求 embedding 为正数,这对模型施加了很强的约束。
      • 由于大多数 embedding 在零值附近,一个很微小的扰动(如计算精度导致的计算误差)就可能对模型产生影响,因此读者猜测模型难以训练。

33.2 模型

  1. AFN 的整体结构如下图所示。

    • Input Layer and Embedding LayerAFNinpyt layer 同时采用 sparse categorical featurenumerical feature 。如前所述,所有的原始输入特征首先被转换为共享潜在空间的 embedding

      这里我们介绍两个实现 embedding layer 的关键技术:

      • 首先,由于我们将对后续的层中的 feature embedding 进行对数转换,我们需要保持 embedding 中的所有数值为正数。

        如何确保 embedding 中的所有数值都是正的?论文没有说明。此外,embedding 非负,这对模型施加了一个很强的约束。然后,即使采用了非负的 embedding,然后对于接近零的 embedding,它的 “对数--指数” 变换非常敏感,一个很微小的扰动(如计算精度导致的计算误差)就可能对模型产生影响,因此读者猜测模型较难训练。

      • 其次,建议在 zero embedding 中加入一个小的正值(如 107)从而避免数值溢出。

      最后,embedding layer 的输出是 positive feature embedding 的一个集合:e={e1,e2,,em}

    • Logarithmic Transformation LayerAFN 的核心是对数转换层 logarithmic transformation layer,它学习交叉特征中每个 feature field的幂(即阶次)。该层由多个 vector-wise 的对数神经元组成,第 jvector-wise 对数神经元的输出为:

      (7)yj=exp(i=1mwi,jlnei)=e1w1,je2w2,jemwm,j

      其中:wi,j 为第 j 个神经元在第 ifeature field 上的系数;ln()exp() 以及幂次 ()wi,j 都是 element-wise 的; 为逐元素乘法。

      对上式的主要观察是:每个对数神经元 yj 的输出能够代表任何交叉特征。例如,当 w1,j=w2,j=1,而 wi,j=0,3im 时,我们有 yj=e1e2,这是前两个原始 feature field 的二阶交叉特征。因此,我们可以使用多个对数神经元来获得任意阶次的不同 feature combination 作为该层的输出。

      注意,系数矩阵 WLTLRm×N 为可学习的参数并且没必要收敛到 01 ,其中 N 为该层的对数神经元的数量。

    • Feed-forward Hidden Layers and Prediction:在对数转换层上,我们堆叠了几个全连接层从而组合所得到的交叉特征。

      • 我们首先将所有的交叉特征拼接起来作为前馈神经网络的输入:

        (8)z0=[y1,y2,,yN]

        其中: N 为前一层的对数神经元的数量,[,] 表示向量拼接操作。

      • 然后我们将 z0 馈入到 L 个隐层:

        (9)z1=ReLU(W1z0+b1)zL=ReLU(WLzL1+bL)

        其中:WLbL 分别表示第 L 层的权重矩阵和偏置向量。

      • 最后,隐层的输出 zL 被转换为最终预测值 y^

        (10)y^=wpzL+bp

        其中:wp,bp 分别表示 prediction layer 的权重向量和偏置。

  2. Optimization:目标函数针对不同的任务(分类、回归、ranking )而做出相应的选择。常见的目标函数是对数损失:

    (11)Logloss=1K[i=1Kyilogσ(y^i)+(1yi)log(1σ(y^i))]

    其中:K 为训练样本数量,σ()sigmoid 函数。

    我们采用 Adam 优化器进行随机梯度下降。此外,我们对logarithmic transformationexponential transformation 和所有隐层的输出进行 batch normalization: BN 。有两个原因:

    • 首先,feature embedding e 通常被初始化并被优化为接近于零。在对数变换后, embedding 往往涉及大的负值,并有显著的方差,这对后续几层的参数优化是有害的。由于 BN 可以缩放并 shift 输出为归一化的数值,因此它对 AFN 的训练过程至关重要。
    • 其次,我们在对数转换层之后采用多层神经网络。对隐层的输出进行 BN 有助于缓解协方差漂移问题,从而导致更快的收敛和更好的模型性能。
  3. Ensemble AFN with DNN:之前的工作(Wide&DeepDeepFMxDeepFM)提出将基于交叉特征的模型(如 FM )的预测结果与基于原始特征的神经方法的预测结果进行 ensemble ,以提高性能。类似地,我们也可以将 AFN 与深度神经网络进行结合。为了执行AFN 和神经网络之间的 ensemble ,我们首先分别训练这两个模型。之后,我们建立一个 ensemble 模型来结合两个训练好的模型的预测结果:

    (12)y^ensem=w1×y^AFN+w2×y^DNN+b

    其中:y^AFN,y^DNN 分别为训练好的 AFNDNN 的预测结果,w1,w2 分别为相应的系数,b 为偏置项。

    ensemble model 可以通过 logloss 损失来进行训练。我们把这个 ensemble 模型称为 "AFN+"

    我们的 ensemble 方法与DeepFM 使用的方法有些不同:DeepFMfeature embeddingFMDNN 之间共享,而我们将 AFNDNNembedding layer 分开从而避免干扰。主要的原因是:与 DeepFM 不同,AFN 中的 embedding value 的分布应该始终保持 positive ,这和 DNNembedding value 的分布相差甚远。

    众所周知,在 CTR 预测任务中,DNN 模型的参数主要集中在 embedding table。这里用到了两套 embedding table ,模型参数翻倍。

    根据我们的实验,这种分离方法略微增加了模型的复杂性,但会带来更好的性能。

  4. 讨论:

    • 理解 AFN 中的阶次:AFN 通过对数转换层学习交叉特征中每个特征的阶次。由于对数转换层的权重矩阵 WLTL 没有限制,学到的特征阶次可以是小数或负值。为了理解 AFN 学到的特征阶次,我们借鉴了 field-aware factorization machine: FFM 的一些思想。

      FFM 中,每个特征都关联 mfeature embedding ,其中 mfeature field 的数量。FFMFM 的区别在于,每个特征在与不同 field 的其它特征进行交互时采用不同的 embeddingFFM 的启示是:要避免不同 field 的特征空间之间的干扰。 在 AFN 中,每个特征的阶次可以被看作是相应 feature embedding 的一个比例因子。例如,考虑一个取值从 01 之间的 embedding ,大于 1 的阶次会缩小 embedding 值,而小于 1 的阶次则扩大 embedding 值。通过与 FFM 的类比,当与不同 field 的其它特征进行交互时,可以利用 AFN 学到的阶次来 rescale feature embedding

    • FMHOFM 的关系:我们首先表明,FM 可以被看作是AFN 的一个特例。根据公式 yj=exp(i=1mwi,jlnei)=e1w1,je2w2,jemwm,j ,通过适当设置每个 feature embedding 的幂次 wi,j ,对数神经元的输出 yj 能够表示任何二阶交叉特征。假设我们有足够多的对数神经元来产生所有的二阶交叉特征,并且后续的隐层在 element-level 上近似于一个简单的 sum 函数,那么 AFN 可以准确地恢复 FM

      类似地,当我们有足够多的对数神经元来提供最大阶次内的所有交叉特征,并允许隐层近似 sum 函数时,AFN 能够恢复HOFM

    • 时间复杂度:令 km 分别表示 feature embedding 维度和 feature field 数量。在 AFN 中,对数神经元可以在 O(km) 时间内计算出来。假设有 N 个对数神经元,则对数变换层的计算复杂度为 O(kmN) 。考虑到隐层的额外成本,AFN 的总时间复杂度是 O(kmN+nW) ,其中 nW 是隐层的权重总数。

      至于 HOFM ,假设 n 是预先定义的特征组合的最大阶次,它需要 O(kmn) 时间来提供预测,通过动态编程可以减少到 O(kmn2)。注意,HOFM 的时间复杂度与交叉特征的最大阶次 n 高度相关,而在 AFN 中,由于其自适应的交叉特征生成方式,NnW 都仅由模型结构决定。根据经验,在最佳设置下,训练 AFN 的时间成本与 CIN 接近。

33.3 实验

  1. 数据集:

    • Criteo:包含 13 个数值特征和 26categorical feature
    • Avazu:包含 22feature field ,包括用户特征和广告属性。
    • Movielens:我们将每个 tagging record(user ID, movie ID, tag) 三元组)转换为一个特征向量来作为输入。target 为:用户是否为电影分配了一个特定的 tag
    • Frappe:我们将每条日志(user ID, app ID, context features )转换为一个特征向量来作为输入。target 为:用户是否在上下文中使用过该 app

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

  2. 评估指标:AUC, Logloss

  3. baseline 方法:

    • 一阶方法(对原始特征进行线性相加):Linear Regression: LR
    • 考虑二阶交叉特征的 FM-based 方法:FMAFM
    • 建模高阶特征交互的高级方法:HOFMNFMPNNCrossNetCIN
    • 涉及 DNN 作为组件的 ensemble 方法:Wide&Deep (为公平比较,我们省略了手工制作的交叉特征),DeepFMDeep&CrossxDeepFM
  4. 实现细节:

    • 使用 Tensorflow 实现、采用 Adam 优化器、学习率 0.001mini-batch size = 4096
    • 对于 Criteo/Avazu/Movielens/Frappe 数据集,默认的对数神经元数量 N 分别被设置为 1500/1200/800/600
    • AFN 中默认使用 3 个隐层、每层 400 个神经元。
    • 为了避免过拟合,根据验证集的 AUC 进行 early-stopping
    • 在所有的模型中,我们将 feature embedding 的维度设置为 10
    • 我们对所有涉及 DNN 的方法使用相同的神经网络结构(即 3 层:400-400-400 )以进行公平的比较。
    • HOFM 的最高阶次设为 3
    • 所有其他的超参数都是在验证集上调优的。
    • 对于每个经验结果,我们运行实验 3 次并报告平均值。
  5. 单模型的比较:单模型的比较如下表所示。可以看到:

    • AFN 在所有的数据集上产生了最好的或有竞争力的性能。

      • 对于 CriteoFrappeAFN 比第二好的模型 CIN 要好得多。
      • 对于MovielensAFN 取得了第二好的性能。
      • 对于 AvazuAFN 取得了最好的 logloss ,而 AUC 适中。

      关于较简单的模型在 MovielensAvazu 上的良好表现,我们猜测这两个数据集的预测更多依赖于低阶交叉特征,AFN 的优势因此受到限制。请注意,Movielens 只包含三个 feature field ,找到有用的高阶交叉特征的好处可能是微不足道的。

    • AFN 在所有数据集上的表现一直优于 FMHOFM ,这验证了学习自适应阶次的交叉特征比建模固定阶次的交叉特征可以带来更好的预测性能。

    • 利用高阶交叉特征的模型通常优于基于低阶交叉特征的模型,特别是当feature field 的数量很大时。这与高阶特征交互具有更强的预测能力的直觉是一致的。

    AFN 并没有在所有数据集上展示出显著的提升。

    ensemble 模型的比较:ensemble 模型的比较如下表所示。可以看到:

    • AFN+ 在四个数据集上取得了最佳性能。平均而言,AFN 相比 xDeepFM,在 AUClogloss 上分别取得了 0.0030.012 的改善。

      这表明,AFN 学到的自适应阶次的交叉特征与 DNN 建模的隐式特征交互有很大不同,因此在结合两种不同类型的特征交互进行预测时,性能增益显著提高。

  6. 超参数研究:我们只提供 Frappe 的结果,因为其他三个数据集的结果是相似的。

    • 对数神经元的数量:如下图 (a) 所示:

      • 当神经元的数量变大时,AFN 的性能呈现上升趋势,随后是下降趋势。这表明应该采用适当数量的对数神经元,在表达能力和泛化之间做出权衡,以达到最佳性能。
      • 令人惊讶的是,即使对数神经元的数量少于 5 个,AFN的优势也很稳定。这一结果表明,找到少量的 discriminative 交叉特征对预测的准确性至关重要,而 AFN 对于找到这些关键的交叉特征是有效的。
    • 隐层深度:如下图 (b) 所示:

      • 在学到的自适应阶次的交叉特征上堆叠隐层有利于提高模型性能。
      • 值得注意的是,AFN 的性能并不高度依赖于隐层的数量。当深度被设置为0 时,AFN 仍然可以取得相当好的结果。这证明了对数转换层在学习 discriminative 交叉特征方面的有效性。
    • 隐层神经元数量:如下图 (c) 所示:

      • AFN 的性能首先随着神经元数量的增加而增长。这是因为更多的参数给模型带来了更好的表达能力。
      • 当隐层的神经元数量超过 600 时,性能开始下降,这是由于过拟合导致的。

  7. 学到的阶次:下图显示了在 Criteo 数据集上整个训练过程中特征阶次的变化。

    • 从下图 (a) 可以看到:各个 feature field 的阶次通常以 0 为中心,在 [-1,1] 的范围内。这与典型的 factorization-based 的方法截然不同,在这种方法中,每个特征的阶次要么为 0 、要么为 1 。学到的特征阶次的 relaxation 允许原始 feature embedding 在组成不同的交叉特征时被 rescale

    • 下图 (b) 给出了交叉特征的阶次的分布,其中交叉特征的阶次是组成它的各个特征的阶次的绝对值之和来计算的。可以看到:在训练过程中,学到的交叉特征的阶次被逐渐优化。

      最终的交叉特征阶次分布在一个很宽的范围内(从 410 ),而不是像许多 factorization-based 方法那样被固定在一个预定义的值上(例如 2 )。

  8. 案例研究:我们对 Frappe 数据集进行了案例研究。为了说明问题,我们将对数神经元的数量限制为 3 个。Figure 4(c) 提供了每个神经元上单个特征阶次的绝对值和总和。

    从图中,我们可以大致推断出,三个交叉特征 (item id, is free, country), (user id, item id), (item id, is free) 在各自的对数神经元中被学习。

    此外,通过 sum 三个神经元的特征阶次,发现最 discriminativefeature fielditem id, is free, user id 。这是合理的,因为 user iditem id 是协同过滤中最常用的特征;而 is free 表示用户是否为 mobile app 付费,是用户对 app 偏好的一个有力指标。

三十四、FGCNN[2019]

  1. CTR 预测任务的关键挑战是如何有效地建模特征交互。FM 及其变体将 pairwise 特征交互建模为潜在向量的内积,并显示出有前景的结果。最近,一些深度学习模型被用于 CTR 预测,如 PINxDeepFM 等。这类模型将原始特征馈入深度神经网络,以显式或隐式的方式学习特征交互。理论上, DNN 能够从原始特征中学习任意的特征交互。然而,由于与原始特征的组合空间相比,有用的特征交互通常是稀疏的,要从大量的参数中有效地学习它们是非常困难的。

    为解决这个困难,Wide & Deep 利用 wide 组件中的特征工程来帮助 deep 组件的学习。在人工特征的帮助下, deep 组件的性能得到了显著的提高。然而,特征工程可能是昂贵的,并且需要领域知识。如果我们能通过机器学习模型自动生成复杂的特征交互,它将更加实用和鲁棒。

    因此,如下图所示,论文 《Feature Generation by Convolutional Neural Network for Click-Through Rate Prediction》 提出了一个自动生成特征的通用框架。原始特征被馈入到机器学习模型(右图中的红框),从而识别和生成新的特征。之后,原始特征和新特征被结合起来,并馈入一个深度神经网络。被生成的特征能够通过提前捕获稀疏的但重要的特征交互来降低深度模型的学习难度。

    自动生成特征的最直接的方法是进行多层感知机Multi-Layer Perceptron: MLP ,并使用隐层的神经元作为生成的特征。然而,如前所述,由于有用的特征交互通常是稀疏的,MLP 很难从巨大的参数空间中学习这种交互。

    作为一种 SOTA 的神经网络结构,卷积神经网络 Convolutional Neural Network: CNN 在计算机视觉和自然语言处理领域取得了巨大成功。在 CNN 中,共享权重、池化机制的设计大大减少了寻找重要局部模式所需的参数数量,它将缓解随后的 MLP 结构的优化困难。因此,CNN 为实现作者的想法(识别稀疏的但重要的特征交互)提供了一个潜在的良好解决方案。然而,直接应用 CNN 可能会导致不满意的性能。在 CTR 预测中,原始特征的不同排列顺序并没有不同的含义。例如,特征的排列顺序是 (Name, Age, Height, Gender) 还是 (Age, Name, Height, Gender) 对描述样本的语义没有任何区别,这与图像和句子的情况完全不同。如果只使用 CNN 抽取的邻居模式 neighbor pattern ,许多有用的 global feature interaction 就会丢失。这也是为什么 CNN 模型在 CTR 预测任务中表现不佳的原因。为了克服这一局限性,作者采用了 CNNMLP ,两者相互补充,学习 global-local 特征交互来生成特征。

    在论文中,作者为 CTR 预测任务提出了一个新的模型,即 Feature Generation by Convolutional Neural Network: FGCNN,它由两个部分组成:特征生成 Feature Generation 、深度分类器 Deep Classifier

    • 在特征生成中,作者设计了一个 CNN+MLP 的结构用来从原始特征中识别和生成新的重要特征。更具体地说,CNN 被用来学习 neighbor feature interaction,而 MLP 被用来重新组合它们从而提取 global feature interaction 。在特征生成之后,特征空间可以通过结合原始特征和新特征来进行扩充。
    • 在深度分类器中,几乎所有 SOTA 网络结构(如 PINxDeepFMDeepFM)都可以被采用。因此,论文的方法与推荐系统中SOTA的模型具有良好的兼容性。为了便于说明,作者将采用 IPNN 模型作为 FGCNN 的深度分类器,因为它在模型的复杂性和准确性之间有很好的权衡。

    在三个大规模数据集上的实验结果表明,FGCNN 明显优于九个 SOTA 的模型,证明了 FGCNN的有效性。在深度分类器中采用其他模型时,总是能取得更好的性能,这表明了所生成的特征的有用性。逐步分析表明,FGCNN 中的每个组件都对最终的性能做出了贡献。与传统的 CNN 结构相比,论文提出的 CNN+MLP 结构在原始特征的顺序发生变化时表现得更好、更稳定,这证明了 FGCNN 的鲁棒性。

    综上所述,论文贡献如下:

    • 确定了 CTR 预测的一个重要方向:通过提前自动生成重要的特征来降低深度学习模型的优化难度,这既是必要的,也是有益的。
    • 提出了一个新的模型 FGCNN 用于自动生成特征和分类,它由两个部分组成:Feature GenerationDeep Classifier。特征生成利用 CNNMLP ,它们相互补充,以识别重要的但稀疏的特征。 此外,几乎所有其他的 CTR 模型都可以应用在深度分类器中,从而根据生成的特征、以及原始的特征进行学习和预测。
    • 在三个大规模数据集上的实验证明了 FGCNN 模型的整体有效性。当生成的特征被用于其他模型时,总是能取得更好的性能,这表明 FGCNN 模型具有很强的兼容性和鲁棒性。
  2. 相关工作:

    • CTR 预测的浅层模型:

      • 由于鲁棒性和效率高,Logistic Regression: LR 模型(如 FTRL )被广泛用于 CTR 预测中。为了学习特征交互,通常的做法是在其特征空间中手动设计 pairwise 特征交互。
      • Poly-2 建模所有 pairwise 特征交互以避免特征工程。
      • Factorization Machine: FM 为每个特征引入了低维向量,并通过特征向量的内积来建模特征交互。在数据稀疏的情况下,FM 提高了建模特征交互的能力。
      • FFM 对每个特征使用多个潜在向量,从而建模与不同 field 特征的交互。

      LRPoly-2 、以及 FM 变体被广泛用于工业界的 CTR 预测中。

    • CTR 预测的深层模型:

      • FNN 使用 FM 来预训练原始特征的 embedding,然后将 embedding 馈入全连接层。

      • 一些模型采用 DNN 来改善 FM ,如 Attentional FMNeural FM

      • Wide & Deep 联合训练一个 wide 模型和一个 deep 模型,其中 wide 模型利用人工特征工程,而 deep 模型学习隐式特征交互。尽管 wide 组件很有用,但特征工程很昂贵,而且需要专业知识。

      • 为了避免特征工程,DeepFM 引入了 FM Layer (建模二阶交互)作为 wide 组件,并使用 deep 组件来学习隐式特征交互。

      • DeepFM 不同,IPNN (也被称为 PNN )将 FM Layer 的结果和原始特征的 embedding 都馈入 MLP ,从而得到相当好的结果。

      • PIN 没有像 DeepFMIPNN 那样使用内积来建模 pairwise 特征交互,而是使用一个 Micro-Network 来学习每个 feature pair 的复杂特征交互。

      • xDeepFM 提出了一种新颖的 Compressed Interaction Network: CIN ,以显式地建模 vector-wise level 的特征交互。

      • 有一些使用 CNN 进行 CTR 预测的模型:

        • CCPM 应用多个卷积层来探索邻居特征的相关性。CCPM 以一定的排列方式对 neighbor field 进行卷积。由于特征的顺序在 CTR 预测中没有实际意义,CCPM 只能学习邻居特征之间有限的特征交互。
        • 《Convolutional Neural Networks based Click-Through Rate Prediction with Multiple Feature Sequences》中显示,特征的排列顺序对 CNN-based 模型的最终性能有很大影响。因此,作者提出生成一组合适的特征序列,为卷积层提供不同的局部信息。然而,CNN 的关键弱点并没有得到解决。

        在本文中,我们提出了 FGCNN 模型,它将 CTR 预测任务分成两个阶段:特征生成和深度分类器。特征生成阶段通过生成新的特征来增强原始特征空间,而深度分类器可以采用大多数 SOTA 模型从而在增强的特征空间中学习和预测。与传统的CNN 模型预测 CTR 不同,FGCNN 可以利用 CNN 的优势来提取局部信息,并通过引入重组层来重新组合 CNN 学到的不同局部模式的信息来生成新的特征,从而大大缓解了 CNN 的弱点。

        CTR 预测任务中,是否混洗特征的排列顺序,对于 CNN-based 模型会更好?

34.1 模型

  1. 如下图所示,FGCNN 模型由两部分组成:特征生成、深度分类器:

    • 特征生成侧重于识别有用的局部模式和全局模式,以生成新的特征作为原始特征的补充。
    • 深度分类器则通过深度模型在增强的特征空间的基础上进行学习和预测。

    除了这两个组件,我们还有 feature embedding

    根据实验部分的结果,通过 CNN 生成的新特征虽然有效果,但是提升不显著(平均而言不到 0.1%AUC 提升)。

    如果将 CNN 替换为 MLP,那么特征生成组件就是一个 MLP 结构,同时将每一层的输出再投影为新的特征向量。

34.1.1 Feature Embedding

  1. embedding layer 应用于所有原始特征的输入,将原始特征压缩为低维向量。在我们的模型中:

    • 如果一个 fieldunivalent 的(例如,Gender=Male ),它的 embedding 就是该 fieldfeature embedding
    • 如果一个 fieldmultivalent 的(例如, Interest=Football, Basketball ),该 fieldembeddingfeature embeddings 之和。

    正式而言,在一个样本中,每个 field i1infnffield 数量)被表示为一个低维向量 eiRk,其中 kembedding size 。因此,每个样本可以表示为一个 embedding 矩阵 E=(e1,e2,,enf)Rnf×k 。在 FGCNN 模型中,embedding 矩阵 E 可以在特征生成和深度分类器中得到利用。

    为了避免更新参数时梯度方向的不一致,我们将为深度分类器引入另一个 embedding 矩阵 ERnf×k ,而 E 用于特征生成。

    这意味着需要引入两套 embedding table,模型的参数要翻倍(模型参数被 embedding table 所主导)。

    如果 EE 共享,性能会下降多少?

34.1.2 Feature Generation

  1. 如前所述,从原始特征中生成新的特征有助于提高深度学习模型的性能。为了实现这一目标,特征生成组件设计了一个适当的神经网络结构来识别有用的特征交互,然后自动生成新的特征。

    正如前面所论证的,由于以下原因,单独使用 MLPCNN 无法从原始特征中生成有效的特征交互:

    • 首先,在原始特征的组合空间中,有用的特征交互总是稀疏的。因此,MLP 很难从大量的参数中学习它们。
    • 其次,虽然 CNN 可以通过减少参数的数量来缓解 MLP 的优化困难,但它只产生 neighbor feature interaction ,可能会失去许多有用的 global feature interaction

    为了克服单独应用 MLPCNN 的弱点,我们将 CNNMLP 相互补充从而进行特征生成。下图显示了一个 CNN + Recombination 结构的例子,以捕捉 global feature interaction 。可以看到:CNN 用有限的参数学习有用的 neighbor feature pattern ,而重组层(这是一个全连接层)根据 CNN 提供的 neighbor pattern 生成 global feature interaction 。因此,通过这种神经网络结构可以有效地生成重要的特征。相比直接应用 MLP 生成特征,这种方法的参数更少。

    纵向为不同的 field,横向为不同的 embedding 维度,卷积核为 K×1 ,这会在每个 embedding 维度上聚合相连的 Kfield

    最后一步的结果是说明:Recombination 会把卷积结果进行投影并减少通道数。

  2. 卷积层:每个样本通过 feature embedding 被表示为 embedding 矩阵 ERnf×k 。为方便起见,将 embedding 矩阵 reshapeE1Rnf×k×1 作为第一个卷积层的输入矩阵,即通道数为 1 。为了捕获 neighbor feature interaction ,用非线性激活函数的卷积层对 E1 进行卷积,卷积层的输出记做 C1Rnf×k×mc1 。其中,卷积核的尺寸为 h1×1、输出通道数为 mc1 、输入通道数为 1 ,激活函数为 tanh()h1 为卷积核的高度(代表对相连的多少个 field 进行卷积)。

  3. 池化层:在第一个卷积层之后,应用一个 maxpooling 层来捕获最重要的特征交互,从而减少参数的数量。令 hp1 为池化层的高度(池化层的宽度为 1 ),那么第一个池化层的输出为 S1R(nf/hp1)×k×mc1 。第 i 个池化层的池化结果将是第 (i+1) 个卷积层的输入:Ei+1=Si

  4. Recombination LayerS1 包含了 neighbor feature 的模式。由于 CNN 的性质,如果 S1 被视为生成的新特征,全局性非邻接的特征交互将被忽略。因此,我们引入了一个全连接层来重新组合局部的 neighbor feature pattern 并生成重要的新特征。

    我们将 S1 展平为一维向量 s1Rnfk/hp1mc1 ,那么全连接层的权重矩阵为:W1R(nfk/hp1×mr1)×(nfk/hp1×mc1)bias 向量为 b1R(nfk/hp1×mr1) 。生成的新特征为:

    (13)R1=tanh(W1s1+b1)R(nf/hp1)×k×mr1

    其中 mr1 为重组层的输出通道数。

    注意,这里是把全连接层的结果又 reshape 回来。

  5. 拼接:新的特征可以通过多次执行 CNN+Recombination 来产生。假设有 nc 组卷积层、池化层、以及重组层。通过 Feature Generation 生成的所有的新特征为:

    (14)Rall=(R1,R2,,Rnc)R(i=1ncnf/hpi×mri)×k

    注意,这里也有 reshape 操作。

    原始特征和新特征的拼接为:

    (15)Econcat=(E,Rall)

    其中 E 是用于深度分类器的原始特征的 embedding 矩阵。

    Ni=nf×(mri/hpi) 为第 i 个重组层得到的新 embedding 的数量,它等于 nf 乘以一个系数,该系数为重组层的输出通道数除以池化层的高度。令 N=i=1ncNi ,则 N 表示所有新生成的特征数量。

34.1.3 Deep Classifier

  1. Econcat 被馈入深度分类器中,其目的是进一步学习原始特征和新生成特征之间的交互。这里我们采用 IPNN 模型作为深度分类器的网络结构,因为它在模型复杂性和准确性之间有很好的权衡。事实上,任何先进的网络结构都可以被采用,这表明 FGCNN 与现有工作的兼容性。

  2. 网络结构:IPNN 模型结合了 FMMLP 的学习能力。它利用一个 FM layer,通过内积运算从 embedding 向量中抽取 pairwise 特征交互。之后, input featureembeddingFM layer 的结果被拼接起来,并馈入 MLP 进行学习。根据 IPNN 原始论文的评估,IPNN 的性能比 PIN 略差,但 IPNN 的效率更高。我们将对 IPNN 模型的网络结构进行说明。

    如下图所示,增强的 embedding 矩阵 Econcatpairwise 特征交互由 FM layer 来建模。 Rallembedding 向量个数为 NEnf 个特征向量,因此 EconcatN+nf 个特征向量。FM layer 的输出维度为 (N+nf)(N+nf1)/2 ,因为 embedding 向量之间两两内积。

    假设 FM layer 的输出为 efmR(N+nf)(N+nf1)/2 ,则我们将它和展平后的 Econcat 进行拼接,然后馈入 MLP

    (16)h0=[econcat,1||||econcat,N+nf||efm]R(N+nf)k+(N+nf)(N+nf1)/2

    其中 [||] 表示向量拼接。

  3. BN 层:在 FGCNN 中,Batch Normalization 应用在每个激活函数之前从而加速模型训练。

  4. 目标函数:最小化交叉熵:

    (17)L=[ylogy^+(1y)log(1y^)]

    其中: yground-truthy^ 为预测的点击率。

34.1.4 复杂度分析

  1. 空间复杂度:空间复杂度由三部分组成,即 Feature EmbeddingFeature GenerationDeep Classifier

    • Feature Embedding:包含两个 embedding 矩阵(一个用于 feature generation、一个用于 deep classifier ),总的参数规模为 s0=2tf×k ,其中 tf 为总的 vocab size

    • Feature Generation:第 i 个卷积层有 himci1mci 个参数,其中 hi 为卷积核的高度;第 i 个重组层有 (nfk/hpi)2mcimri 个参数。因此,这里的参数数量为:

      (18)i=1nchimci1mci+(nfk/hpi)2mcimri
    • Deep Classifier:令 T=N+nf 表示 Feature Generation 之后所有的 embedding 数量(包括原始的、以及新生成的)。那么 Deep Classifier 的空间复杂度为:

      (19)s2=O(T(T1)+2Tk2×H1+i=2nhHiHi1)

      其中 Hi 为第 iMLP 的隐层维度,nh 为层数。

    最终的空间复杂度大约为 O(tfk+N12k2+T2H1+i=1nhHiHi1),其中 Ni=nf/hpimri 为第 i 个重组层得到的新 embedding 的数量。(具体推导见原始论文)。

  2. 时间复杂度:

    • Feature Generation:时间复杂度约为 O(N1ki=1ncmci1hi+N12k2) 。具体推导见原始论文。
    • Deep Classifier :时间复杂度约为 O(T2H1)+i=2nhO(HiHi1) 。具体推导见原始论文。

    最终的时间复杂度约为 O(N1ki=1ncmci1hi+N12k2+T2H1+i=2nhHiHi1)

    超参数太多了,不太好调优。

34.2 实验

  1. 数据集:Criteo, Avazu, Huawei App Store

    • 对于 Criteo 数据集,我们选择 "day 6-12" 作为训练集,同时选择 "day 13" 进行评估。由于巨大的数据量和严重的类不平衡(即只有 3% 的样本是正样本),我们采用了负采样来保持正负比例接近 1:1 。我们通过分桶从而将 13numerical field 离散化。 field 中出现少于 20 次的特征被设置为 dummy 特征 "other"
    • 对于Avazu数据集,我们以 4:1 的比例随机拆分为训练集和测试集。同时,我们删除了出现少于 20 次的特征以降低维度。
    • 对于 Huawei App Store 数据集,我们用 20180617 ~ 20180623 的日志用于训练,20180624 的日志用于测试。为了减少数据量并调整正负样本的比例,采用了负采样。

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

  2. baselineLR, GBDT, FM, FFM, CCPM, DeepFM, xDeepFM, IPNN, PIN

    Wide & Deep 未参与比较,因为一些 SOTA 的模型(如 xDeepFMDeepFMPIN )在各自的原始论文中显示了更好的性能。我们分别使用 XGBoostlibFFM 作为 GBDTlibFFM 的实现。在我们的实验中,其他 baseline 模型是用 Tensorflow 实现的。

  3. 评估指标:AUC, log loss

  4. 配置:下表给出了每个模型的超参数。

    注意,在 CriteoAvazu 上进行实验时,我们观察到 FGCNN 在深度分类器中使用的参数比其他模型多。为了进行公平的比较,我们也进行了实验,增加其他深度模型的 MLP 中的参数。然而,所有这些模型都不能达到比原始设置更好的性能。原因可能是过拟合的问题,这类模型只是简单地使用原始特征的 embedding 进行训练,但使用的是复杂的结构。另一方面,由于我们的模型增强augment 了特征空间并丰富了输入,因此在深度分类器中更多的参数可以提高我们模型的性能。

    FGCNN 模型中,new 表示 mr。生成的特征数量可以计算为 i=1ncnf/hpimri

    对于 FGCNNbest baseline model,我们改变随机数种子并重复实验 10 次。我们进行 wo-tailed pairwise t-test 来检测 FGCNNbest baseline model 之间的显著差异。

  5. 整体性能:不同模型在测试集上的表现如下,其中下划线数字是 baseline 模型的最佳结果,粗体数字是所有模型的最佳结果。可以看到:

    • 首先,在大多数情况下,非神经网络模型的表现比神经网络模型差。原因是深度神经网络可以学习复杂的特征交互,比没有特征交互建模的模型(即 LR ),或通过简单的内积来建模特征交互的模型(即 FMFFM )要好得多。

    • 其次,FGCNN 在三个被评估的数据集上取得了所有模型中最好的性能。它明显优于最佳 baseline 模型,在 Criteo, Avazu, Huawei App Store 数据集上的 AUC 分别提高了 0.05%, 0.14%, 0.13%logloss 分别改善了 0.09%, 0.24%, 0.79% ),这表明了 FGCNN 的有效性。

    • 第三,在 Criteo, Avazu, Huawei App Store 数据集上,在生成的新特征的帮助下 FGCNNAUC 方面比 IPNN 分别高出0.11%, 0.19%, 0.13% (在 logloss 方面分别改善了 0.2%, 0.29%, 0.79% )。这表明生成的特征是非常有用的,它们可以有效地减少传统 DNN 的优化难度,从而导致更好的性能。

    • 第四,直接应用 CNNCCPM 在神经网络模型中取得了最差的性能。此外,CCPMCriteo 数据集和 Avazu 数据集上的表现比 FFM 差。这表明,直接使用传统的 CNN 进行 CTR 预测任务是不可取的,因为 CNN 被设计为生成 neighbor pattern ,而特征的排列顺序在推荐场景中通常没有意义。

      然而,在 FGCNN 中,我们利用 CNN 的优势来提取 local pattern ,同时辅以重组层来提取 global feature interaction 并生成新的特征。因此,可以实现更好的性能。

  6. FGCNN 与不同模型的兼容性:如前所述,FGCNN 的深度分类器可以采用任何高级深度神经网络。这里我们选择不同的模型作为 Deep Classifeir 来验证特征生成的效果,结果如下表所示。可以看到:

    • 首先,在生成的新特征的帮助下,所有模型的性能都得到了提高,这表明了生成的特征的有效性,并显示了 FGCNN 的兼容性。
    • 其次,我们观察到,当只使用原始特征时,DeepFM 总是优于 DNN 。但是当使用被增强的特征时,FGCNN+DNN 优于FGCNN+DeepFM。可能的原因是 DeepFM 将输入特征的内积加到了最后一个 MLP 层,这可能会在 embeddinng 上引起矛盾的梯度更新(与 MLP 相比)。这可能是 IPNN (将乘积结果馈入 MLP )在所有数据集中都优于 DeepFM 的原因之一。

    总之,结果表明:FGCNN 模型可以被视为一个通用框架,通过自动生成新的特征来增强现有的神经网络。

    平均而言,FGCNNDeepFMIPNN 等先进模型的提升不显著。

  7. FGCNN 变体的有效性:我们进行实验来研究 FGCNN 中的每个组件对最终性能的贡献。每个变体都是通过移除或替换 FGCNN 中的一些组件而产生的:

    • Removing Raw Features:在这个变体中,原始特征没有被馈入到深度分类器中,只有生成的新特征被馈入深度分类器。
    • Removing New Features:这个变体移除了特征生成。实际上,它等同于 IPNN
    • Applying MLP for Feature Generation:在这个变体中,特征生成被 MLP 取代,MLP 将每个隐层的输出作为新特征。这个变体使用相同的隐层,并在每一层生成与 FGCNN 相同数量的特征。
    • Removing Recombination Layer:这个变体是为了评估重组层如何补充 CNN 从而捕获 global feature interaction 。重组层被从特征生成中移除,因此池化层的输出直接作为新特征。每层生成的新特征的数量与 FGCNN 保持一致。

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

    • 首先,仅有原始特征的FGCNN 、或仅有新生成的特征的FGCNN 的性能比两者兼有的 FGCNN 要差。这一结果表明,生成的特征是对原始特征的良好补充,这两者都很关键。

      移除原始特征时,效果下降不显著。此时馈入后续 Deep Classifier 的输入向量长度减少一半,可以大幅降低计算量。因此,仅用新生成的特征,是一个比较好的 tradeoff

    • 其次,与 FGCNN 相比,应用 MLP 进行特征生成的性能下降,表明 MLP 在从大量的参数中识别稀疏的但重要的特征组合方面效果不佳。CNN 通过使用共享卷积核简化了学习的困难,它的参数少得多,可以得到所需的组合。此外,MLP 重新组合由 CNN 提取到的 neighbor feature interaction ,以产生 global feature interaction

    • 第三,移除重组层将限制生成的特征为 neighbor feature interaction 。由于原始特征的排列顺序在 CTR 预测任务中没有实际意义,这种限制会导致失去重要的 nonneighbor feature interaction ,从而导致性能下降。

  8. 超参数研究:FGCNN 模型有几个关键的超参数,即卷积核的高度 hi 、卷积核的数量 mci、卷积层的数量 nc 、以及用于生成新特征的核的数量 mri。在本小节中,为了研究这些超参数的影响,我们在 CriteoHuawei App Store 数据集上,通过改变一个超参数而固定其他参数来研究FGCNN 模型的工作情况。

    • 卷积核的高度:卷积核的高度 hi 控制卷积层的感知范围。高度越大,neighbor pattern 中涉及的特征就越多,但需要优化更多的参数。为了研究其影响,我们将高度从 2 增加到数据集的 field 数量 nf 。结果如下图所示。

      可以看到:随着卷积核高度的增加,性能一般先升后降。结果表明,随着卷积核中涉及的特征越来越多,可以学习到更高阶的特征交互,从而使性能提高。然而,由于有用的特征交互通常是稀疏的,更大的高度会给有效学习它们带来更多的困难,从而导致性能下降。这一观察结果前面的发现一致,即应用 MLP 进行特征生成时,性能会下降。

    • 卷积层的数量:如下图所示,随着卷积层数量 nc 的增加,FGCNN 的性能得到了提高。请注意,更多的层通常会导致更高阶的特征交互。因此,该结果也显示了高阶特征交互的有效性。

    • 用于生成新特征的核的数量:我们在不同重组层中使用相同的 mr ,然后我们试验了 mr 在各种取值下的性能,如下图所示。可以看到:随着生成的特征越多,性能就会逐渐提高。

    这些结果验证了我们的研究思路,即:

    • 首先识别稀疏的但重要的特征交互是有用的,这可以有效降低 DNN 的学习难度。
    • 然而,有用的特征交互可能是稀疏的和有限的。如果产生了太多的特征,额外的新特征是有噪声的,这将增加 MLP 的学习难度,导致性能下降。

  9. 对原始特征的顺序进行混洗的效果:如前所述,CNN 的设计是为了捕获 local neighbor feature pattern ,所以它对原始特征的排列顺序很敏感。在我们的 FGCNN 模型中,重组层的设计是基于 CNN 提取的 local pattern 来学习 global feature interaction 。直观地说,如果原始特征的顺序被混洗,我们的模型应该比传统 CNN 的结构有更稳定的性能。因此,为了验证这一点,我们比较了两种情况的性能:with/without Recombination Layer 。原始特征的排列顺序被随机地混洗多次,两个被比较的模型都是在相同的混洗后的排列顺序下进行的。

    如下图所示,有重组层的模型比没有重组层的模型取得了更好的、更稳定的性能。这表明,在重组层的帮助下,FGCNN 可以大大减少改变原始特征排列顺序的副作用,这也证明了我们模型的鲁棒性。

    根据结果来看,似乎重组层的提升也不太明显?

三十五、AutoCross[2019]

  1. 众所周知,机器学习方法的性能在很大程度上取决于特征的质量。由于原始特征很少产生令人满意的结果,因此通常进行手动 feature generation 从而更好地表达数据并提高学习性能。然而,这通常是一项乏味且 task-specific 的工作。这促使了自动化的 feature generation ,这也是 AutoML 的一个主要话题。第四范式 4Paradigm 是一家致力于让更多人使用机器学习技术的公司,并且也致力于这个主题。

    特征交叉,即稀疏特征的叉积 cross-product ,是捕获 categorical feature 之间的交互的一种很有前途的方法,广泛用于增强从表格数据中的学习。表格数据中,每一行对应一个样本、每一列对应一个 distinct 特征。

    • 特征交叉表示特征的共现,它可能与 target label 高度相关。例如,交叉特征 "job x company" 表示一个人在特定公司从事特定工作,这是预测个人收入的一个强大特征。
    • 特征交叉还增加了数据的非线性,这可能会提高学习方法的性能。例如,线性模型的表达能力受到其线性的限制,但可以通过交叉特征来扩展。
    • 最后但并非最不重要的是,显式生成的交叉特征具有高度的可解释性,这是许多真实世界业务中的一个吸引人的特性,例如医疗和欺诈检测。

    然而,枚举所有交叉特征可能会导致学习性能下降,因为它们可能是不相关的或冗余的,会引入噪声,并增加学习难度。因此,只应生成有用且重要的交叉特征,但它们通常是 task-specific 。在传统的机器学习应用中,人类专家大量参与特征工程,努力为每项任务生成有用的交叉特征,并以试错的方式使用其领域知识。此外,即使是经验丰富的专家,当原始特征的数量很大时也可能会遇到麻烦。人工特征交叉的人力需求和难度大大增加了应用机器学习技术的总成本,甚至阻碍了许多公司和组织充分利用其数据。

    这提出了对自动特征交叉的巨大需求,这是论文 《AutoCross: Automatic Feature Crossing for Tabular Data in Real-World Applications》提出的工作目标。除了主要目标,即以高效率的、高效果的方式自动化特征交叉之外,论文还需要考虑其他几个要求:

    • 简单性要求:用户友好且易于使用。

      大多数现有的自动特征生成方法的性能在很大程度上取决于一些超参数。如 ExploreKit 中的阈值、《Simple and scalable response prediction for display advertising》 中的降采样率、以及基于深度学习的方法中的网络架构。这些超参数应该由用户为每个 specific task 正确确定或仔细调优,这需要用户有专业的机器学习知识。

    • 分布式计算:现实世界企业中的大量的数据和特征使得分布式计算成为必须。特征交叉方法应考虑计算成本、传输成本、以及存储成本。

    • 实时推理需求:实时推理涉及许多真实世界的业务。在这种情况下,一旦输入了实例,就应该立即生成特征并进行预测。

    总结上述需求,自动特征交叉工具需要具有高效果、高效率、简单性,能够针对分布式计算进行优化,并实现快速推理。为了解决这些挑战,论文提出了 AutoCrossAutoCross 是一种自动特征交叉工具,专门为具有大量 categorical feature 的表格数据设计。

    论文主要贡献如下:

    • 提出了一种高效的 AutoML 算法,从而在广泛的搜索空间中显式地搜索有用的交叉特征。它能够构造高阶交叉特征,这可以进一步提高学习性能。
    • AutoCross 具有高度简单性和最小化的超参数暴露。论文提出 successive mini-batch gradient descent 和多粒度离散化。它们提高了特征交叉的效率和效果,同时避免了仔细的超参数设置。
    • AutoCross 针对分布式计算进行了充分优化。通过设计,这些算法可以降低计算成本、传输成本、和存储成本。
    • benchmark 和真实世界数据集上进行大量实验,结果验证了 AutoCross 的效率和效果。它可以显著提高广义线性模型的性能,同时保持较低的推理延迟。研究还表明,AutoCross 可以结合深度模型,这意味着可以结合显式特征生成和隐式特征生成的优势,进一步提高学习性能。
  2. 相关工作:这里简要回顾与 AutoCross 大致相关的一些工作,并说明它们不符合我们的目的的原因。

    • FM 寻求原始特征的低维 embedding ,并捕获它们的交互。然而,这种交互并不是显式地被构建的(通过 embedding 被间接地构建)。此外,FM 可能过度泛化和/或引入噪声,因为FM 枚举了所有可能的交互,而不管该交互是否有用。
    • 还有一些 embedded feature selection/generation 方法,如 group lassogradient boost machine: GBM ,它们本质上伴随着模型训练来识别、或隐式地构建有用的特征。然而,这些方法通常难以处理 large scale 问题(其中,从categorical feature 生成了高维稀疏数据),和/或计算问题(当特征数量很大时,如考虑高阶特征交叉)。
    • 最后,itemstes 在数据挖掘社区中得到了很好的研究。与交叉特征一样,它们也表示属性的共现。然而,不同之处在于 itemsets 中的元素通常是相同的类型,例如,所有元素都是商品。此外, itemsets 主要用于 rule-based 的机器学习技术,如 frequent patternassociation rule 。这些技术可能难以推广,并且在规则数量较大时推理速度较慢(因为检索成本高)。

35.1 模型

35.1.1 动机

  1. 通过对原始特征的叉积的结果进行向量化来构建交叉特征:

    (20)ci,j,,k=vec(fifjfk)

    其中:fi 为二元的特征向量(通过 one-hot encoding 或哈希技巧);vec() 函数把张量展平为向量; 为向量的叉积。

    交叉特征也是二元的特征向量。如果交叉特征使用三个或更多个原始特征,我们称它为高阶交叉特征。这里将陈述我们工作的动机。

  2. 虽然大多数早期的自动特征生成工作集中于原始特征的二阶交互,但是趋势表明:考虑更高阶(即,阶次高于两阶)的交互将使得数据更 informativediscriminative 。与其他高阶交互一样,高阶交叉特征可以进一步提高数据质量,提高学习算法的预测能力。例如三阶交叉特征 item x item x region 可以是在某些节日期间推荐区域性偏好的食物的一个强大特征。然而,在现有的工作中还没有发现高阶交叉特征的显式生成。接下来,我们将说明:现有的特征生成方法要么不能生成高阶交叉特征、要么不能满足我们的业务需求。

    • 一方面,基于搜索的 feature generation 方法采用显式搜索策略来构造有用的特征或特征集。许多这样的方法专注于数值特征,并且不生成交叉特征。至于现有的特征交叉方法,它们没有设计成执行高阶特征交叉。

    • 另一方面,存在基于深度学习的 feature generation 成方法,其中特征之间的交互由特定网络隐式地或显式地表达。人们提出了各种深度学习模型来处理 categorical 特征,如 FMPNN 等。还有一些工作将深度学习模型和额外的结构相结合,这些结构包括:

      • 手动设计的特征,如 Wide & Deep
      • FM,如 DeepFM, xDeepFM
      • 其它特征构建组件,如 Deep & Cross Network

      其中,xDeepFM 提出了一种 compressed interaction network: CIN 来显式捕获 embedded feature 之间的高阶交互,并证明优于上述其它基于深度学习的方法。这是通过对 embedded feature 之间执行 element-wise 乘积来实现的:

      (21)ei,j,,k=(Wifi)(Wjfj)(Wkfk)

      其中: 表示逐元素乘积,Wiembedding 矩阵,WifiRDDemebdding size

      然而,如以下Proposition 所述,上述方法得到的特征仅仅是 embedded high-order cross feature 的特殊情况。此外,深度模型在推理方面相对较慢,这使得我们必须在实时推理系统中部署模型压缩或其他加速技术。

  3. Proposition:存在无限多具有 D 行的 embedding 矩阵 C ,使得:对于任意的二元向量 x,y 以及它们之间的叉积 z ,不存在任何 embedding 矩阵 AB 从而满足以下等式:

    (22)(Ax)(By)=(Cz)

    证明见原始论文的附录。

  4. 受高阶交叉特征的有用性、以及现有工作的局限性的启发,在本文中,我们旨在提出一种新的自动特征交叉方法,该方法足够有效地、高效地自动生成高阶交叉特性,同时满足我们的业务需求(即简单、针对分布式计算进行优化,并实现快速推理)。下表比较了AutoCross 和其他现有方法。

35.1.2 AutoCross

  1. 下图给出了 AutoCross 的概览,其中包括三个部分:通用工作流、组件算法、底层基础设施。

    • 从用户的角度来看,AutoCross 是一个黑匣子,它将训练数据和特征类型(即 categoricalnumerical 、时间序列等等)作为输入,并输出一个 feature producerfeature producer 可以快速执行 AutoCross 学到的 crossing 从而转换输入数据,然后用于模型训练或推理。feature producer 使用哈希技巧来加速特征生成。与基于深度学习的方法相比,feature producer 占用的计算资源明显更少,因此特别适合于实时推理。

      在黑匣子(下图中的 "Flow" 部分)内,数据将首先进行预处理,其中包括确定超参数、填充缺失值、数值特征离散化。然后,在由两个步骤组成的循环中迭代构建有用的特征集:

      • 特征集生成:生成具有新的交叉特征的候选特征集。
      • 特征集评估:评估候选特征集并选择最佳的作为新的解决方案。

      一旦满足某些条件,该迭代过程就终止。

    • 从实现的角度来看(下图中的 "Infrastructures" 部分),AutoCross 的基础是基于参数服务器(parameter server: PS )架构的分布式计算环境。数据按 block 缓存在内存中,每个 block 包含一小部分训练数据(这里指的是所有样本的一小部分特征,而不是一小部分样本的所有特征)。 worker 访问缓存的 data block ,生成相应的特征,并对其进行评估。特征管理器控制特征集的生成和评估。过程管理器控制特征交叉的整个过程,包括超参数适配、数据预处理、工作流控制、以及程序终止。

    • 连接工作流程和基础设施的算法是本文的主要重点(下图的 "Algorithms" 部分)。每种算法都对应于工作流程中的一部分:

      • 我们使用 beam search 来生成特征集,以探索广泛的搜索空间。
      • 我们使用 field-wise 逻辑回归和 successive mini-batch gradient descent 来评估特征集。
      • 我们使用多粒度离散化来进行数据预处理。

      这些算法的选择、设计和优化考虑了分布式计算的简单性和成本。

      AutoCross 算法的原理比较简单明了,但是需要基础架构的支持,不太容易在实践中使用。

      此外,AutoCross 仅能评估表格型数据,无法处理序列特征、也无法处理 multi-set 特征(即,一个 field 上取多个值),更无法处理图片和文本特征。

     

  2. 问题定义:为了便于讨论,首先我们假设所有原始特征都是 categorical的。数据以 multi-field categorical 的形式表示,其中每个 field 是通过 encodingone-hot encoding 或哈希技巧)从 categorical feature 中生成的 binary 向量。给定训练数据 DTR,我们将它拆分为训练集 Dtr 、验证集 Dvld 。然后我们用特征集 S 来表达 Dtr ,并用学习算法 L 来学习模型 L(Dtr,S) 。为了评估该模型,我们用相同的特征集 S 来表达验证集 Dvld ,并最大化指标 E(L(Dtr,S),Dvld,S)

    现在,我们定义 feature crossing problem 为:

    (23)maxSA(F)E(L(Dtr,S),Dvld,S)

    其中:FDTR 的原始特征集,A(F) 为包括原始特征和所有可能交叉特征的特征集。

  3. 特征集生成:假设原始特征集的大小为 d ,这也是交叉特征的最高阶次。A(F) 的大小为:

    (24)card(A(F))=k=1dCdk=2d1

    所有可能的特征集合为 2(2d1) 。显然,在如此广泛的空间中搜索全局最优特征集是不切实际的。为了在有限的时间和计算资源下找到一个适度的解决方案,我们采用贪婪的方法迭代地构造一个局部最优特征集。

    AutoCross 中,我们考虑下图所示的树结构空间 T ,其中每个节点对应于一个特征集,根是原始特征集 F 。为了简单起见,在本示例中,我们将两个特征 AB 的交叉表示为 AB ,更高阶的交叉特征也是类似的表示方式。对于一个节点(一个特征集),它的每个子节点都是通过在当前节点的基础上添加自身元素的一个 pair-wise crossing 来构造的。交叉特征之间(或交叉特征和原始特征之间、原始特征和原始特征之间)的 pair-wise 交互将导致高阶特征交叉。

    树结构空间 T 考虑 A(F) 中的所有可能特征,但排除了一部分子集。使用 T ,搜索特征集等同于识别从 T 的根节点到特定节点的路径。这可以通过迭代地将交叉特征添加到维护的特征集中来实现。然而,T 的大小是 O((d2/2)k) ,其中 k 是生成的交叉特征的最大数量。T 的大小随着 k 呈指数增长。因此,遍历 T 将非常昂贵。为了解决这个问题,我们使用 beam search 来进一步提高效率。

    beam search 的基本思想是在搜索过程中只扩展最有前途的节点:

    • 首先,我们生成根节点的所有子节点,评估它们对应的特征集,然后选择性能最佳的子节点进行下一次访问。
    • 在接下来的过程中,我们扩展当前节点并访问其最有希望的子节点。

    当过程终止时,处于结束位置的节点就是我们得到的结果特征集。

    通过这种方式,我们在大小为 O((d2/2)k) 的搜索空间中仅考虑 O(kd2) 个节点,并且成本随着交叉特征的最大数量 k 线性增长。它使我们能够高效地构造高阶交叉特征。下图展示了一个搜索路径,该路径从原始特征集 {A, B, C, D}开始,到解决方案 {A, B, C, D, AB, CD, ABC, ABCD} 结束。

  4. AutoCross 中特征集选择算法:

    • 输入:原始特征集 F 、训练集 Dtr 、验证集 Dvld

    • 输出:结果特征集 S

    • 算法步骤:

      • 初始化当前节点:SF

      • 迭代直到满足停止条件:

        • 特征集生成:通过将 S 的不同 pair-wise crossing 添加到 S 中,从而得到不同的子节点(每个子节点一个 crossing)。
        • 特征集评估:对所有这些子节点进行评估,得到最佳子节点 S
        • 替换:SS

    这里的 beam size = 1,也可以考虑 beam size = ss 为超参数。

  5. 特征集评估:特征集选择算法的关键步骤是评估候选特征集的性能。这里候选集 S 的性能表示为 E(L(Dtr,S),Dvld,S) ,简称 E(S) 。为了直接估计 E(S) ,我们需要在由 S 表示的训练集上学习具有算法 L 的模型,并评估模型在验证集上的性能。尽管这种方法很准确,但对特征集的直接评估通常相当昂贵。为了提高评估效率,我们在 AutoCross 中提出了 field-wise 逻辑回归和 successive mini-batch

    • field-wise 逻辑回归:我们加速特征集评估的第一个努力是 field-wise逻辑回归( field-wise LR )。这里进行了两种近似:

      • 首先,我们使用用 mini-batch 梯度下降训练的逻辑回归来评估候选特征集,并使用相应的性能来近似实际使用的学习算法 L 的性能。我们选择逻辑回归,因为它简单、可扩展、速度快、可解释。

      • 其次,在模型训练期间,我们只学习新添加的交叉特征的权重,而其他权重是固定的。因此,训练是 'field-wise' 的。例如,假设当前的特征集是 SA, B, C, D ,并且我们希望评估候选特征集 SA, B, C, D, AB ,那么只有新的 AB 特征的权重需要被学习。

        具体而言,给定一个样本,假设 xs 为当前特征集对应的特征向量,xc 为新增交叉特征对应的特征向量。那么 LR 模型为:

        (25)P(y=1x)=sigmoid(xsws+xcwc)=sigmoid(xcwc+bsum)

        其中:ws 是固定的,bsum 是一个标量对应于 xsws

      下图展示了 field-wise LR 如何在参数服务器架构上工作。 field-wise LR 从几个方面提高了特征集评估的效率:

      • 存储: worker 只存储 xc (以 sparse 格式)和 bsum,而不是实例的完整 representation 。在内存缓存中存储 bsum 的开销可以忽略不计。
      • 传输:内存缓存和 worker 之间的传输内容是 bsum 、以及用于构造 xc 的特征的哈希值。因此,不需要传输完整的实例 representation
      • 计算:只更新 wc ,减少了 workerparameter server 的计算负担。所有 worker 都直接获取存储的 bsum,因此不需要为每个 worker 的每个 mini-batch 重复计算 bsum

      一旦 field-wise LR 完成,我们就在验证集 Dvsl 上评估结果模型的性能。我们使用 AUC, accuracy, negative logloss 等指标来评估 S 的质量。显然,评估结果是 E(S) 的近似值,以更高的效率换取准确性。然而,由于特征集评估的目的是识别最有前景的候选,而不是准确地估计候选集的性能,因此,如果算法能够以高概率识别最佳候选,则准确性的降低是可接受的。实验部分报告的实验结果证明了 field-wise LR 的有效性。

    • Successive Mini-batch Gradient Descent:在 AutoCross 中,我们使用 successive mini-batch gradient descent 方法来进一步加速 field-wise LR 的训练。这是由最初针对 multi-arm bandit 问题提出的 successive halving 算法所推动的。 successive halving的特点是计算资源的高效分配和高度简单。

      在我们的例子中,我们将每个候选特征集视为一个 arm ,拉动手臂就是用数据块训练相应的 field-wise LR 模型。拉动手臂的即时回报是 partially trained model 的验证 AUC 。训练数据平均分为 Nk=0log2n12k 个数据块,其中 n 是候选特征集的数量。然后我们调用下述算法来识别最佳候选特征集。

      successive mini-batch gradient descent 将更多的资源分配给更有前景的候选集。唯一的超参数 N (即,数据的数量),需要根据数据集的大小和工作环境来选择。用户不需要调优 mini-batch size 和采样率。

      可以看到:

      • 在训练的早期,数据块的数量较少,此时更多的候选特征集会被评估。
      • 在训练的后期,数据块的数量较多,此时只有最优秀的候选特征集会被评估。

      每次迭代之后,数据块翻倍、候选特征集的数量减半。

      Successive Mini-batch Gradient Descent: SMBGD 算法:

      • 输入:所有的候选集 S={Si}i=1n ,训练数据平均分为 N 个数据块。

      • 输出:最佳候选集 S

      • 算法步骤:

        迭代:k=0,1,,log2n1 ,迭代步骤为:

        • 使用 2k 个数据块来更新所有候选集 SSfield-wise LR 模型。
        • 在验证数据集上评估所有候选集 SS 的模型。
        • 保留头部 50% 的候选集:Stop-half(S) ,向下取整。
        • 如果 S 只有一个元素,则返回(作为最佳候选集 S )。
  6. 预处理:在 AutoCross 中,我们在数据预处理步骤中对数值特征进行离散化。为了实现离散化的自动化并避免对人类专家的依赖,我们提出了一种多粒度离散化方法。基本思想很简单:我们将每个数值特征离散化为几个 categorical feature 而不是一个 categorical feature ,每个 categorical feature 具有不同的粒度,而不是微调粒度。下图给出了用四个级别的粒度来离散化数值特征的示例。由于考虑了更多级别的粒度,因此更可能获得有前景的结果。

    为了避免离散化导致的特征数量急剧增加,一旦生成了这些特征,我们就使用 field-wise LR (不考虑 bsum)来评估它们,只保留最好的一半。

    剩下的问题是如何确定粒度级别。经验丰富的用户可以人工设置一组值。如果未指定任何值,AutoCross 将使用 {10p}p=1P 作为默认值,其中 P 是基于规则(考虑可用内存、数据规模、特征数量等等)确定的整数。

    此外,AutoCross 将在预处理步骤中调用超参数调优程序,以找到 LR 模型的最佳超参数。它们将在随后涉及的所有 LR 模型中使用。

  7. TerminationAutoCross 使用三种终止条件:

    • 运行时条件:用户可以设置 AutoCross 的最大 runtime 。时间过去后,AutoCross 终止并输出当前解决方案 S。此外,用户可以随时中断程序并获得当前时刻的结果。
    • 性能条件:在生成新的特征集之后,用其所有特征训练 LR 模型。如果与前一组相比,验证集性能下降,则程序终止。
    • 最大特征数:用户可以给出最大交叉特征数,这样当达到该数字时,AutoCross 停止。

35.2 实验

  1. 数据集:来自 benchmark 、以及真实世界商业数据集(来自第四范式的客户,经过脱敏),所有数据集都是二分类问题。数据集信息如下表所示。

  2. baseline 方法:

    • AC + LR:具有 AutoCross 生成的交叉特征的逻辑回归。
    • AC+W&DWide & Deep 模型,其中 wide 侧使用 AutoCross 生成的交叉特征。
    • LR (base):采用原始特征的逻辑回归,作为 baseline
    • CMI+LR:具有交叉特征的逻辑回归,其中交叉特征通过 《Simple and scalable response prediction for display advertising》 中提出的方法来生成,采用条件互信息(conditional mutual information : CMI )用作评估特征的指标。
    • Deep:具有 embedding layer 的深度模型,它隐式地生成特征交互。
    • xDeepFM:通过 compressed interaction network: CIN 显式生成特征的、 SOTAdeeplearning-based 方法。

    在这些方法中,AC+LRAC+W&D 使用 AutoCross 生成的交叉特征,并证明了其增强线性模型和深度模型的有效性。CMI+LR 使用了一种典型的基于搜索的特征交叉方法。xDepFM 是遵从 Wide&Deep 框架的 SOTA 方法。所有这些方法都旨在处理具有 categorical feature 的表格数据。

  3. 配置:特征以及模型在训练数据集、验证数据集(如果需要的话,为训练数据的 20%)上学习,然后通过测试 AUC 来评估不同方法的性能。

    • AutoCross 配置:超参数包括数据块数量 N 、多粒度离散化的粒度数量、停止条件。

      • 对于相对较小的数据集,即 Bank, Adult, Credit, EmployeeN=2k=0log2n12k 。这表明,最多 50% 的训练数据将用于连续小批量梯度下降。对于其他数据集,N=5k=0log2n12k,这对应于最大 20% 的采样率。
      • 关于粒度级别,AutoCross 对所有数据集使用 {10i}i=13
      • 至于终止条件,我们只调用性能条件,即只有在新添加的交叉特征导致性能下降时,AutoCross 才会终止。
    • 逻辑回归配置:超参数包括学习率 α[0.005,1]L1 正则化系数 λ1[104,10]L2 正则化系数 λ2[104,10]

      在我们的实验中,我们在特征生成之前调用了一个超参数调优过程,采用 log-grid search。找到的最佳超参数应用于所有 LR 相关的模型。

    • CMI+LR 配置:我们只在 benchmark 数据集上测试 CMI+LR ,因为 CMI 无法处理多值 categorical feature 。我们使用多粒度离散化来转换数值特征。为了确保特征评估的准确性,我们使用所有训练数据来估计CMICriteo 数据集是一个例外,我们将其降采样比率设置为 10% 。我们将最大交叉特征数设置为 15

    • 深度模型配置:我们使用 xDeepFM 的开源实现并在 AC+W&DDeep 方法中使用深度组件。我们使用0.001 学习率,Adam 优化器,batch size = 40960.0001L2 正则化惩罚。深度组件的 layer 的隐单元数量为 400 。对于 Criteo 数据集和其它数据集,CIN 组件分别采用 200100 的隐单元数量。field embedding size = 10

      由于在 xDepFMDeep 中不需要验证数据,因此我们不拆分训练集,并将其全部用于模型训练。

  4. 效果:实验结果如下表所示,其中我们突出显示了每个数据集的前两个方法。可以看到:

    • AC+LR 在大多数情况下排名前二,并且通常优于基于深度学习的方法( DeepxDepFM )。
    • AC+W&D 还显示出具有竞争力的性能,展示了 AutoCross 增强深度模型的能力。
    • 大多数情况下,AC+LRAC+W&D 显示出比 xDepFM 更好的结果。

    下表显示了 AutoCross 带来的测试 AUC 改善。可以看到:AC+LRAC+W&D 都实现了比 LR(base) 显著的改进,并且 AC+W&D 也显著提高了 Deep 模型的性能。这些结果表明,通过生成交叉特征,AutoCross 可以使数据更 informativediscriminative ,并提高学习性能。AutoCross 取得的有前景的结果也证明了 field-wise LR 识别有用交叉特征的能力。

  5. 高阶特征的效果:下图显示了为每个数据集生成的二阶/高阶交叉特征的数量,其中后者占相当大的比例。

    此外,在下表中,我们比较了仅生成二阶交叉特征的 CMI+LR 、以及考虑高阶交叉特征的 AC+LR 。我们可以看到,AC+LR 稳定且持续地优于 CMI+LR 。这一结果证明了高阶交叉特征的有用性。

  6. 特征交叉的时间代价:下表报告了 AutoCross 在每个数据集上的特征交叉时间。下图显示了真实世界业务数据集上验证 AUCAC+LR )与运行时的关系。用户可以看到这些曲线,并随时终止 AutoCross 以获得当前结果。

    是在什么硬件配置下测试的?论文提到,AutoCross 采用 PS 架构,因此这里用到了几个 parameter server 、几个 worker

    值得注意的是,由于 AutoCross 的高度简单性,不需要微调任何超参数,用户也不需要花费任何额外的时间来实现它。相比之下,如果使用基于深度学习的方法,则将在网络架构设计和超参数调优上花费大量时间。

  7. 推断延迟:在线推理包括两个主要步骤:生成特征从而转换输入数据、推理以进行预测。深度学习方法结合了这些步骤。在下表中,我们报告了 AC+LRAC+W&DDeepxDepFM 的推断时间。可以看到:AC+LR 在推断方面比其他方法快几个数量级。这表明,AutoCross 不仅可以提高模型性能,还可以确保其 feature producer 的快速推理。

三十六、InterHAt[2020]

  1. 现有 CTR 预测模型的架构复杂度和计算复杂度一直在增加,以便学到多个特征的联合效应,即高阶特征(也叫做交叉特征),并获得更好的预测准确性。具体而言,k 阶特征指的是一个变量,该变量是原始特征集的一个 k 阶多项式。深度神经网络由于层数和单元数很多,具有很强的捕获丰富高阶信息的能力。

    然而,不断增长的模型复杂度有两个缺点:可解释性差、效率低。

    • 就可解释性而言,预测过程很难得到合理的解释,因为神经网络层的权重和激活 activation 通常被认为是不可解释的。例如,Wide&DeepWide 组件将叉积变换 cross-product transformation 应用于 feature embedding ,但未能量化和证明其对实际点击率预测性能的有效性。模型预测缺乏令人信服的理由,这给模型的可靠性和安全性蒙上了阴影。

    • 就效率而言,现有方法的效率低,因为深度神经网络的高阶交互特征的生成涉及 DNN 中极其繁重的矩阵计算。例如,xDeepFM 中的 compressed interaction network: CIN 通过一个外积层和一个全连接层来计算第 (k+1) 阶特征矩阵,这需要 embedding 维度的立方复杂度。Wide&deep 中的 Deep 组件具有多个全连接层,其中每个全连接层都涉及矩阵乘法。

      在实际应用中,效率问题是普遍而关键的。利用现有方法,学习大量现有特征、或新兴特征的 representation 在计算上可能是难以处理的。

    除了可解释性和效率问题,论文 《Interpretable Click-Through Rate Prediction through Hierarchical Attention》 还指出了另一个障碍:模型会影响重要的交叉特征的评估。不同的交叉特征可能对 CTR 具有冲突的影响,必须全面分析。例如,电影推荐记录 movie.genre = horror, user.age = young, time = 8am 具有冲突的因素:前两者的组合鼓励点击,而后两者的组合抑制点击(因为电影观看通常发生在晚上)。这种冲突问题是由特征交互在不同语义子空间中的多义性引起的。在这个例子中,当user.age=young 与两个不同的属性 movie.genretime 组合时,user.age 的多义性交互对 CTR 产生相反的影响。然而,这个问题在很大程度上被现有的方法所忽略。

    为了解决上述问题,在论文 《Interpretable Click-Through Rate Prediction through Hierarchical Attention》 中,该论文提出了一个 Interpretable CTR prediction model with Hierarchical Attention: InterHAt 模型。InterHAt 模型以端到端的方式有效地学习不同阶次的显著特征作为解释性的洞察,并同时准确地预测 CTR

    具体而言,InterHAt 通过一种新颖的 hierarchical attention 机制显式地量化任意阶次的特征交互的影响,聚合重要的特征交互以提高效率,并根据学到的特征显著性来解释推荐决策。与 《Hierarchical attention networks for document classification》 的研究语言的 hierarchy (单词和句子)的 hierarchical attention network 不同,InterHAt 对特征阶次采用 hierarchical attention ,高阶特征是在低阶特征的基础上生成的。

    为了适应特征交互在不同语义子空间中的多义性,InterHAt 利用具有multi-head self-attentionTransformer 来全面研究不同的潜在特征交互。作者利用 Transformer 来检测特征交互的复杂多义性,并学习一个多义性增强的 feature list ,该列表用作 hierarchical attention layer 的输入。

    论文贡献如下:

    • 论文提出使用 InterHAt 进行 CTR 预测。具体而言,InterHAt 采用 hierarchical attention 来精确定位对点击有很大贡献的重要的单个特征、或不同阶次的交互特征。然后,InterHAt 可以基于各阶特征交互为 CTR 预测组成 attention-based 解释。
    • InterHAt 利用具有 multi-head self-attentionTransformer ,从而在不同潜在语义子空间中彻底分析特征之间可能的交互关系。据作者所知,InterHAt 是第一个方法使用具有 multi-head self-attentionTransformer 来学习潜在特征的多义性,从而以进行 CTR 预测。
    • InterHAt 预测 CTR 时无需使用需要大量计算成本的深层 MLP 。相反,它聚合了特征,因此节省了枚举指数级数量的特征交互的指开销。因此,它在处理高阶特征方面比现有算法更有效。
    • 在三个主要的 CTR 基准数据集( Criteo, Avazu, Frappe )、一个流行的推荐系统数据集( MovieLens-1M )和一个合成数据集上,论文进行了大量的实验来评估 InterHAt 的可解释性、效率和有效性。结果表明,InterHAt 解释了决策过程,在训练时间上实现了巨大的改善,并且仍然具有与 SOTA 的模型相当的性能。
  2. 相关工作:

    • CTR 预测模型:

      • FM 为每个不同特征分配一个d 维可训练的 embedding 向量 ,并通过一阶特征和二阶特征的线性组合来进行预测。虽然 FM 可以推广到高阶情况,但高阶 FM 的计算复杂度为指数级,并且浅层架构的模型容量较低。
      • Field-aware Factorization Machine: FFM 假设特征在不同的 field 下可能具有不同的语义,并通过 field-specific feature representation 来扩展 FM 的思想。虽然它获得了比 FM 更好的效果,但是也增加了参数规模和计算量,并且更容易发生过拟合。
      • Attentional Factorization Machine: AFM 通过 attention net 扩展了 FM ,不仅提高了性能,还提高了可解释性。然而,由于 FM 固有的结构限制,AFM 只能学习二阶特征交互。
      • Wide&Deepwide 组件和 deep 组件构成,它们本质上分别是广义线性模型和 MLP 。注意,deep 组件,即 MLP ,破坏了可解释性,因为 layer-wise transformation 是在 unit level 而不是 feature level 进行的,并且单个 unit level 取值不能携带特征的具体的、完整的语义信息。
      • Deep&Cross Network: DCNWide&Deep 略有不同,因为 DCN 用叉积变换取代了线性模型,从而将高阶信息与非线性深度特征相结合。
      • DeepFM 通过用 FM 作为 wide 组件来改进这两个模型,其中 deep MLP 组件捕获高阶特征交互,wide FM 捕获二阶特征交互。
      • xDeepFM 声称 MLP 实际上是建模隐式特征交互,因此作者引入 compressed interaction network: CIN 来建模显式特征交互。
      • 工业实践的最新成果包括 DINDIEN,它们分别建模用户的静态购物兴趣和动态购物兴趣。这两种方法都严重依赖于深度前馈网络,而这种网络通常是不可解释的。

      所有上述 CTR 预测模型都严重依赖于深度神经网络,并实现不断提高的性能。然而,正如一把双刃剑,深度学习算法在可靠性和安全性方面存在潜在风险。隐层的权重和激活 activation 很难解释,输入和输出之间的因果关系是掩藏的、不确定的。它们都没有提供任何 feature-level 的线索来解释为什么这种深度 feature learning 策略会增强或减弱 CTR 性能。

      相反,InterHAtfeature-level 上使用 attention-based 的解释来解决 CTR 预测。也就是说,InterHAt 没有不合理的深度 MLP 模块,并且InterHAt 仅工作在 feature level 上,这也提高了 InterHAt 的效率。

    • attention 机制:attention 机制最初是为 neural machine translation: NMT 提出的,它为源语言和目标语言之间密切相关的单词分配更大的权重,以便在翻译中关注重要的单词。NLP 中另一种形式的 attention 是自注意力,如 Transformer 架构。我们采用注意力机制来解释 InterHAt 模型的 CTR 预测。

36.1 模型

  1. InterHAt 模型的整体架构如下图所示。

    Transformer with Multi-head Self-attention 可以视为是单个交互层的 AutoInt 模型。实验部分表明,该组件很重要,移除该组件会导致模型性能较大的下降。但是,实验部分并没有比较 InterHATAutoInt 的比较,因为二者都宣称是可解释的,并且 InterHATAutoInt 作为组件。

    Attentional Aggregation Layer 通过自注意力机制来获得不同阶次的、聚合所有 field 信息的 representation 向量,并将其用于预测和可解释。

  2. Embedding Layer:输入特征包含一组 field F ,每个 field fF 要么是 categorical 的、要么是 numerical 的。

    • 对于 categorical field ,每个 categorical value v 被分配一个可训练的 dembedding ev(f)Rd。令 categorical field fF 的取值为 v ,则该 field 的的 representation x(f) 就是 vemebdding ,即 x(f)=ev(f)
    • 对于 numerical field ,我们为每个 field 分配一个可训练的 dembedding 。令 vf 为数值 field fF 的归一化值,e(f)Rd 为该 field 分配的 embedding,那么该 fieldrepresentationx(f)=vf×e(f)

    考虑所有的 field ,定义初始的 input representation matrix 为:

    (26)X0=(x0(1),x0(2),,x0(m))Rm×d

    其中: m=|F|field 数量。

  3. Multi-head Transformer:在 CTR 预测任务重,我们将特征朝着不同极性(消极或积极)的协同效应(即,特征交互)定义为多义性 polysemy 。因此,我们为 InterHAt 采用了一个 Multi-head Transformer 从而捕获丰富的 pair-wise 特征交互,并且学习不同语义子空间中特征交互的多义性。

    给定输入矩阵 X0Transformer head irepresentation Hi 被定义为:

    (27)Hi=softmaxi(QKdk)VRm×dkQ=X0Wi(Q),K=X0Wi(K),V=X0Wi(V)

    其中:Wi(Q),Wi(K),Wi(V)Rd×dK 为投影矩阵,dk 为第 ihead 的维度。

    hidden feature Hi 的组合构成了 augmented representation matrix X1 ,该矩阵保留了每个特征的固有信息和多义信息。我们拼接 {Hi} ,然后馈入到一个带 ReLU 的前馈层从而学习非线性:

    (28)X1=ReLU(FeedForward([H1;H2;;Hh]Wm))Rm×d

    其中:WmR(hdk)×dhhead 数量,“ ; ” 表示矩阵拼接(沿着 embedding 维度)。

  4. Hierarchical Attentionaugmented representation matrix X1 作为 hierarchical attention layer 的输入。hierarchical attention layer 学习特征交互并同时产生解释。然而,由于组合爆炸,通过枚举所有可能的组合来计算高阶 multi-feature interaction 是昂贵的。因此,我们在计算更高阶次的特征交互之前,首先聚合当前阶次的特征交互。即,为了生成第 (i+1) 阶的交叉特征 Xi+1 ,我们首先将第 i 阶的交叉特征 Xi=(xi(1),xi(2),,xi(m)) 聚合到向量 ui

    (29)ui=AttentionalAgg(Xi)=j=1mαi(j)xi(j)αi(j)=exp(ciReLU(Wixi(j)))jFexp(ciReLU(Wixi(j)))

    其中:αi(j)R 为第 jfield 在第 iattentional aggregation layer 的注意力权重;WiRs×dlayer weightciRs 为上下文向量;s 为注意力空间大小。这里也可以采用其它注意力机制,如 gated attention mechanism

    这里采用的是自注意力机制。

    然后我们根据 ui (代表了 Xi )和 X1 来计算 Xi+1

    (30)xi+1(j)=uix1(j)+xi(j)

    其中: 表示 Hadamard product

    根据 xi+1(j)=uix1(j)+xi(j)=j=1mαi(j)×(xi(j)x1(j))+xi(j) ,则第 i+1 层的第 j 个特征 xi+1(j) 是由两部分组成:

    • i 层的第 j 个特征 xi(j),这是残差连接。
    • 1 层的第 j 个特征 x1(j) 与所有第 i 层特征的交叉的加权和,权重为第 i 层的 self-attention 的权重。

    那么,是否可以用 x1(j) 作为 query 向量从而用传统的注意力机制来计算 αi(j)

    最后,模型预测时利用的是 ui 而不是 xi(j)

    通过一系列的 attentional aggregation layer ,我们得到了从第 1 ~ k 阶的交叉特征。这些层组成了一个 hierarchy,表示从低阶到高阶所抽取的特征。

    最后,我们联合所有的 attentional aggregation U=(u1,u2,,uk) 来预测点击率。U 收集了 k 阶的所有的组合特征的语义。

  5. 目标函数和优化:最终的预测函数为 y^=g(U)

    (31)y^=g(U)=sigmoid(MLP(uf))uf=AttentionalAgg(U)=j=1kαf(j)ujαf(j)=exp(cfReLU(Wfuj))j=1kexp(cfReLU(Wfuj))

    其中:αf(j)Ruj 的聚合权重;cf,Wf 为待学习的参数。

    目标函数为交叉熵:

    (32)L(Θ)=(tD[ytlogy^t(1yt)log(1y^t)])+λ||Θ||2

    其中:D 为训练集,Θ 为所有的训练参数,λL2 正则化系数。

    我们采用 Adam 优化器来优化目标函数。

  6. 可解释性:我们使用注意力分布 (α1,α2,,αk,αf) 作为理解 CTR 预测结果的重要因素,其中:

    • αf=(αf(1),αf(2),,αf(k))final attentional aggregation layer 的注意力分布,其中的 top 权重确定了那些阶次的交叉特征 Xi 对于预测结果最重要。
    • αi=(αi(1),αi(2),,αi(m)),1ik 为第 iattentional aggregation layer 的注意力分布,其中的 top 权重决定了哪些单个 feature field xi(j) 对于交叉特征 Xi 最重要。

    注意,注意力机制仅突出了特征的显著性,因此不期望它生成完全人类可读的解释。

    最后,根据上述步骤,我们可以识别不同阶次的所有特征。对点击行为的解释是通过逐层地、逐阶次地识别显著特征来解释的。

36.2 实验

  1. 数据集:Criteo, Avazu, Frappe 。下表展示了数据集的统计信息,其中训练集/验证集/测试集的大小之比为 8:1:1

  2. baseline 方法:

    • FM:通过一阶特征和二阶特征(feature embedding 向量的内积)的线性组合来进行预测 CTR
    • Wide&Deep:广义线性模型和 deep MLPensemble
    • DCN:用于计算高阶特征的 cross-product transformation 、以及 deep MLPensemble
    • PNN:基于乘积的方法,它的架构由简单的内积、外积、以及非线性激活函数所组成。
    • DeepFMFMdeep MLP 的组合。
    • xDeepFM:显式建模特征交互的compress information network: CIN 、以及 deep MLP 的组合。
  3. 评估指标:Logloss, AUC

  4. 实现:InterHAt 是通过 Python 3.7 + TensorFlow 1.12.0 实现的,在单个 16GB Nvidia Tesla V100 GPU 上运行。默认的超参数如下:

36.2.1 实验结果

  1. 效率测试:下图展示了在 CriteoAvazu 上不同模型之间的运行时间比较。 Frappe 不用于效率测试,因为它的数据集规模相对较小。FM 不参与比较,因为只有 CPU-based 实现可用,而其它模型都是 GPU-based 的。y 轴显示了在五个训练 epoch 内,每个 epoch 的平均运行时间。可以看到:InterHAt 在每个 epoch 上的训练时间最短,表现出了出色的效率。

    InterHAt 的两个性质实现了巨大的加速:

    • 跨所有特征的 attentional aggregation 操作通过避免在 k 阶中枚举所有可能的特征组合,将问题规模从指数级降低到线性级。
    • baseline 模型中使用的 deep MLP 相比,IntarHAt 中仅涉及 shallow MLP 。深度神经网络由于庞大的参数规模而大大降低了计算速度。

  2. 效果测试:不同模型的效果比较如下表所示。可以看到:

    • InterHAtFrappeAvazu 数据集的所有两个指标上都优于所有模型,并在 Criteo 数据集上获得了可比的性能。然而,InterHAt 的结构更简单。
    • InterHAt-S 指的是 InterHAt 的变体,它移除了 multi-head self-attention 模块。InterHAt-S 性能的下降证明了 Multi-head Transformer 的贡献。

    InterHAtCriteo 数据集上稍差的原因是:

    • 相比比 AvazuFrappe 数据集,Criteo 的特征在语义上更复杂。best baseline 模型使用不可解释的深度全连接层来捕获复杂的隐式信息并提高性能。然而,InterHAt 没有使用损害可解释性的深度全连接层。

    • 此外,当前的 field-aware embedding 策略( numerical field 仅有单个 embedding )破坏了 numerical-numericalcategorical-numerical 特征交互的能力。我们把对适当的 feature representation 方案的探索留给未来的工作。

      可以考虑和 AutoDis 结合,从而自动离散化 numerical feature

  3. Transformer head 数量的敏感性:下图给出了不同 head 数量的 InterHAt 的效果。我们将 head 数量从 1 增加到 12 ,保持其他 setting 不变,并训练模型直到收敛。可以看到:

    • 对于 CriteoAvazu 数据集,最佳 head 数量分别为 84
    • 对于 Frappe 数据集,最佳 head 数量为 1

    这与我们的观察一致,即 Frappe field 的语义彼此隔离,没有任何潜在的交互(即,每个 field 只有一个语义空间)。

    研究结果证明了复杂数据集的样本中存在特征多义性,并证明了 multi-head Transformer 的有用性。

    随着 head 数量的增加,模型性能会因过度参数化而下降。

36.2.2 可解释性

  1. 在得到 CTR 预测的同时,我们也得到了解释,这是 InterHAt 的主要贡献之一。这里我们通过可视化学到的、显著的低阶特征或高阶特征来演示可解释性。然而,CriteoAvazu 数据集中,field 内容因为隐私保护问题而被加密,这使得无法证明由 InterHAt 构造的解释是否合理。为此,我们使用一个真实数据集、以及一个人工合成的数据。

  2. 真实数据集:MovieLens-1M 数据集,具有明文属性。每个样本都有用户画像、电影属性、以及 1~5 的评级。用户画像包括年龄、性别、职业,电影属性包括发型年份、电影风格(18 种风格)。我们将评分动作视为点击,即 label = 1 的正样本,然后通过随机采样 (movie, user) pair 来创建与正样本数量相同的负样本。正样本和负样本没有重叠。

    我们绘制了从一阶到三阶注意力权重的热力图,即 {α1,α2,α3} 。我们选择 k=3 ,因为我们发现更高阶的特征中绝大多数是不重要的。由于篇幅有限,我们没有 αf 的结果。我们选择用于可视化的 i 阶的样本,在它们各自的 αf 中具有最大的 αf(i)

    Figure 5/6/7 中,深色的 cell 表示 InterHAt 学到的更大的特征重要性。横轴为电影流派,被简写为三个字母。在 Raw genre 行,黑色的 cell 表示输入数据中包含对应的电影派别属性。

    • Figure 5 显示了对电影《终结者》( 1984 ) 的可解释结果,该样本在 αf 中具有相对最大的 αf(1) (一阶特征最重要)。
    • Figure 6 显示了对电影《Léon: The Professional (1994) 》 的可解释结果,该样本在 αf 中具有相对最大的 αf(2) (二阶特征最重要)。
    • Figure 7 显示了对电影《玩具总动员2 》(1999) 的可解释结果,该样本在 αf 中具有相对最大的 αf(3) (三阶特征最重要)。

  3. 人工合成数据集:考虑到 MovieLens-1M 是评级数据而不是点击数据,我们使用人工合成的点击数据集。合成数据包含 10field F=[f1,,f10] ,每个 field 是独立创建的,并且取值空间全部都是 [β1,,β10]label 根据 feature group 来决定,其中 feature group 如下表所示:

    (33)Prob(y=1|F,G)={p1, if fiG,value(fi)=βip2,otherwise

    例如,对于第二条规则,当条件 value(f3)=β3,value(f4)=β4 时, label 取值为 1 的概率为 1p1 。否则 label 取值为 1 的概率为 1p2 。我们将 p1 设置为 0.9p2 设置为 0.2

    评估结果如下图所示。我们通过每一层中注意力的热力图来呈现显著的特征。以下热图中第 i 阶的每个 cell 表示满足 Table 4 中的 i 阶规则的所有记录中,各层的 aggregation attention α 的归一化平均值。

    • Figure 8 给出了所有样本的一阶热力图。我们观察到:

      • f1 的注意力最大,这与 Rule 1 一致。
      • 此外,来自注意力的方差较小,这意味着仅使用一阶交互进行学习和预测时,稳定性较差。
    • Figure 9 给出了所有样本的二阶热力图。我们观察到 f3,f4 的注意力最大,这与 Rule 2 一致。

    • Figure 10 给出了所有样本的一阶到四阶热力图。我们观察到:

      • 在前三阶中,f5,f6,f7 的注意力最大。
      • 在第四阶,所有 field 具有均匀的注意力分布。这表明数据集中不存在更高阶的特征。

三十七、xDeepInt[2023]

  1. CTR 预测模型中,探索有用的特征交互在提高模型性能方面起着关键作用。传统上,数据科学家根据领域知识搜索和建立手工制作的特征交互,以提高模型性能。在实践中,高质量的特征交互需要昂贵的时间和人力成本。此外,鉴于大量的特征和高cardinality ,手动提取所有可能的特征交互是不可行的。因此,在高维和稀疏的特征空间中,自动有效地学习低阶特征交互和高阶特征交互,成为学术界和工业界提高 CTR 预测模型性能的一个重要问题。

    由于强大的 feature learning 能力,深度学习模型在推荐系统中取得了巨大的成功。学术界和工业界都提出了一些深度学习架构。然而,所有现有的模型都是利用 DNN 作为学习高阶的、隐式的、bit-wise 特征交互的 building block ,没有阶次的约束。当建模显式的特征交互时,现有的方法只能有效地捕获低阶的显式交互。学习高阶交互通常需要更高的计算成本。

    在论文 《xDeepInt: a hybrid architecture for modeling the vector-wis eand bit-wise feature interactions》 中,作者提出了一个高效的基于神经网络的模型,称为 xDeepInt,以显式地学习 vector-wise 特征交互和 bit-wise 特征交互的组合。在多项式回归的启发下,作者设计了一个新颖 Polynomial Interaction Network: PIN 层来显式地捕捉有界阶次的 vector-wise 交互。为了以可控的方式同时学习 bit-wise 交互和 vector-wise 交互,作者将 PINsubspace-crossing 机制相结合,这大大提升了模型性能,并带来更多的灵活性。bit-wise 交互的阶次随着子空间的数量而增长。

    综上所述,论文贡献如下:

    • 论文设计了一个名为 xDeepInt 的新型神经网络架构,它显式地同时建模了 vector-wise 交互和 bit-wise 交互,免除了联合训练的 DNN 和非线性激活函数。所提出的模型是轻量级的,但是比许多现有的结构更复杂的模型产生了更好的性能。
    • 在高阶多项式逻辑回归的启发下,论文设计了一个 Polynomial-Interaction-Network: PIN 层,它可以递归地学习高阶的、显式的特征交互。通过调整 PIN 层的数量来控制交互的阶次。作者进行了一项分析,以证明 PIN 的多项式逼近的属性。
    • 论文引入了一个 subspace-crossing 机制来建模 PIN 层内不同 field 之间的 bit-wise 交互。 PIN 层和 subspace-crossing 机制的结合使我们能够控制 bit-wise 交互的阶次。随着子空间数量的增加,模型可以动态地学习更细粒度的 bit-wise 特征交互。
    • 论文设计了一个与所提模型的结构相协调的优化策略。论文将 Group Lasso FTRL 应用于 embedding table ,将整个行缩减为零,实现了 feature selection 。为了优化 PIN 层的权重,论文直接应用 FTRL 。权重的稀疏性导致了对特征交互的选择。
    • 论文在三个真实世界的数据集上进行了综合实验。结果表明:xDeepInt 在极端高维和稀疏的 setting 下优于现有 SOTA 的模型。论文还对 xDeepInt 的超参数设置进行了敏感性分析,并对 DNN 的集成进行了消融研究。
  2. 相关工作:

    • 建模隐式交互:大多数 DNN-based 的方法在初始阶段将高维稀疏 categorical feature 和连续特征映射到低维潜在空间。在不设计具体模型结构的情况下,DNN-based 的方法通过将 stacked embedded feature vector 馈入深度前馈神经网络来学习高阶的隐式的特征交互。

      • Deep Crossing Network 利用前馈结构中的残差层来学习高阶交互,并提高稳定性。
      • 一些混合网络架构,包括 Wide & Deep Network: WDLProduct-based Neural Network: PNNDeep & Cross Network: DCNDeep Factorization Machine: DeepFMeXtreme Deep Factorization Machine: xDeepFM 采用前馈神经网络作为其深度组件来学习高阶的隐式交互。补充的隐式高阶交互提高了那些仅仅建模显式交互的网络的性能。
    • 建模显式交互:

      • Deep & Cross Network: DCN 以显式的方式探索 bit-wise level 特征交互。具体而言,DCN 的每个 cross layer 都构建了所有的交叉项,从而利用 bit-wise 交互。 cross layer 的数量控制了 bit-wise 特征交互的阶次。

      • 最近的一些模型使用向量乘积的特定形式显式地学习 vector-wise 特征交互。

        • Deep Factorization Machine: DeepFM 通过联合学习 feature embedding ,将 factorization machine layer 和前馈神经网络结合起来。factorization machine layer 通过内积 <xi,xj> 来显式建模特征 i 和特征 j 之间的 pairwise vector-wise 交互。然后, vector-wise 输出与前馈神经网络的输出单元相拼接。

        • Product Neural Network: PNN 引入了内积层 inner product layer 和外积层 outer product layer ,分别学习显式的 vector-wise 交互和显式的 bit-wise 交互。

          是否可以用类似于 AutoFIS 的机制,在搜索阶段查找 vector-wise 交互和 bit-wise 交互中的重要交互,然后在重训练阶段裁剪掉不重要的交互从而提高性能?

        • xDeepFM 通过使用 Compressed Interaction Network: CIN 学习显式的 vector-wise 交互,其中 CIN 具有类似于RNN 的架构,并使用 Hadamard product 学习所有可能的 vector-wise 交互。卷积滤波器和池化机制被用来提取信息。

        • FiBiNET 利用 Squeeze-and-Excitation 网络动态地学习特征的重要性,并通过双线性函数来建模特征交互。

      • 在最近关于序列模型的研究中,Transformer 架构被广泛用于理解相关特征之间的关联。通过不同层的多头自注意力神经网络,AutoInt 可以学习输入特征的不同阶次的特征组合。一些工作采用残差连接从而传递不同阶次的特征交互。

      上述方法通过使用外积、kernel product 、或多头自注意力来学习显式的特征交互,这需要昂贵的计算成本。

37.1 模型

  1. xDeepInt 的架构如下图所示:

    • 首先是输入层和 embedding 层,它们将连续特征和高维 categorical feature 映射到一个稠密的向量。
    • 然后是 Polynomial Interaction Network: PIN 层,它们利用带残差连接的交互层来显式地学习 vector-wise 交互。
    • 此外我们实现了 subspace-crossing 机制来建模 bit-wise 交互,其中子空间的数量控制着 bit-wise 交互的和 vector-wise 交互的混合程度。

    论文的核心思想就是 DCN V2 加上 subspace-crossing 机制。其中 subspace-crossing 机制会大大增加模型容量,介于 feature-wisebit-wise 之间。论文整体创新性不足,不建议阅读。

    此外, subspace-crossing 机制可以在实践中应用。

  2. Embedding Layer:假设我们有 Ffield 。在我们的特征预处理步骤中,我们将所有的连续特征以 equal frequency bin 的方式分桶,然后将分桶后的连续特征、以及 categorical 特征嵌入到同一个潜在空间 RK

    (34)ef=VfxfRK

    其中:Vffield fembedding matrixxffield fone-hot 向量(即,原始的输入特征),effield fembedding 向量。

    我们堆叠 Fembedding 向量,从而获得 input feature map X0

    (35)X0=[e1,e2,,eF]RK×F

    注意:大多数 DNN-based 方法将 embedding 向量拼接成一个更长的一维向量,而这里将 embedding 向量堆叠为二维矩阵。

  3. Polynomial Interaction Network: PINPIN 的公式如下:

    (36)Xl=f(Wl1,Xl1,X0)+Xl1=Xl1(X0Wl1)+Xl1=Xl1(X0Wl1+1)

    其中:Hadamard productWl1RF×F1RK×F 为全一的矩阵;Xl1 为第 l 个交互层的输入;Xl 为第 l 个交互层的输出。

    Wl1 是作用在 Xl1 上还是作用在 X0 上,区别不大。

    上述公式就是 DCN V2 的公式。

    lPIN 层的输出,是所有阶次小于等于 lvector-wise 交互的加权和。PIN 层的结构是根据以下几个方面启发而来:

    • 首先, PIN 有一个递归结构。当前层的输出建立在上一层的输出、以及一阶 feature map 的基础上,确保高阶特征交互是建立在前几层的低阶特征交互之上。
    • 其次,我们使用 Hadamard product 来建模显式的 vector-wise 交互。相比内积的形式,Hadamard product 保留了更多的信息。
    • 然后,我们建立一个 field aggregation layer Agg(l)(x)=XWl,它在 vector-wise level 上使用线性变换 Wl 来组合 feature mapfield aggregation feature map 的每个向量可以被看作是由 input feature map 的加权和所构建而成。
    • 然后,针对当前层,我们取 field aggregation feature map 以及上一层输出之间的 Hadamard product 。这一操作使我们能够在现有的 (l1) 阶特征交互的基础上探索所有可能的 l 阶多项式特征交互。
    • 最后,我们利用残差连接,从而允许组合不同阶次的 vector-wise 的特征交互,包括第一个 feature map 。随着层数的增加,特征交互的阶次也在增加。PIN 的递归结构能够限制多项式特征交互的阶次。

  4. subspace-crossing 机制:PIN 建模 vector-wise 交互,然而它无法建模 bit-wise 交互。为了建模 bit-wise 交互,我们提出了 subspace-crossing 机制。假设我们把 embedding 空间拆分为 h 个子空间,那么 input feature map X0 就由 h 个子矩阵来表示:

    (37)X0=[X0,1X0,2X0,h]

    其中:X0,iR(K/h)×F

    然后,我们在 field 维度上堆叠所有子矩阵,并构建一个堆叠的 input feature map

    (38)X0=[X0,1,X0,2,,X0,h]

    通过将每个 fieldembedding 向量分割成 h 个子向量并将它们堆叠在一起,我们可以将不同 embedding 维度的 bit 进行对齐,并在堆叠的 sub-embedding 上创建 vector-wise 交互。因此,我们将 X0 馈入 PIN

    (39)Xl=Xl1[X0Wl1+1]

    其中:Wl1R(Fh)×(Fh)1R(K/h)×(Fh)XlR(K/h)×(Fh)

    在普通的 PIN 层中,feature mapfield aggregationHadamard product 的乘法交互都是 vector-wise level 的。subspace-crossing 机制所增强的 PINh 个被对齐的子空间作为输入,从而鼓励 PIN 通过交叉不同子空间的特征来捕获显式的 bit-wise 交互。子空间的数量 h 控制着 bit-wise 交互的复杂性,较大的 h 有助于模型学习更复杂的特征交互。

    这其实是 group-bit wise 的交互,而不仅仅是 bit-wise 交互。

  5. Output LayerPIN 的输出是一个由不同阶次的特征交互组成的 feature map ,包括由残差连接保留的原始 input feature map 、以及由 PIN 学到的高阶特征交互。最终预测为:

    (40)y^=σ((XlWout+b1)1)

    其中:σ()sigmoid 函数,WoutRF×1feature map 聚合向量,1R1 为全一的向量,bRbias

  6. 优化和正则化:我们使用 Group Lasso Follow The Regularized Leader: G-FTRL 作为 embedding 层的优化器从而进行特征选择。我们使用 Follow The Regularized Leader: FTRL 作为 PIN 层的优化器从而进行交互选择。

    • Group lasso FTRL 将每个 field 中不重要的特征的整个 embedding 向量正则化为完全为零,这实质上是进行特征选择,并且为工业界的 setting 带来更多的训练效率。 group lasso regularization 是在子空间分割机制之前应用的,这样特征选择在每个子空间之间是一致的。
    • FTRLPIN 层中 weight kernel的单个元素正则化为完全为零,这就排除了不重要的特征交互,使模型的复杂性正则化。 这种优化策略利用了不同优化器的特性,在 embedding tableweight kernel 中分别实现了 row-wise 稀疏性和 element-wise 稀疏性。因此,它同时提高了 trainingserving 的泛化能力和效率。它在模型压缩方面也发挥了重要作用。

    如果换 Adam 优化器,那么最终性能有所下降,但是仍然保持较好。

  7. 训练:我们使用 logloss 作为损失函数:

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

    其中:yiground-truthy^ 为模型预估的点击率,N 为训练样本数量。

  8. PINDCN 之间的差异:PINDCN 都采用了 iterative 的形式,然而它们在网络架构上有所差异。

    • DCN 而言,第 l 层为:

      (42)xl=fDCN(xl1,wl1,bl1)=(x0xl1)wl1+bl1+xl1

      其中:x0xl1 为向量外积。

      对于 DCNfeature map 被展平并拼接成单个向量。所有高阶的 bit-wise 交互首先通过 x0xl1 建模,然后通过线性聚合。

      这种结构导致了输出的特殊格式。如 《xdeepfm: Combining explicit and implicit feature interactions for recommender systems》 所述,DCN 层的输出是 x0 的标量倍数。xdeepfm 的论文也指出了 DCN 的缺点:

      • DCN 的输出是一种特殊的形式,每个隐层的输出都是 x0 的标量倍数,因此限制了模型的表达能力。
      • 交互只以 bit-wise 的方式出现。
    • PINHadamard product 建模 vector-wise 特征交互,保留了 vector-wise level 信息。

      为了让不同的 fieldvector level 上交叉,PIN 首先通过线性变换 X0Wl1 为每个 iterative PIN layer 聚合 input feature map ,并通过 Xl1(X0Wl1) 来建模交互。因此,PIN 保持了 vector-wise 特征交互,并且不限制输出为 X0 的标量倍数。

      此外,每个 PIN 层都与输入 feature map X0 直接相连,这提高了模型的可训练性。我们还将在后面的章节中证明 PIN 的多项式逼近的属性。

  9. xDeepInt 分析:考虑具有 LPIN 层、以及 subspace crossing 机制的 xDeepInt 模型。 subspace crossing 机制采用 h 个子空间。输入具有 Ffieldembedding sizeK

    • 多项式逼近:参考原始论文。

      作者仅仅只是把 PIN 的公式进行展开,然后说明这是多项式逼近。并未从理论上证明。

    • 时间复杂度:

      • lPIN 层计算 feature map XWl1 的成本是 O(hF2K) 。对于 L 层,所有 feature map 的计算总成本是 O(LhF2K)
      • 额外的成本还有 Hadamard product 和残差连接。对于 L 层,它们的总成本为 O(LFK)

      在实践中,h 不会太大。因此,总的时间复杂度 O(LhF2K+LFK) 主要取决于 field 数量 Fembedding size 𝐾

      对于一个 LDNN ,每层都有 Dk个神经元,时间复杂度为 O(FK×D1×D2+k=2L1Dk1DkDk+1)。因此,当建模较高阶次的 bit-wise 交互时,xDeepInt 的时间复杂度比 DNN 高。

    • 空间复杂度:

      • embedding layer 包含 f=1FK×Cf 个参数,其中 Cf 为第 ffieldcardinality
      • 输出层需要聚合最后一个 PIN layerfeature map 。因此,输出层需要 F+1 个参数。
      • subspace crossing 机制在每个 PIN layer 需要 h2×F2 个参数,这是权重矩阵 {Wr}r=1(L1) 的大小。

      xDeepInt 的总体空间复杂度大约为 O(h2×F2×L+K2/h) ,受到 embedding size K 的严重影响。一个普通的 LDNN ,每层有 Dk 个神经元,需要 FK×D1+k=2LDk1Dk 个参数。

      为了降低 xDeepInt 的空间复杂度,我们可以应用 xDeepFM 中介绍的方法:通过利用矩阵分解,用两个低秩矩阵取代权重矩阵Wr,可以进一步降低模型的空间复杂度。

37.2 实验

  1. 数据集:Avazu, Criteo, iPinnYou

    • 对于 Criteo 数据集,根据Criteo 竞赛冠军的做法,我们将所有数值特征离散化为整数,离散化函数为:

      (43)z(x)=log(x2)

      根据 AutoInt 论文的做法,应该是:

      (44)z(x)={log2(x), if x>22, else

      对于 iPinYou,我们遵循 《Real-time bidding benchmarking with ipinyou dataset》 的数据处理步骤。

    • 对于所有的数据集,我们随机地拆分为三个部分:70% 用于训练、10% 用于验证、20% 用于测试。我们还删除了每个 categorical feature 中出现少于 20 次的低频特征。

    注意,我们想比较自动学习高阶特征交互的效果和效率,所以我们不做任何特征工程,只做特征变换,如数值特征分桶、以及 categorical 特征的频次阈值。

  2. 评估指标:LogLoss, AUC

  3. baseline 方法:logistic regression: LRfactorization machine: FMDNN(普通的多层感知机)、Wide & DeepDeepCrossingDeep & Cross Network: DCNPNN (同时包含内积层和外积层)、DeepFMxDeepFMAutoIntFiBiNET

  4. 配置:我们使用 Tensorflow 实现所有的模型。mini-batch size 设为 4096。所有特征的 embedding size 设为 16

    • 关于优化器,对于神经网络模型我们采用学习率为 0.001Adam 优化器,对于 LRFM我们采用学习率为 0.01FTRL

    • 关于正则化,我们选择了 L2 正则化,稠密层的正则化为 λ=0.0001

    • 在验证数据集上对每个 baseline 模型的超参数进行了网格搜索:

      • DNN, Cross, CIN, Interacting layers 的搜索空间为 [1, 2, 3, 4]
      • 神经元的搜索数量从 1281024
    • 所有的模型都是带早停的训练,每 2000 个训练步进行评估。

    • 对于 xDeepInt 的超参数搜索:

      • feature interaction layer 的搜索空间为 [1, 2, 3, 4]
      • 子空间数量 h 的搜索空间为 [1, 2, 4, 8, 16] 。由于我们的 embedding size16,这个范围覆盖了从完全的 vector-wise 交互到完全的 bit-wise 交互。
    • 我们对 embedding table 使用 G-FTRL 优化器、对 PIN 层使用 FTRL 优化器,学习率为 0.01

  5. 性能比较如下表所示:

  6. 超参数研究:

    • 网络深度:当层数为 0 时,我们的模型等价于 LR,没有学习任何交互。可以看到当层数在 3 ~ 4 时,模型效果最佳。这里我们将子空间的数量设置为 h=1 ,以禁用 bit-wise 特征交互。

    • 子空间数量:subspace-crossing 机制改善了性能。这里我们将 PIN 层的数量设为 3 ,这通常是一个很好的选择,但不是每个数据集的最佳设置。

    • 激活函数:线性激活函数对 PIN 来说是最有效的。

    • 优化器:G-FTRL and FTRL 组合优化策略取得了更好的性能。并且我们的优化策略得到了更高程度的特征稀疏率( embedding table 中所有 zero embedding vector 的占比)和特征交互稀疏率( PIN 层中零权重的占比),这导致了轻量级模型。

      有一点需要注意的是:当使用 Adam 优化器时,xDeepInt 仍然在所有模型中取得了最好的预测性能,这表明了 xDeepInt 架构的有效性。

  7. 集成隐式交互:这里我们进行了消融研究,比较了我们提出的模型在集成隐式特征交互、以及不集成隐式特征交互的情况下的性能。在本实验中,我们将 xDeepInt 与三层前馈神经网络联合训练,并将组合模型命名为 xDeepInt+ ,与普通 xDeepInt 进行比较。

    可以看到:联合训练的前馈神经网络并没有提高普通 xDeepInt 的性能。原因是普通 xDeepInt 模型已经通过 subspace-crossing 机制学习了 bit-wise 交互。因此,前馈神经网络并没有带来额外的预测能力。

    这里的联合训练,指的是结构并行(而不是堆叠式)。

三十八、BarsCTR[2021]

  1. 与其他数据类型(如图像和文本)相比,CTR 预测问题通常涉及大规模和高度稀疏的数据,并包括许多不同 fieldcategorical feature (例如,在 Google Playapp 推荐中,有数十亿的样本和数百万的特征)。因此,在 CTR 预测中大幅提高准确性是一个巨大的挑战。

    CTR 预测的重要性和独特的挑战已经吸引了学术界和工业界的大量研究关注。CTR 预测模型已经从简单的logistic regression : LRfactorization machine: FM 和决策树,发展到deep neural network: DNN 。值得注意的是,许多深度模型已经被提出,并在工业的 CTR 预测问题上显示出显著的性能提升,如 Wide&DeepDeepFMDCNxDeepFMFiBi-NETDIN,等等。

    尽管这些研究取得了成功,但仍然缺乏标准化的 benchmark 和统一的 CTR 预测任务的评估协议。因此,即使采用了一些常见的数据集(如 CriteoAvazu),现有的研究往往会进行他们自己的数据集拆分(例如,使用未知的 train-test 拆分,或使用未知的随机数种子)、以及预处理步骤(关于如何处理数值特征,以及如何过滤低频的categorical feature )。这导致了这些研究中的实验结果不可复现,甚至不一致,因为他们的非标准化的数据预处理使得任何两篇不同的论文的结果都没有可比性。每项工作都声称在他们自己的 data partition 上取得了显著改进的最佳结果,然而没有人知道:如果采用相同的评估协议进行公平的比较会是什么结果。由于缺乏公开的 benchmarking 结果作为参考,读者可能会怀疑论文中的 baseline 模型是否实现正确、是否经过了严格的超参数调优,但是这些研究都没有报告细节、也没有公开他们 baseline 实现的源代码。在某些 case 中,一些流行模型的官方或第三方源代码是可用的(如 DeepCTR ),但我们发现关于超参数设置、数据加载、以及 early stopping 的训练细节通常是缺失的,这使得我们很难重用代码来复现已有结果。 这种不可复现性和不一致性问题在很大程度上限制了该领域研究的实用价值和潜在影响。

    此外,由于文献中缺乏可重复使用和可比较的benchmarking 结果,研究人员在发表新的论文时,需要重新实现所有的 baseline ,并在自己的 data partition 上重新评估。这是一项繁琐而冗余的工作,严重地增加了研究人员开发新模型的负担。

    ImageNet benchmarkCV 领域、以及 GLUE benchmarkNLP 领域的成功启发,在论文 《BarsCTR: Open Benchmarking for Click-Through Rate Prediction》 中,作者建议对 CTR 预测进行 open benchmarking 。论文不仅规范了 CTR 预测的 open benchmarking pipeline,而且还对不同的模型进行了严格的比较,以便进行可复现的研究。为此,论文用统一的 setup12000 多个 GPU hours 内进行了 7000 多个实验,在两个广泛使用的数据集(包括 CriteoAvazu )的多个数据集 setting 上重新评估了 24 个现有模型。论文的实验显示了有些令人惊讶的结果:经过充分的超参数搜索和模型调优,许多模型的差异比预期的要小,有时甚至与文献中的报道不一致。

    一项类似的研究(《Are wereally making much progress? A worrying analysis of recent neural recommendation approaches》)也对推荐系统的多篇代表性论文进行了重新评估,提出了结果的可复现性问题以及对用于比较的 baseline 缺乏足够优化的担忧。与这项工作相比,作者更进一步,建立了一个 CTR 预测的open benchmark ,记做 BarsCTR 。目前, BarsCTR 已成为 BARS benchmark project 的主要 benchmarking 任务之一。 BARS benchmark project 旨在为推荐系统研究建立一个标准化的open benchmarking pipeline ,并通过开放最全面的benchmarking 结果以及有据可查的复现步骤,从而推动该领域的可复现研究。作者相信,这样的 benchmarking 研究对多个不同的读者群体都有好处:

    • 研究人员:该 benchmark 不仅可以帮助研究人员分析现有模型的优势和瓶颈,还可以让他们方便地衡量新模型的有效性。此外,论文的benchmark 还展示了一些良好的实践,为未来的研究提供公平的比较。
    • 从业人员: benchmark 代码和结果可以帮助工业的从业者评估新研究模型在他们自己问题中的适用性,并允许他们在自己的数据集上以较少的努力尝试新模型。
    • 比赛选手:利用论文的源代码和超参数,比赛选手可以在相关比赛中轻松实现高性能的 baselineensemble
    • 初学者:对于这个领域的初学者,特别是学生,论文的 benchmarking codehttps://openbenchmark.github.io/ctr-prediction/)和详细的复现步骤可以作为学习 CTR 预测的模型实现和模型调优技巧的指导手册。将论文的项目用于教育目的也是很有价值的。

    总而言之,论文的主要贡献如下:

    • 就作者所知,论文的工作为 CTR 预测的 open benchmarking 迈出了第一步。
    • 论文在网站上公开了所有的 benchmarking code 、评估协议、超参数设置和实验结果,以促进 CTR 预测的可复现性研究。
    • 论文的工作揭示了现有研究中的不可复现性non-reproducibility 和不一致性inconsistency 问题,并呼吁在未来的 CTR 预测研究中保持模型评估的开放性和严谨性。
  2. 相关工作:

    • CTR Prediction:在过去的十年中,CTR 预测模型被广泛研究,并经历了从线性模型、到FM、再到基于深度学习的模型的几代演变。这些工作被总结为以下几类:

      • Feature interaction learning:虽然简单的线性模型(如 LRFTRL )由于简单和高效而被广泛使用,但它们很难捕捉到非线性特征。《Practical Lessons from Predicting Clicks on Ads at Facebook》提出了 GBDT+LR 的方法,应用 Gradient Boosting Decision Tree: GBDT 来抽取有意义的 feature conjunction
      • FMFM 是一个有效的模型,通过特征向量的内积来捕获 pairwise feature interaction 。由于它的成功,人们从不同方面提出了许多后续模型,如 field awarenessFFM, FwFM)、特征交互的重要性(AFM, IFM)、基于外积的交互(HFM)、鲁棒性(RFM)、可解释性(SEFM)。然而,这些模型在实践中无法捕获高阶特征交互。
      • DNN:最近,深度学习已经成为推荐系统中的一种流行技术,产生了大量用于 CTR 预测的深度模型,包括 YoutubeDNN, Wide&Deep, PNN, DeepFM, DistillCTR 等等。其中一些模型旨在显式地捕获不同阶次的特征交互(如,DCN, xDeepFM),另一些模型探索使用卷积网络(如 CCPM, FGCNN )、递归网络(DSIN, DIEN)、或注意力网络(AutoInt, FiBiNET )来学习隐式的特征交互。
      • Behaviour sequence modeling:用户的历史行为对预测下一个item 的点击概率有很大影响。为了更好地捕获这种历史行为(如 item 购买序列),最近的一些研究提出了通过注意力机制、LSTMGRU 、以及 memory networkCTR 预测建立用户兴趣模型。典型的例子包括 DIN, DIEN, DSIN, HPMN, DSTN
      • Multi-task learning:在许多推荐系统中,用户可能会有点击以外的各种行为,如浏览、收藏、添加到购物车、以及购买。为了提高CTR 预测的性能,最好能利用其他类型的用户反馈来丰富 CTR 预测的监督信号。为了实现这一目标,一些工作提出了 multi-task learning 模型(如,ESMM, MMoE, PLE )来学习不同用户行为之间的 task relationship
      • Multi-modal learning:如何利用 item 丰富的多模态信息(如文本、图像和视频)来增强 CTR 预测模型是一个重要的研究问题,需要更多的探索。一些先驱性的工作证明了将多模态内容特征纳入 CTR 预测的有效性。
    • Benchmarking and Reproducibilityopen benchmarking 对促进研究进展很有价值。例如,ImageNetGLUE 是两个著名的 benchmark ,分别对计算机视觉和自然语言处理的进展做出了很大贡献。在推荐系统中,一些数据集(如 CriteoAvazu)被广泛使用。然而,仍然缺乏标准化的评估协议,这导致了现有研究的不一致性和不可复现性问题。

      值得注意的是,同时进行的一项工作(《Are We Evaluating Rigorously? Benchmarking Recommendation for Reproducible Evaluation and Fair Comparison》)也报告了一些经典推荐模型的benchmarking 结果。然而,他们的工作未能提供详细的配置和超参数设置,以实现可复现性。在这项工作中,我们通过建立第一个用于 CTR 预测的 open benchmark 、以及发布 20 多个模型的benchmarking结果,向可复现性研究迈出了重要一步。更重要的是,我们提供了所有的中间工件artifact (如复现步骤、运行日志),以确保我们结果的可复现性。

38.1 CTR Prediction

  1. Overview:一般而言,一个 CTR 预测模型由以下关键部分组成:

    • Feature EmbeddingCTR 预测的输入样本一般包含三组特征,即 user profile, item profile, context information ,每组特征都包含一些 feature field 。每个 field 的特征可以是categorical 的、numeric 的、或 multi-valued 的(例如,一个item 的多个 tag )。

      由于大多数特征是非常稀疏的,在one-hot encodingmulti-hot encoding 后会导致高维的特征空间,所以通常会应用 feature embedding 来将这些特征映射成低维的稠密向量。有三种类型的 feature embedding 过程:

      • Categorical:对于一个 categorical feature field i ,给定一个 one-hot feature vector xi ,我们将其嵌入为:ei=Vixi 。其中,ViRd×nembedding matrixn 为词表规模,dembedding 维度。

      • Numeric:对于数值特征字段 j ,有多种 feature embedding 的选择:

        • 可以通过对数值特征进行分桶从而转换为离散特征,通过手动设计(例如,将 13~19 岁归为青少年)、或通过在数值特征上训练决策树(如,GBDT )。
        • 给定一个归一化的标量值 xj,我们将其 embedding 设为 ej=vjxj ,其中 vjRdfield j 内所有特征的 shared embedding vector
        • 与其将每个值进行分桶、或为每个数值 field 分配一个向量,例如应用 AutoDis 这种 numeric feature embedding 方法,动态地将数值特征分桶,并从meta embedding matrix 计算 embedding
      • Multi-valued:对于一个 multi-valued field h ,每个特征可以表示为一个序列。我们得到它的 embedding 为:eh=Vh[xh1,xh2,,xhk]Rd×k ,其中 xhi 为序列元素的 one-hot encoded vectork 为序列长度。然后,embedding eh 可以进一步聚合为 𝑑 维向量,例如通过均值池化和 sum 池化。

        一个进一步的潜在改进是应用序列模型(如 DIN 中的 target attention 、以及 DIEN 中的 GRU )来聚合 multi-valued 行为序列特征。

    • Feature Interaction:对于 CTR 预测任务,特征之间的交互(又称 feature conjunction )是提高分类性能的核心。在factorization machine: FM 中,内积被证明是一种简单而有效的方法来捕获 pairwise feature interaction

      FM 成功以来,大量的研究致力于以不同的方式捕捉特征之间的交互。典型的例子包括:PNN 中的内积层和外积层、NFM 中的Bi-interactionDCN 中的 cross networkxDeepFM 中的 compressed interactionFGCNN 中的卷积、HFM 中的循环卷积、FiBiNET 中的双线性交互、AutoInt 的自注意力、FiGNN 的图神经网络、InterHAt 的分层注意力。

      此外,目前的大部分工作都在研究如何同时将显式特征交互和隐式特征交互(通过普通的全连接网络,即 MLP )结合起来。

    • 损失函数:二元交叉熵损失目前广泛应用于 CTR 预测任务中,它的定义为:

      (45)L=1ND(ylogy^+(1y)log(1y^))

      其中:D 为包含 N 个样本的训练集,yground-truthy^ 为预估的点击概率。

      我们定义:y^=σ(ϕ(x)) ,其中 x 为给定的输入特征,σ()sigmoid 函数,ϕ()model function

  2. 代表性的模型:

    • 浅层模型:

      • Logistic Regression: LRLRCTR 预测的一个简单的 baseline 模型。
      • Factorization Machine: FMFM 将特征嵌入到稠密的向量中,并建模 pairwise 特征交互为相应 embedding vector 的内积。值得注意的是,FM 是特征数量的线性时间复杂度。
      • Field-aware factorization machine: FFMFFMFM 的一个扩展,针对特征交互时考虑了 field 信息。 它是 Kaggle 关于 CTR 预测的几个竞赛中的获胜模型。
      • HOFM:由于 FM 只能捕获到二阶的特征交互,HOFM 旨在将 FM 扩展到高阶 factorization machine 。然而,它导致指数级的特征组合、消耗巨大的内存、并且需要很长的运行时间。
      • FwFMFwFM 通过考虑特征交互的 field-wise 权重扩展了 FM 。与 FFM 相比,它的性能相当,但使用的模型参数少得多。
      • LorentzFMLorentzFM 将特征嵌入双曲空间,并通过洛伦兹距离 Lorentz distance 的三角形不等式建模特征交互。
    • 深层模型:与浅层模型相比,深层模型在捕获复杂的高阶特征交互方面更加强大,通常会产生更好的性能。然而,效率已经成为深层模型在实践中 scale 的主要瓶颈。

      • DNNDNN《Deep Neural Networks for YouTube Recommendations》 报告的一个直接的深层模型,它在拼接 feature embedding 后应用一个全连接网络(称为 DNN )进行 CTR 预测。
      • CCPMCCPM 报告了使用卷积方法进行 CTR 预测的首次尝试,其中 feature embedding 通过卷积网络进行分层聚合。
      • Wide&DeepWide&Deep 结合了 wide network (或浅层网络)和 deep network ,从而同时实现了两者的优势。
      • IPNNIPNNproduct-based network,它将 feature embedding 的内积(或外积)作为 DNN 的输入。由于 pairwise 外积需要巨大的内存,我们选择内积版本,即 IPNN
      • DeepCross:受残差网络的启发,《Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Feature》提出了 deep crossing 来在 DNN 层间增加残差连接。
      • NFM:与 PNN 类似,NFM 提出了一个 Bi-interaction 层,将 pairwise 特征交互池化为一个向量,然后将其馈入 DNN 进行 CTR 预测。
      • AFMAFM 通过注意力网络学习特征交互的权重,而不是像 FM 那样平等对待所有的特征交互。与 FwFM 不同的是,AFM 根据输入的数据样本动态地调整权重。
      • DeepFMDeepFMWide&Deep 的一个扩展,它用FM 代替LR ,显式地建模二阶的特征交互。
      • DCNDCN 提出了一个 cross network ,以显式的方式执行高阶的特征交互。此外,遵从 Wide&Deep,它还集成了一个 DNN 网络。
      • xDeepFMDCN 所建模的高阶特征交互是 bit-wise 的,但 xDeepFM 提出 compressed interaction network: CINvector-wise 的方式捕获高阶特征交互。
      • HFM+HFM 提出了 holographic representation ,并通过循环卷积计算压缩外积来建模 pairwise 特征交互。HFM+ 进一步将 DNN 网络与HFM相结合。
      • FGCNNFGCNN 应用卷积网络和 recombination layer 来生成额外的组合特征,以丰富现有的 feature representation
      • AutoInt+AutoInt 利用自注意力网络来学习高阶的特征交互。AutoInt+AutoInt 与一个 DNN 网络整合在一起。
      • FiGNNFiGNN 利用图神经网络的消息传递机制来学习高阶的特征交互。
      • ONN(也叫 NFFM):ONN 是一个建立在 FFM 上的模型。它将 FFM 的交互输出馈入 DNN 网络。
      • FiBiNETFiBiNET 利用 squeeze-excitation network 来捕获重要的特征,并提出 bilinear interaction 来加强特征交互。
      • AFN+AFN 应用对数转换层 logarithmic transformation layer 来学习自适应阶次的特征交互。AFN+ 进一步将 AFNDNN 网络整合在一起。
      • InterHAtInterHAt 采用分层注意力网络,以有效的方式建模高阶特征交互。

38.2 实验

38.2.1 可复现性要求

  1. 我们强调了以下五个关键要求,以确保可复现的研究。然而,目前许多研究未能满足所有这些可复现性要求,如下表所示。请注意,我们用 ✓ , - , × 分别表示每个要求是否完全、部分、或未满足。它还表示artifacts 是否完全可用、部分可用或不可用从而复现每个 step 。例如,- 表示 FiBiNET 只有非官方的模型源代码。

    • 数据预处理:大多数工作将训练集、验证集和测试集随机拆分,但其他人往往由于缺乏脚本、或使用的随机数种子而无法复现相同的数据拆分。更有甚者,一些预处理的细节(例如,如何处理数值特征、用什么阈值来过滤低频的 categorical feature )可能缺失或不完整。在这种情况下,研究人员不得不进行他们自己的数据拆分和预处理,从而导致无法比较的结果。值得注意的是,AutoInAFNInterHAt 的作者在分享数据处理代码或预处理数据方面做了一个很好的起点。
    • 模型源代码:本着开源的精神,一些研究在 GitHub 上发布了他们的模型源代码。一些流行的模型也有非官方的实现,可以从第三方库中获得(例如 DeepCTR )。但在很多情况下,我们发现源代码还不能用于可复现性研究,因为它可能缺少训练代码(如加载数据、early stopping 等)、或者错过了给定数据集上的一些关键超参数。
    • 模型超参数:大多数研究在论文中指定了他们自己模型的详细超参数。但如果不能获得作者预处理的原始数据集,其他人在新的数据集拆分上使用相同的超参数是不合适的。它可能只能达到次优的性能,需要重新调参。这种做法会导致现有论文中出现不一致的结果。
    • baseline 源代码:许多研究报告了他们自己模型的细节,但没有说明他们如何应用 baseline 模型。我们注意到,现有的研究很少开放 baseline 模型的源代码,也没有说明哪种实现被用于比较。模型的性能在很大程度上取决于其代码实现的质量。糟糕的实现可能会引入bias ,并使模型的比较变得不公平。然而,这一方面往往被现有的研究所忽视,使得他们的性能改进难以复现。
    • baseline 超参数:最好能详尽地调优 baseline 模型的超参数以公平地比较模型的性能。然而,由于缺乏 open benchmarking ,这一点还没有得到保证。大多数现有的研究,由于其未知的数据预处理和 baseline 实现,通常报告同一 baseline 模型的不一致的结果。

    为了实现研究的可复现性和比较的公平性,在这项工作中,我们旨在建立一个标准化的 benchmarking pipeline ,并为 CTR 预测提供最全面的 open benchmarking 结果。

38.2.2 评估协议

  1. 数据集:CriteoAvazu 。我们之所以选择它们,是因为它们都是从生产中的真实点击日志中收集或采样的,而且都有数千万的样本,使得 benchmarking 结果对行业从业者有意义。下表总结了数据统计信息。我们还在 BarsCTR 网站上提供了更多数据集的 benchmarking 结果。

     

  2. 数据集拆分:遵循大多数现有的研究,分别将 CriteoAvazu 随机拆分为 8:1:1 从而作为训练集、验证集和测试集。为了使其完全可复现,并易于与现有工作进行比较,我们重用 AutoInt 提供的代码,并控制随机种子(即 seed=2018 )进行拆分。我们将这两个数据拆分分别记做 Criteo_x4Avazu_x4

  3. 数据预处理:我们主要遵循与 AutoInt 相同的步骤对特征进行预处理。此外,我们做了一些修改,并修复了 AutoInt 中的一个缺陷,以改善 benchmark 结果。

    • Criteo:我们创建了两个不同的评估设置,分别表示为 Criteo_x4_001Criteo_x4_002

      • Criteo_x4_001

        • 对于数值特征,我们没有像 AutoInt 那样对数值进行归一化处理,而是按照 Criteo 竞赛的获胜方案,将每个数值特征按照如下方式离散化从而获得更好的性能:

          (46)f(x)={log2(x), if x>21,else
        • 对于数值特征:我们用默认的 "OOV" token 取代低频特征( min_count=10 )。

        此外,我们还将 feature embedding 的维度固定为 16

      • Criteo_x4_002:与 Criteo_x4_001 不同之处在于,我们为 categorical feature 设置了 min_count=2 ,而 feature embedding 维度在调优之后等于 40

    • Avazu:我们也创建了两个评估设置,即 Avazu_x4_001Avazu_x4_002

      • Avazu_x4_001

        • 我们删除了在每个数据样本中具有 unique 值的 id 字段,这对于 CTR 预测来说应该是无用的。但它在 AutoInt 中被保留了下来,导致了一个缺陷。
        • 此外,我们将 timestamp 字段转化为三个新字段:hour, weekday, is_weekend
        • 对于所有的 categorical feature ,我们用默认的 "OOV" token 代替低频特征( min_count=2 )。
        • 我们进一步将 feature embedding 的维度固定为 16 ,正如 AutoInt
      • Avazu_x4_002 :与 Avazu_x4_001 的不同之处在于,我们为 categorical feature 设置了 min_count=1 ,而 feature embedding 维度在调优之后等于 40

    我们强调,对于 Avazu_x4 ,我们设置了一个小的 min_count 阈值,因为它确实导致了比 AutoInt 中的原始设置(min_count=10 )更好的性能。然而,我们注意到,在我们的 benchmark 中,不同模型之间的相对比较是公平的,因为所有的模型都处于相同的 embedding size 。我们的 benchmark 力求在进行模型比较时提高 baseline 的水平。

  4. 评估指标:AUC, logloss

  5. Benchmarking toolkit :虽然有许多开源项目用于 CTR 预测,但它们大多以临时的方式实现一些模型,缺乏完整的 workflow 来进行 benchmarking 。具体而言,DeepCTR 提供了一个很好的软件包,对许多 CTR 预测模型进行统一实现。尽管如此,我们的 benchmarking 需要一个完整的 workflow (而不仅仅是 CTR 预测模型)。

    在这项工作中,我们建立了开源的 FuxiCTR toolkithttps://github.com/xue-pai/FuxiCTR) ,用于对 CTR 预测模型进行 benchmarking ,提供了关于可配置、可调优和可复现的惊人特性。FuxiCTR 的代码由以下部分组成:

    • 数据预处理部分从 CSV 文件中读取原始数据,转换所有数值特征、categorical feature 、以及序列特征,并将转换后的数据输出到 HDF5 文件。
    • Pytorch 以统一的方式实现了数十个模型。
    • 训练部分的实现是为了读取 batch 数据、计算前向传播和后向传播、并在必要时进行学习率衰减和 early stopping
    • seedinglogging 工具也是专门为可复现性设计的,为每个 benchmarking 实验记录详细的运行日志(包括使用的超参数)。
    • 超参数调优部分提供了一个可配置的界面,允许对用户指定的超参数进行网格搜索。

    我们将所有这些部分整合为一个完整的 benchmarking 框架,使研究人员能够轻松地复用我们的代码,建立新的模型,或增加新的数据集。FuxiCTR 的目标是为 CTR 预测的可复现性研究提供一个易于使用的软件包。

  6. 训练细节和超参数的调优:

    • 在训练过程中,我们默认应用 Reduce-LR-on-Plateau scheduler ,当给定指标停止改善时,将学习率降低 10 倍。
    • 为了避免过拟合,当验证集上的指标在连续 23epoch 中停止改善时,就会采用 early stopping 。默认的学习率是103
    • batch size 最初被设置为 10000 ,如果 GPU 出现 OOM 错误,则使用 [5000, 2000, 1000] 逐渐减少。 我们发现,对于在数百万样本上训练的 CTR 预测模型,使用大的 batch size 通常会使模型运行得更快,并达到更好的结果。
    • 考虑到大量的特征, feature embedding 通常占据了大部分的模型参数。为了公平起见,我们在两个独立的设置中分别将 embedding 固定为 1640
    • 我们还发现,正则化权重对模型性能有很大影响。因此,我们在 0 ~ 1 的范围内仔细调优它,以 10 倍的搜索比例。
    • model size (如层数、隐层单元数)与数据高度相关,因此我们详尽地调优了这些超参数。
    • 我们还仔细调优了其他一些超参数(例如,是否使用 batch normalization ),从而达到每个模型的最佳结果。
    • 为了避免指数组合空间,我们通常先调优重要的超参数,然后再逐组调优其他参数。平均而言,我们对每个模型进行了 73 次实验以获得最佳结果。所有的实验都是在一个共享的 GPU 集群上(P100 GPU )进行的,每个 GPU16GB 内存。
  7. 可复现性:为了实现可重复性,我们保留了每个数据集拆分的 md5sum 值。我们为每个实验明确设置随机数种子,并将数据设置和模型超参数记录到配置文件中。此外,我们选择在 Pytorch 中实现模型,因为它比 Tensorflow 有更好的能力来避免在 GPU 设备上运行模型时的非确定性。

38.2.3 结果分析

  1. 我们报告了 24 个模型的 benchmarking 结果,如下表所示。

    • "Best Reported" 列显示了我们从现有研究中选出的关于 CriteoAvazu 数据集的最佳结果。
    • 我们报告了我们在四个数据集(Criteo _x4_001, Criteo_x4_002, Avazu_x4_001, Avazu_x4_002setting 上的 benchmarking 结果(logloss, AUC )。
    • 对于模型的效率,我们也报告了 Criteo_x4_002Avazu_x4_002 的训练时间,即每个 epoch 的时间和 epoch 的数量。
    • 此外,"#Params" 表示每个模型中使用的参数数量,"#Runs" 记录了我们用网格搜索进行模型调优的实验次数。请注意,"#Runs" 的数值通常取决于模型中要调优的超参数的数量。大量的运行(平均 ~73 次)揭示了在我们的 benchmarking 中,模型已经得到了很好的调优。
    • 此外,我们先在 Criteo_x4_002Avazu_x4_002 上运行实验,所以我们在 Criteo_x4_001Avazu_x4_001 上进行了较少数量的实验来调优模型。

    结论:

    • 现有研究报告中的最佳结果显示出一定的不一致性。如:InterHAt 在两个数据集上的表现都比 LR 差;DeepCrossAvazu 上的表现也比 LR 差。

      这主要是由于即使在相同的数据集上,通常也会采用不同的数据拆分或预处理步骤。这表明标准化的数据拆分和预处理是必要的,以使各模型之间的结果可以直接比较。

    • 在我们的数据集 setting 上进行模型调优后,我们大多获得了比最佳报告结果更好的性能。

    • 我们的 benchmarking 遵循相同的评估协议,使结果具有可比性。

      然而,经过详尽的重新调优,我们发现 SOTA 模型之间的差异变得很小。例如: IPNN, DeepFM, DCN, xDeepFM, ONNCriteo 上都达到了相同水平的准确性( ∼0.814 AUC ),而 DNN, DeepFM, DCN, xDeepFMAvazu 上达到了可比的性能。

      此外,一些最新的模型(如 InterHAt, AFN+, LorentzFM )获得的结果甚至比先前的一些 SOTA 模型还要差。

    • 我们还在 Figure 1 中对我们的 benchmarking 结果和其他论文报告的结果进行了明确的比较。对于每个数据集,我们绘制了8∼9 篇现有论文的 AUC 结果。我们可以看到,由于未知的数据拆分和预处理,不同论文的结果差异很大。

      一些最新的模型只获得了微弱的改进,有时甚至导致性能下降。值得注意的是,我们的 benchmarking 提出了迄今为止所有模型的最佳结果。

    • 内存消耗和模型效率是工业 CTR 预测任务的另两个重要方面。如下表所示,由于使用了卷积网络(如 CCPM, FGCNN, HFM+ )、field-wise 交互(如 FFM, ONN )、图神经网络(如 FiGNN )等,一些模型运行非常缓慢(每个 epoch 数小时)。还有一些模型有更多的参数,如 FFM, ONN, FGCNN 等。这些缺点可能会阻碍它们在工业中的实际应用。

      整体而言,IPNN, DCN 的效果好、训练时间短,取得了良好的 tradeoff 。这两个模型都进行了显式的特征交叉,一个是堆叠式、一个是并行式。

  2. 模型重新调优:为了进一步证明重新调优 baseline 模型的必要性,在下表中,我们展示了四个代表性模型在三种 setting 下的结果:

    • Reported setting:表示相应论文所报告的结果。
    • Rerun setting:表示我们根据原始论文中给出的超参数,在我们的数据拆分上重新进行实验的情况。
    • Retuned setting:表示广泛的超参数调优后取得的结果。

    可以看到:

    • 即使在相同的数据集上,直接复用原来的超参数来重新进行实验,也会在新的数据 setting 中带来很大的性能 gap (即我们 case 中的 Criteo_x4_002Avazu_x4_002 )。

    • 在模型重新调优后,我们比原来的超参数取得了相当大的改进。这表明,在新的数据拆分上测试一个模型时,有必要重新调优超参数(即使是同一数据集)。

      然而,我们不难发现,有些研究为了公平比较,选择遵循论文中使用的 baseline 超参数,但他们在不同的数据拆分上进行实验。因此,希望有一个 common benchmark 来缓解这个问题。

38.2.4 性能调优的关键因素

  1. 在我们的 benchmarking 工作中,我们也确定了一些对性能调优至关重要的关键因素:

    • 数据预处理:数据往往决定了一个模型的上限。然而,现有的工作很少在数据预处理期间对 categorical featuremin_counts 阈值进行调优。在我们的工作中,我们为低频特征过滤设置了一个适当的阈值,这产生了更好的性能。
    • batch size:我们观察到,大的 batch size 通常会带来更快的训练和更好的性能。例如,如果 GPU 没有引发 OOM 错误,我们将其设置为 10000
    • embedding size:虽然现有的工作在实验中通常将其设置为 1016 ,但我们也通过在 GPU 内存限制范围内使用更大的 embedding size (如 40 )来实验其他 setting
    • 正则化权重和 dropout :正则化权重和 dropout 是减少模型过拟合的两个关键技术。它们对 CTR 预测模型的性能有很大影响。我们在一定范围内详尽地搜索最佳值。
    • batch normalization:在某些情况下,在 DNN 模型的隐层之间添加 batch normalization 可以进一步提升预测性能。
  2. 局限性和未来方向:

    • 更多数据集:CriteoAvazu 这两个数据集都是匿名的,缺乏明确的 user fielditem field 的信息。我们计划从工业规模的应用中扩展更多的数据集,使其成为一个更全面的用于 CTR 预测的 open benchmark
    • 数据拆分:为了与大多数现有的研究保持一致,我们将数据集随机拆分。然而在生产中,如果 train - test 分布有很大的不同,就有必要在预测后进行 CTR 校准。我们计划通过按时间顺序拆分数据来评估模型,并在必要时也进行 CTR 校准。
    • 效率基准:在这个版本中,我们主要通过其训练时间来评估这些模型的效率。在将来考虑测试它们的推理时间。由于实时应用中的 CTR 预测有严格的延迟限制。
    • 超参数自动调优:如何为一个给定的模型快速找到最佳的超参数仍然是一个开放的研究问题。当数据随时间演变时,模型的超参数也需要重新调优以适应新的数据分布。我们非常期待探索一些先进的 AutoML 技术从而以进一步促进未来的超参数调优过程。