三十九、AutoDis[2021]

  1. 如下图所示,大多数现有的深度 CTR 模型遵循 Embedding & Feature Interaction (FI) 的范式。由于特征交互在 CTR 预测中的重要性,大多数工作集中在设计 FI 模块的网络架构从而更好地捕获显式特征交互或隐式特征交互。虽然在文献中没有很好的研究,但 embedding 模块也是深度 CTR 模型的一个关键因素,原因有二:

    • embedding 模块是后续 FI 模块的基石,直接影响 FI 模块的效果。
    • 深度 CTR 模型中的参数数量大量集中在 embedding 模块,自然地对预测性能有很高的影响。

    然而,embedding 模块被研究界所忽视,这促使 《An Embedding Learning Framework for Numerical Features in CTR Prediction》 进行深入研究。

    embedding 模块通常以 look-up table 的方式工作,将输入数据的每个 categorical field 特征映射到具有可学习参数的潜在 embedding 空间。不幸的是,这种 categorization 策略不能用于处理数值特征,因为在一个 numerical field (如身高)可能有无限多的特征取值。

    在实践中,现有的数值特征的 representation 方法可以归纳为三类(如下图的红色虚线框):

    • No Embedding:直接使用原始特征取值或转换,而不学习 embedding 。
    • Field Embedding:为每个 numerical field 学习单个 field embedding 。
    • Discretization:通过各种启发式离散化策略将数值特征转换为 categorical feature ,并分配 embedding 。

    然而,前两类可能会由于 representation 的低容量而导致性能不佳。最后一类也是次优的,因为这种基于启发式的离散化规则不是以 CTR 模型的最终目标进行优化的。此外, hard discretization-based 的方法受到 Similar value But Dis-similar embedding: SBD 和 Dis-similar value But Same embedding: DBS 问题的影响,其细节将在后面讨论。

    为了解决现有方法的局限性,论文 《An Embedding Learning Framework for Numerical Features in CTR Prediction》 提出了一个基于 soft discretization 的数值特征的 automatic end-to-end embedding learning framework ,即 AutoDis 。AutoDis 由三个核心模块组成:meta-embedding 、automatic discretization 和aggregation ,从而实现高的模型容量、端到端的训练、以及 unique representation 等特性。具体而言:

    • 首先,论文为每个 numerical field 精心设计了一组 meta-embedding ,这些 meta-embedding 在该field 内的所有特征取值之间是共享的,并从 field 的角度学习全局知识,其中 embedding 参数的数量是可控的。
    • 然后,利用可微的 automatic discretization 模块进行 soft discretization ,并且捕获每个数值特征和 field-specific meta-embedding 之间的相关性。
    • 最后,利用一个 aggregation 函数从而学习 unique Continuous-But-Different representation 。

    据作者所知,AutoDis 是第一个用于 numerical feature embedding 的端到端 soft discretization 框架,可以与深度 CTR 模型的最终目标共同优化。

    论文主要贡献:

    • 论文提出了AutoDis ,一个可插拔的用于 numerical feature 的 embedding learning 框架,它具有很高的模型容量,能够以端到端的方式生成 unique representation 并且具有可管理的参数数量。
    • 在 AutoDis 中,论文为每个 numerical field 设计了 meta-embedding 从而学习全局的共享知识。此外,一个可微的 automatic discretization 被用来捕获数值特征和 meta-embedding 之间的相关性,而一个 aggregation 过程被用来为每个特征学习一个 unique Continuous-But-Different representation 。
    • 在两个公共数据集和一个工业数据集上进行了综合实验,证明了 AutoDis 比现有的数值特征的 representation 方法更有优势。此外,AutoDis 与各种流行的深度 CTR 模型兼容,大大改善了它们的推荐性能。在一个主流广告平台的 online A/B test 表明,AutoDis 在 CTR 和 eCPM 方面比商业 baseline 提高了 2.1% 和 2.7% 。
  2. 相关工作:

    • Embedding:作为深度 CTR 模型的基石, embedding 模块对模型的性能有重大影响,因为它占用了大部分的模型参数。我们在此简单介绍推荐领域中基于 embedding look-up 的研究。

      现有的研究主要集中在设计 adaptable 的 embedding 算法,通过为不同的特征分配可变长度的 embedding 或 multi-embeddings ,如Mixed-dimension (《Mixed dimension embeddings with application to memory-efficient recommendation systems》),NIS (《Neural Input Search for Large Scale Recommendation Models》)和AutoEmb(《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》)。

      另一条研究方向深入研究了 embedding compression ,从而减少 web-scale 数据集的内存占用。

      然而,这些方法只能以 look-up table 的方式应用于 categorical feature 、或离散化后的数值特征。很少有研究关注数值特征的 embedding learning ,这在工业的深度 CTR 模型中是至关重要的。

    • Feature Interaction:根据显式特征交互和隐式特征交互的不同组合,现有的 CTR 模型可以分为两类:堆叠结构、并行结构。

      • 堆叠结构:首先对 embeddings 进行建模显示特征交互,然后堆叠 DNN 来抽取 high-level 的隐式特征交互。代表性的模型包括 FNN、IPNN、PIN、FiBiNET、FGCNN、AutoGroup、DIN 和 DIEN 。

      • 并行结构:利用两个并行网络分别捕捉显式特征交互信号和隐式特征交互信号,并在输出层融合信息。代表性的模型包括 Wide & Deep、DeepFM、AutoFIS、DCN、xDeepFM 和 AutoInt 。

        在这些模型中,隐式特征交互是通过 DNN 模型提取的。而对于显式特征交互,Wide & Deep 采用手工制作的交叉特征,DeepFM 和 AutoFIS 采用 FM 结构,DCN 采用 cross network ,xDeepFM 采用 Compressed Interaction Network: CIN ,AutoInt 利用多头自注意力网络。

39.1 模型

39.1.1 基础概念

  1. 假设用于训练 CTR 模型的数据集由 Q 个实例 (x→,y) 组成,其中 y 是标签,x→ 是包括 M 个 categorical fields 和 N 个 numerical fields 的 multi-field 数据记录:

    (1)x→=[x1,x2,⋯,xN⏟scalars;x→N+1,x→N+2,⋯,x→N+M⏟one-hot vectors]

    其中: xj 是第 j 个 numerical field 的标量值; x→N+i 是第 i 个 categorical field 的特征取值的 one-hot vector 。

    对于第 i 个 categorical field ,可以通过 embedding look-up 操作获得 feature embedding :

    (2)e→N+i=EN+ix→N+i

    其中:EN+i∈RvN+i×d 为第 i 个 categorical field 的 embedding matrix ,d 为 embedding size,vN+i 为第 i 个 categorical field 的词表规模。

    因此, categorical field 的 representation 为:[e→N+1,e→N+2,⋯,e→N+M]∈RM×d 。

  2. 对于 numerical field ,现有的 representation 方法可以总结为三类:No Embedding、Field Embedding、Discretization 。

    • No Embedding:这种方式直接使用原始值或原始值的变换,而不学习 embedding 。例如,Google Play 的 Wide & Deep 和JD.com 的 DMT 分别使用原始数值特征和归一化的数值特征。此外,YouTube DNN 利用了归一化特征取值 x~j 的几种变换(即平方、平方根):

      (3)e→YouTube=[x~12,x~1,x~1,x~22,x~2,x~2,⋯,x~N2,x~N,x~N]∈R3N

      在 Facebook 的 DLRM 中,他们使用了一个多层感知机来建模所有的数值特征:

      (4)e→DLRM=DNN([x1,x2,⋯,xN])

      其中 DNN 的结构为 512-256-d , e→DLRM∈Rd 。

      直观而言,这些 No Embedding 方法由于容量太小,很难捕获到 numerical field 的 informative 知识。

    • Field Embedding:学术界常用的方法是 Field Embedding,即同一个 field 内的的所有数值特征共享一个 uniform field embedding ,然后将这个 field embedding 与它们的特征取值相乘:

      (5)e→FE=[x1e→1,x2e→2,⋯,xNe→N]∈RN×d

      其中:e→j∈Rd 为第 j 个numerical field 的 uniform embedding vector 。

      然而,由于单个共享的 field-specific embedding 、以及field 内不同特征之间的线性缩放关系,Field Embedding 的 representation 容量是有限的。

      例如,收入 x=1 和收入 x=10000 ,根据 Field Embedding 的做法:

      (6)(1×e→)⋅(1×e→)<(1×e→)⋅(10000×e→)

      即,收入分别为1 和 10000 的两个用户,其相似度大于收入分别为 1 和 1 的两个用户。这在实际场景中是不恰当的。

    • Discretization:在工业推荐系统中,处理数值特征的一个流行方法是 Discretization ,即把数值特征转化为 categorical feature 。对于第 j 个 numerical field 的特征 xj ,可以通过两阶段操作得到 feature embedding e→j:离散化 discretization 和 embedding look-up:

      (7)e→j=Ejdj(xj)

      其中:Ej∈RHj×d 为第 j 个 numerical field 的 embedding matrix ;Hj 为离散化之后的桶数量;dj(⋅) 为针对第 j 个 numerical field 人工设计的离散化函数,它将该特征内的每个特征取值映射到 Hj 个桶中。

      具体来说,有三种广泛使用的离散化函数:

      • Equal Distance/Frequency Discretization: EDD/EFD:EDD 将特征取值划分到 Hj 个等宽的桶中。假设第 j 个 numerical field 的特征取值范围为 [xjmin,xjmax],区间宽度 interval width 定义为 wj=(xjmax−xjmin)/Hj 。因此,通过 EDD 离散化函数 djEDD(⋅) 得到离散化结果 x^j:

        (8)x^j=djEDD(xj)=floor(xj−xjminwj)

        类似地,EFD 将范围 [xjmin,xjmax] 划分为若干个桶,使得每个桶包含相同数量的样本。

      • Logarithm Discretization: LD:Kaggle 比赛中 Criteo advertiser prediction 的冠军利用对数和 floor 操作将数值特征转化为 categorical 形式。离散化后的结果 x^j 通过LD 离散化函数 djLD(⋅) 得到:

        (9)x^j=djLD(xj)=floor(log⁡(xj)2)
      • Tree-based Discretization: TD:除了深度学习模型外,tree-based 模型(如 GBDT )在推荐中被广泛使用,因为它们能够有效地处理数值特征。因此,许多 tree-based 方法被用来离散化数值特征。

      虽然 Discretization 在工业界被广泛使用,但它们仍然有三个限制(如下图所示):

      • Two-Phase Problem: TPP:离散化过程是由启发式规则或其他模型决定的,因此它不能与 CTR 预测任务的最终目标一起优化,导致次优性能。

      • Similar value But Dis-similar embedding: SBD:这些离散化策略可能将类似的特征(边界值)分离到两个不同的桶中,因此它们之后的 embedding 明显不同。

        例如, Age field 常用的离散化是将 [18,40] 确定为青少年、[41,65] 确定为中年,这导致数值 40 和 41 的 embedding 明显不同。

      • Dis-similar value But Same embedding: DBS:现有的离散化策略可能将明显不同的元素分组同一个桶中,导致无法区分的 embedding。使用同一个例子(Age field ),18 和 40 之间的数值在同一个桶里,因此被分配了相同的 embedding 。然而,18 岁和 40 岁的人可能具有非常不同的特征。基于离散化的策略不能有效地描述数值特征变化的连续性。

  3. 综上所述,下表中列出了 AutoDis 与现有 representation 方法的三方面比较。我们可以观察到,这些方法要么因为容量小而难以捕获 informative 知识、要么需要专业的特征工程,这些可能会降低整体性能。因此,我们提出了 AutoDis 框架。据我们所知,它是第一个具有高模型容量、端到端训练、以及保留 unique representation 特性的 numerical features embedding learning 框架。

39.1.2 AutoDis

  1. AutoDis 框架如 Figure 3 所示,它可以作为针对数值特征的可插拔的 embedding framework ,与现有的深度 CTR 模型兼容。AutoDis 包含三个核心模块:meta-embedding、automatic discretization、aggregation 。

    代码实现比较简单直观: 数值特征 x (标量) -> 单层 DNN 网络(隐层维度为 H ,softmax 激活函数) -> 单层 DNN 网络(隐层维度为 d ,无激活函数)。

    对于第 j 个 numerical field,AutoDis 可以通过如下方式为每个数值特征 xj 学习一个 unique representation (如 Figure 4 所示):

    (10)e→j=f(djAuto(xj),MEj)

    其中:

    • MEj 是第 j 个 numerical field 的 meta-embedding matrix 。

    • djAuto(⋅) 是第 j 个 numerical field 的 automatic discretization 函数。

    • f(⋅) 为聚合函数。

      所有 numerical field 都使用相同的聚合函数。

    最后,categorical 特征和数值特征的 embedding 被拼接起来,并馈入一个深度 CTR 模型进行预测:

    (11)y^=CTR(e→1,e→2,⋯,e→N⏟numerical embeddings;e→N+1,e→N+2,⋯,e→N+M⏟categorical embeddings)

  2. Meta-Embeddings: 为了平衡模型的容量和复杂性,对于第 j 个 numerical field ,我们设计了一组 meta-embeddings MEj∈RHj×d ,其中 MEj 由该 field 内的特征所共享,Hj 为 meta-embedding 的数量。 每个 meta-embedding 可以被看作是潜在空间中的一个子空间,用于提高表达能力和容量。通过结合这些 meta-embedding ,学习到的 embedding 比 Field Embedding 方法更 informative ,因此可以很好地保留高的模型容量。此外,所需参数的数量由 Hj 所决定,因此模型的复杂性是高度可控的,使我们的方法 scalable 。

    对于不同的 field j ,Hj 的数量可以不同。对于均匀分布的field ,Hj 可以取较大的值;对于取值聚焦于几个点的 field,Hj 可以取较小的值。

  3. Automatic Discretization:为了捕获数值特征的值和所设计的 meta-embeddings 之间的复杂关联,我们提出了一个可微的 automatic discretization 模块 djAuto(⋅) 。由于有 djAuto(⋅) ,第 j 个 numerical field 的每个数值特征被离散化到 Hj 个桶,每个 bucket embedding 对应于上面提到的 meta-embedding 。

    具体而言,利用一个带有 skip-connection 的两层神经网络,将numerical field 特征取值 xj 离散化到 Hj 个桶中:

    (12)h→j=Leaky-ReLU(w→jxj)x→~j=Wjh→j+αh→j

    其中:

    • w→j∈RHj,Wj∈RHj×Hj 为 automatic discretization network 在第 j 个 numerical feature field 上的可学习参数。
    • Leaky-ReLU 为激活函数,α 为 skip-connection 的控制因子 control factor 。

    投影结果为:x→~j=[x~j,1,x~j,2,⋯,x~j,Hj] ,其中 x~j,h 为numerical field 特征取值 xj 在第 h 个桶的投影输出。最后,通过 Softmax 函数将numerical field 特征取值 xj 与每个 meta-embedding MEj 之间的相关性进行归一化:

    (13)x^j,h=exp⁡(x~j,h/τ)∑k=1Hjx~j,k/τ

    其中:τ 为温度系数,用于控制 discretization 分布。因此,通过 automatic discretization 函数 djAuto(⋅) ,得到离散化的结果 x→^j∈RHj:

    (14)x→^j=djAuto(xj)=[x^j,1,x^j,2,⋯,x^j,Hj]

    x→^j 是一个向量,其中每个元素 x^j,h 表示 numerical field 特征取值 xj 被离散化到第 h 个桶中的概率,它表示 numerical field 特征取值 xj 与第 h 个 meta-embedding (即 bucket embedding )之间的相关性。这种离散化方法可以理解为 soft discretization 。与前面提到的 hard discretization 相比, soft discretization 没有将特征取值离散化到一个确定的桶中,这样就可以很好地解决 SBD 和 DBS 问题。此外,可微的 soft discretization 使我们的 AutoDis 能够实现端到端的训练,并以最终目标进行优化。

    值得注意的是:当温度系数 τ→∞ 时,discretization 分布趋于均匀分布;当 τ→0 时,discretization 分布趋于 one-hot 分布。因此,温度系数 τ 在 automatic discretization distribution 中起着重要作用。此外,不同 field 的特征分布是不同的,因此对不同的 features 学习不同的 τ 具有很大的必要性。具体而言,我们提出了一个温度系数自适应网络 temperature coefficient adaptive network (双层网络),它同时考虑了 global field statistics feature 和 local input feature ,公式如下:

    (15)τxj=Sigmoid(Wj(2)Leaky-ReLU(Wj(1)[n→¯j||xj]))

    其中:

    • n→¯j 为第 j 个numerical field 特征的全局统计特征向量,包括:采样的累积分布函数 Cumulative Distribution Function: CDF 、均值。xj 为 local input feature 。(⋅||⋅) 为拼接操作。
    • Wj(1),Wj(2) 为待学习的权重参数。

    为了指导模型训练, τxj 的输出范围从 (0,1) rescale 为 (τ−ϵ,τ+ϵ),其中 τ 是一个全局的超参数。

    ϵ 是什么?作者没有说。读者认为这里是一个超参数。

    这个温度系数自适应网络的设计不太简洁,工程实现也更复杂。根据实验部分的结论,这里完全可以微调 global 温度来实现。

  4. Aggregation Function:在得到 feature value 和 meta-embeddings 之间的相关性后,可以通过对 meta-embeddings 进行聚合操作 f(⋅),将相关性作为选择概率来生成 embedding 。我们考虑了以下聚合函数 f(⋅):

    • Max-Pooling:选择最相关的 meta-embedding (具有最高概率 x^j,h ):

      (16)e→j=MEj,k,k=arg⁡max1≤h≤Hjx^j,h

      其中:k 是具有最高概率x^j,h 的最相关 meta-embedding 的索引, MEj,k 是 MEj 中的第 k 个 meta-embedding 。

      然而,这种 hard selection 策略使 AutoDis 退化为一种 hard discretization 方法,从而导致上述的 SBD 问题和 DBS 问题。

    • Top-K-Sum:将具有最高相关性 x^j,h 的 top-K 个 meta-embedding 相加:

      (17)e→j=∑l=1KMEj,kl,kl=arg⁡max1≤h≤Hj,l−thx^j,h

      其中 kl 是第 l (1≤l≤K )大的 x^j,h 的 meta-embedding 的索引, MEj,k 是 MEj 中的第 k 个 meta-embedding 。

      然而,Top-K-Sum方法 有两个局限性:

      • 尽管与 Max-Pooling 相比,可能生成的 embedding 数量从 Hj 增加到 CHjK,但它不能从根本上解决 DBS 问题。
      • 学习到的 embedding e→j 未考虑相关性的取值。
    • Weighted- Average:充分地利用整个 meta-embeddings 集合、以及 meta-embedding 与特征取值的相关性:

      (18)e→j=∑h=1Hjx^j,hMEj,h

      通过这种加权聚合策略,相关的元嵌入对提供一个信息丰富的嵌入有更大的贡献,而不相关的元嵌入则在很大程度上被忽略了。此外,这种策略保证了每个特征都能学到 unique representation ,同时,学到的 embedding 是 Continuous-But-Different ,即,特征取值越接近则 embedding 就越相似。

  5. 训练:AutoDis 是以端到端的方式与具体的深度 CTR 模型的最终目标共同训练的。损失函数是广泛使用的带有正则化项的LogLoss:

    (19)L=−[1Q∑i=1Qyilog⁡y^i+(1−yi)log⁡(1−y^i)+λ||Θ||2]

    其中:yi 和 y^i 为第 i 个样本的 ground truth label 和预测结果;Q 为总的训练样本数;λ 为 L2 正则化系数;Θ={ΘCat-Emb,ΘAutoDis,ΘCTR} 为 categorical field 的 feature embedding 参数、meta-embedding 和 automatic discretization 参数、以及深度 CTR 模型的参数。

    为了稳定训练过程,我们在数据预处理阶段采用了特征归一化技术,将数值特征取值缩放到 [0, 1] 。第 j 个 numerical field 的取值 xj 被归一化为:

    (20)xj←xj−xjminxjmax−xjmin

