返回介绍

数学基础

统计学习

深度学习

工具

Scala

三十四、FGCNN [2019]

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

  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 之和。

    正式而言,在一个样本中,每个 fieldi$ i $ (1inf$ 1\le i \le n_f $ ,nf$ n_f $ 为 field 数量)被表示为一个低维向量eiRk$ \mathbf{\vec e}_i\in \mathbb R^k $ ,其中k$ k $ 为 embedding size 。因此,每个样本可以表示为一个 embedding 矩阵E=(e1,e2,,enf)Rnf×k$ \mathbf E = \left(\mathbf{\vec e}_1,\mathbf{\vec e}_2,\cdots,\mathbf{\vec e}_{n_f}\right)^\top\in \mathbb R^{n_f\times k} $ 。在 FGCNN 模型中,embedding 矩阵E$ \mathbf E $ 可以在特征生成和深度分类器中得到利用。

    为了避免更新参数时梯度方向的不一致,我们将为深度分类器引入另一个 embedding 矩阵ERnf×k$ \mathbf E^\prime\in \mathbb R^{ n_f\times k} $ ,而E$ \mathbf E $ 用于特征生成。

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

    如果E$ \mathbf E $ 和E$ \mathbf E^\prime $ 共享,性能会下降多少?

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$ K\times 1 $ ,这会在每个 embedding 维度上聚合相连的K$ K $ 个 field

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

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

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

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

    我们将S1$ \mathbf S^1 $ 展平为一维向量s1Rnfk/hp1mc1$ \mathbf {\vec s}^1\in \mathbb R^{n_fk/h_p^1m_c^1} $ ,那么全连接层的权重矩阵为:W1R(nfk/hp1×mr1)×(nfk/hp1×mc1)$ \mathbf W^1\in \mathbb R^{(n_fk/h_p^1\times m_r^1)\times (n_fk/h_p^1\times m_c^1 )} $ ,bias 向量为b1R(nfk/hp1×mr1)$ \mathbf{\vec b}^1\in \mathbb R^{(n_fk/h_p^1\times m_r^1)} $ 。生成的新特征为:

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

    其中mr1$ m_r^1 $ 为重组层的输出通道数。

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

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

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

    注意,这里也有 reshape 操作。

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

    (15)Econcat=(E,Rall)

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

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

34.1.3 Deep Classifier

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

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

    如下图所示,增强的 embedding 矩阵Econcat$ \mathbf E_\text{concat} $ 的 pairwise 特征交互由 FM layer 来建模。Rall$ \mathbf R_\text{all} $ 的 embedding 向量个数为N$ N $ ,E$ \mathbf E^\prime $ 有nf$ n_f $ 个特征向量,因此Econcat$ \mathbf E_\text{concat} $ 有N+nf$ N+n_f $ 个特征向量。FM layer 的输出维度为(N+nf)(N+nf1)/2$ (N+n_f)(N+n_f-1)/2 $ ,因为 embedding 向量之间两两内积。

    假设 FM layer 的输出为efmR(N+nf)(N+nf1)/2$ \mathbf {\vec e}_\text{fm}\in \mathbb R^{(N+n_f)(N+n_f-1)/2} $ ,则我们将它和展平后的Econcat$ \mathbf E_\text{concat} $ 进行拼接,然后馈入 MLP

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

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

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

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

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

    其中:y$ y $ 为 ground-truthy^$ \hat y $ 为预测的点击率。

34.1.4 复杂度分析

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

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

    • Feature Generation:第i$ i $ 个卷积层有himci1mci$ h^i m_c^{i-1}m_c^i $ 个参数,其中hi$ h^i $ 为卷积核的高度;第i$ i $ 个重组层有(nfk/hpi)2mcimri$ (n_fk/h_p^i)^2m_c^im_r^i $ 个参数。因此,这里的参数数量为:

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

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

      其中Hi$ H_i $ 为第i$ i $ 层 MLP 的隐层维度,nh$ n_h $ 为层数。

    最终的空间复杂度大约为O(tfk+N12k2+T2H1+i=1nhHiHi1)$ O(t_fk+N_1^2k^2 + T^2H_1 + \sum_{i=1}^{n_h} H_iH_{i-1}) $ ,其中Ni=nf/hpimri$ N_i = n_f/h_p^im_r^i $ 为第i$ i $ 个重组层得到的新 embedding 的数量。(具体推导见原始论文)。

  2. 时间复杂度:

    • Feature Generation:时间复杂度约为O(N1ki=1ncmci1hi+N12k2)$ O(N_1k\sum_{i=1}^{n_c} m_c^{i-1}h^i + N_1^2k^2) $ 。具体推导见原始论文。
    • Deep Classifier :时间复杂度约为O(T2H1)+i=2nhO(HiHi1)$ O(T^2H_1) + \sum_{i=2}^{n_h} O(H_iH_{i-1}) $ 。具体推导见原始论文。

    最终的时间复杂度约为O(N1ki=1ncmci1hi+N12k2+T2H1+i=2nhHiHi1)$ O(N_1k\sum_{i=1}^{n_c} m_c^{i-1}h^i + N_1^2 k^2 + T^2H_1 + \sum_{i=2}^{n_h} H_iH_{i-1}) $ 。

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

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$ m_r $ 。生成的特征数量可以计算为i=1ncnf/hpimri$ \sum_{i=1}^{n_c} n_f/h_p^im_r^i $ 。

    对于 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$ h^i $ 、卷积核的数量mci$ m_c^i $ 、卷积层的数量nc$ n_c $ 、以及用于生成新特征的核的数量mri$ m_r^i $ 。在本小节中,为了研究这些超参数的影响,我们在 CriteoHuawei App Store 数据集上,通过改变一个超参数而固定其他参数来研究FGCNN 模型的工作情况。

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

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

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

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

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

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

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

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

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

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

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

发布评论

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