返回介绍

数学基础

统计学习

深度学习

工具

Scala

三十七、xDeepInt [2023]

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

  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> $ <\mathbf{\vec x}_i,\mathbf{\vec x}_j> $ 来显式建模特征 i $ i $ 和特征 j $ 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:假设我们有 F $ F $ 个 field 。在我们的特征预处理步骤中,我们将所有的连续特征以 equal frequency bin 的方式分桶,然后将分桶后的连续特征、以及 categorical 特征嵌入到同一个潜在空间 RK $ \mathbb R^K $ :

    (34)ef=VfxfRK

    其中:Vf $ \mathbf V_f $ 为 field f $ f $ 的 embedding matrixxf $ \mathbf{\vec x}_f $ 为 field f $ f $ 的 one-hot 向量(即,原始的输入特征),ef $ \mathbf{\vec e}_f $ 为 field f $ f $ 的 embedding 向量。

    我们堆叠 F $ F $ 个 embedding 向量,从而获得 input feature map X0 $ \mathbf X_0 $ :

    (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)

    其中: $ \circ $ 为 Hadamard productWl1RF×F $ \mathbf W_{l-1} \in \mathbb R^{F\times F} $ ;1RK×F $ \mathbf 1\in \mathbb R^{K\times F} $ 为全一的矩阵;Xl1 $ \mathbf X_{l-1} $ 为第 l $ l $ 个交互层的输入;Xl $ \mathbf X_l $ 为第 l $ l $ 个交互层的输出。

    Wl1 $ \mathbf W_{l-1} $ 是作用在 Xl1 $ \mathbf X_{l-1} $ 上还是作用在 X0 $ \mathbf X_0 $ 上,区别不大。

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

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

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

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

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

    其中:X0,iR(K/h)×F $ \mathbf X_{0,i}\in \mathbb R^{ (K/h) \times F} $ 。

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

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

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

    (39)Xl=Xl1[X0Wl1+1]

    其中:Wl1R(Fh)×(Fh) $ \mathbf W_{l-1}^\prime \in \mathbb R^{(F*h)\times (F*h)} $ 、1R(K/h)×(Fh) $ \mathbf 1\in \mathbb R^{(K/h)\times (F*h)} $ 、XlR(K/h)×(Fh) $ \mathbf X_l^\prime \in \mathbb R^{(K/h)\times (F*h)} $ 。

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

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

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

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

    其中:σ() $ \sigma(\cdot) $ 为 sigmoid 函数,WoutRF×1 $ \mathbf W_\text{out}\in \mathbb R^{F\times 1} $ 为 feature map 聚合向量,1R1 $ \mathbf 1\in \mathbb R^1 $ 为全一的向量,bR $ b\in \mathbb R $ 为 bias

  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))

    其中:yi $ y_i $ 为 ground-truthy^ $ \hat y $ 为模型预估的点击率,N $ N $ 为训练样本数量。

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

    • DCN 而言,第 l $ l $ 层为:

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

      其中:x0xl1 $ \mathbf{\vec x}_{0}\mathbf{\vec x}_{l-1}^\top $ 为向量外积。

      对于 DCNfeature map 被展平并拼接成单个向量。所有高阶的 bit-wise 交互首先通过 x0xl1 $ \mathbf{\vec x}_{0}\mathbf{\vec x}_{l-1}^\top $ 建模,然后通过线性聚合。

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

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

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

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

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

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

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

    • 时间复杂度:

      • l $ l $ 个 PIN 层计算 feature map XWl1 $ \mathbf X\mathbf W_{l-1} $ 的成本是 O(hF2K) $ O(hF^2K) $ 。对于 L $ L $ 层,所有 feature map 的计算总成本是 O(LhF2K) $ O(LhF^2K) $ 。
      • 额外的成本还有 Hadamard product 和残差连接。对于 L $ L $ 层,它们的总成本为 O(LFK) $ O(LFK) $ 。

      在实践中,h $ h $ 不会太大。因此,总的时间复杂度 O(LhF2K+LFK) $ O(LhF^2K + LFK) $ 主要取决于 field 数量 F $ F $ 和 embedding size

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

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

      发布评论

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