39.2 实验

  1. 数据集:

    • Criteo:Criteo Display Advertising Challenge 2013 发布的,包含 13 个 numerical feature field 。
    • AutoML:AutoML for Lifelong Machine Learning Challenge in NeurIPS 2018 发布的,包含 23 个numerical feature field 。
    • 工业数据集:从一个主流的在线广告平台上采样收集的,有 41 个 numerical feature field 。

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

  2. 评估指标:AUC, LogLoss。

    所有的实验都通过改变随机数种子重复 5 次。采用 two-tailed unpaired t-test 来检测 AutoDis 和最佳 baseline 之间的显著差异。

  3. baseline 方法:为了证明所提出的 AutoDis 的有效性,我们将 AutoDis 与数值特征的三类 representation learning 方法进行了比较:No Embedding(YouTube, DLRM)、Field Embedding: FE(DeepFM )、Discretization (EDD ,如 IPNN;LD 以及 TD,如 DeepGBM)。

    此外,为了验证 AutoDis 框架与 embedding-based 的深度 CTR 模型的兼容性,我们将 AutoDis 应用于六个代表性模型:FNN、Wide & Deep、DeepFM、DCN、IPNN、xDeepFM 。

  4. 实现:

    • 我们用 mini-batch Adam 优化所有的模型,其中学习率的搜索空间为 {10e-6, 5e-5, ... , 10e-2} 。
    • 此外,在 Criteo 和 AutoML 数据集中, embedding size 分别被设置为 80 和 70 。
    • 深度 CTR 模型中的隐层默认固定为1024-512-256-128 ,DCN 和 xDeepFM 中的显式特征交互(即 CrossNet 和 CIN )被设置为 3 层。
    • L2 正则化系数的搜索空间为 {10e-6, 5e-5, ... , 10e-3} 。
    • 对于 AutoDis ,每个 numerical field 的 meta-embedding 数量为:Criteo 数据集为 20 个,AutoML 数据集为 40 个。
    • skip-connection 控制因子的搜索空间为 {0, 0.1, ... , 1} ,temperature coefficient adaptive network 的神经元数量设置为 64
  5. 和其它 Representation Learning 方法的比较:我们在三个数据集上执行不同的 numerical feature representation learning 方法,并选择 DeepFM 作为深度 CTR 模型。结果如下表所示。可以看到:

    • AutoDis 在所有数据集上的表现都远远超过了所有的 baseline ,显示了其对不同数值特征的优越性和鲁棒性。

    • No Embedding 和 Field Embedding 方法的表现比 Discretization 和 AutoDis 更差。No Embedding 和 Field Embedding 这两类方法存在容量低和表达能力有限的问题。

      No Embedding, Field Embedding 二者之间的差距不大,基本上在 0.1% 以内。

    • 与现有的三种将数值特征转化为 categorical 形式的 Discretization 方法相比,AutoDis 的 AUC 比最佳 baseline 分别提高了 0.17% 、0.23% 、以及 0.22% 。

  6. 不用 CTR 模型的比较:AutoDis 是一个通用框架,可以被视为改善各种深度 CTR 模型性能的插件。为了证明其兼容性,这里我们通过在一系列流行的模型上应用 AutoDis 进行了广泛的实验,结果如下表所示。可以看到:与 Field Embedding representation 方法相比,AutoDis 框架显著提高了这些模型的预测性能。numerical feature discretization 和 embedding learning 过程的优化是以这些 CTR 模型为最终目标的,因此可以得到 informative representation ,性能也可以得到提高。

  7. Online A/B Testing:我们在一个主流广告平台上进行在线实验从而验证 AutoDis 的优越性能,该平台每天有数百万活跃用户与广告互动,并产生数千万的用户日志事件。对于控制组,数值特征通过 hybrid manually-designed rules (如 EDD、TD 等)进行离散化。实验组则选择 AutoDis 对所有数值特征进行离散化和自动学习 embedding 。将 AutoDis 部署到现有的 CTR 模型中很方便,几乎不需要 online serving 系统的工程工作。

    AutoDis 实现了 0.2% 的离线 AUC 的提升。此外,相对于对照组,实验组在线 CTR 和 eCPM 分别提升了 2.1% 和 2.7% (统计学意义),这带来了巨大的商业利润。

    此外,随着 AutoDis 的融合,现有的数值特征不再需要任何离散化规则。此外,在未来引入更多的数值特征将更加有效,而不需要探索任何人工制作的规则。

  8. Embedding Analysis:为了更深入地理解通过 AutoDis 学到的 Continuous-But-Different embedding ,我们分别在 embeddings 的宏观分析、以及 soft discretization 的微观分析中做了进一步的调研。

    • Embeddings 的宏观分析:下图提供了 DeepFM-AutoDis 和 DeepFM-EDD 在 Criteo 数据集的第 3 个 numerical field 中得出的 embedding 的可视化。我们随机选择 250 个 embedding ,并使用 t-SNE 将它们投影到一个二维空间。具有相似颜色的节点具有相似的值。可以看到:

      • AutoDis 为每个特征学习了一个 unique embedding 。此外,相似的数值特征(具有相似的颜色)由密切相关的 embeddings (在二维空间中具有相似的位置)来表示,这阐述了 embedding 的 Continuous-But-Different 的特性。
      • 然而,EDD 为一个桶中的所有特征学习相同的 embedding 、而在不同的桶中学习完全不同的 embedding ,这导致了 to step-wise "unsmooth" embedding ,从而导致了较差的任务表现。

    • Soft Discretization 的微观分析:我们通过调查 DeepFM-AutoDis 的 soft discretization 过程中的 Softmax 分布进行一些微观分析。我们从 Criteo 数据集的第 8 个 numerical field 中选择一个相邻的 feature-pair (特征取值为 1 和 2 )、以及一个相距较远的feature-pair (特征取值为 1 和 10 ),然后在下图中可视化它们的 discretization distribution 。可以看到:相邻的feature-pair 具有相似的 Softmax 分布,而相距较远的feature-pair 具有不同的分布。

      这一特点有利于保证相似的特征取值能够通过 AutoDis 学习相似的 embedding ,从而保持 embedding 的连续性。

  9. Numerical Fields Analysis:为了评估 DeepFM-AutoDis 对每个 numerical field 的影响,在 Criteo 数据集中,我们选择了所有26 个 categorical fields 作为基础特征,并每次累积添加 13 个 numerical fields 中的一个。下图展示了根据数据集的原始顺序和随机顺序添加 numerical fields 的预测性能。可以看到:

    • 即使只有一个 numerical field ,AutoDis 也能提高性能。
    • AutoDis 对多个 numerical fields 具有 cumulative improvement 。
    • 与现有方法相比,AutoDis 取得的性能改善更加显著和稳定。

  10. Model Complexity:为了定量分析我们提出的 AutoDis 的空间复杂度和时间复杂度,我们比较了 DeepFM 上的 EDD 离散化方法的模型参数、以及 batch inference time ,结果如下表所示。可以看到:

    • 与 EDD 相比,AutoDis增加的模型参数量可以忽略不计。
    • 此外,AutoDis 的计算效率也是可比的。

  11. 消融研究和超参数敏感性:

    • 聚合策略:下图总结了 DeepFM-AutoDis 采用 Max-Pooling 、Top-K-Sum 、Weighted-Average 等聚合策略的预测性能。可以看到:Weighted-Average 策略实现了最好的性能。原因是:与其他策略相比,Weighted-Average 策略充分利用了 meta-embeddings 及其相应的关联性,完全克服了 DBS 和 SBD 问题。

    • 温度系数:为了证明 temperature coefficient adaptive network 在生成 feature-specific τxj 的有效性,我们将 τxj 与不同全局温度 τ 进行比较。如下图所示:

      • 在 Criteo 和AutoML 数据集上,最佳全局温度分别为 1e-5 和 4e-3 左右。
      • 然而,我们的 temperature coefficient adaptive network 取得了最好的结果(红色虚线),因为它可以根据 global field statistics feature 和 local input feature ,针对不同的特征自适应地调整温度系数,获得更合适的 discretization distribution 。

    • Meta-Embeddings 的数量:实验结果如下图所示。可以看到:

      • Meta-Embeddings 数量的增加有助于在开始时大幅提高性能,因为 meta-embeddings 中涉及更丰富的信息。
      • 然而,使用过多的 meta-embeddings 不仅会增加计算负担,而且会使性能受挫。

      考虑到预测效果和训练效率,我们将 Criteo和 AutoML 数据集的数量分别设定为 20 和 40 。

四十、MDE[2020]

  1. 标准的 embedding 做法是:将 objects 以固定的统一纬度 uniform dimension: UD d 嵌入到 Rd 中。

    • 当 embedding 维度 d 太小时,下游任务的预测性能会受到影响。

    • 当 embedding 维度 d 太大、并且需要表示的 objects 数量很大时,内存消耗就成为一个问题。例如,在推荐模型中, embedding layer 可以占到存储模型所需内存的 99.9% 以上,而在 large-scale setting 中,它可能会消耗数百 GB 甚至数百TB 。

      不仅内存消耗是一个瓶颈,模型太大也容易过拟合。

    因此,寻找新颖embedding representation 是一个重要的挑战,其中该embedding representation 使用更少的参数,同时保留下游模型的预测性能。

    在现实世界的applications 中,object 的频率往往是严重倾斜的。例如:

    • 对于 full MovieLens 数据集,top 10% 的用户收到的 query 数量和剩余 90% 的用户一样多、top 1% 的 item 收到的 query 数量和剩余 99% 的 item 一样多。
    • 此外,在 Criteo Kaggle 数据集上, top 0:0003% 的 indices 收到的 query 数量与剩余 3200 万个 indices 一样多。

    为了在推荐中利用 heterogeneous object popularity ,论文 《Mixed Dimension Embeddings with Application to Memory-Efficient Recommendation Systems》提出了 mixed dimension(MD) embedding layer ,其中一个 specific-object 的 embedding 维度随着该object 的 popularity 而变化,而不是保持全局统一。论文的案例研究和理论分析表明:MD embedding 的效果很好,因为它们不会在rare embedding 上浪费参数,同时也不会欠拟合 popular embedding 。此外,在测试期间,MD embedding 通过有效地分配参数从而最小化 popularity-weighted loss 。

    论文贡献:

    • 论文提出了一种用于推荐系统的 mixed dimension embedding layer ,并提供了一种新颖的数学方法来确定具有可变 popularity 的特征的尺寸。这种方法训练速度快、易于调优、并且在实验中表现良好。
    • 通过矩阵补全 matrix completion 和 factorization model ,论文证明了在有足够的 popularity 倾斜的情况下, mixed dimension embedding 在内存有限的情况下会产生较低的失真,在数据有限的情况下会有更好的泛化效果。
    • 对于内存有限的领域,论文推导出最佳特征维度。这个维度只取决于特征的popularity、参数预算、以及pairwise 交互的奇异值谱。

40.1 背景

  1. 与典型的协同过滤 collaborative filtering: CF 相比,CTR 预测任务包括额外的上下文。这些上下文特征通过索引集合(categorical )和浮点数(continuous )来表达。这些特征可以代表关于点击事件或个性化事件的上下文的任意细节。第 i 个 categorical 特征可以用一个索引 xi∈{1,2,⋯,ni} 来表达,i=1,⋯,κ 。 除了 categorical 特征,我们还有 s 个标量特征,这些标量一起产生一个稠密的特征向量 x→′∈Rs 。因此,给定 (x→1,x→2,⋯,x→κ,x→′)∈Rn1+n2+⋯+nκ+s ,我们想预测点击事件y∈{0,1} ,其中 x→i 为 xi 的 one-hot 向量。

    我们使用 SOTA 的 deep learning recommendation model: DLRM 作为一个现成的深度模型。各种深度 CTR 预测模型都是由内存密集型的 embedding layer 驱动的。 embedding layer 的大小和预测性能之间的权衡似乎是一个不可避免的权衡。对于一个给定的模型 fθ (θ 为参数),标准的做法是用 embedding layer E 来表示 categorical 特征。通常,每个 categorical 特征都有自己的独立的 embedding matrix:E[(x1,⋯,xκ)]=(E(1)x→1,⋯,E(κ)x→κ) ,其中 E[⋅] 为 embedding layer,E(i) 为第 i 个 categorical 的 embedding matrix 。

  2. 相关工作:最近的工作提出了类似、但实质上不同的 non-uniform embedding 架构的技术,尤其是针对自然语言处理领域(《Groupreduce: Block-wise low-rank approximation for neural language model shrinking》、《Adaptive input representations for neural language modeling》)。这些方法都不适合用于 CTR 预测,因为它们忽略了 CTR 中固有的 feature-level 结构。

    还有一些方法是为 RecSys embedding layer 提出神经架构搜索neural architecture search : NAS (《Neural input search for large scale recommendation models》),其中使用强化学习算法来构建 embedding layer 。与计算昂贵的 NAS 相比,我们表明 non-uniform embedding layer 的架构搜索可以简化为调优一个超参数,而不需要 NAS 。由于我们的理论框架,模型搜索的这种简化是可能的。此外,与以前所有的 non-uniform embedding 的工作相比,我们从理论上分析了我们的方法。此外,过去的工作并没有从经验上验证他们的方法所推测的工作机制。

  3. 从 popularity 倾斜的角度来看, embedding normalization 实际上隐含了对 rare embeddings 的惩罚,而不是对 popular embeddings 的惩罚。这是因为更大一部分的 training updates 仅包含 rare embeddings 的 norm penalty signal (而很少包含 rare 出现的事件)。

  4. 如下图所示,图 (a) 表示 Criteo Kaggle 数据集中所有特征的 access 的直方图;图 (b), (c) 分别为 MovieLens 数据集的 user feature, item feature 的 access 的直方图。

    这些图都是典型的长尾分布。

40.2 模型

  1. MD embedding layer 架构 E¯ 由 κ 个 block 组成,每个 block 对应一个 categorical field 。这些 block 定义为 2κ 个矩阵:E¯=(E¯(1),⋯,E¯(κ),P¯(1),⋯,P¯(κ)),其中:

    • E¯(i)∈Rni×di,P¯(i)∈Rdi×d¯ 为第 i 个 block 的矩阵;di 为第 i 个 categorical 特征的 embeding size ;ni 为第 i 个 categorical 特征的词表大小;d¯ 为所有 categorical 特征共享的 base dimension ,且满足 d¯≥di ;i=1,⋯,κ 。
    • E¯(i) 作为 MD embedding,然后 P¯(i) 作为投影矩阵从投影到维度 d¯ 的公共空间。
  2. 一个关键问题是如何确定 embedding size d→=(d1,d2,⋯,dκ) 。

    Power-law Sizing Scheme:我们定义 block-level 概率 p→∈Rκ ,其中 pi 为第 i 个 block 中的 embedding 的平均查询概率。当 block 与特征一一对应(我们这里的情况),那么 pi=1ni 。

    假设 categorical feature 都是单值(而不是多值的),那么对于词表大小为 ni 的 categorical feature,每个取值出现的平均概率为 1/ni 。

    更一般的情况下,p→i=∑j∏i,j ,其中 ∏ 为 block-wise 伯努利采样矩阵。那么 Popularity-Based Dimension Sizing 为:

    (21)d→←d¯×p→α‖p→‖∞−α

    其中:无穷范数是元素绝对值中的最大值;0≤α≤1 为温度系数,当 α=0 时 embedding size 都等于 d¯ ,当 α=1 时 embedding size 与它们的 popularity 成正比。

    理论分析见原始论文。

    注意:这里仅考虑 field-level 的 popularity,而没有考虑 value-level 的 popularity 。例如,“学历” 这个 field 中,低学历的 value 占比更大,需要更高的维度。

    论文中的这种维度分配方式,使得词表越大的 field,其维度越小;词表越小的 field,其维度越大。例如,“性别” 只有两个取值,该 field 被分配的 embedding 维度最大。

    论文中的这种维度分配是启发式的规则,并不是从数据中学到的。

40.3 实验

  1. baseline 方法:统一的 d=32 的 DLRM 。

  2. 实验结果:

    • α=0.3 的 MD embedding 产生的 learning curve 与 d=32 的 UD embedding 相当(下图 (a)),但是参数规模减少了 16 倍。
    • MD embedding layer 改善了每种 parameter budget 下的 memory-performance (下图 (b))。
    • 最佳温度 α 取决于 parameter budget ,对于较小的预算,较高的温度会导致更低的 loss 。
    • α=0.2 的 embedding 获得的性能以 0.1% 的准确性优势略微优于 UD embedding,但是参数规模约为 UD embedding 的一半。
    • MD embedding 的训练速度比 UD embedding 快两倍(下图 (c))。

四十一、NIS[2020]

  1. 大多数现代神经网络模型可以被认为是由两个组件组成的:

    • 一个是将原始(可能是 categorical 的)输入数据转换为浮点值的输入组件。
    • 另一个是将输入组件的输出结合起来并计算出模型的最终输出的 representation learning 组件。

    自 《Neural Architecture Search with Reinforcement Learning》 发表以来,以自动化的、数据驱动的方式设计神经网络架构(AutoML )最近吸引了很多研究兴趣。然而,该领域以前的研究主要集中在 representation learning 组件的自动化设计上,而对输入组件的关注很少。这是因为大多数研究都是在图像理解问题上进行的,其中 representation learning 组件对模型性能非常重要,而输入组件是微不足道的,因为图像像素已经是浮点形式。

    对于工业界经常遇到的大规模推荐问题,情况则完全不同。虽然 representation learning 组件很重要,但输入组件在模型中起着更关键的作用。这是因为许多推荐问题涉及到具有大 cardinality 的 categorical 特征,而输入组件为这些离散特征的每一项分配 embedding 向量。这就导致了输入组件中有大量的 embedding 参数,这些参数在模型大小和模型归纳偏置 inductive bias 上都占主导地位。

    例如,YouTube 视频推荐模型使用了一个规模为 1M 的 video ID vocabulary ,每个 video ID 有 256 维的 embedding 向量。这意味着仅 video ID 特征就使用了 256M 个参数,而且随着更多离散特征的加入,这个数字还会迅速增长。 相比之下, representation learning 组件只包括三个全连接层。因此,模型参数的数量主要集中在输入组件,这自然对模型性能有很高的影响。在实践中,尽管 categorical 特征的 vocabulary size 和 embedding size 很重要,但它们往往是通过尝试一些具有不同手工制作的配置的模型从而以启发式的方式选择的。由于这些模型通常体积大,训练成本高,这种方法计算量大,可能会导致次优的结果。

    在论文 《Neural Input Search for Large Scale Recommendation Models》 中,作者提出了 Neural Input Search: NIS ,这是一种新颖的方法,为模型输入组件的每个离散特征自动寻找 embedding size 和 vocabulary size 。NIS 创建了一个由 Embedding Blocks 集合组成的搜索空间,其中 blocks 的每个组合代表不同的 vocabulary and embedding 配置。最佳配置是通过像 ENAS 这样的强化学习算法在单个 training run 中搜索而来。

    此外,作者提出一种新的 embedding 类型,称之为 Multi-size Embedding : ME 。 ME 允许将较大尺寸(即,维度)的 embedding 向量分配给更常见的、或更 predictive 的 feature item ,而将较小尺寸的 embedding 向量分配给不常见的、或没有predictive 的 feature item 。这与通常采用的方法相反,即在词表的所有 item 中使用同样维度的 embedding ,这称之为 Single-size Embedding: SE 。作者认为,SE 是对模型容量和训练数据的低效利用。这是因为:

    • 对于频繁出现的、或高 predictive 的 item ,我们需要一个大的 embedding 维度来编码它们与其他 item 的细微关系 nuanced relation 。
    • 但对于长尾item ,由于它们在训练集中的稀有性 rarity ,训练相同维度的 good embedding 可能需要太多的 epoch 。并且当训练数据有限时,对于 rare item 采用大维度的 embedding 可能会过拟合。

    有了 ME ,在相同的模型容量下,我们可以覆盖词表中更多的 item ,同时减少所需的训练数据规模和计算成本从而为长尾item 训练良好的 embedding 。

    下图概览了基于 Embedding Blocks 的搜索空间、以及强化学习控制器如何对候选 SE 和 ME 进行采样。

    图 (a):Single-size Embedding,其中仅保留 top 2M 个 item,embedding 维度 192 。

    图 (b):Multi-size Embedding,其中 top 2M 个 item 的 embedding 维度为 192 、剩余 7M 个 item 的 embedding 维度为 64 。

    注意:这要求词表中的 id 是根据频次来降序排列。这对于频次分布的波动较大的 field 而言,需要经常重新编码 id 和重新训练。

    embedding table 包含两个超参数:emebdding size 、以及词表大小(即,保留高频的多少个 item)。这篇论文保留了所有的 item,并针对性地优化 embedding size 。

    作者通过在两个广泛研究的推荐问题的公共数据集上的实验,证明了 NIS 在为 SE 和 ME 寻找良好的 vocabulary size 和 embedding size 配置方面的有效性。给定 baseline 推荐模型,NIS 能够显著提高它们的性能,同时在所有实验中显著减少 embedding 参数的数量(从而减少模型的规模)。此外,作者将 NIS 应用于 Google App store 中的一个真实世界的大规模 App ranking 模型,并进行了离线实验和在线 A/B test ,结果是 +1.02% 的 App Install ,而模型大小减少了 30% 。这个新的 NIS App ranking 模型已经部署在生产中。

  2. 相关工作:几乎所有以前的 NAS 研究工作都集中在为图像/视频理解问题寻找最佳的 representation learning 组件。对于大规模的推荐问题,通过利用先进的representation learning 组件(如 CNN, RNN 等)也取得了很大的成果。然而,尽管输入组件由于 embedding 从而包含了很大一部分模型参数,但它在整个工业界中经常被启发式地设计,如 YouTube, Google Play, Netflix 等。据我们所知,我们的工作首次将自动化的神经网络设计引入输入组件从而用于大规模推荐问题。

41.1 模型

  1. 假设模型的输入由一组 categorical 特征 F 组成。对于每个特征 F∈F,我们有一个其可能取值的列表,这个列表中的元素按照在数据集中出现的频率递减的顺序排序。这个列表将每个特征取值隐式地映射为一个整数,我们把这个列表称为词表 vocabulary 。
  2. 一个 embedding 变量 E∈Rv×d 是一个可训练的矩阵,其中 v 为 vocabulary size ,d 为 embedding 维度。对于任何 0≤i<v 的情况,e→i∈Rd 表示 E 的第 i 行,即词表内第 i 个 item 的 embedding 向量。
  3. 令 B 为我们的 "memory budget" ,它指的是模型的 embedding 矩阵使用的浮点数的总数。对于一个 Rv×d 的 embedding 矩阵,它的浮点数总数为 v×d 。

41.1.1 Neural Input Search Problems

  1. Single-size Embedding: SE:single-size embedding 是一个形状为 v×d 的规则的 embedding 矩阵,其中词表中的每一个 item (共计 v 个 item)都表示为一个 d 维的 embedding 向量。以前的工作大多使用 SE 来表示离散的特征,每个特征的 v 和 d 的值是以启发式方式选择的,这可能是次优的。

    下面我们提出一个 Neural Input Search 问题从而自动寻找每个特征的最佳 SE ,即 NIS-SE。解决这个问题的方法将在后面介绍。

  2. Problem NIS-SE:为每个 F∈F 找到 vocabulary size vF 和 embedding dimension dF 从而最大化结果模型的目标函数值,使得:

    (22)∑F∈FvF×dF≤B

    该问题涉及两个 trade-off:

    • 特征之间的 memory budget:更有用的特征应该得到更多的预算。

    • 每个特征内部的 vocabulary size 和 embedding dimension 之间的 memory budget。

      • 大的 vocabulary size 给了我们更高的覆盖率,让我们包括尾部 item 作为输入信号。
      • 大的 embedding dimension 可以提高我们对头部 item 的预测,因为头部 item 有更多的训练数据。此外,大的embedding dimension 可以编码更细微的信息。

    在 memory budget 内,SE 使得我们很难同时获得高覆盖率和高质量 embedding 。为了克服这一困难,我们引入了一种新的 embedding 类型,即 Multi-size Embedding 。

  3. Multi-size Embedding: ME:Multi-size Embedding 允许词表中的不同 item 有不同维度的 embedding 。它让我们对头部 item 使用大维度的 embedding 、对尾部 item 使用小维度的 embedding 。对尾部 item 使用较少的参数是有意义的,因为它们的训练数据较少。

    现在,一个 embedding 变量(对应于一个特征)的 vocabulary size 和 embedding size 是由 Multisize Embedding Spec: MES 给出的。MES 是 pair 的列表:[(v1,d1),(v2,d2),⋯,(vM,dM)] ,其中:

    • vm 是第 m 个 pair 的 vocabulary size,满足 1≤vm≤v,其中 v=∑m=1Mvm 为这个 categorical feature 的总的 vocabulary size 。

      这相当于将单个词表划分为 M 块。

    • dm 是第 m 个 pair 的 embedding size,满足 d1>d2>⋯>dM≥1 。

    这可以解释为:最开始的 v1 个最高频的 item 有 embedding 维度 d1,接下来的 v2 个频繁的 item 有 embedding 维度 d2 ,等等。当 M=1 时,ME 就等价于 SE 。

    我们对于每个 1≤m≤M ,创建了一个形状为 vm×dm 的 embedding 矩阵 Em,而不是像 SE中那样只有一个 embedding 矩阵 E 。此外,还为每个 1≤m≤M 创建了一个可训练的投影矩阵 Pm,它将一个 dm 维的 embedding 投影到 d1 维的空间。这有利于下游的 reduction 操作在同一个 d1 维空间进行。定义 V0=0 ,以及 Vm=∑i=1mvi 为前 m 个 embedding 矩阵的累计 vocabulary size ,则词表中第 k 个 item 的 ME 定义为:

    (23)e→k=Pmke→k−Vmk−1mk

    其中:mk∈{1,⋯,M} ,并且 k∈[Vmk−1,Vmk] ;e→k−Vmk−1mk 为矩阵 Em 的第 k−Vmk−1 行。

    k−Vmk−1 是第 k 个 item 在第 mk 个 block 内的相对编号。

    通过对每个特征的适当的 MES ,ME 能够同时实现对尾部 item 的高覆盖率、以及头部 item 的高质量 representation 。然而,为所有特征手动寻找最佳 MSE 是非常困难的,因此需要一个自动方法来搜索合适的 MES 。下面我们介绍 Multi-size Embedding 的Neural Input Search 问题,即 NIS-ME 。解决这个问题的方法将在后面介绍。

  4. NIS-ME:为每个 F∈F 找到一个 MES [(v1,d1),(v2,d2),⋯,(vM,dM)] 从而最大化结果模型的目标函数值,使得:

    (24)∑F∈F∑i=1MFvFi×dFi≤B
  5. 在任何使用 embedding 的模型中,ME 都可以用来直接替代 SE 。通常,给定一组 vocabulary ID K ,K 中的每个元素被映射到其相应的 SE ,然后对这些 SE 进行一个或多个 reduce 操作。例如,一个常用的 reduce 操作是 bag-of-words: BOW ,即对 embedding 进行求和或求平均。为了了解在这种情况下 ME 是如何直接替代 SE 的,即 BOW 的 ME 版本(我们称之为 MBOW ),由以下公式给出:

    (25)∑k∈Ke→k=∑k∈KPmke→k−Vmk−1mk

    其中 ME 是相加的。这在下图中得到了说明。请注意,对于那些 mk 相等的 k ,在应用投影矩阵之前,对 embedding 进行求和是更高效的。

41.1.2 Neural Input Search Approach

  1. 我们在模型的输入组件开发了一个新的搜索空间,它包含了我们想要搜索的 SE 或 ME 。我们使用一个独立的 controller ,从而在每一个 step 中为每个离散特征挑选一个 SE 或 ME 。这些选中的 SE 或 ME 与主模型的其他部分(不包括控制器)一起被训练。此外,我们使用主模型的前向传播来计算控制器的选择的奖励(是准确率和内存成本的组合),并使用 A3C 策略梯度方法将奖励用于训练控制器变量。

    正如论文在实验部分所述,NIS 方法对具有大 vocabulary size 的 categorical 特征的影响更大。至于像性别、学历这种词典规模较小的 categorical 特征,则 NIS 方法的价值不大。

  2. 搜索空间:

    • Embedding Blocks:对于 vocabulary size 为 v 的给定特征 F∈F ,我们创建一组 S×T 个矩阵,其中 S>1,T>1 。第 (s,t) 个矩阵 Es,t 的尺寸为 v¯s×d¯t ,其中 v=∑s=1Sv¯s,d=∑t=1Td¯t ,d 为 vocabulary 中的 item 允许的最大 embedding size 。 我们称这些矩阵为 Embedding Blocks 。这可以看作是将一个大小为 v×d 的 embedding 矩阵离散化为 S×T 个子矩阵。

      例如,假设 v=10M (M 代表一百万),d=256 ,我们可以把行离散成五块:[1M, 2M, 2M, 2M, 3M] ;可以把列离散成四块:[64, 64, 64, 64] 。这样就有 20 个 Embedding Blocks ,如 Figure 1所示。

      此外,对于每个 1≤t≤T ,我们创建一个尺寸为 d¯t×d 的投影矩阵 P¯t ,以便将每个 d¯t 维的 embedding 映射到一个共同的 d 维空间,从而方便下游的 reduction 操作。 显然,对于所有的 s ,我们应该有 v¯s≫d,所以与 embedding 中的参数数量相比,投影矩阵中的参数数量是可以忽略的。

      Embedding Blocks 是搜索空间的构建块,允许控制器在每个 training step 中采样不同的 SE 或 ME 。

    • Controller Choices:controller 是一个神经网络,从 softmax 概率中采样不同的 SE 或 ME 。它的确切行为取决于我们是对 SE 还是 ME 进行优化。下面我们将描述控制器在一个特征 F∈F 上的行为,为方便描述,删除 F 下标。

      • SE:为了对 SE 进行优化,在每个 training step 中,控制器集合 {(s,t)∣1≤s≤S,1≤t≤T}∪{(0,0)} 中采样一个 pair (s¯,t¯) 。对于选中的 (s¯,t¯) ,只有 Embedding Blocks {Es,t∣1≤s≤s¯,1≤t≤t¯} 参与到该特定的 training step 。因此,控制器有效地挑选了一个 SE ,如 Figure 1(a) 中的红色矩形内的 SE ,它代表了一个大小为 5M×192 的SE 。在这一步中,词表中第 k 个 item 中的 embedding 为:

        (26)e→k=∑t=1t¯P¯te→k−V¯sk−1sk,t

        其中:

        • V0=0,V¯s=∑i=1sv¯i 为累计的 vocabulary size 。sk∈{1,s,⋯,S} ,且使得 V¯sk−1≤k<V¯sk 。
        • e→k−V¯sk−1sk,t 为 Esk,t 的第 k−V¯sk−1 行。

        定义 D¯t=∑i=1tdt 为累计的 embedding size ,显然,e→k 相当于用一个 D¯t 维的 embedding 表示第 k 个 item ,然后将其投影到一个 d 维空间。这个投影矩阵 P 是 {P¯1,⋯,P¯t} 沿列的拼接。任何一个 vocabulary ID 为 k≥V¯s¯ 的 item 都被认为是 out-of-vocabulary ,要特别处理,通常采用的方法是使用零向量作为它们的 embedding 。因此,这种 SE 的选择带来的内存成本(参数数量)为:C=V¯s¯×D¯t¯ ,其中投影矩阵的成本被忽略,因为 v¯s≫d 。

        如果在 training step 中选择了(0, 0) ,就相当于从模型中去除该特征。因此,在这个 training step 中, zero embedding 被用于这个特征的所有 item ,相应的存储成本为 0 。随着控制器探索不同的 SE ,它根据每个 choice 引起的奖励进行训练,并最终收敛到最佳选择。如果它收敛到(0, 0) ,意味着这个特征应该被删除。显然,对于一个给定的特征,搜索空间的大小是(S×T+1)。

      • ME:当对 ME 进行优化时,控制器不是做出单个选择,而是做出一连串的 T 个选择,每个 1≤t≤T 都有一个选择。每个选择为 s¯t∈{1,⋯,S}∪{0} 。

        • 如果 s¯t>0,则只有 Embedding Blocks {Es,t∣1≤s≤s¯t} 参与到该特定的 training step 。
        • 如果 s¯t=0,则对于词表内的所有item,整个 d¯t 维的 embedding 都将被移除。

        因此,控制器选择了一个自定义的 Embedding Blocks 子集(而不仅仅是一个网格),它组成了一个 MES 。如 Figure 1(b) 所示:

        • 第一个 64-D embedding 被开头的 3M 个 item 所使用。
        • 第二个 64-D embedding 被所有 10M 个 item 所利用。
        • 第三个 64-D embedding 不被任何 item 所使用。
        • 最后一个 64-D embedding 被开头的 3M 个 item 所使用。

        因此,词表中开头的 3M 个 item 被分配了 192 维的embedding ,而最后 7M 个 item 只被分配了 64 维的 embedding 。换句话说,在这个 training step 中实现了 MES [(3M, 192), (7M, 64)] 。

        数学上,令 Ts={t∣Es,t is selected} ,那么词表中第 k 个 item 在当前 training step 的 embedding 为:

        (27)e→k=∑t∈TskP¯te→k−V¯sk−1sk,t,k<v and Tsk≠empty

        如果 Tsk 为空,那么 e→k=0→ 。

        SE 的 emebdding 公式为:e→k=∑t=1t¯P¯te→k−V¯sk−1sk,t 。可以看到,与 SE 相比,ME 公式中的 sum 不是从 1 到 t¯ ,而是被选中的那些维度。

        ME 的内存成本为:C=∑t=1Td¯t×V¯s¯t 。对于一个给定的特征,搜索空间大小为 (S+1)T。

  3. 奖励:由于主模型是通过控制器对 SE 或 ME 的选择来训练的,控制器是通过主模型对验证集样本的前向传播计算出来的奖励来训练的。我们将奖励定义为:

    (28)R=RQ−λ×CM

    其中:RQ 代表我们想要最大化的(潜在的不可微的)质量奖励,CM 为内存成本用于惩罚控制器选择了超过预算的embedding配置,λ 为一个系数用于平衡质量奖励和内存成本。

    • 质量奖励:一类常见的推荐问题是检索问题,其目的是给定模型的输入从而在一个可能非常大的 vocabulary v 中找到 M 个最相关的item 。这类问题的 objective 通常是实现 high recall ,因此我们可以直接让 Recall@N (N≤M)指标作为质量奖励。当 v 太大时,计算 Recall@N 变得太昂贵,我们可以通过采样一个小的 negative set(即,负采样),使用 Sampled Recall@N 作为代理。

      另一类常见的问题是排序 ranking 问题。ranking 模型的质量通常由 ROC-AUC 来衡量,他可以作为质量奖励。

      同样,对于回归问题,质量奖励可以设置为 prediction 和 label 之间的 L2-loss 的负值。

    • 内存成本:我们定义内存成本为:

      (29)CM=max(∑F∈FCFB−1,0)

      注意:CF 是基于控制器选择的内存用量,B 为预先定义的内存预算。

    • λ:显然,λ 代表值得付出 B 的额外超预算的 embedding 参数的代价所对应的质量奖励的增量。例如,如果质量奖励是 ROC-AUC,λ=0.1 ,这意味着我们愿意承担额外的 B 超预算的 embedding 参数,如果它能使 ROC-AUC 增加 0.1 。这是因为额外的 B 超预算参数会使奖励减少 λ ,所以只有当它能使质量奖励至少增加 λ 时才值得。

41.1.3 Training the Neural Input Search Model

  1. Warm up 阶段:如前所述,训练 NIS 模型涉及到主模型和控制器之间 consecutive steps 的交替训练。如果我们从第 0 步开始训练控制器,我们会得到一个恶性循环:没有被控制器选中的 Embedding Blocks 没有得到充分的训练,因此给出了不好的奖励,导致它们在未来被选中的机会更少。

    为了防止这种情况,前几个 training steps 包括一个 warm up 阶段,我们训练所有的 Embedding Blocks ,并固定控制器参数。 warm up 阶段确保所有 Embedding Blocks 得到一些训练。在warm up 阶段之后,我们转向使用 A3C 交替训练主模型和控制器。

    在预热阶段,控制器被固定为选择所有的 Embedding Blocks 。

  2. Baseline Network:作为 A3C 算法的一部分,我们使用一个 baseline 网络来预测每个控制器(使用已经做出的选择)的期望奖励。baseline 网络的结构与控制器网络相同,但有自己的变量,这些变量与控制器变量一起使用验证集进行训练。然后,我们从每个 step 的奖励中减去 baseline ,计算出 advantage 从而用于训练控制器。

    baseline 网络是主模型的拷贝,但是采用了不同的变量。每次更新主模型之后,就将主模型的参数拷贝给 baseline 。

    总体训练流程为:

    • warm up:通过训练集来更新主模型,此时选择所有的 Embedding Blocks 。

    • 迭代:

      • 在验证集上评估主模型的奖励,并通过奖励最大化来更新控制器参数。
      • 通过新的控制器参数,在训练集上更新主模型。

41.2 实验

41.2.1 公共数据集

  1. 数据集:

    • MovieLens-1M:包含了由 6 千多个用户创建的 1M 条电影评分记录。我们通过遵循一个广泛采用的实验设置来制定一个电影推荐问题。用户的评分被视为隐性反馈,也就是说,只要用户给电影打了分,就被认为是对该电影感兴趣。此外,对于每个用户,从电影词表中均匀地采样 4 部随机电影作为用户的负样本(负采样策略,而不是在训练之前提前准备并固定了负样本)。意外的命中会被删除,即:负样本集合中包含了正样本,则把正样本从负样本集合中剔除。

      由于每条评分记录都有一个时间戳,我们把每个用户的最近一个评分记录拿出来进行测试。在测试阶段,对于每个正样本,我们随机采样 99 部电影作为负样本来计算评价指标。测试期间的采样策略与训练期间相同。

    • KKBox:来自 WSDM KKBox 音乐推荐挑战赛,任务是预测用户在一个时间窗口内第一次可观察到的听歌事件后是否会重复听歌。数据集同时包含了正样本和负样本:正样本表示用户重复听了这首歌,负样本表示用户没有再听这首歌。因此,与 MovieLens-1M 数据集不同的是,我们没有通过随机采样来手动构造负样本,而是使用数据集提供的负样本。

      由于该数据集没有与每条记录相关的时间戳,我们随机采样 80% 的记录用于训练、20% 的记录用于测试。

    对于这两个数据集,我们进一步从训练集中随机采样 10% 的样本用于训练控制器的验证集。

    下表给出了我们应用 NIS 的特征的 vocabulary size(即,feature 的 unique item 数量)。注意,原始的 KKBox 数据集有更多的特征,这些特征要么是浮点特征(如 "歌曲长度")、要么是小 vocabulary size 的 categorical 特征(如 "流派")。由于 NIS 对具有大 vocabulary size 的 categorical 特征的影响更大,在我们的实验中,为了简单起见,我们只使用下表中列出的特征。

  2. vocabulary 构建细节:以 MovieLens-1M 为例,遍历每个 user-movie 评分记录,并计算每个用户在整个数据集中出现的记录数量,根据计数结果给每个用户分配 vocabulary ID:最高频的用户分配 ID 0、最低频的用户分配最大的 ID 。其它特征、其它数据集也以类似的方式构建 vocabulary 。

    在生产环境中,特征的频次分布有变化,如何处理?如何处理新出现的 ID ,如新广告的 ID ?这些论文都没有提到。读者猜测,NIS 仅适用于 ID 分布变化不大的场景。对于新闻、广告等等 ID 不断生成、消亡的领域,NIS 可能需要进行适配。

  3. 实验配置:NIS 方法实际上是模型结构无关的,可以应用于各种类型的模型。这里我们采用 Neural Collaborative Filtering: NCF 模型。NCF 模型包括两个组件:Matrix Factorization: MF 组件、多层感知器 MLP 组件,如下图所示。

    • MF 组件中的 user embedding 和 item embedding 是 d 维的,其逐元素相乘产生了 d 维的 MF embedding 。

    • MLP 组件中的 user embedding 和 item embedding 是 4d 维的,它们被拼接起来并馈入 3 个 MLP layer (ReLU 激活函数),其大小分别为4d,2d,d 。top MLP layer 的输出被称作 MLP embedding 。

      我们没有使用任何规范化技术,如 BatchNorm 、LayerNorm 等。

      这意味着 MLP 组件和 MF 组件并没有共享 embedding,因此每个 id 都有两套 embedding。

    d 维的 MF embedding 和 d 维的 MLP embedding 拼接起来,然后被用于计算 logit (通过一个 2d 的可学习的权重向量进行点乘)。模型使用交叉熵损失。

    所有权重(包括隐层权重和 embedding 矩阵)使用高斯分布随机初始化,高斯分布的均值为零、标准差为 1/n,其中 n 为隐层或 embedding 的维度。任何权重都没有使用正则化或 dropout 。当一个特征有多个取值时(如,一首歌有多个作曲家),这些特征的取值的embedding 是均值池化。当某些训练样本中存在缺失的特征值时,使用全零的 embedding 。

    对于 MovieLens-1M 数据集, item embedding 是简单的 movie embedding 。于 KKBox 数据集,由于每个 item (即歌曲)有多个特征,即 song ID 、艺术家姓名、作曲家、作词人, item embedding 的计算方法如下:

    • 对于 MF 组件,四个特征中的每一个都表示为一个 d 维的 embedding ,然后将它们拼接起来并通过一个 4d×d 的投影矩阵从而投影到一个 d 维向量。投影后的 d 维向量表示 MF 组件中的 item embedding 。
    • 对于 MLP 组件,四个特征中的每一个都表示为一个 4d 维的 embedding ,然后将它们拼接起来并通过一个 16d×4d 的投影矩阵从而投影到一个 4d 维向量。投影后的 4d 维向量表示 MLP 组件中的 item embedding 。

    给出一个预先选择的 d ,从而形成一个具有 md 个 embedding 参数的模型,我们首先将其作为 baseline,不应用 NIS 。然后,我们将每个特征的 embedding size 增加一倍,从而产生 2md 个 embedding 参数,并应用 NIS 的内存预算 B=md (即与 baseline 模型相同)。我们预期 NIS 通过更好地分配 md 个参数而表现得比 baseline 更好。我们进一步用 B=0.5md 推动 NIS 的极限,看看它是否还能比 baseline 模型表现更好。

    我们为 baseline 模型实验了 d=8 和 d=16 ,因此相应的 NIS 模型将有 d=16 和 d=32 。

  4. 控制器:控制器用于在所有候选的 choice 上产生一个概率分布。我们在所有的实验中使用了一个简单的控制器:

    • 对于 SE settting,控制器为每个特征分配一个 (S×T+1) 维的向量,向量中的每个元素代表了多项式分布的 logit 。该向量被初始化为零向量。

      控制器从这个多样式分布中采样不同的 SE 。注意:每个特征的搜索空间大小为 (S×T+1) 。对一个具有 |F| 个特征的模型,控制器只是由 |F| 个独立的向量组成,因此不同特征的 SE 是独立采样的。

      我们没有使用更复杂的控制器结构,如 RNN ,因为不清楚对一个特征做出的决策是否会影响其他特征,以及应该按照何种顺序做出决策。

      对于 SE setting,控制器为每个特征从 R(S×T+1) 向量中选择一个元素。

    • 对于 ME setting ,控制器为每个特征分配 T 个独立的 (S+1) 维的向量,因为需要做出 T 个独立的选择。对一个具有 |F| 个特征的模型,控制器是由 T×|F| 个独立的向量组成。

      对于 ME setting,控制器为每个特征从 T 个 R(S+1) 个向量中,分别在每个向量中选择一个元素。

    每个特征构建了 20 个 Embedding Blocks ,其中:d¯t 为 [0.25d,0.25d,0.25d,0.25d] ,v¯s 为 [0.2v,0.2v,0.2v,0.2v,0.2v] ,其中 v 为该特征的 total vocabulary size 。在实践中,我们发现这种配置在细粒度和搜索空间大小之间取得了良好的平衡。

    如前所述,控制器使用验证集进行训练。对于 MovieLens-1M 数据集,我们使用 Recall@1 (也称作 HitRate@1)作为质量奖励 RQ ,然后我们报告测试集上的多个指标:Recall, MRR, NDCG 。对于 KKBox 数据集,我们使用 ROC-AUC 作为质量奖励 ,并报告测试集上的 ROC-AUC 。在所有的实验中,我们设定 λ=0.01 。

  5. 训练细节:

    • 主模型:batch size = 256,应用梯度裁剪(梯度范数阈值为 1.0 ),学习率为 0.1,使用 Adagrad 优化器。在开始 A3C 算法之前,进行了 100K 步的预热阶段。
    • 控制器:使用 Adagrad 优化器,学习率为 0.1 ,不使用梯度裁剪(因为一个低概率但高回报的行动应该得到一个非常高的梯度,以显著提高其概率)。每个控制器的决策都由验证集的 64 个样本所共享,从中计算出一个奖励值。

    在预热阶段结束后,控制器和主模型每隔一个 mini-batch step 进行交替训练。在所有的实验中,我们在主模型和控制器都收敛后停止训练(而不是仅有一个收敛)。

    我们使用了分布式训练,其中 5 个 worker 独立地进行并行训练。

  6. Table 2 和 Table 3 分别报告了 MovieLens-1M 数据集和 KKBox 数据集的实验结果。注意,B 代表 NIS 模型的内存预算。可以看到:

    • NIS 能够持续取得比 baseline 模型更好的性能,很多时候参数明显减少,证明了我们方法的有效性。
    • 在相同的条件下,NIS-ME 模型总是优于 NIS-SE ,而且通常参数比 NIS-SE 更少。
    • 即使 B 是 baseline 模型大小的一半,NIS 模型也几乎总是优于 baseline 。这不仅证明了我们方法的有效性,而且还表明在重度约束条件下有可能实现卓越的性能。
    • 一些 NIS 模型通过超出内存预算获得了卓越的性能。这种模型质量和模型规模之间的 tradeoff 反映在奖励函数的设计中。当内存预算只是一个指导方针而不严格时,这一点特别有用。

41.2.2 真实世界大型数据集

  1. 这里我们描述如何将 NIS 应用到 Google Play App store 的 ranking model 。该模型的目标是:根据 App 被安装的可能性对一组 App 进行排序。数据集由 (Context, App, Label) 组成,其中 Label=0 表示 App 未被安装、Label=1 表示 App 被安装。总共有 20 个离散特征被用来表示 Context 和 App ,如 App ID 、 Developer ID 、App Title 等。离散特征的 vocabulary size 从数百到数百万不等。每个特征的 embedding 维度和 vocabulary size 经过几年的手工优化。

  2. 实验配置:对于 Embedding Blocks,我们设置 v¯s=[0.1v,0.2v,0.2v,0.2v,0.3v] ,其中 v 为特征的 vocabulary size 。需要注意的是,对于每个特征,我们没有平均分割 vocabulary ,而是给 top-10% 的 item 分配了一个 Embedding Block ,因为数据集中的高频特征都是最重要的,也就是说,top-10% 的 item 通常出现在大多数训练样本中。这进一步证明了 Multi-size Embedding 在实践中的必要性。

    此外,我们设置 d¯t=[0.25D,0.25D,0.25D,0.25D] ,其中 D=3d ,d 为 production model 的 embedding size (在不同特征上取值为 8 ~ 32 )。在将 embedding size 增加到三倍从而允许更高的模型容量的同时,我们设置内存预算 B=0.5Bp ,其中 Bp 为 production model 的 embedding 参数的总数。显然,这里的目标是提高模型的预测能力,同时减少模型的大小。

    我们使用 ROC-AUC 作为质量奖励,并设置 λ=0.001 (即,为了 0.001 的 ROC-AUC 增长从而允许 0.5Bp 的参数增加)。

  3. 离线实验:离线 ROC-AUC 指标如下表所示。可以看到:

    • 在 SE setting 和 ME setting 中,NIS 能够以较少的参数数量改善 production model 的 ROC-AUC 性能。
    • NIS-ME 模型在参数数量更少的情况下也能取得比NIS-SE 更好的性能,因为 Multi-size Embedding 可以通过给 head items 更多的参数、给 tail items 更少的参数来更好地利用内存预算。与 production model 相比,NIS-ME 在 ROC-AUC 上得到了0.4% 的改进,而模型大小减少了 30% 。

  4. 在线 A/B test:我们进一步用实时流量进行了 A/B test 的在线实验。由于 NIS-ME 模型优于 NIS-SE 模型,A/B test 只在 NIS-ME 模型上进行。我们监测了 App Install 指标,并得出结论:NIS-ME 模型能够将 App Install 增加 1.02% 。

    NIS-ME 模型目前部署在 100% 的流量上,取代了本实验中使用的 production baseline model 。

  5. 稳定性:当部署在生产中时,NIS-ME 模型需要每天进行重新训练和刷新。了解模型的性能可以维持多久是很重要的。这是因为每个特征的数据分布可能会随着时间的推移而发生重大变化,所以 MES 可能不再是最优的,在这种情况下,我们需要重新运行 NIS ,找到更适合新数据分布的 MES 。

    因为 NIS 的词表构建依赖于 ID 频次分布,而在生产环境中,ID 频次分布可能随时间发生变化。

    我们进行了为期 2 个月的研究,监测原始 production model 和 NIS-ME 模型的 ROC-AUC ,如下图所示。显然,NIS-ME 模型相对于 production model 的优势在 2 个月的时间里非常稳定,说明没有必要经常重新运行 NIS 。在实践中,我们只在模型结构发生变化或要增加新特征时才运行 NIS 。

四十二、AutoEmb[2020]

  1. deep learning based recommender systems: DLRSs 的架构通常主要由三个关键部分组成:

    • embedding layer:将高维空间中的原始的 user/item 特征映射到低维 embedding 空间中的稠密向量。
    • hidden layer:进行非线性变换以转换输入特征。
    • output layer:根据 hidden layer 的 representation 对特定的推荐任务进行预测。

    大多数现有的研究都聚焦在为 hidden layer 和 output layer 设计复杂的神经网络架构,而 embedding layer 并没有获得太多的关注。然而,在拥有海量 user 和 item 的大规模真实世界推荐系统中, embedding layer 在准确推荐中发挥着巨大的关键作用。embedding 最典型的用途是将一个 ID (即 user ID 或 item ID)转换成一个实值向量。每个 embedding 都可以被认为是一个 latent representation 。与手工制作的特征相比,经过良好学习的 embedding 已经被证明可以显著提高推荐性能。这是因为 embedding 可以降低 categorical 变量的维度(如 one-hot id ),并有意义地在潜空间中代表 user/item 。

    大多数现有的 DLRSs 在其 embedding layer 中往往采用统一的固定维度。换句话说,所有的 user(或 item)共享相同的、固定的 embedding size 。这自然引起了一个问题:我们是否需要为不同的 user/item 采用不同的 embedding size ?

    为了研究这个问题,论文 《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》 对 movielens-20m 数据集进行了初步研究。对于每个用户,作者首先选择该用户的固定比例的评分作为测试集,然后选择 x 个评分作为训练集。下图展示了当改变 x 时,一个典型的、embedding 维度为 2/16/128 的 DLRS 的推荐性能在 mean-squared-error: MSE 和准确率方面的变化。更低的 MSE (或更高的准确率)意味着更好的性能。注意,作者在这项工作中把 user/item 的交互次数称为 popularity 。从图中可以看到:随着 popularity x 的增加:

    • 不同 embedding size 的模型的性能增加,但较大的 embedding size 获益更多。
    • 较小的 embedding size 首先工作得更好,然后被较大的 embedding size 所超越。

    这些观察结果是非常符合预期,因为 embedding size 通常决定了待学习的模型参数的数量、以及由 embedding 所编码信息的容量。

    • 一方面,较小的 embedding size 往往意味着较少的模型参数和较低的容量。因此,当popularity小的时候,它们可以很好地工作。然而,当随着popularity的增加, embedding 需要编码更多的信息,较低的容量会而限制其性能。
    • 另一方面,更大的embedding size 通常表示更多的模型参数和更高的容量。它们通常需要足够的数据从而被良好地训练。因此,当popularity小的时候,它们不能很好地工作;但随着popularity的增加,它们有可能捕获更多的信息。

    鉴于 user/item 在推荐系统中具有非常不同的popularity,DLRSs 应该允许不同的 embedding size 。这一特性在实践中是非常需要的,因为现实世界的推荐系统是popularity高度动态的 streaming 。例如,新的交互会迅速发生,新的用 user/item 会不断增加。

    在论文 《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》 中,作者的目标是在 streaming setting 下,在 embedding layer 为不同的 user/item 实现不同的 embedding size 。这里面临着巨大的挑战:

    • 首先,现实世界的推荐系统中的 user/item 的数量非常大,而且popularity是高度动态的,很难为不同的 user/item 手动选择不同的 embedding size 。
    • 其次,在现有的 DLRSs 中,first hidden layer 的输入维度通常是统一的和固定的,它们很难接受来自 embedding layer 的不同维度。

    作者试图解决这些挑战,从而建立了一个基于端到端的可微的 AutoML 框架(即,AutoEmb ),它可以通过自动的、动态的方式利用各种 embedding size 。论文通过现实世界的电商数据中的实验来证明了所提出的框架的有效性。

  2. 相关工作:

    • deep learning based recommender system:近年来,一系列基于深度学习技术的神经推荐模型被提出,性能提升明显(如,NCF, DeepFM, DSPR, MV-DNN, AutoRec, GRU4Rec)。然而,这些工作大多集中在设计复杂的神经网络架构上,而对 embedding layer 没有给予过多关注。
    • AutoML for Neural Architecture Search:《Neural input search for large scale recommendation models》 首次将NAS 用于大规模的推荐模型,并提出了一种新型的 embedding 方式,即 Multi-size Embedding: ME 。然而,它不能应用于streaming recommendation setting ,其中popularity不是预先知道的而是高度动态的。

42.1 模型

  1. Basic DLRS 架构:我们在下图中阐述了一个 basic 的 DLRS 架构,它包含三个部分:

    • embedding layer:将 user ID/item ID (ui,vj) 映射到密集的、连续的 embedding 向量 (u→i,v→j) 。
    • hidden layer:是全连接层,将 embedding 向量 (u→i,v→j) 非线性地转化为 hierarchical feature representation 。
    • output layer:生成 prediction 从而用于推荐。

    给定一个 user-item 的交互,DLRS 首先根据 user ID 和 item ID 进行 embedding-lookup 过程,并将两个 embedding 拼接起来;然后 DLRS 将拼接后的 embedding 馈入 hidden layer 并进行预测。 然而,它有固定的神经网络架构,不能处理不同的 embedding size 。接下来,我们将加强这个 basic 的 DLRS 架构,以实现各种 embedding size 。

    AutoEmb 仅聚焦于 user id 和 item id 的 embedding size 优化,而没有考虑其他的 categorical feature 。并且论文描述的算法仅应用 streaming recommendation setting 。

    论文的思想比较简单:为每个 id 分配 N 个候选的 embedding size,然后用强化学习进行择优。难以落地,因为最终得到的模型,参数规模几乎增长到 N 倍。

    换一个思路:给定一个 baseline model,我们可以将 baseline model 的 embedding size 划分为 N 个子维度(类似于 NIS),然后由控制器来选择需要横跨几个子维度。这种方法和 NIS 的区别在于:

    • NIS 的控制器是独立的自由变量,每个变量代表对应的概率。虽然控制器没有包含 item 的 popularity 信息,可以自由变量的 update 次数就代表了 item 出现的频次,因此隐式地包含了 popularity 信息。
    • 而这个思路里,控制器的输入包含了 item 的 popularity 信息,可以给予控制器一定的指导。

  2. Enhanced DLRS 架构:正如前面所讨论的,当popularity较低时,具有较少模型参数的 shorter embedding 可以产生更好的推荐;而随着popularity的增加,具有更多模型参数和更高容量的 longer embedding 可以获得更好的推荐性能。在这个观察的激励下,为具有不同popularity的 user/item 分配不同的 embedding size 是非常理想的。然而,basic DLRS 架构由于其固定的神经网络架构而无法处理各种 embedding size 。

    解决这一挑战的基本思路是将各种 embedding size 转换为同一维度,这样 DLRS 就可以根据当前 user/item 的popularity选择其中一个 transformed embedding 。下图说明了 embedding 的转换和选择过程。假设我们有 N 个 embedding 空间 {E1,E2,⋯,EN},每个空间的 embedding 维度(即,embedding size )分别为 d1,d2,⋯,dN ,且满足 d1<d2<⋯<dN 。对于给定的用户 ui ,定义该用户在所有 embedding 空间的 embedding 集合为 {e→i1,e→i2,⋯,e→iN} 。为了统一 embedding 向量 {e→i1,e→i2,⋯,e→iN} ,我们引入带有 N 个全连接层的组件从而将 {e→i1,e→i2,⋯,e→iN} 转化为相同的维度 dN :

    (30)e→~ir←Wr⊤e→ir+b→r,r=1,2⋯,N

    其中:Wr∈Rdr×dN 为权重矩阵,b→r∈RdN 为 bias 向量。

    经过线性变换,我们将原始 embedding 向量 {e→i1,e→i2,⋯,e→iN} 映射为相同维度的 {e→~i1,e→~i2,⋯,e→~iN}∈RdN。在实践中,我们可以观察到,转换后的 embedding {e→~i1,e→~i2,⋯,e→~iN} 的向量长度 magnitude 变化很大,这使得它们变得 magnitude-incomparable 。为了解决这一难题,我们对转换后的embedding {e→~i1,e→~i2,⋯,e→~iN} 进行 Batch- Norm 与 Tanh 激活:

    (31)e→^r←tanh⁡(e→~ir−μ→Br(σBr)2+ϵ),r=1,2,⋯,N

    其中:μ→Br 为 mini-batch 的均值,(σBr)2 为 mini-batch 的方差,ϵ 为一个很小的常数从而保持数值稳定性,Tanh 激活函数将 embedding 归一化到 0~1 之间。

    给定一个 item vj ,我们对其 embedding 集合 {f→j1,f→j2,⋯,f→jN} 进行类似的操作,得到相同维度的、magnitude-comparable 的转换后的 embedding {f→^j1,f→^j2,⋯,f→^jN} 。

    根据popularity,DLRS 将选择一对转换后的 embedding (e→^i∗,f→^j∗) 作为 user ui 和 item vj 的 representation:

    (32)u→i=e→^i∗,e→^i∗∈{e→~i1,e→~i2,⋯,e→~iN}v→j=f→^j∗,f→^j∗∈{f→^j1,f→^j2,⋯,f→^jN}

    embedding size 是由一个控制器 controller 选择的,将在后面详细介绍。然后,我们将 user representation 和 item representation 拼接起来,即 h→0=[u→i;v→j],并将 h→0 馈入到 M 个全连接的隐层,而隐层的输出被馈入到 output layer 从而生成 user ui 对 item vj 的交互的预测。

    为了获得理想的效果,N 不能太小(否则,控制器选择的余地就不大)。 embedding table 占据了模型的绝大部分参数,因此 N 个 embedding table 使得模型的规模几乎翻了 N 倍。这对于模型训练、模型部署都是严重的挑战。因此,该方法不太适用。

  3. Controller:我们提出了一种基于 AutoML 的方法来自动确定 embedding size 。具体而言,我们设计了两个控制器网络,分别决定 user embedding size 和 item embedding size ,如下图所示。

    对于一个特定的 user/item ,控制器的输入由两部分组成:user/item 的当前popularity、上下文信息(如 previous 超参数和 loss )。上下文信息可以被看作是衡量 previously 分配给 user/item 的超参数是否运作良好的信号。换句话说,如果 previous 超参数工作得很好,那么这次生成的新的超参数应该有些类似。

    controller 的输入特征具体都是什么?论文并未说明。也不必深究,因为论文的应用价值不高。

    该控制器接收上述输入,通过几层全连接网络进行转换,然后生成 hierarchical feature representation 。output layer 是具有 N 个输出单元的 Softmax layer。在这项工作中,我们用 {α1,⋯,αN} 来表示 user controller 的 N 个输出单元、用 {β1,⋯,βN} 表示 item controller 的 N 个输出单元。 第 n 个输出单元表示选择第 n 个 embedding 空间的概率。 controller 自动选择最大概率的空间作为 final embedding 空间,即:

    (33)u→i=e→^i∗=e→^k∗,k=max1≤l≤Nαlv→j=f→^j∗=f→^k∗,k=max1≤l≤Nβl

    有了控制器,embedding size 搜索的任务就简化为优化控制器的参数,从而根据 user/item 的popularity自动生成合适的 {αn} 或 {βn} 。

  4. Soft Selection:上面的控制器对 embedding 空间进行了 hard selection,即:每次我们只从控制器中选择一个具有最大概率的embedding 空间。这种 hard selection 使得整个框架不是端到端的可微的。为此,我们选择了一种 soft selection:

    (34)u→i=1N∑n=1Nαn×e→^iv→j=1N∑n=1Nβn×f→^j

    有了 soft selection ,enhanced DLRS 是端到端的可微的。新的结构如下图所示,我们增加了 transformed embedding layer ,它对 embedding 空间进行soft selection ,选择过程由两个控制器(分别用于 user 和 item )来决定。

  5. 优化方法:优化任务是联合优化 DLRS 的参数(如 W )和控制器的参数(如 Θ)。由于我们的框架是端到端的可微的,受可微分架构搜索(differentiable architecture search: DARTS )技术概念的启发,我们为 AutoEmb 框架采用了基于 DARTS 的优化,通过梯度下降分别优化训练损失 Ltrain 和验证损失 Lval 来更新 W 和 Θ 。注意,训练损失和验证损失不仅由 DLRS 的参数 W 决定,也由控制器的参数 Θ 来决定。

    embedding dimensionality search 的目标是找到使验证损失 Lval(W∗,Θ∗) 最小化的最佳参数 Θ∗ ,其中 DLRS 的参数 W∗ 是通过最小化训练损失 W∗=arg⁡minWLtrain(W,Θ∗) 得到的。 这是一个 bilevel 优化问题,其中 Θ 是外层变量,W 是内层变量:

    (35)minΘLval(W∗,Θ)s.t.W∗=arg⁡minWLtrain(W,Θ∗)

    因为优化内层的 W 很昂贵,所以优化 Θ 很耗时。因此,我们利用 DARTS 的近似方案:

    (36)∇ΘLval(W∗,Θ)≃∇ΘLval(W−ξ∇WLtrain(W,Θ),Θ)

    其中 ξ 是更新 W 的学习率。近似方案通过更新 W 一个 training step 来估计 W∗ ,这就避免了完全优化 W∗=arg⁡minWLtrain(W,Θ∗) 。一阶近似(即,ξ=0) 甚至会导致一定的加速,但根据经验,性能更差。

    值得注意的是,与计算机视觉任务上的 DARTS 不同,我们没有推导离散架构的阶段(即,DARTS 根据 softmax 概率选择最可能的操作来生成离散的神经网络架构)。这是因为随着新的 user-item 交互的发生, user/item 的popularity是高度动态的,这使我们无法为user/item 选择一个特定的 embedding size 。

  6. DARTS based Optimization for AutoEmb 算法:

    • 输入:user-item 交互、以及 ground-truth 标签

    • 输出:训练好的 DLRS 参数 W∗ 、训练好的控制器参数 Θ∗

    • 算法步骤:

      迭代直到收敛,迭代步骤:

      • 从 previous 的 user-item 交互中随机采样一个 mini-batch 的验证数据。

      • 基于梯度下降来更新 Θ :

        (37)∇ΘLval(W−ξ∇WLtrain(W,Θ),Θ)

        其中 ξ=0 用于 first-order approximation 。

      • 收集一个 mini-batch 的训练数据。

      • 基于当前参数 Θ 的控制器来生成 {αn} 和 {βn} 。

      • 基于当前参数 W 、 {αn} 和 {βn} 来生成 DLRS 的 prediction 。

      • 评估 prediction 的效果并记录下来。

      • 通过梯度下降来更新 W :∇WLtrain(W,Θ) 。

  7. 值得注意的是,在 batch-based streaming recommendation setting 中,优化过程遵循 "evaluate, train, evaluate, train..." 的方式。 换句话说,我们总是不断地收集新的 user-item 交互数据。当我们有一个完整的 mini-batch 的样本时,我们首先根据我们的 AutoEmb 框架的当前参数进行预测,评估预测的性能并记录下来;然后我们通过最小化 prediction 和 ground truth label 之间的损失来更新 AutoEmb 的参数。接下来我们收集另一个 mini-batch 的 user-item 交互,执行同样的过程。因此,不存在预先拆分的验证集和测试集。换句话讲:

    • 为了计算 Lval ,我们从 previous 的 user-item 交互中采样一个 mini-batch ,作为验证集。

    • 没有独立的测试阶段,即没有预先拆分的测试集。

    • 遵循 《Streaming recommender systems》 中的 streaming recommendation setting ,我们也有离线参数估计阶段和在线推理阶段:

      • 在离线参数估计阶段,我们使用历史上的 user-item 交互来预先训练 AutoEmb 的参数。
      • 然后我们在线启动 AutoEmb ,在在线推理阶段持续更新 AutoEmb 参数。

42.2 实验

  1. 数据集:Movielens-20m, Movielens-latest, Netflix Prize data 。统计数据如下表所示。

    对于每个数据集,我们使用 70% 的 user-item 交互进行离线参数估计,其他 30% 用于在线学习。为了证明我们的框架在 embedding selection 任务中的有效性,我们消除了其他的上下文特征(如,用户的年龄、item 的 category )从而排除其他特征的影响。但为了更好地推荐,将这些上下文特征纳入框架是很简单的。

  2. 实现细节:

    • 对于 DLRS:

      • embedding layer:选择 N=3 个 embedding size [2,16,128] ,因此转换后的 embedding 维度为 128。我们将每个 user/item 的三个 embedding 拼接起来,这大大改善了 embedding 的 lookup 速度。

      • hidden layer:我们有两个隐层,大小为 256*512 和 512*512 。

      • output layer:我们做两类任务:

        • 对于 rating regression 任务,输出层为 512*1 。
        • 对于 rating classification 任务,输出层为 512*5 ,采用 Softmax 激活,因为有 5 类评级。
    • 对于控制器:

      • input layer:输入特征维度为 38 。
      • hidden layer:我们有两个隐层,大小为 38*512 和 512*512 。
      • output layer:形状为 512*3,采用 Softmax 激活函数,并输出 N=3 个单元的权重。
    • batch-size = 500,DLRS 和控制器的学习率分别为 0.01 和 0.001 。AutoEmb 框架的所有超参数都通过交叉验证来调优。相应地,我们也对 baseline 进行了超参数调优,以进行公平的比较。

  3. 评估指标:

    • 对于回归任务,我们首先将评分二元化为 {0, 1} ,然后通过最小化 mean-squared-error: MSE 损失来训练框架。性能可以通过 MSE 损失和准确率来评估(我们使用 0.5 作为阈值来分配标签)。

      如何二元化,作者并未说明。读者猜测是用当前评分除以最大评分(如,5 分)从而得到 0 ~ 1 之间的浮点数。

    • 对于分类任务,评分 1~5 被视为 5 个类,框架通过最小化交叉熵损失( CE loss )进行训练。性能由交叉熵和准确率来衡量。

  4. baseline 方法:

    • Fixed-size Embedding:为所有的 user/item 分配了一个固定的 embedding size 。为了公平比较,我们将 embedding size 设定为146 = 2 + 16 + 128 。换句话说,它占用的内存与 AutoEmb 相同。
    • Supervised Attention Model: SAM:它具有与 AutoEmb 完全相同的架构,同时我们通过端到端的监督学习的方式,在同一个 batch 的训练数据上同时更新 DLRS 的参数和控制器的参数。
    • Differentiable architecture search: DARTS:它是标准的 DARTS 方法,为三种类型的 embedding 维度训练 N=3 个实值权重。

    值得注意的是, Neural Input Search model 和 Mixed Dimension Embedding model 不能应用于 streaming recommendation setting ,因为它们假设 user/item 的popularity是预先知道的和固定的,然后用大的 embedding size 来分配高popularity的 user/item 。然而,在现实世界的 streaming recommender system 中,popularity不是预先知道的,而是高度动态的。

  5. 在线阶段的比较结果如下表所示。可以看到:

    • SAM 的表现比 FSE 好,因为 SAM 根据popularity在不同维度的 embedding 上分配注意力权重,而 FSE 对所有 user/item 都有一个固定的 embedding 维度。这些结果表明,推荐质量确实与 user/item 的popularity有关,而引入不同的 embedding 维度并根据popularity调整 embedding 上的权重可以提高推荐性能。

    • DARTS 优于 SAM ,因为像 DARTS 这样的 AutoML 模型在验证集上更新控制器的参数,可以提高泛化能力,而像 SAM 这样的端到端模型在同一个 batch 训练数据上同时更新 DLRS 和控制器的参数,可能导致过拟合。这些结果验证了 AutoML 技术比传统的监督学习在推荐中的有效性。

    • 我们提出的模型 AutoEmb 比标准 DARTS 模型有更好的性能。

      DARTS 在三种 embedding 维度上为每个 user/item 分别训练了 N=3 个实值权重。一个特定的 user/item 的这些权重可能不会被很好地训练,因为这个 user/item 的交互有限。AutoEmb 的控制器可以纳入大量的 user/item 交互,并从中捕获到重要的特征。

      另外,控制器有一个显式的popularity输入,这可能有助于控制器学习popularity和 embedding 维度之间的依赖关系,而 DARTS 则不能。这些结果证明了开发一个控制器而不仅仅是实值权重的必要性。

    • 在离线参数估计阶段之后,在线阶段的大多数 user/item 已经变得非常 popular 。换句话说,AutoEmb 对热门 user/item 有稳定的改进。

    综上所述,所提出的框架在不同的数据集和不同的指标上都优于 baseline 。这些结果证明了 AutoEmb 框架的有效性。

  6. 我们将调查所提出的控制器是否能根据各种popularity产生适当的权重。因此,我们比较了没有控制器的 FSE 、有监督注意力控制器的SAM 、以及有基于 AutoML 的控制器的 AutoEmb 。Figure 6 显示了 Movielens-20m 数据集的结果,其中 x 轴是popularity,y 轴对应的是性能。由于篇幅有限,我们省略了其他数据集的类似结果。可以看到:

    • 当popularity较小时,FSE 的表现比 SAM 和 AutoEmb 差。这是因为较大维度的embedding 需要足够的数据才能很好地学习。参数较少的小型 embedding 可以快速捕捉一些 high-level 的特性,这可以帮助冷启动预测。

    • 随着popularity的提高,FSE 的表现超过了 SAM 。这个结果很有趣,但也很有启发性,原因可能是,SAM 的控制器过拟合少量的训练样本,这导致了次优的性能。

      相反,AutoEmb 的控制器是在验证集上训练的,这提高了它的泛化能力。这个原因也将在下面的小节中得到验证。

    • AutoEmb 总是优于 FSE 和 SAM ,这意味着所提出的框架能够根据popularity自动地、动态地调整不同维度的 embedding 的权重。

    • 为了进一步探究 AutoEmb 的控制器根据popularity产生的权重,我们在Figure 7 中画出了不同popularity的权重分布。我们可以观察到:在小的popularity下,分布倾向于小维度的 embedding ;而随着popularity的增加,分布倾向于大维度的 embedding 。这一观察验证了我们的上述分析。

    综上所述,AutoEmb 的控制器可以通过自动的、动态的方式为不同的popularity产生合理的权重。

  7. 不同数据规模下的性能:训练基于深度学习的推荐系统通常需要大量的 user-item 交互数据。我们提出的 AutoEmb 框架在 DLRS 中引入了一个额外的控制器网络、以及一些额外的参数,这可能使它难以被很好地训练。我们在下图中展示了优化过程,其中 x 轴是训练样本的数量,y 轴对应的是性能。可以看到:

    • 在早期训练阶段,SAM 的表现最差,因为它的控制器对少量的训练样本过拟合。
    • 随着数据的增加,SAM 的过拟合问题逐渐得到缓解,SAM 的表现优于 FSE ,这验证了在不同 embedding 维度上加权的必要性。
    • AutoML 在整个训练过程中优于 SAM 和 FSE 。尤其是在训练样本不足的早期训练阶段,它能明显提高训练效果。

四十三、AutoDim[2021]

  1. 大多数现有的推荐系统为所有的 feature field 指定了固定的、统一的 embedding 维度,这可能会导致内存效率的降低。

    • 首先, embedding 维度往往决定了编码信息的能力。因此,为所有的 feature field 分配相同的维度可能会失去 highly predictive 特征的信息,而将内存浪费在 non-predictive 特征上。因此,我们应该给 highly informative 和 highly predictive的特征分配一个大的维度,例如,location-based 的推荐系统中的 "location" 特征。
    • 其次,不同的 feature field 有不同的 cardinality (即 unique value 的数量)。例如,性别特征只有两个(即 male 和 female ),而 itemID 特征通常涉及数百万个 unique value 。直观而言,我们应该为具有较大 cardinality 的 feature field 分配较大的维度从而编码它们与其他特征的复杂关系,并为具有较小 cardinality 的feature field 分配较小的维度从而避免由于过度参数化而产生的过拟合问题。

    根据上述原因,我们非常希望能以一种 memory-efficient 的方式为不同的 feature field 分配不同的 embedding 维度。

    在论文 《AutoDim: Field-aware Embedding Dimension Search in Recommender Systems》 中,作者的目标是为不同的 feature field 提供不同的 embedding 维度从而用于推荐。但是这里面临着几个巨大的挑战:

    • 首先,embedding 维度、特征分布、以及神经网络架构之间的关系是非常复杂的,这使得我们很难为每个feature field 手动分配 embedding 维度。
    • 其次,现实世界的推荐系统往往涉及成百上千的feature field 。由于难以置信的巨大搜索空间(NM,N 为每个feature field 的候选维数,M 为feature field 的数量)带来的昂贵的计算成本,很难为所有 feature field 人为地选择不同的维度。

    作者试图解决这些挑战,从而得到一个端到端的可微的 AutoML-based 框架(AutoDim ),它可以通过自动化的、数据驱动的方式有效地分配 embedding 维度给不同的 feature field 。

    论文主要贡献:

    • 作者发现了将various 的 embedding 维度分配给不同的 feature field 可以提高推荐性能的现象。
    • 作者提出了一个 AutoML-based 的端到端框架 AutoDim ,它可以自动选择各种 embedding 维度到不同的 feature field 。
    • 作者在真实世界的 benchmark 数据集上证明了所提框架的有效性。

43.1 模型

  1. AutoDim 是一个 AutoML-based 框架,它可以为不同 feature field 自动分配不同的 embedding 维度。框架如下图所示,其中包括维度搜索阶段、参数重训练阶段。

    AutoDim 的思想和 AutoEmb 类似,也是为每个 id 分配 N 个候选的 embedding size,然后用强化学习进行择优。但是,AutoDim 相对容易落地,因为 AutoDim 本质上是寻找每个词表的最佳维度,是一个超参数调优工具,找到最佳维度之后应用到目标模型中。二者不同的地方:

    • AutoEmb 使用 popularity 信息作为特征来获得筛选概率,而 AutoDim 仅依靠特征本身的 embedding 来获得筛选概率。
    • AutoDim 有一个重训练阶段。实际上也可以在 AutoEmb 中引入重训练。

  1. Embedding Lookup:对于每个 user-item 交互样本,我们有 M 个输入特征 (x1,⋯,xM) ,每个特征 xm 属于一个特定的 feature field ,如性别、年龄等等。对于第 m 个 feature field,我们分配了 N 个候选的 emebdding 空间 {Xm1,⋯,XmN} ,这些 embedding 空间的维度分别为 d1,⋯,dN ,其中 d1<⋯<dN 。这些 embedding 空间的 cardinality 是该 feature field 中 unique feature value 的数量。

    相应地,我们定义 {x→m1,⋯,x→mN} 为给定特征 xm 在所有 embedding 空间的候选 embedding 的集合,如下图所示。因此,分配给特征 xm 的总空间的维度是 ∑n=1Ndn。注意,为了简单起见,我们给所有的 feature field 分配相同的候选维度集合,但引入不同的候选集合是很直接的。

  2. 统一各种维度:由于现有的 DLRS 中第一层 MLP 的输入维度通常是固定的,所以它们很难处理各种候选维度。因此,我们需要将 embedding 向量 {x→m1,⋯,x→mN} 统一为同一维度。下图给出了处理方法,其中我们引入了 N 个全连接层,将 embedding 向量 {x→m1,⋯,x→mN} 转换为相同的维度 dN :

    (38)x→~mn←Wn⊤x→mn+b→n,1≤n≤N

    其中:Wn∈Rdn×dN 为权重向量,b→n∈RdN 为 bias 向量。对于不同的feature field ,所有具有相同维度的候选 embedding 都共享相同的权重矩阵和 bias 向量,这可以减少模型参数的数量。

    过线性变换,我们将原始 embedding 向量 {x→m1,⋯,x→mN} 映射到同一维度的空间,即 {x→~m1,⋯,x→~mN}∈RdN 。在实践中,我们可以观察到,转换后的 embedding {x→~m1,⋯,x→~mN} 的幅度 magnitude 方差很大,这使得它们变得不可比 incomparable 。为了解决这一难题,我们对转换后的嵌入进行 BatchNorm:

    (39)x→^mn←x→~mn−μ→Bn(σBn)2+ϵ,1≤n≤N

    其中:μ→Bn 为 x→~mn 在 mini-batch 的均值,(σBn)2 为 x→~mn 在 mini-batch 的方差,ϵ 为一个小的正数从而用于数值稳定性。

  3. Dimension Selection:我们通过引入 Gumbel-softmax 操作,对不同维度的 hard selection 进行了近似处理(因为 hard selection 是不可微的)。具体而言,假设权重 {αm1,⋯,αmN} 是不同维度上的概率。那么,可以通过 Gumbel-max 技巧得到一个 hard selection z ,即:

    (40)z=one-hot(arg⁡max1≤n≤N[gn+log⁡αmn])gn=−log⁡(−log⁡un),un∼U(0,1)

    其中:U(0,1) 为 0-1 之间的均匀分布,{gn}n=1N 为独立同分布的 gumbel 噪声(用于扰动 log⁡αmn ,使得 argmax 操作等价于通过 {αmn}n=1N 权重来采样)。

    然而,由于 argmax 操作,这个技巧是不可的。为了解决这个问题,我们使用 softmax 函数作为 argmax 操作的连续的、可微的近似,即 gumbel-softmax:

    (41)pmn=exp⁡(gn+log⁡αmnτ)∑i=1Nexp⁡(gi+log⁡αmiτ)

    其中:

    • τ 是温度参数,它控制着 gumbel-softmax 操作的输出的平滑度。当 τ 接近零时,gumbel-softmax 的输出就会变得更接近于 ont-hot 向量。
    • pmn 是选择特征 xm 的第 n 个候选 embedding 维度的概率。

    为什么要用 gumble-softmax 操作?直接用 softmax 操作如何?作者并未说明原因。

    xm 的 embedding x→m 可以表述为 {x→^m1,⋯,x→^mN} 的加权和(如下图所示):

    (42)x→m=∑n=1Npmn×x→^mn,1≤m≤M

  4. 然后我们拼接所有特征的 embedding ,即 h→0=[x→1,⋯,x→M] ,然后将 h→0 馈入 L 层的感知机:

    (43)h→l=σ(Wl⊤h→l−1+b→l),1≤l≤L

    其中:Wl,b→l 为第 l 层感知机的权重和 bias,σ(⋅) 为激活函数。

    感知机的输出馈入 output layer ,得到最终预测:

    (44)y^=σ(Wo⊤h→L+b→o)

    其中:Wo,b→o 为 output layer 的权重和 bias,σ(⋅) 为激活函数。

    目标函数为负的对数似然:

    (45)L(y^,y)=−ylog⁡y^−(1−y)log⁡(1−y^)

    其中:y 为 ground-truth 。

43.1.2 优化

  1. AutoDim 中需要优化的参数有两个方面:

    • W :DLRS 的参数,包括 embedding 部分和 MLP 部分。
    • α={αmn}n=1N :不同 embedding 维度的权重。

    DLRS 参数 W 和权重 α 不能像传统的监督注意力机制那样在训练数据集上同时进行优化,因为它们的优化高度依赖于彼此。换句话说,同时对训练数据集进行优化可能会导致模型对训练数据集的样本过拟合。

    受可微分架构搜索(differentiable architecture search: DARTS )技术的启发, W 和权重 α 通过梯度下降交替优化。具体而言,我们通过优化训练数据上的损失 Ltrain 来更新 W 、通过优化验证数据上的损失 Lval 来更新 α :

    (46)minαLval(W∗,α)s.t.W∗=arg⁡minWLtrain(W,α)

    这种优化形成了一个 bilevel 的优化问题,其中权重 α 和 DLRS 参数 W 被确定为外层变量和内层变量。由于内层变量 W 的优化成本太高,因此我们利用了 DARTS 的近似方案:

    (47)W∗=arg⁡minWLtrain(W,α)≃W−ξ∇WLtrain(W,α)

    其中:ξ 为学习率。

    在近似方案中,当更新 α 时,我们通过单步的梯度下降来估计 W∗ ,而不是彻底优化 W∗=arg⁡minWLtrain(W,α) 。

    优化方法与 AutoEmb 完全相同。

  2. AutoDim 中 DARTS based 优化算法:

    • 输入:特征 (x1,⋯,xM) ,ground-truth label y

    • 输出:训练好的 DLRS 参数 W∗ ,训练好的权重 α∗

    • 算法步骤:

      迭代直到收敛,迭代步骤为:

      • 从验证数据集中采样一个 mini-batch 的数据。
      • 通过 ∇αLval(W∗,α) 来更新 α ,其中 W∗≃W−ξ∇WLtrain(W,α) 。
      • 收集一个 mini-batch 的训练数据。
      • 基于当前的 W 和 α 来生成预测 y^ 。
      • 通过 ∇WLtrain(W,α) 来更新 W 。

43.1.3 参数重训练

  1. 由于 dimensionality search 阶段的次优 embedding 维度也会影响模型的训练,所以希望有一个重训练阶段,只用最优维度训练模型,消除这些次优的影响。

  2. Deriving Discrete Dimensions:在重训练过程中,每个 feature field 的最佳 embedding 空间(维度)被选择为与最大权重相对应的维度:

    (48)Xm=Xmk,k=arg⁡max1≤n≤Nαmn,1≤m≤M

    Figure 2(a) 给出了一个示例,红色箭头表示所选中的 embedding 维度。

  3. Model Re-training:给定所选的 embedding 空间,我们可以为特征 (x1,⋯,xM) 获得 unique 的 embedding 向量 (x→1,⋯,x→M)。 然后将这些 embedding 拼接起来再馈入隐层。最后,DLRS 的所有参数,包括 embedding 和 MLP ,将通过反向传播使监督损失函数 L(y,y^) 最小化从而被更新。

    注意:

    • 现有的大多数深度推荐算法都是通过交互操作(如内积)来捕获 feature field 之间的交互。这些交互操作要求所有 field 的embedding 向量具有相同的尺寸。因此,被选中的 embedding 仍然被映射到相同的维度。
    • 在重训练阶段,不再使用 Batch-Norm 操作,因为每个 field 的候选 embedding 之间没有竞争。
  4. DLRS 重训练阶段的优化过程:

    • 输入:特征 (x1,⋯,xM) ,ground-truth label y

    • 输出:训练好的 DLRS 参数 W∗

    • 算法步骤:

      迭代直到收敛,迭代步骤为:

      • 采样一个 mini-batch 的训练数据。
      • 基于当前的 W 来生成预测 y^ 。
      • 通过 ∇WLtrain(W) 来更新 W 。

43.2 实验

  1. 数据集:Criteo 。每个样本包含 13 个数值 feature field、26 个 categorical feature field 。

    我们按照 Criteo 竞赛获胜者的建议,将数值特征归一化:

    (49)v={⌊log⁡(v)2⌋, if v>2v, else 

    然后将数值特征进行分桶从而转换为 categorical feature 。

    我们使用 90% 的数据作为训练集/验证集(8:1 ),其余 10% 作为测试集。

  2. 实现细节:

    • DLRS:

      • embedding 组件:在我们的 GPU 内存限制下,我们将最大的 embedding 维度设置为 32 。对于每个 feature field ,我们从 N=5 个候选 embedding 维度 {2, 8, 16, 24, 32} 中选择。
      • MLP 组件:我们有两个隐层,形状分别为 |h0|×128 和 128×128,其中 |h0| 是第一个隐层的输入大小。|h0|=32×M,M=39 是 Criteo 数据集的 feature field 数量。我们对两个隐层使用 batch normalization 、dropout (dropout rate = 0.2 )和 ReLU 激活。输出层为 128×1 ,采用 Sigmoid 激活函数。
    • α :第 m 个 feature field 的 {αm1,⋯,αmN} 是在一个可训练的、长度为 N 的向量上通过 softmax 激活来产生的。对于 Gumbel-Softmax ,我们使用退火温度 τ=max(0.01,1−0.00005×t) 用于,其中 t 是 training step 。

    更新 DLRS 和 α 的学习率分别为 0.001 和 0.001 ,batch size = 2000 。我们的模型可以应用于任何具有 embedding layer 的深度推荐系统。在本文中,我们展示了在著名的 FM、W&D、以及 DeepFM 上应用 AutoDim 的性能。

  3. 评估指标:AUC, Logloss, Params 。

    Params 指标是该模型的 embedding 参数数量。我们省略了 MLP 参数的数量,因为 MLP 参数仅占模型总参数的一小部分。

  4. baseline 方法:

    • Full Dimension Embedding: FDE :所有的 feature field 分配了最大的候选维度,即 32 。
    • Mixed Dimension Embedding: MDE:参考论文 《Mixed Dimension Embeddings with Application to Memory-Efficient Recommendation Systems》。
    • Differentiable Product Quantization: DPQ:参考 《Differentiable product quantization for end-to-end embedding compression》。
    • Neural Input Search: NIS:参考 《Neural input search for large scale recommendation models》 。
    • Multi-granular quantized embeddings: MGQE:参考 《Learning Multi-granular Quantized Embeddingsfor Large-Vocab Categorical Features in Recommender Systems》。
    • Automated Embedding Dimensionality Search: AEmb:参考 《AutoEmb: Automated Embedding Dimensionality Search in Streaming Recommendations》。
    • Random Search: RaS:随机搜索是神经网络搜索的强大 baseline。我们应用相同的候选 embedding 维度,在每个实验时间随机分配维度到 feature field ,并报告最佳性能。
    • AD-s:它与 AutoDim 共享相同的架构,同时我们在同一 training batch 上以端到端反向传播的方式同时更新 DLRS 参数和 α ,即通过监督学习(而不是强化学习)来训练 AutoDim 。
  5. 实验结果如下表所示,可以看到:

    • FDE 实现了最差的推荐性能和最大的 Params ,其中 FDE 对所有 feature field 分配了最大的 embedding 维度 32 。这一结果表明,为所有 feature field 分配相同的维度,不仅内存效率低下,而且会在模型中引入许多噪音。

    • RaS, AD-s, AutoDim 比 MDE, DPQ, NIS, MGQE, AEmb 表现得更好,这两组方法的主要区别在于:

      • 第一组方法旨在为不同的 feature field 分配不同的 embedding 维度,而相同 feature field 中的 embedding 共享同一维度。
      • 第二组方法试图为同一 feature field 中的不同特征取值分配不同的 embedding 维度,分配方式基于特征取值的popularity。

      第二组方法具有几个方面的挑战:

      • 每个 feature field 都有许多 unique 值。例如,在 Criteo 数据集中,每个 feature field 平均有 2.7×104 个 unique值。这导致每个 feature field 的搜索空间非常大(即使在分桶之后),这就很难找到最优解。而在 AutoDim 中,每个 feature field 的搜索空间为 N=5 。
      • 仅根据popularity(即一个特征取值在训练集中出现的次数)来分配维度可能会失去该特征的其他重要特性。
      • 在实时推荐系统中,特征取值的popularity通常是动态的,预先未知。例如,冷启动的 user/item 。
    • AutoDim 优于 RaS 和 AD-s 。

      • AutoDim 在验证集的 mini-batch 上更新 α ,可以增强泛化能力。
      • AD-s 在同一训练集 mini-batch 上同时更新 α 与 DLRS ,可能导致过拟合。
      • RaS 随机搜索维度,其中搜索空间很大。

      AD-s 的 Params 比 AutoDim 大得多,这说明更大的维度能更有效地减少训练损失。

      因为 AD-s 是监督学习训练的,目标是最小化训练损失,最终筛选到的维度更大。而 AutoDim 是强化学习训练的,奖励是最小化验证损失,最终筛选到的维度更小。

    综上所述,与有代表性的 baseline 相比,AutoDim 取得了明显更好的推荐性能,并节省了 70%∼80% 的 embedding 参数。这些结果证明了AutoDim 框架的有效性。

  6. 效率分析:本节研究了在 Criteo 数据集上对 DeepFM 应用搜索方法的效率(在一个 Tesla K80 GPU 上),如下图所示。可以看到:

    • 对于训练时间(图 (a)):

      • AutoDim 和 AD-s 具有很快的训练速度,原因是它们的搜索空间比其他 baseline 小。
      • FDE 的训练速度最快,因为我们直接把它的 embedding 维度设置为 32 ,即没有搜索阶段。然而它的推荐效果是所有方法中最差的。
    • 对于推理时间(图 (b)):AutoDim 实现了最少的推理时间,因为 AutoDim 最终选择的推荐模型的 embedding 参数最少(即 Params 指标)。

  7. 超参数研究:除了深度推荐系统常见的超参数(如隐层的数量,由于篇幅有限,我们省略这种常规超参数的分析),我们的模型有一个特殊的超参数,即更新 α 的频率,简称为 f 。在 AutoDim 优化过程中,我们交替地在训练数据上更新 DLRS 的参数、在验证数据上更新 α 。在实践中,我们发现:更新 α 的频率可以低于更新 DLRS 的参数,这显然减少了大量的计算,也提高了性能。

    为了研究 f 的影响,我们研究了在固定其他超参数的情况下,随着 f 的变化,带有 AutoDim 的 DeepFM 在 Criteo 数据集上的表现如何。结果如下表所示,x 轴上,f=i 意味着更新一次 α ,然后更新 i 次 DLRS 参数。

    • 从图 (a), (b) 可以看到,当 f=10 时,AutoDim 达到了最佳 AUC/Logloss 。换句话说,更新 α 过于频繁/不频繁会导致次优的性能。

    • 从图 (d) 可以看到,与设置 f=1 相比,设置 f=10 可以减少 50%∼ 的训练时间。

    • 从图 (c) 可以看到,较低的 f 会导致较低的 Params ,反之亦然。原因是 AutoDim 通过最小化验证损失来更新 α ,从而提高模型的泛化能力。

      • 当频繁更新 α 时(如 f=1),AutoDim 倾向于选择较小的 embedding size ,具有更好的泛化能力,同时可能存在欠拟合问题。
      • 而当不频繁地更新 α 时(如 f=20),AutoDim 倾向于选择较大的 embedding size ,在训练集上表现更好,但可能导致过拟合问题。

  8. 案例研究:这里我们研究 AutoDim 是否可以为更重要的特征分配更大的 embedding 维度。由于 Criteo 的 feature field 是匿名的,我们在 MovieLens-1m 数据集上应用具有 AutoDim 的 W&D 。MovieLens-1m 数据集有 M=8 个 categorical feature field:movieId, year, genres, userId, gender, age, occupation, zip 。由于 MovieLens-1m 比 Criteo 小得多,我们将候选 embedding 维度设定为 {2, 4, 8, 16} 。

    为了衡量一个 feature field 对最终预测的贡献,我们只用这个 field 建立一个 W&D 模型,训练这个模型并在测试集上评估。较高的 AUC 和较低的 Logloss 意味着该 feature field 更有 predictive 。

    然后,我们建立一个包含所有 feature field 的、全面的 W&D 模型,并应用 AutoDim 来选择维度。结果如下表所示:

    • 没有一个 feature field 被分配到 16 维的 embedding 空间,这意味着候选 embedding 维度 {2, 4, 8, 16} 足以覆盖所有可能的选择。
    • 对比每个 feature field 的 W&D 的 AUC/Logloss ,我们可以发现,AutoDim 为重要的(高预测性的) feature field 分配了较大的 embedding 维度,如 movieId 和 userId ,反之亦然。
    • 我们建立了一个 full dimension embedding: FDE 版本的 W&D ,其中所有的 feature field 都被分配为最大维度 16 。其表现为 AUC=0.8077, Logloss=0.5383 ,而带有 AutoDim 的 W&D 的表现为 AUC=0.8113, Logloss=0.5242 ,并且后者节省了57% 的 embedding 参数。

    总之,上述观察结果验证了 AutoDim 可以将更大的 embedding 维度分配给更 predictive 的 feature field 。

四十四、PEP[2021]

  1. 基于深度学习的推荐模型利用 embedding 技术将这些稀疏的 categorical feature 映射为实值的稠密向量,以抽取用户偏好和 item 特性。embedding table 可能包含大量的参数,并花费巨大的内存,因为总是有大量的原始特征。因此, embedding table 的存储成本最高。

    一个很好的例子是 YouTube Recommendation Systems 。它需要数以千万计的参数用于 YouTube video ID 的 embedding 。考虑到当今服务提供商对即时推荐的需求不断增加, embedding table 的规模成为深度学习推荐模型的效率瓶颈。另一方面,具有 uniform emebdding size 的特征可能难以处理不同特征之间的异质性。例如,有些特征比较稀疏,分配太大的 embeddding size 很可能导致过拟合问题。因此,当所有特征的 embedding size 是uniform 时,推荐模型往往是次优的。

    现有的关于这个问题的工作可以分为两类:

    • 一些工作(《Model size reduction using frequency based double hashing for recommender systems》、《Compositional embedding susing complementary partitions for memory-efficient recommendation systems》、《Learning multi-granular quantized embeddings for large-vocab categorical features in recommender systems》)提出,一些密切相关的特征可以共享部分 embedding ,从而减少整个成本。
    • 另一些工作提出依靠人类设计的规则(《Mixed dimension embeddings with application to memory-efficient recommendation systems》)或神经结构搜索(《Neural input search for large scale recommendation models》、《Automated embedding dimensionality search in streaming recommendations》、《Differentiable neural input search for recommender systems》)为不同特征分配 size 灵活的 embedding 。

    尽管得到了 embedding size 减小的 embedding table ,但这些方法在推荐性能和计算成本这两个最受关注的方面仍然不能有好的表现。具体来说,这些方法要么获得较差的推荐性能、要么花费大量的时间和精力来获得合适的 embedding size 。

    在论文 《Learnable embedding sizes for recommender systems》 中,为了解决现有工作的局限性,作者提出了一个简单而有效的 pruning-based 框架,名为 Plug-in Embedding Pruning: PEP ,它可以插入各种 embedding-based 的推荐模型中。论文的方法采用了一种直接的方式:一次性裁剪那些不必要的 embedding 参数来减少参数数量。

    具体而言,PEP 引入了可学习的阈值,可以通过梯度下降与 emebdding 参数共同训练。请注意,阈值被用来自动确定每个参数的重要性。然后, embedding 向量中小于阈值的元素将被裁剪掉。然后,整个 embedding table 被裁剪,从而确保每个特征有一个合适的 embedding size 。也就是说, embedding size 是灵活的。在得到裁剪后的 embedding table 后,作者在彩票假说(Lottery Ticket Hypothesis: LTH )的启发下重新训练模型。彩票假说表明,与原始网络相比,子网络可以达到更高的准确性。基于灵活的 embedding size 和 LTH ,PEP 可以降低 embedding 参数,同时保持甚至提高模型的推荐性能。

    最后,虽然推荐性能和参数数量之间总是存在 tradeoff ,但 PEP 只需运行一次就可以获得多个裁剪后的 embedding table 。换句话说,PEP 可以一次性生成多个memory-efficient 的 embedding 矩阵,这可以很好地处理现实世界应用中对性能或内存效率的各种需求。

    PEP 至少训练两遍:第一遍用于裁剪、第二遍用于重训练。

    论文在三个公共基准数据集(Criteo, Avazu, MovieLens-1M )上进行了广泛的实验。结果表明,与 SOTA 的 baseline 相比,PEP 不仅可以达到最好的性能,而且可以减少 97% ~ 99% 的参数。进一步的研究表明,PEP 在计算上是相当高效的,只需要一些额外的时间进行 embedding size 的学习。此外,对所学到 embedding 的可视化和可解释性分析证实,PEP 可以捕获到特征的固有属性,这为未来的研究提供了启示。

  2. 相关工作:

    • Embedding 参数共享:这些方法的核心思想是使不同的特征通过参数共享来复用 embedding 。

      • 《Learning multi-granular quantized embeddings for large-vocab categorical features in recommender systems》 提出了 MGQE ,从共享的 small size 的 centroid embeddings 中检索 embedding fragments ,然后通过拼接这些 fragments 生成 final embedding 。

      • 《Model size reduction using frequency based double hashing for recommender systems》 使用双哈希技巧 double-hash trick ,使低频特征共享一个小的 embedding-table ,同时减少哈希碰撞的可能性。

        即,对低频特征的 embedding space 分解为两个更小的 embedding space 从而缓解过拟合、降低模型规模。

      • 《Compositional embeddings using complementary partitions for memory-efficient recommendation systems》 试图通过组合多个较小的 embedding(称为 embedding fragments ),从一个小的 embedding table 中为每个 feature category 产生一个 unique embedding vector 。这种组合通常是通过 embedding fragments 之间的拼接、相加、或 element-wise 相乘来实现的。

      然而,这些方法有两个限制:

      • 首先,工程师需要精心设计参数共享比例,以平衡准确性和内存成本。
      • 其次,这些粗略的 embedding 共享策略不能找到 embedding table 中的冗余部分,因此它总是导致推荐性能的下降。

      在这项工作中,我们的方法通过从数据中学习,自动选择合适的 emebdding 用量。因此,工程师们可以不必为设计共享策略付出巨大努力,并且通过去除冗余参数和缓解过拟合问题来提高模型性能。

    • Embedding Size Selection:最近,一些方法提出了一种新的混合维度的 embedding table 的范式。具体来说,不同于给所有特征分配统一的 embedding size ,不同的特征可以有不同的 embedding size 。

      • MDE (《Mixed dimension embeddings with application to memory-efficient recommendation systems》)提出了一个人为定义的规则,即一个特征的 embedding size 与它的popularity成正比。然而,这种基于规则的方法过于粗糙,无法处理那些低频但是重要的特征。此外,MDE 中存在大量的超参数,需要大量的超参数调优工作。

      • 其他一些工作依靠神经架构搜索 Neural Architecture Search: NAS 为不同的特征分配了自适应的 embedding size 。

        • NIS(《Neural input search for large scale recommendation models》) 使用了一种基于强化学习的算法,从人类专家预先定义的候选集中搜索 embedding size 。NIS 采用一个控制器来为不同的 embedding size 生成概率分布。
        • NIS 的控制器被 DartsEmb (《Autoemb: Automated embedding dimensionality search in streaming recommendations》)进一步扩展,将强化学习搜索算法替换为可微的搜索。
        • AutoDim (《Memory-efficient embedding for recommendations》)以与 DartsEmb 相同的方式为不同的 feature field 分配不同的 embedding size ,而不是单个特征。
        • DNIS(《Differentiable neural input search for recommender systems》)使候选 embedding size 是连续的,没有预定义的候选尺寸。

        然而,所有这些基于 NAS 的方法在搜索过程中需要极高的计算成本。即使是采用微分架构搜索算法的方法,其搜索成本仍然是无法承受的。此外,这些方法还需要在设计适当的搜索空间方面做出巨大努力。

        与这些工作不同的是,我们的 pruning-based 方法可以相当有效地进行训练,并且在确定 embedding size 的候选集时不需要任何人工努力。

44.1 模型

  1. 一般来说,深度学习推荐模型将各种原始特征(包括用户画像和 item 属性)作为输入,预测用户喜欢某个 item 的概率。具体而言,模型将用户画像和item 属性的组合(用 x→ 表示)作为其输入向量,其中 x→ 是所有field 的拼接:

    (50)x→=[x→1;x→2;⋯;x→M]

    其中:M 为 feature field 数量;x→i 为 feature representation(通常为 one-hot 向量);; 为向量拼接。

    对于 x→i , embedding-based 推荐模型为它生成对应的 embedding 向量:

    (51)v→i=Vi⊤x→i∈Rd

    其中:Vi∈Rni×d 为第 i 个 feature field 的 embedding 矩阵,ni 为第 i 个 feature field 的 unique 取值数量,d 为 embedding size 。

    模型针对所有 feature field 的 embedding 矩阵为:

    (52)V={V1,V2,⋯,VM}

    模型的预测得分为:

    (53)y^=ϕ(x→;V,Θ)

    其中:ϕ(⋅) 为 prediction model (如 FM),Θ 为除了 embedding 矩阵以外的参数。

    为了学习模型的参数(包括 embedding 矩阵),我们需要优化如下的训练损失:

    (54)minL(V,Θ,D)

    其中:D={(x→,y)} 为数据集,y 为 ground-truth label,L 为损失函数。

    通常而言,推荐任务中采用 logloss 损失函数:

    (55)L=−1|D|∑j=1|D|(yjlog⁡y^j+(1−yj)log⁡(1−y^j))

    其中:|D| 表示训练集的样本总数。注意,为了简化讨论,这里忽略了正则化项。

  2. 通过裁剪实现可学习的 embedding size :如前所述,针对 memory-efficient embedding learning 的可行方案是为不同的特征 embedding v→i 自动分配不同的 embedding size d~i,这就是我们的目标。然而,由于其离散性和极其庞大的优化空间,直接学习 d~i 是不可行的。为了解决这个问题,我们提出了一个新的想法,即在 V 上强迫 column-wise sparsity ,这等于是缩小了 embedding size 。

    如下图所示,embedding v→1 的第一个值被裁剪并设置为零,导致在效果上等效于 d~1=d1−1 的 embedding size 。此外,一些不重要的 feature embedding ,如 v→3 , 通过裁剪并设置所有的值为零从而被删除。因此,我们的方法可以大大减少 embedding 参数。请注意,稀疏矩阵存储技术可以帮助我们大大节省内存用量。

    如果某一列被裁剪为零,则意味着该维度不重要;如果某一行被裁剪为零,则意味着该 feature value 不重要。

    在这种情况下,我们将 embedding size 的选择问题转换为学习 embedding 矩阵 V 的 column-wise sparsity 。为了达到这个目的,我们对 V 设计了一个稀疏性约束:

    (56)minL(V,Θ,D),s.t.‖V‖0≤k

    其中:∥⋅∥0 表示 L0 范数(即,非零元素的数量);k 为 parameter budget ,它是对 embedding 参数总数的约束。

    这里其实是 global sparsity,而不仅仅是 column-wise sparsity 。

    然而,由于 L0 范数约束的非凸性,上式的直接优化是 NP-hard 的。为了解决这个问题,人们研究了 L0 范数的凸松弛,即 L1 范数。尽管如此,这类凸松弛方法仍然面临着两个主要问题:

    • 首先,计算成本太高,尤其是当推荐模型有数百万个参数时。
    • 其次,参数预算 k 需要人类专家在全局水平上手动设置。考虑到不同特征对推荐有不同的重要性,这种操作显然是次优的。

    为了解决这两个问题,受软阈值重参数化的启发(《Soft threshold weight reparameterization for learnable sparsity》),我们直接优化 V 的投影,并通过可学习的阈值自适应地裁剪 V ,这些阈值可以通过梯度下降更新。V 的重新参数化可以表述如下:

    (57)V^=S(V,s)=sign(V)ReLU(|V|−g(s))

    其中:

    • V^∈RN×d 为重参数化后的 embedding 矩阵。

    • S(⋅) 为裁剪函数,它是 element-wise 的,定义为:

      (58)S(z,s)=sign(z)×ReLU(|z|−g(s))

      裁剪函数的物理意义为:

      • 如果 z 的绝对值较小(意味着接近零),使得 |z|≤g(s),那么裁剪之后的结果为零。
      • 如果 z 的绝对值较大,那么裁剪之后的结果近似为 sign(z)×|z|=z 。为什么说是“近似”,因为 z 的值向零的方向移动了 g(s) 个单位(被裁剪了)。

      其中:

      • s 为可训练的裁剪参数 pruning parameter 。

      • 函数 g(⋅) 作为一个裁剪阈值,如 sigmoid 函数。根据《Soft threshold weight reparameterization for learnable sparsity》,g(⋅) 应该满足三个属性:

        (59)g(s)>0,lims→−∞g(s)=0,lims→∞g(s)=∞∃G∈R+,s.t.0≤g′(s)≤G,∀s∈Rg′(sinit)<1 which reduce the updating speed of s at the initial pruning

        其中对于 unstructured sparsity ,g(⋅) 采用 sigmoid 函数;对于 structured sparsity ,g(⋅) 采用指数函数 exp⁡(⋅)。

      • sign(⋅) 为符号函数,它将正数转换为 1 、将负数转换为 -1、零保持不变。

    采用 V^ 之后,优化问题被重新定义为:

    (60)minL(S(V,s),Θ,D)

    然后,可训练的裁剪参数 s 可以与推荐模型的参数一起通过标准的反向传播进行联合优化。具体而言,第 t 步V 的梯度下降更新方程为:

    (1)V(t+1)←V(t)−ηt∇S(V,s)L(S(V(t),s),D)⊙∇VS(V,s)

    其中:ηt 为 t 步的学习率,⊙ 为 Hadamard 积。

    为了解决 S(⋅) 不可微的问题,我们使用 sub-gradient 来重新表述更新方程如下:

    (2)V(t+1)←V(t)−ηt∇S(V,s)L(S(V(t),s),D)⊙I{S(V(t),s)≠0}

    其中:I(⋅) 为示性函数,当满足条件为 true 时返回 1、否则返回 0 。

    然后,只要我们选择一个连续的函数 g(⋅),那么损失函数 L(S(V(t),s),D) 对于 s 来说是连续的。此外,L 相对于 s 的 sub-gradient 也可以用于 s 的梯度下降。

  3. 裁剪阈值 g(s) 可以从训练数据中学习,以减少 embedding 矩阵中的参数用量。然而,为什么我们的 PEP 可以通过训练数据学习合适的 g(s) 呢?我们推断,g(s) 中 s 的增加可以减少训练损失。换句话说,我们的 PEP 试图在优化过程中更新 s 以达到更低的训练损失。

    如下图所示,我们在 MovieLens-1M 和 Criteo 数据集上绘制了 with/without PEP 的 FM 的训练曲线,以证实我们的假设。可以看到:我们的 PEP 可以实现更低的训练损失。

  4. 用彩票假说重新训练:在将 embedding 矩阵 V 裁剪到目标参数预算 P 之后,我们可以创建一个二元裁剪掩码 M∈{0,1}V,从而决定哪个 embedding 参数应该保留或放弃。然后我们用裁剪后的 embedding table 重新训练模型。

    彩票假说 Lottery Ticket Hypothesis (《The lottery ticket hypothesis: Finding sparse, trainable neural networks》)说明:随机初始化的稠密网络中的一个子网络可以与原始网络相匹配,当以相同的迭代次数进行隔离训练时。这个子网络被称为中奖票 winning ticket 。因此,我们不是随机地重新初始化权重,而是重新训练基础模型,同时将权重重新初始化为原来(但是被掩码后的)的权重 M⊙V0 。

    注意,重训练阶段有三种初始化方式:

    • 与第一轮训练独立的随机初始化。
    • 把第一轮训练采用的随机初始化共享到重训练阶段。
    • 把第一轮训练得到的训练好的权重作为重训练阶段的初始化。

    LTH 和本文采用的是第二种方式。

    注意,重训练阶段需要把被 masked 的 embedding element 固定为零,且在更新过程中不要更新梯度。

    为了验证重训练的有效性,我们对比了四种操作:

    • Without pruning:base model。
    • Without retrain:经过裁剪之后的模型,但是没有重训练。
    • Winning ticket(random reinit):经过裁剪以及重训练之后的模型,但是重训练时采用与第一轮训练所独立的随机初始化。
    • Winning ticket(original init):经过裁剪以及重训练之后的模型,并且共享第一轮训练的初始化权重来随机初始化重训练,即我们的 PEP 。

    可以看到:

    • 在重训练时,与 random reinit 相比, original init 的 winning ticket 可以使训练过程更快,并获得更高的推荐准确性。这证明了我们设计的再训练的有效性。
    • random reinit 的 winning ticket 仍然优于未裁剪的模型。通过减少不太重要的特征的 embedding 参数,模型的性能可以从对那些过度参数化的 embedding 的降噪中受益。这可以解释为,当 embedding size 统一时,它很可能会对那些过度参数化的embedding 进行过拟合。
    • without retrain 的 PEP 的性能会有一点下降,但它仍然优于原始模型。without retrain 和原始模型之间的 gap ,要比 with retrain 和 without retrain 之间的 gap 更大。这些结果表明,PEP 主要受益于合适的 embedding size 选择。

    我们猜测重训练的好处:在搜索阶段,embedding 矩阵中不太重要的元素被逐渐裁剪,直到训练过程达到收敛。然而,在早期的训练阶段,当这些元素没有被裁剪时,它们可能对那些重要元素的梯度更新产生负面影响。这可能使这些重要元素的学习变得次优。因此,重训练步骤可以消除这种影响并提高性能。

  5. 细粒度裁剪:上述方程中的阈值参数 s 被设置为一个标量,每个维度都是相同的阈值。我们把这个版本命名为 global-wise pruning 。然而, embedding 向量 v→i 中的不同维度可能有不同的重要性,而不同 field 的特征也可能有不同的重要性。因此,embedding 矩阵中的值需要不同的稀疏性预算,用全局阈值的裁剪可能不是最佳的。为了更好地处理 V 中不同特征/维度之间的异质性,我们设计了以下不同粒度的阈值策略:

    • Dimension-Wise:阈值参数 s 被设定为一个向量 s→∈Rd。一个 embedding 中的每个值都将被独立地裁剪,不同field 的 embedding 共享相同的 s→ 。
    • Feature-Wise:阈值参数 s 被设定为一个向量 s→∈RN。一个 embedding 中的所有值采用相同的标量阈值,不同field 的 embedding 采用不同的标量阈值。
    • Feature-Dimension-Wise:阈值参数 s 被设定为一个矩阵 s∈RN×d ,从而获得最细粒度的裁剪。

    注意,这里的阈值参数并不是人工调优的超参数,而是从数据中学习的可训练参数。

    如下图所示:

    • Feature-Dimension 粒度可以比其它粒度的 embedding 参数减少得更多,并且在 retrain 阶段获得了最好的性能。
    • Dimension 粒度的裁剪可以在较少的训练周期内达到可比的 AUC 。

  6. PEP 算法:

    • 输入:初始 embedding V(0)、base model ϕ 、target parameter 规模 P 、数据集 D

    • 输出:训练好的稀疏 embedding V

    • 算法步骤:

      • 迭代,直到满足 P ,迭代步骤为:

        通过 minL(S(V,s),Θ,D) 来裁剪 V 。

      • 获取二元 pruning mask M={0,1}V 。

      • 将裁剪后的 embedding parameter 设置为初始值 V(0)。

      • 重训练从而最小化 L(V(0)⊙M,D) 。

44.2 实验

  1. 数据集:MovieLens-1M, Criteo, Avazu 。

    • MovieLens-1M:遵从 AutoInt,我们将评分在 1 or 2 的样本作为负样本、评分在 4 or 5 的样本作为正样本。评分为 3 的样本视为中性样本从而被移除。

    • Criteo :对于数值特征,我们使用 log 变换从而进行归一化:

      (3)z={log2⁡(x), if x>2x, else 
    • Creteo/Avazu :频次低于 10 的特征被认为是 'unknown' 。

    • 所有样本被随机拆分为训练集、验证集、测试集,比例为 80%/10%/10% 。

  2. 评估指标:AUC, Logloss 。

  3. baseline:

    • Uniform Embedding: UE:uniform embedding size 。
    • MGQE:从共享的 small size 的 centroid embeddings 中检索 embedding fragments ,然后通过拼接这些 fragments 生成 final embedding 。MGQE 为不同 item 学习不同容量的 embedding 。该方法是 embedding-parameter-sharing 方法中的最强 baseline 。
    • Mixed Dimension Embedding: MDE:基于人工定义的规则,即一个特征的 embedding size 与它的popularity成正比。该方法是 SOTA 的 human-rule-based 方法。
    • DartsEmb:SOTA 的 NAS-based 方法,它允许特征自动在一个给定的搜索空间中搜索 embedding size 。

    我们没有比较 NIS,因为它没有开放源代码,并且它的基于深度学习的搜索方法在速度方面太慢。

    我们将 baseline 方法和我们的 PEP 应用到三种 feature-based 推荐模型上:FM, DeepFM, AutoInt 。

  4. 实现细节:

    • 在 pruning 和 re-training 阶段,遵从 AutoInt 和 DeepFM,我们采用学习率为 0.001 的 Adam 优化器。

    • 对于 g(s) ,我们选择 g(s)=11+exp⁡(−s) ,并且针对 MovieLens-1M, Criteo, Avazu 数据集分别将 s 初始化为 -15/-150/-150 。

    • PEP 的粒度设置为:

      • 在 Criteo, Avazu 数据集上设置为 Dimension-wise 从而用于 PEP-2, PEP-3, PEP-4 。

        PEP-0, PEP-1, PEP-2, PEP-3, PEP-4 分别代表不同的稀疏度配置,根据 PEP 算法中不同的 P 超参数而来。然而,它们具体的配置,论文并没有提到。根据论文实验的图表,大概猜测分别代表 0.05, 0.1, 0.2, 0.3, 0.4 这五个稀疏率。

      • 其它数据集上设置为 Feature Dimension-wise 。

    • 在裁剪之前,所有模型的 base embedding dimension d 被设置为 64。

    • 在重训练阶段,我们根据训练期间验证集的损失,利用了早停技术。

    • 我们使用 PyTorch 来实现我们的方法,并在单块 12G 内存的 TITAN V GPU 上以 mini-batch size = 1024 进行训练。

    • baseline 方法的配置:

      • 对于 Uniform Embedding ,我们的 embedding size 搜索空间为:MovieLens-1M 数据集为 [8, 16, 32,64] 、Criteo 和 Avazu 数据集为 [4, 8, 16] ,因为当 d>16 时模型效果下降。

      • 对于其他 baseline,我们首先调优超参数使得模型具有最高的推荐性能、或最高的参数缩减率。然后我们调优这些模型从而达到性能和参数缩减率之间的 tradeoff 。

        • MDE 的搜索空间:维度 d 从 [4, 8, 16, 32] 中搜索,blocks 数量 K 从 [8, 16] 中搜索,α 从 [0.1, 0.2, 0.3] 中搜索。
        • MGQE 的搜索空间:维度 d 从 [8, 16, 32] 中搜索,子空间数量 D 从 [4, 8, 16] 中搜索,中心点数量 K 从 [64, 128, 256, 512] 中搜索。
        • DartsEmb 搜索空间:三组候选的 embedding 空间:{1, 2, 8}、{2, 4, 16}、{4, 8, 32} 。
  5. 我们在 Figure 2, 3, 4 中展示了推荐性能和参数数量的曲线。由于推荐性能和参数数量之间存在 tradeoff ,曲线是由具有不同稀疏性要求的点组成的。可以看到:

    • 我们的方法大大减少了参数的数量。在所有的实验中,我们的 PEP 实现了最高的参数缩减率 ,特别是在相对较大的数据集(Criteo 和 Avazu )中。具体而言,在 Criteo 和 Avazu 数据集中,与最佳 baseline 相比,我们的 PEP-0 可以减少99.90% 的参数用量(量级从 106 到 103 ,这非常重要)。

      embedding 矩阵的参数使用率如此之低,意味着只有数百个 embedding 是非零的。通过将不太重要的特征的 embedding 设置为零,我们的 PEP 可以打破现有方法中最小 embedding size 为 1 的限制(我们的方法可以实现 embedding size = 0 )。我们后续对 MovieLens 数据集进行了更多的分析,以帮助我们理解为什么我们的方法可以实现如此有效的参数缩减。

    • 我们的方法实现了强大的推荐性能。我们的方法一直优于基于 uniform embedding 的模型,并在大多数情况下取得了比其他方法更好的准确性。具体而言,对于 Criteo 数据集上的 FM 模型,在 AUC 方面,PEP 比 UE 相对提高了 0.59% 、比DartsEmb 相对提高了 0.24% 。从其他数据集和其他推荐模型的实验中也可以看到类似的改进。

      值得注意的是,我们的方法可以在极端的稀疏范围内保持强大的 AUC 性能。例如,当参数数量只有 103 量级时,PEP 推荐性能仍然明显优于线性回归模型。

  6. PEP 的效率分析:PEP 将导致额外的时间成本从而为不同的特征找到合适的 size 。这里我们研究了计算成本,并比较了 PEP 和DartsEmb 在 Criteo 数据集上的每个训练 epoch 的运行时间。我们以相同的 batch size 实现这两个模型,并在同一平台上测试它们。

    这里的比较很有误导性。因为 PEP 需要重训练,也就是 training epoch 数量要翻倍。而这里仅仅比较单个 epoch 的训练时间,这是不公平的比较。

    下表中给出了三种不同模型的每个 epoch 的训练时间。可以看到:

    • 我们的 PEP 的额外计算成本只有 20% ~ 30% ,与基础模型相比,这是可以接受的。
    • DartsEmb 在其 bi-level 优化过程中需要将近两倍的计算时间来搜索一个好的 embedding size 。
    • 此外,DartsEmb 需要多次搜索以适应不同的内存预算,因为每次搜索都需要完全重新运行。与 DartsEmb 不同的是,我们的 PEP 只需一次运行就可以获得多个 embedding 方案,这些方案可以应用于不同的应用场景。因此,在现实世界的系统中,我们的 PEP 在 embedding size 搜索方面的时间成本可以进一步降低。

  7. 对裁剪后的 embedding 进行可解释的分析:在这一节中,我们通过可视化的特征交互矩阵进行可解释的分析,该矩阵由 VV⊤ 来计算。矩阵中的每个值都是这两个 field feature 点积结果的绝对值的归一化平均值,其中越高表示这两个 field 有更强的相关性。可以看到:我们的 PEP 可以减少不重要的特征交互之间的参数数量,同时保持那些有意义的特征交互的重要性。通过对那些不太重要的特征交互进行降噪,PEP 可以减少 embedding 参数,同时保持或提高准确性。

    归一化怎么做的?

  8. 稀疏性和频次之间的相关性:如下图所示,不同特征之间的特征频次是高度多样化的。因此,使用统一的 embedding size 可能无法处理它们的异质性,这一特性在 embedding size 的选择上起着重要作用。因此,最近的一些工作显式利用特征频次。与他们不同的是,我们的 PEP 以端到端的自动方式缩减参数,从而规避了复杂的人工操作。然而,特征频次是决定一个特征是否重要的因素之一。因此,我们研究我们的方法是否能检测到频次的影响,以及学习到的 embedding size 是否与频次有关。

    • 我们首先分析训练期间的稀疏度轨迹,如下图 (b) 所示,不同的颜色表示根据popularity划分的不同的 feature group 。对于每一组,我们首先计算每个特征的稀疏度,然后计算所有特征上的平均值。图片中的阴影代表一个组内的方差。我们可以看到:PEP 倾向于给高频特征分配更大的 embedding size ,从而确保有足够的表达能力。而对于低频特征,其趋势则相反。

      这些结果符合这样的假设:高频特征应该有更多的 embedding 参数;而对于低频特征的 embedding ,几个参数就足够了。

    • 然后,我们探究了裁剪后的 embedding 的稀疏度和每个特征的频次之间的关系,如下图 (c) 所示。可以看到:

      • 大多数 relationship 与上述分析一致。

      • 一些低频特征被分配了较大的 embedding size ,而一些具有较大popularity的特征被分配了较小的 embedding size 。这说明:像以前的大多数工作那样简单地给高频特征分配更多的参数,并不能处理特征和它们的popularity之间的复杂联系。

        我们的方法是基于数据进行裁剪,这可以反映出特征的固有属性,从而可以以一种更优雅和有效的方式缩减参数。

  9. 线性回归( Linear Regression: LR )模型是一个无 embedding 的模型,只根据原始特征的线性组合进行预测。因此,值得将我们在极稀疏水平上的方法( PEP-0 )与 LR 进行比较,如下表所示。可以看到:

    • 我们的 PEP-0 在所有情况下都明显优于 LR 。这一结果证明,我们的 PEP-0 并不依赖 FM 和 DeepFM 中的 LR 部分来保持强大的推荐性能。因此,即使在极其稀疏的情况下,我们的 PEP 在现实世界的场景中仍然具有很高的应用价值。
    • 值得注意的是,AutoInt 模型不包含 LR 组件,所以在 Criteo 和 Avazu 数据集上 AutoInt的 PEP-0 导致了性能的大幅下降。我们尝试在 AutoInt 的 PEP-0 中包含 LR ,并测试其性能。我们可以看到,在 Criteo 和 Avazu 上的准确率超过了没有LR 的 AutoInt 。这可以解释为 LR 帮助我们的 PEP-0 获得更稳定的性能。

四十五、DeepLight[2021]

  1. 在 CTR 预测任务上,广义线性模型和 factorization machine : FM 取得了巨大的成功。然而,由于缺乏学习更深层次特征交互的机制,它们的预测能力有限。为了解决这个问题,基于 embedding 的神经网络提出同时包含浅层组件(来学习低阶特征交互)、DNN 组件(来学习高阶特征交互),如 Wide&Deep, DeepFM, NFM, DCN, xDeepFM, AutoInt, AutoFIS 。尽管这些新颖的模型有所改进,但与诸如 LR 或 FM 的简单模型相比,预测速度慢了数百倍。随之而来的一个问题是:我们是否能够为高质量的深度模型提供令人满意的模型延迟和资源消耗,从而用于广告服务中的实时响应?

    为实现这一目标,实际解决方案需要应对以下挑战:

    • (C1) 高质量:用于服务的“瘦身”模型预期与原始的“臃肿”模型一样准确。
    • (c2) 低延迟:服务延迟应该非常低,以保持高 Query per second: QPS 、以及很少的超时。
    • (C3) 低消耗:在在线广告服务中,pull 模型的 checkpoint 并将其存储在内存中的内存成本应该很低。

    然而,所有现有的基于 embedding 的神经网络,如 DeepFM, NFM, xDeepFM, AutoInt ,仍然专注于增加模型复杂度以实现 (C1) ,同时牺牲 (C2) 和 (C3) 。虽然人们提出了一些方法,如 AutoCross 来提高模型效率,但它们没有采用DNN 框架,未能达到 SOTA 。为了共同解决这些挑战,论文 《DeepLight: Deep Lightweight Feature Interactions for Accelerating CTR Predictions in Ad Serving》提出了一种有效的模型,即所谓的 field-weighted embedding-based neural network: DeepFwFM ,通过 field pair importance matrix 来改进 FM 模块。DeepFwFM 在经验上与 xDeepFM 一样强大,但效率更高。如下图所示,DeepFwFM 的每个组件都有一个 approximately sparse structure,这意味着结构剪枝的优势并可能导致更紧凑的结构。通过裁剪 DeepFwFM 的 DNN 组件并进一步压缩浅层组件,得到的深度轻量化结构(即,DeepLight )大大减少了推理时间,仍然保持了模型性能。

    据作者所知,这是第一篇研究裁剪 embedding based 的 DNN 模型以加速广告服务中的 CTR 预测的论文。总之,所提出的 DeepFwFM 在快速的、准确的推断方面具有巨大潜力。与现有的基于 embedding 的神经网络相比,该模型具有以下优点:

    • 为了解决 (C1) 高质量的挑战,DeepFwFM 利用 FwFM 中的 field pair importance 的思想,以提高对低阶特征交互的理解,而不是探索高阶特征交互。值得注意的是,与 SOTA 的 xDepFM 模型相比,这种改进以非常低的复杂性达到了 SOTA ,并且在深度模型加速方面仍然显示出巨大的潜力。

      (C1) 高质量的挑战并不是由 DeepLight 解决的,而是由基础模型 FwFM 解决的。

    • 为了解决 (C2) 低延迟的挑战,可以对模型进行裁剪以进一步加速:

      • 裁剪深度组件中的冗余参数以获得最大的加速。
      • 移除 FwFM 中的 week field pair 以获得额外的显著加速。

      由此产生的轻量化结构最终几乎达到一百倍的加速。

    • 为了解决(C3) 低消耗的挑战,可以促进 embedding 向量的稀疏性,并保留最多的 discriminant signal ,这会产生巨大的参数压缩。

    通过克服这些挑战(C1-C3 ),由此产生的稀疏 DeepFwFM (即所谓的 DeepLight ),最终不仅在预测方面,而且在深度模型加速方面取得了显著的性能。它在 Criteo 数据集上实现了 46 倍的速度提升,在 Avazu 数据集上达到了 27 倍的速度,而不损失AUC 。源代码参考 https://github.com/WayneDW/sDeepFwFM 。

45.1 模型

注:这篇论文的核心是如何对 DeepFwFM 进行压缩,而不是提出 DeepFwFM 。事实上,DeepFwFM 就是 DNN 作为 deep 组件、FwFM 作为 wide 组件的神经网络,毫无新意 。

此外,DeepLight 的剪枝方法也是工程上的应用(把训练好的模型中的接近于零的权重裁剪掉),而没有多少创新点。

实验部分提示了基于剪枝的模型设计方案:首先设计较大容量的模型从而提升模型的表达能力,然后执行剪枝从而降低 latency、减少过拟合。这种方案的一个潜在缺点是:训练资源消耗更大。

45.1.1 DeepFwFM

  1. 给定数据集 D={(yi,x→i)} ,其中 yi 为 label,x→i 为 m 维的稀疏的特征向量。

    • 二阶多项式模型 ϕpoly2 为:

      (4)ϕpoly2(w→,W)=w0+∑i=1mxiwi+∑i=1m∑j=i+1mxixjWi,j

      其中:w→ 为一阶交互权重,W={Wi,j} 为二阶交互权重。

    • FM 模型 ϕFM 为:

      (5)ϕFM(w→,e)=w0+∑i=1mxiwi+∑i=1m∑j=i+1mxixj<e→i,e→j>

      其中:e={e→i}i=1m 为所有 embedding 向量的集合;e→i∈Rk 为第 i 个特征的 embedding 向量;k 为 embedding 向量的维度。

      可以看到,FM 模型将参数规模从 O(m2) 降低到 O(mk) 。

    • Deep & Cross 通过一系列的 cross 操作来建模高阶交互:

      (6)s→l=(s→0s→l−1⊤)w→l+b→l+s→l−1

      其中:w→l,b→l 为待学习的参数;(s→0s→l−1⊤) 表示这两个向量之间的外积。

    • 通过进一步组合 DNN 组件,我们可以获得 xDeepFM ,这是 CTR预测中的 SOTA 模型。尽管 xDeepFM 在建模特征交互方面具有强大的性能,但众所周知,它比DeepFM的成本要高得多,并增加了速度较慢。因此我们考虑 FwFM 模型,并提出了 Deep Field-weighted Factorization Machine: DeepFwFM:

      (7)ϕDeepFwFM(w,v,e,R)=ϕDeep(w,e)+ϕFwFM(v,e,R)ϕFwFM(v,e,R)=w0+∑i=1mxi<e→i,v→F(i)>+∑i=1m∑j=i+1mxixj<e→i,e→j>×RF(i),F(j)

      其中:

      • ϕDeep 为包含非线性变换的多层感知机,用于建模高阶特征交互。ϕFwFM 为 FwFM 模型,用于建模二阶特征交互。

      • w 为 DNN 的参数(包括权重矩阵和 bias 向量)。

      • v={v→f}f=1n 包含 n 个 field 的 embedding 向量,v→f∈Rk 表示 field f 的 embedding 向量。

        这就是 FwFM 原始论文中 的 FwFM_FiLV ,用 ∑i=1mxi<e→i,v→F(i)> 来建模线性项。a

      • e={e→i}i=1m 包含 m 个特征的 embedding 向量,e→i∈Rk 。

      • R∈Rn×n 为 field pair 重要性矩阵,它建模 field pair 的交互强度。

      • F(i) 为特征 i 的 field 。

  2. DeepFwFM 有两个创新:

    • DeepFwFM 比 xDeepFM 快得多,因为我们不试图通过浅层组件来建模高阶(三阶甚至或更高)的特征交互。尽管 xDeepFM 包含强大的 compressed interaction network: CIN 来逼近任意固定阶次的多项式,但主要缺点是 CIN 的时间复杂度甚至高于 xDeepFM 中的 DNN 组件,导致了昂贵的计算。
    • DeepFwFM 比 DeepFM 更准确,因为它克服了矩阵分解中的稳定性问题,并通过考虑 field pair importance 导致更准确的预测。

    如下图所示,DeepFM 通过 FM 组件中每个 hidden node 与输出节点之间的 weight-1 connection (即,feature embedding 之间内积的权重为 1)来建模低阶特征交互,然而,这无法适应局部几何结构,并牺牲了鲁棒性。

  3. 为了证明我们模型的优势,我们对 DeepFwFM 的计算复杂性进行了定量分析。给定 embedding size k 、层的数量 l 、每层的节点数量 h ,假设 embedding layer 只有 n 个 lookup (即 field 数量 为 n )并且计算开销很小。那么,DNN 组件的 floating point operations: FLOPs 为 O(lh2+nkh) ,FwFM 组件的 FLOPs 为 O(n2k) 。

    类似地,我们可以得到 DeepFM 和 xDeepFM 的计算复杂度,如下表所示。可以看到:

    • xDeepFM 的 l 个 CIN 层需要 O(nkhc2l) 个操作,这远远超过了 DNN 组件的操作数量。
    • FM 组件和 FwFM 组件比 DNN 组件快得多。

    尽管 DeepFwFM 的计算复杂度较好,但是它仍然未能将延迟降低到一个良好的水平。事实上,由于包含 DNN 组件,DeepFwFM 可能会慢数百倍,这会显著降低在线 CTR 预测的速度。

45.1.2 DeepLight

  1. DNN 组件无疑是导致高延迟问题并且无法满足在线要求的主要原因。因此,需要一种适当的加速方法来加速预测。

  2. 为什么采用结构剪枝:深度模型加速三种主要方法组成:结构剪枝 structural pruning、知识蒸馏knowledge distillation 、量化 quantization ,其中结构剪枝方法因其显著的性能而受到广泛关注。此外,DeepFwFM 的每个组件,如 DNN 组件、field pair interaction matrix R 和 embedding 向量,都具有高度稀疏的结构,如 Figure 2 所示。这促使我们考虑结构剪枝以加速浅层组件和 DNN 组件。

    对于其他选择:

    • 量化在推断期间采用了定点精度。然而,它没有充分利用 DeepFwFM 每个组件的稀疏结构,甚至对模型性能有损。

    • 知识蒸馏技术通过训练小网络(即 student model )以模仿大网络(即 teacher model ),但它存在以下问题:

      • 学生模型从教师模型学习的能力有限。
      • 如果性能恶化,很难清楚这是由于教师模型导致、还是由于教学过程导致。

    这就是我们在这项工作中采用结构剪枝的原因。

  3. 如何进行结构剪枝:

    • 设计:我们建议裁剪以下三个组件(在 DeepFwFM 模型的背景下),而不是简单地以统一的稀疏率应用剪枝技术。这三个组件专门设计用于广告预测任务:

      • 剪枝 DNN 组件的权重(不包括 bias)从而移除神经元连接。

      • 剪枝 field pair interaction matrix R 从而移除冗余的 field interaction 。

        注意:移除冗余的 field interaction,意味着建模时无需考虑对应 field 之间的内积计算。

      • 剪枝 embedding 向量中的元素,从而导致稀疏的 embedding 向量。

      结合以上努力,我们获得了所需的 DeepLight 模型,如下图所示。DeepLight 是一种稀疏的 DeepFwFM ,它提供了一种整体方法,通过在推理期间修改训练好的架构来加速推理。

      注意,DeepLight 是用于训练好的模型,是一种剪枝算法,而不是一种训练算法。

    • 优点:通过实验表明:

      • 与原始 DNN 组件相比,稀疏的 DNN 组件的计算复杂度要低得多。它导致最大的计算加速。
      • sparse field pair interaction matrix R 进一步实现了 FwFM 组件的显著加速。此外,裁剪 R 实际上是在进行特征选择,或者更准确地说是 field pair selection 。一旦裁剪了 Rf,f′ ,那么来自 field pair (f,f′) 的所有 feature pair 都将被丢弃。AutoFIS 也实现了类似类型的 field pair selection 。
      • sparse embedding 大大减少了内存使用,因为 feature embedding 主导了CTR 预测深度学习模型中的参数数量。
    • 实现:从过度参数化的模型中选择一个良好的稀疏网络是 NP 难的,并且无法保证最优算法能够解决它。在结构剪枝领域有大量的经验研究,包括权重剪枝、神经元剪枝、以及其他单元剪枝。考虑到我们的模型只包含一个标准的 FwFM 组件和一个普通的DNN 组件,我们进行了权重剪枝,并寻求在不调用专用库的情况下实现高稀疏性和加速。

      定义稀疏率 S 为被裁剪的权重的比例,如 S%=99% 意味着 99% 的权重都被裁剪。

      结构剪枝算法:

      • 输入:

        • 训练好的 target model
        • 目标稀疏率 {SX} (表示各组件 X 的目标稀疏率)
        • 阻尼因子 D,剪枝轮次 Ω
      • 输出:剪枝后的模型

      • 算法步骤:

        • 剪枝:对于 k=1,2,⋯,Ω ,迭代步骤为:

          • 训练网络一个 iteration 。

            这是为了在每次裁剪之后,重新训练模型从而进行微调,以便错误修剪的权重有可能再次变得活跃。

          • 对模型的每个组件 X :

            • 更新组件当前轮次的裁剪比例 sX←SX(1−Dk/Ω) 。

              这是设置自适应的裁剪比例,使得在早期剪枝的很快(裁剪比例较大)、在后期剪枝很慢(裁剪比例较小)。

              注意:这种裁剪方式无法确保最终模型能够得到 SX 的目标稀疏率,只能说尽可能地接近。

            • 根据权重的 magnitude ,裁剪最小的 sX% 的权重。

  4. 降低计算复杂度:DNN 组件是导致高推断时间的瓶颈。在 DNN 组件的剪枝之后,FwFM 组件成为限制,这需要对 field matrix R 进行进一步剪枝。embedding 层的剪枝对计算没有显著的加速。

    在对 DNN 组件的权重设置一个中等大小的 Sdnn% 的目标稀疏率(不考虑 bias)的情况下,相应的加速可以接近理想的 1/(1−Sdnn%) 倍。当目标稀疏率 Sdnn% 高于 95% 时,我们可能无法达到理想的加速比,因为 bias 的计算和稀疏结构(如 compressed row storage: CRS )的开销。关于 field matrix R 的剪枝,当我们增加 DNN 组件中的目标稀疏率 Sdnn% 时,加速变得更加显著。

  5. 降低空间复杂度:在 embedding layer 中进行剪枝也显著减少了 DeepFwFM 中的参数数量,因此节省了大量内存。在 embedding layer 中,Semb% 的目标稀疏率将参数数量从 mk 减少到 (1−Semb%)mk 。

    至于 DNN 组件,权重参数的数量(不包括 bias)可以从 O(nkh+lh2) 降低到 O((nkh+lh2)(1−Semb%)) 。类似地,field matrix R 上的目标稀疏率 SR% 也相应比例地减少了参数。

    由于DeepFwFM 中的总参数由 embedding 向量参数所主导 , embedding 向量上的 Semb% 的目标稀疏率导致总内存减少约 1/(1−Semb%)倍。

4.2 实验

  1. 数据集:Criteo, Avazu 。

    • 对于 Criteo 数据集,我们采用由 Criteo 竞赛获胜者提出的对数转换来归一化数值特征:

      (8)z={log⁡(x)2, if x>2x, else

      此外,我们还将所有频次低于 8 的特征视为 "unknown" 。我们将数据集随机分成两部分:90% 用于训练、剩下的 10% 用于测试。

    • 对于 Avazu 数据集,我们使用 10 天的点击记录,并随机拆分 80% 的样本用于训练、剩下的 20%用于测试。我们还将所有频次低于 5 的特征视为 "unknown" 。

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

  2. 评估指标:LogLoss, AUC 。

  3. baseline 方法:在 emebdding-based 神经网络模型中,我们选择 DeepFM, NFM, xDeepFM 作为 baseline ,因为它们具有与 DeepFwFM 相似的架构,也是 CTR 预测的SOTA 模型。最终,六个 baseline 模型为:LR, FM, FwFM, DeepFM, NFM, xDeepFM 。

  4. 实现细节:我们使用 PyTorch 训练模型。

    • Criteo 数据集:

      • 为了对 Criteo 数据集进行公平比较,我们遵循 DeepFM 和 xDeepFM 原始论文中的参数设置,并将学习率设置为 0.001 。

      • embedding size 设为 10 。

      • DeepFM, NFM, xDeepFM 的 DNN 组件默认设置为:

        • 网络架构为 400 x 400 x 400 。
        • drooout rate 为 0.5 。

        此外,我们也将裁剪后的 DeepFwFM 与更小尺寸的 DeepFwFM 进行比较。对于这些更小尺寸的 DeepFwFM,它们的 DNN 组件分别为:25 x 25 x 25 (记做N-25 )、15 x 15 x 15 (记做N-25 )。原始尺寸的未裁剪 DeepFwFM 记做 N-400 。

      • 对于 xDeepFM,CIN 的架构为 100 x 100 x 50 。

      • 我们微调了 L2 惩罚,并将其设置为 3e-7。

      • 我们在所有实验中使用 Adam 优化器,batch size = 2048 。

    • Avazu 数据集:保持了与 Criteo 数据集相同的设置,除了 embedding size 设为 20 、L2 惩罚为 6e-7 、DNN 网络结构为 300 x 300 x 300 。

    关于实践中的训练时间(而不是推理时间),所有模型之间没有太大的差异。FwFM 和 DeepFwFM 的速度略快于 DeepFM 和xDeepFM,这是由于 FwFM 与 DeepFwFM 在线性项上的创新(用内积代替线性项)。

  5. DeepFwFM 和其它稠密模型的比较:对没有剪枝的密集模型的评估显示了过度参数化模型所表现出的最大潜力,如下表所示。可以看到:

    • LR 在所有数据集上的表现都比其他模型都要差,这表明特征交互对于提高 CTR 预测至关重要。
    • 大多数 embedding-based 神经网络的表现优于低阶方法(如 LR 和 FM),这意味着建模高阶特征互动的重要性。
    • 低阶的 FwFM 仍然胜过 NFM 和 DeepFM ,显示了 field matrix R 在学习二阶特征交互的优势。
    • NFM 利用黑盒 DNN 隐式地学习低阶特征交互和高阶特征交互,由于缺乏显式识别低阶特征交互的机制,可能会过拟合数据集。
    • 在所有 embedding-based 神经网络方法中,xDeepFM 和 DeepFwFM 在所有数据集上效果最好。然而,xDeepFM 的推理时间远远超过 DeepFwFM 。

  6. 稀疏化模型 DeepLight:我们选择阻尼因子 D=0.99 、剪枝轮次 Ω=100 ,模型首先训练 2 个 epoch ,然后训练 8 个 epoch 用于剪枝。我们每隔 10 个 iteration 剪枝一次从而降低计算代价。

    即:前 2 个 epoch 训练好模型;后面的 8 个 epoch 执行剪枝。

    • DNN 剪枝加速:仅裁剪 DNN 组件的权重,DNN的 bias 、 field matrix R 和 embedding layer 的参数照常处理。我们尝试不同的剪枝率,并将不同稀疏率的网络与较小结构的网络进行比较。结果如 Table 4 所示。可以看到:

      • 具有稀疏 DNN 组件的 DeepFwFM 优于稠密 DeepFwFM ,即使在 Criteo 数据集上稀疏率高达 95% 。在我们将 Criteo数据集上的稀疏率提高到 99% 之前,这一现象保持不变。
      • 相比之下,具有类似参数规模的相应小型网络,如 N-25 和 N-15 ,获得的结果比原始的 N-400 要差得多,显示了裁剪过度参数化的网络相比从较小的网络训练更强大。

      在 Avazu 数据集上,我们得到同样的结论。稀疏模型在 90% 的稀疏率下获得了最好的预测性能,只有当稀疏率大于 99.5% 时才会变差。

      关于模型加速,从下图中可以看到:较大的稀疏率总是带来较低的延迟。因此在这两个数据集上,稀疏模型在性能超越原始稠密模型的基础上,都实现了高达 16 倍的推理速度提升。

      这里获得的好处主要是更低的延迟。虽然模型性能略有提升,但是低于 0.1%,因此效果不显著。

      但是,和 N-25, N-15 这两个更小的网络相比,DeepLight 的性能提升比较显著。然而 DeepLight 的训练时间也更长。

    • Field Matrix R 剪枝加速:在对 DNN 组件进行高稀疏度化之后,我们已经获得了显著的加速,接近 20 倍。为了进一步提高速度,增加 DNN 组件的稀疏率可能会有降低性能的风险,并且由于矩阵计算的开销,不会产生明显的加速。从 Figure 2 可以看出,field matrix R 拥有一个近似稀疏的结构。这促使我们进一步裁剪field matrix R 以获得进一步加速。

      我们根据 field matrix R 的不同稀疏率来研究稀疏模型的性能(在 DNN 组件已经被剪枝的基础上),如下图所示。可以看到:我们可以在不牺牲性能的情况下对 field matrix R 采用高达 95% 的稀疏率,此外推断速度可以进一步加快 2 到 3 倍。因此,我们最终可以在不牺牲性能的情况下获得46 倍和 27 倍的速度提升。

    • Embedding Vector 剪枝用于节省内存:关于 embedding 的剪枝,我们发现为所有 field 的 embedding 设置一个全局阈值,比为每个 field 的 embedding 向量设置单独的阈值获得略好的性能。因此,我们在全局阈值的基础上进行了实验。

      如下图所示:

      • Criteo 数据集上可以采用较高的稀疏率,如 80% ,并保持几乎相同的性能。
      • 相比之下,在 Avazu 数据集上比较敏感,当采用 60% 的稀疏率时,性能开始低于稠密模型。

      从下表可以看到,大多数模型优于较小的 embedding size 的 baseline 模型(称为 E-X ),这说明了使用大的 embedding size ,然后在过度参数化的网络上应用剪枝技术以避免过拟合。

      剪枝 embedding 似乎并没有带来多少 AUC 提升(0.03% 左右,非常微小)。

  7. DeepFwFM 的结构剪枝:从上述实验中,我们看到 DNN 组件和 field matrix R 接受了更高的稀疏率以保持相同的预测性能,这启发我们对不同的组件应用不同的裁剪率。如下表所示:

    • 对于性能驱动的任务:

      • 在 Criteo 数据集上,我们可以通过 sparse DeepFwFM 将 SOTA AUC 从 0.8116 提高到 0.8223 ,其中 DNN 组件和 field matrix R 的剪枝率为 90% 、embedding 向量中的剪枝率为 40% 。该模型被称为 D-90% & R-90% & F-40% 。
      • 在 Avazu 数据集上,我们可以通过 sparse DeepFwFM 将 SOTA AUC 从 0.7893 提高到 0.7897 ,其中 DNN 组件和 field matrix R 的剪枝率为 90% 、embedding 向量中的剪枝率为 20% 。该模型被称为 D-90% & R-90% & F-20% 。

      这里的剪枝对于性能提升非常微小,几乎可以忽略。因为太小的提升可能由于超参数配置、随机因素等等的影响,而观察不到。

    • 对于内存驱动的任务:在 Criteo 数据集和 Avazu 数据集上的内存节省分别高达 10 倍和 2.5 倍。

    • 对于延迟驱动的任务:我们使用结构为 D-99% & R-95% & F-40% 的 DeepLight 在 Criteo 数据集上实现了 46 倍的速度提升,使用结构为 D-98% & R-90% & F-0% 的 DeepLight 在 Avazu 数据集上实现了 27 倍的速度提升,而且没有损失准确性。

  8. DeepLight 和其它稀疏模型的比较:对于其他模型,我们也尝试了在不牺牲性能的情况下加速预测的最佳结构。关于 xDeepFM 中的CIN 组件,我们用 C-99% 表示 CIN 组件的 99% 的稀疏率。结果如下表所示。可以看到:

    • 所有 embedding-based 的神经网络都采用高稀疏率来保持性能。
    • 此外,DeepLight 在预测时间上与 sparse DeepFM 和 sparse NFM 相当,但在 Criteo 数据集上的 AUC 至少提高了 0.8% ,在 Avazu 数据集上提高了 0.4% 。
    • DeepLight 获得了与 xDeepFM 相似的预测性能,但其速度几乎是 10 倍。