如下图所示,大多数现有的深度 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%
。相关工作:
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
利用多头自注意力网络。
假设用于训练 CTR
模型的数据集由 categorical fields
和 numerical fields
的 multi-field
数据记录:
其中: numerical field
的标量值; categorical field
的特征取值的 one-hot vector
。
对于第 categorical field
,可以通过 embedding look-up
操作获得 feature embedding
:
其中:categorical field
的 embedding matrix
,embedding size
,categorical field
的词表规模。
因此, categorical field
的 representation
为:
对于 numerical field
,现有的 representation
方法可以总结为三类:No Embedding
、Field Embedding
、Discretization
。
No Embedding
:这种方式直接使用原始值或原始值的变换,而不学习 embedding
。例如,Google Play
的 Wide & Deep
和JD.com
的 DMT
分别使用原始数值特征和归一化的数值特征。此外,YouTube DNN
利用了归一化特征取值
在 Facebook
的 DLRM
中,他们使用了一个多层感知机来建模所有的数值特征:
其中 DNN
的结构为 512-256-d
,
直观而言,这些 No Embedding
方法由于容量太小,很难捕获到 numerical field
的 informative
知识。
Field Embedding
:学术界常用的方法是 Field Embedding
,即同一个 field
内的的所有数值特征共享一个 uniform field embedding
,然后将这个 field embedding
与它们的特征取值相乘:
其中:numerical field
的 uniform embedding vector
。
然而,由于单个共享的 field-specific embedding
、以及field
内不同特征之间的线性缩放关系,Field Embedding
的 representation
容量是有限的。
例如,收入
和收入 ,根据 Field Embedding
的做法:即,收入分别为
1
和10000
的两个用户,其相似度大于收入分别为1
和1
的两个用户。这在实际场景中是不恰当的。
Discretization
:在工业推荐系统中,处理数值特征的一个流行方法是 Discretization
,即把数值特征转化为 categorical feature
。对于第 numerical field
的特征 feature embedding
discretization
和 embedding look-up
:
其中:numerical field
的 embedding matrix
;numerical field
人工设计的离散化函数,它将该特征内的每个特征取值映射到
具体来说,有三种广泛使用的离散化函数:
Equal Distance/Frequency Discretization: EDD/EFD
:EDD
将特征取值划分到 numerical field
的特征取值范围为 interval width
定义为 EDD
离散化函数
类似地,EFD
将范围
Logarithm Discretization: LD
:Kaggle
比赛中 Criteo advertiser prediction
的冠军利用对数和 floor
操作将数值特征转化为 categorical
形式。离散化后的结果 LD
离散化函数
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
岁的人可能具有非常不同的特征。基于离散化的策略不能有效地描述数值特征变化的连续性。
综上所述,下表中列出了 AutoDis
与现有 representation
方法的三方面比较。我们可以观察到,这些方法要么因为容量小而难以捕获 informative
知识、要么需要专业的特征工程,这些可能会降低整体性能。因此,我们提出了 AutoDis
框架。据我们所知,它是第一个具有高模型容量、端到端训练、以及保留 unique representation
特性的 numerical features embedding learning
框架。
AutoDis
框架如 Figure 3
所示,它可以作为针对数值特征的可插拔的 embedding framework
,与现有的深度 CTR
模型兼容。AutoDis
包含三个核心模块:meta-embedding
、automatic discretization
、aggregation
。
代码实现比较简单直观: 数值特征
(标量) -> 单层 DNN
网络(隐层维度为, softmax
激活函数) -> 单层DNN
网络(隐层维度为,无激活函数)。
对于第 numerical field
,AutoDis
可以通过如下方式为每个数值特征 unique representation
(如 Figure 4
所示):
其中:
numerical field
的 meta-embedding matrix
。
numerical field
的 automatic discretization
函数。
所有
numerical field
都使用相同的聚合函数。
最后,categorical
特征和数值特征的 embedding
被拼接起来,并馈入一个深度 CTR
模型进行预测:
Meta-Embeddings
: 为了平衡模型的容量和复杂性,对于第 numerical field
,我们设计了一组 meta-embeddings
field
内的特征所共享,meta-embedding
的数量。 每个 meta-embedding
可以被看作是潜在空间中的一个子空间,用于提高表达能力和容量。通过结合这些 meta-embedding
,学习到的 embedding
比 Field Embedding
方法更 informative
,因此可以很好地保留高的模型容量。此外,所需参数的数量由 scalable
。
对于不同的
field
, 的数量可以不同。对于均匀分布的 field
,可以取较大的值;对于取值聚焦于几个点的 field
,可以取较小的值。
Automatic Discretization
:为了捕获数值特征的值和所设计的 meta-embeddings
之间的复杂关联,我们提出了一个可微的 automatic discretization
模块 numerical field
的每个数值特征被离散化到 bucket embedding
对应于上面提到的 meta-embedding
。
具体而言,利用一个带有 skip-connection
的两层神经网络,将numerical field
特征取值
其中:
automatic discretization network
在第 numerical feature field
上的可学习参数。Leaky-ReLU
为激活函数,skip-connection
的控制因子 control factor
。投影结果为:numerical field
特征取值 Softmax
函数将numerical field
特征取值 meta-embedding
其中:discretization
分布。因此,通过 automatic discretization
函数
numerical field
特征取值 numerical field
特征取值 meta-embedding
(即 bucket embedding
)之间的相关性。这种离散化方法可以理解为 soft discretization
。与前面提到的 hard discretization
相比, soft discretization
没有将特征取值离散化到一个确定的桶中,这样就可以很好地解决 SBD
和 DBS
问题。此外,可微的 soft discretization
使我们的 AutoDis
能够实现端到端的训练,并以最终目标进行优化。
值得注意的是:当温度系数 discretization
分布趋于均匀分布;当 discretization
分布趋于 one-hot
分布。因此,温度系数 automatic discretization distribution
中起着重要作用。此外,不同 field
的特征分布是不同的,因此对不同的 features
学习不同的 temperature coefficient adaptive network
(双层网络),它同时考虑了 global field statistics feature
和 local input feature
,公式如下:
其中:
numerical field
特征的全局统计特征向量,包括:采样的累积分布函数 Cumulative Distribution Function: CDF
、均值。local input feature
。为了指导模型训练, rescale
为
是什么?作者没有说。读者认为这里是一个超参数。 这个温度系数自适应网络的设计不太简洁,工程实现也更复杂。根据实验部分的结论,这里完全可以微调
global
温度来实现。
Aggregation Function
:在得到 feature value
和 meta-embeddings
之间的相关性后,可以通过对 meta-embeddings
进行聚合操作 embedding
。我们考虑了以下聚合函数
Max-Pooling
:选择最相关的 meta-embedding
(具有最高概率
其中:meta-embedding
的索引, meta-embedding
。
然而,这种 hard selection
策略使 AutoDis
退化为一种 hard discretization
方法,从而导致上述的 SBD
问题和 DBS
问题。
Top-K-Sum
:将具有最高相关性 top-K
个 meta-embedding
相加:
其中 meta-embedding
的索引, meta-embedding
。
然而,Top-K-Sum方法
有两个局限性:
Max-Pooling
相比,可能生成的 embedding
数量从 DBS
问题。embedding
Weighted- Average
:充分地利用整个 meta-embeddings
集合、以及 meta-embedding
与特征取值的相关性:
通过这种加权聚合策略,相关的元嵌入对提供一个信息丰富的嵌入有更大的贡献,而不相关的元嵌入则在很大程度上被忽略了。此外,这种策略保证了每个特征都能学到 unique representation
,同时,学到的 embedding
是 Continuous-But-Different
,即,特征取值越接近则 embedding
就越相似。
训练:AutoDis
是以端到端的方式与具体的深度 CTR
模型的最终目标共同训练的。损失函数是广泛使用的带有正则化项的LogLoss
:
其中:ground truth label
和预测结果;L2
正则化系数;categorical field
的 feature embedding
参数、meta-embedding
和 automatic discretization
参数、以及深度 CTR
模型的参数。
为了稳定训练过程,我们在数据预处理阶段采用了特征归一化技术,将数值特征取值缩放到 [0, 1]
。第 numerical field
的取值
数据集:
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
。数据集的统计数据如下表所示。
评估指标:AUC, LogLoss
。
所有的实验都通过改变随机数种子重复 5
次。采用 two-tailed unpaired t-test
来检测 AutoDis
和最佳 baseline
之间的显著差异。
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
。
实现:
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
和其它 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%
。
不用 CTR
模型的比较:AutoDis
是一个通用框架,可以被视为改善各种深度 CTR
模型性能的插件。为了证明其兼容性,这里我们通过在一系列流行的模型上应用 AutoDis
进行了广泛的实验,结果如下表所示。可以看到:与 Field Embedding representation
方法相比,AutoDis
框架显著提高了这些模型的预测性能。numerical feature discretization
和 embedding learning
过程的优化是以这些 CTR
模型为最终目标的,因此可以得到 informative representation
,性能也可以得到提高。
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
的融合,现有的数值特征不再需要任何离散化规则。此外,在未来引入更多的数值特征将更加有效,而不需要探索任何人工制作的规则。
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
的连续性。
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
取得的性能改善更加显著和稳定。Model Complexity
:为了定量分析我们提出的 AutoDis
的空间复杂度和时间复杂度,我们比较了 DeepFM
上的 EDD
离散化方法的模型参数、以及 batch inference time
,结果如下表所示。可以看到:
EDD
相比,AutoDis
增加的模型参数量可以忽略不计。AutoDis
的计算效率也是可比的。消融研究和超参数敏感性:
聚合策略:下图总结了 DeepFM-AutoDis
采用 Max-Pooling
、Top-K-Sum
、Weighted-Average
等聚合策略的预测性能。可以看到:Weighted-Average
策略实现了最好的性能。原因是:与其他策略相比,Weighted-Average
策略充分利用了 meta-embeddings
及其相应的关联性,完全克服了 DBS
和 SBD
问题。
温度系数:为了证明 temperature coefficient adaptive network
在生成 feature-specific
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
。
标准的 embedding
做法是:将 objects
以固定的统一纬度 uniform dimension: UD
当 embedding
维度
当 embedding
维度 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
交互的奇异值谱。与典型的协同过滤 collaborative filtering: CF
相比,CTR
预测任务包括额外的上下文。这些上下文特征通过索引集合(categorical
)和浮点数(continuous
)来表达。这些特征可以代表关于点击事件或个性化事件的上下文的任意细节。第 categorical
特征可以用一个索引 categorical
特征,我们还有 one-hot
向量。
我们使用 SOTA
的 deep learning recommendation model: DLRM
作为一个现成的深度模型。各种深度 CTR
预测模型都是由内存密集型的 embedding layer
驱动的。 embedding layer
的大小和预测性能之间的权衡似乎是一个不可避免的权衡。对于一个给定的模型 embedding layer
categorical
特征。通常,每个 categorical
特征都有自己的独立的 embedding matrix
:embedding layer
,categorical
的 embedding matrix
。
相关工作:最近的工作提出了类似、但实质上不同的 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
的工作相比,我们从理论上分析了我们的方法。此外,过去的工作并没有从经验上验证他们的方法所推测的工作机制。
从 popularity
倾斜的角度来看, embedding normalization
实际上隐含了对 rare embeddings
的惩罚,而不是对 popular embeddings
的惩罚。这是因为更大一部分的 training updates
仅包含 rare embeddings
的 norm penalty signal
(而很少包含 rare
出现的事件)。
如下图所示,图 (a)
表示 Criteo Kaggle
数据集中所有特征的 access
的直方图;图 (b), (c)
分别为 MovieLens
数据集的 user feature, item feature
的 access
的直方图。
这些图都是典型的长尾分布。
MD embedding layer
架构 block
组成,每个 block
对应一个 categorical field
。这些 block
定义为
block
的矩阵;categorical
特征的 embeding size
;categorical
特征的词表大小;categorical
特征共享的 base dimension
,且满足 MD embedding
,然后 一个关键问题是如何确定 embedding size
Power-law Sizing Scheme
:我们定义 block-level
概率 block
中的 embedding
的平均查询概率。当 block
与特征一一对应(我们这里的情况),那么
假设
categorical feature
都是单值(而不是多值的),那么对于词表大小为的 categorical feature
,每个取值出现的平均概率为。
更一般的情况下,block-wise
伯努利采样矩阵。那么 Popularity-Based Dimension Sizing
为:
其中:无穷范数是元素绝对值中的最大值;embedding size
都等于 embedding size
与它们的 popularity
成正比。
理论分析见原始论文。
注意:这里仅考虑
field-level
的popularity
,而没有考虑value-level
的popularity
。例如,“学历” 这个field
中,低学历的value
占比更大,需要更高的维度。论文中的这种维度分配方式,使得词表越大的
field
,其维度越小;词表越小的field
,其维度越大。例如,“性别” 只有两个取值,该field
被分配的embedding
维度最大。论文中的这种维度分配是启发式的规则,并不是从数据中学到的。
baseline
方法:统一的 DLRM
。
实验结果:
MD embedding
产生的 learning curve
与 UD embedding
相当(下图 (a)
),但是参数规模减少了 16
倍。MD embedding layer
改善了每种 parameter budget
下的 memory-performance
(下图 (b)
)。parameter budget
,对于较小的预算,较高的温度会导致更低的 loss
。embedding
获得的性能以 0.1%
的准确性优势略微优于 UD embedding
,但是参数规模约为 UD embedding
的一半。MD embedding
的训练速度比 UD embedding
快两倍(下图 (c)
)。大多数现代神经网络模型可以被认为是由两个组件组成的:
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
模型已经部署在生产中。
相关工作:几乎所有以前的 NAS
研究工作都集中在为图像/视频理解问题寻找最佳的 representation learning
组件。对于大规模的推荐问题,通过利用先进的representation learning
组件(如 CNN, RNN
等)也取得了很大的成果。然而,尽管输入组件由于 embedding
从而包含了很大一部分模型参数,但它在整个工业界中经常被启发式地设计,如 YouTube, Google Play, Netflix
等。据我们所知,我们的工作首次将自动化的神经网络设计引入输入组件从而用于大规模推荐问题。
categorical
特征 vocabulary
。embedding
变量 vocabulary size
,embedding
维度。对于任何 item
的 embedding
向量。"memory budget"
,它指的是模型的 embedding
矩阵使用的浮点数的总数。对于一个 embedding
矩阵,它的浮点数总数为 Single-size Embedding: SE
:single-size embedding
是一个形状为 embedding
矩阵,其中词表中的每一个 item
(共计 item
)都表示为一个 embedding
向量。以前的工作大多使用 SE
来表示离散的特征,每个特征的
下面我们提出一个 Neural Input Search
问题从而自动寻找每个特征的最佳 SE
,即 NIS-SE
。解决这个问题的方法将在后面介绍。
Problem NIS-SE
:为每个 vocabulary size
embedding dimension
该问题涉及两个 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
。
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
的列表:
pair
的 vocabulary size
,满足 categorical feature
的总的 vocabulary size
。
这相当于将单个词表划分为
块。
pair
的 embedding size
,满足
这可以解释为:最开始的 item
有 embedding
维度 item
有 embedding
维度 ME
就等价于 SE
。
我们对于每个 embedding
矩阵 SE
中那样只有一个 embedding
矩阵 embedding
投影到 reduction
操作在同一个 embedding
矩阵的累计 vocabulary size
,则词表中第 item
的 ME
定义为:
其中:
是第 个 item
在第个 block
内的相对编号。
通过对每个特征的适当的 MES
,ME
能够同时实现对尾部 item
的高覆盖率、以及头部 item
的高质量 representation
。然而,为所有特征手动寻找最佳 MSE
是非常困难的,因此需要一个自动方法来搜索合适的 MES
。下面我们介绍 Multi-size Embedding
的Neural Input Search
问题,即 NIS-ME
。解决这个问题的方法将在后面介绍。
NIS-ME
:为每个 MES
在任何使用 embedding
的模型中,ME
都可以用来直接替代 SE
。通常,给定一组 vocabulary ID
SE
,然后对这些 SE
进行一个或多个 reduce
操作。例如,一个常用的 reduce
操作是 bag-of-words: BOW
,即对 embedding
进行求和或求平均。为了了解在这种情况下 ME
是如何直接替代 SE
的,即 BOW
的 ME
版本(我们称之为 MBOW
),由以下公式给出:
其中 ME
是相加的。这在下图中得到了说明。请注意,对于那些 embedding
进行求和是更高效的。
我们在模型的输入组件开发了一个新的搜索空间,它包含了我们想要搜索的 SE
或 ME
。我们使用一个独立的 controller
,从而在每一个 step
中为每个离散特征挑选一个 SE
或 ME
。这些选中的 SE
或 ME
与主模型的其他部分(不包括控制器)一起被训练。此外,我们使用主模型的前向传播来计算控制器的选择的奖励(是准确率和内存成本的组合),并使用 A3C
策略梯度方法将奖励用于训练控制器变量。
正如论文在实验部分所述,
NIS
方法对具有大vocabulary size
的categorical
特征的影响更大。至于像性别、学历这种词典规模较小的categorical
特征,则NIS
方法的价值不大。
搜索空间:
Embedding Blocks
:对于 vocabulary size
为 vocabulary
中的 item
允许的最大 embedding size
。 我们称这些矩阵为 Embedding Blocks
。这可以看作是将一个大小为 embedding
矩阵离散化为
例如,假设 v=10M
(M
代表一百万),[1M, 2M, 2M, 2M, 3M]
;可以把列离散成四块:[64, 64, 64, 64]
。这样就有 20
个 Embedding Blocks
,如 Figure 1
所示。
此外,对于每个 embedding
映射到一个共同的 reduction
操作。 显然,对于所有的 embedding
中的参数数量相比,投影矩阵中的参数数量是可以忽略的。
Embedding Blocks
是搜索空间的构建块,允许控制器在每个 training step
中采样不同的 SE
或 ME
。
Controller Choices
:controller
是一个神经网络,从 softmax
概率中采样不同的 SE
或 ME
。它的确切行为取决于我们是对 SE
还是 ME
进行优化。下面我们将描述控制器在一个特征
SE
:为了对 SE
进行优化,在每个 training step
中,控制器集合 pair
Embedding Blocks
training step
。因此,控制器有效地挑选了一个 SE
,如 Figure 1(a)
中的红色矩形内的 SE
,它代表了一个大小为 SE
。在这一步中,词表中第 item
中的 embedding
为:
其中:
vocabulary size
。定义 embedding size
,显然,embedding
表示第 item
,然后将其投影到一个 vocabulary ID
为 item
都被认为是 out-of-vocabulary
,要特别处理,通常采用的方法是使用零向量作为它们的 embedding
。因此,这种 SE
的选择带来的内存成本(参数数量)为:
如果在 training step
中选择了(0, 0)
,就相当于从模型中去除该特征。因此,在这个 training step
中, zero embedding
被用于这个特征的所有 item
,相应的存储成本为 0
。随着控制器探索不同的 SE
,它根据每个 choice
引起的奖励进行训练,并最终收敛到最佳选择。如果它收敛到(0, 0)
,意味着这个特征应该被删除。显然,对于一个给定的特征,搜索空间的大小是
ME
:当对 ME
进行优化时,控制器不是做出单个选择,而是做出一连串的
Embedding Blocks
training step
。item
,整个 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)]
。
数学上,令 item
在当前 training step
的 embedding
为:
如果
SE
的emebdding
公式为:。可以看到,与 SE
相比,ME
公式中的sum
不是从到 ,而是被选中的那些维度。
ME
的内存成本为:
奖励:由于主模型是通过控制器对 SE
或 ME
的选择来训练的,控制器是通过主模型对验证集样本的前向传播计算出来的奖励来训练的。我们将奖励定义为:
其中:embedding
配置,
质量奖励:一类常见的推荐问题是检索问题,其目的是给定模型的输入从而在一个可能非常大的 vocabulary
item
。这类问题的 objective
通常是实现 high recall
,因此我们可以直接让 Recall@N
(Recall@N
变得太昂贵,我们可以通过采样一个小的 negative set
(即,负采样),使用 Sampled Recall@N
作为代理。
另一类常见的问题是排序 ranking
问题。ranking
模型的质量通常由 ROC-AUC
来衡量,他可以作为质量奖励。
同样,对于回归问题,质量奖励可以设置为 prediction
和 label
之间的 L2-loss
的负值。
内存成本:我们定义内存成本为:
注意:
embedding
参数的代价所对应的质量奖励的增量。例如,如果质量奖励是 ROC-AUC
,embedding
参数,如果它能使 ROC-AUC
增加 0.1
。这是因为额外的
Warm up
阶段:如前所述,训练 NIS
模型涉及到主模型和控制器之间 consecutive steps
的交替训练。如果我们从第 0
步开始训练控制器,我们会得到一个恶性循环:没有被控制器选中的 Embedding Blocks
没有得到充分的训练,因此给出了不好的奖励,导致它们在未来被选中的机会更少。
为了防止这种情况,前几个 training steps
包括一个 warm up
阶段,我们训练所有的 Embedding Blocks
,并固定控制器参数。 warm up
阶段确保所有 Embedding Blocks
得到一些训练。在warm up
阶段之后,我们转向使用 A3C
交替训练主模型和控制器。
在预热阶段,控制器被固定为选择所有的
Embedding Blocks
。
Baseline Network
:作为 A3C
算法的一部分,我们使用一个 baseline
网络来预测每个控制器(使用已经做出的选择)的期望奖励。baseline
网络的结构与控制器网络相同,但有自己的变量,这些变量与控制器变量一起使用验证集进行训练。然后,我们从每个 step
的奖励中减去 baseline
,计算出 advantage
从而用于训练控制器。
baseline
网络是主模型的拷贝,但是采用了不同的变量。每次更新主模型之后,就将主模型的参数拷贝给baseline
。总体训练流程为:
warm up
:通过训练集来更新主模型,此时选择所有的Embedding Blocks
。迭代:
- 在验证集上评估主模型的奖励,并通过奖励最大化来更新控制器参数。
- 通过新的控制器参数,在训练集上更新主模型。
数据集:
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
特征的影响更大,在我们的实验中,为了简单起见,我们只使用下表中列出的特征。
vocabulary
构建细节:以 MovieLens-1M
为例,遍历每个 user-movie
评分记录,并计算每个用户在整个数据集中出现的记录数量,根据计数结果给每个用户分配 vocabulary ID
:最高频的用户分配 ID 0
、最低频的用户分配最大的 ID
。其它特征、其它数据集也以类似的方式构建 vocabulary
。
在生产环境中,特征的频次分布有变化,如何处理?如何处理新出现的
ID
,如新广告的ID
?这些论文都没有提到。读者猜测,NIS
仅适用于ID
分布变化不大的场景。对于新闻、广告等等ID
不断生成、消亡的领域,NIS
可能需要进行适配。
实验配置:NIS
方法实际上是模型结构无关的,可以应用于各种类型的模型。这里我们采用 Neural Collaborative Filtering: NCF
模型。NCF
模型包括两个组件:Matrix Factorization: MF
组件、多层感知器 MLP
组件,如下图所示。
MF
组件中的 user embedding
和 item embedding
是 MF embedding
。
MLP
组件中的 user embedding
和 item embedding
是 MLP layer
(ReLU
激活函数),其大小分别为top MLP layer
的输出被称作 MLP embedding
。
我们没有使用任何规范化技术,如 BatchNorm
、LayerNorm
等。
这意味着
MLP
组件和MF
组件并没有共享embedding
,因此每个id
都有两套embedding
。
MF embedding
和 MLP embedding
拼接起来,然后被用于计算 logit
(通过一个
所有权重(包括隐层权重和 embedding
矩阵)使用高斯分布随机初始化,高斯分布的均值为零、标准差为 embedding
的维度。任何权重都没有使用正则化或 dropout
。当一个特征有多个取值时(如,一首歌有多个作曲家),这些特征的取值的embedding
是均值池化。当某些训练样本中存在缺失的特征值时,使用全零的 embedding
。
对于 MovieLens-1M
数据集, item embedding
是简单的 movie embedding
。于 KKBox
数据集,由于每个 item
(即歌曲)有多个特征,即 song ID
、艺术家姓名、作曲家、作词人, item embedding
的计算方法如下:
MF
组件,四个特征中的每一个都表示为一个 embedding
,然后将它们拼接起来并通过一个 MF
组件中的 item embedding
。MLP
组件,四个特征中的每一个都表示为一个 embedding
,然后将它们拼接起来并通过一个 MLP
组件中的 item embedding
。给出一个预先选择的 embedding
参数的模型,我们首先将其作为 baseline
,不应用 NIS
。然后,我们将每个特征的 embedding size
增加一倍,从而产生 embedding
参数,并应用 NIS
的内存预算 baseline
模型相同)。我们预期 NIS
通过更好地分配 baseline
更好。我们进一步用 NIS
的极限,看看它是否还能比 baseline
模型表现更好。
我们为 baseline
模型实验了 NIS
模型将有
控制器:控制器用于在所有候选的 choice
上产生一个概率分布。我们在所有的实验中使用了一个简单的控制器:
对于 SE settting
,控制器为每个特征分配一个 logit
。该向量被初始化为零向量。
控制器从这个多样式分布中采样不同的 SE
。注意:每个特征的搜索空间大小为 SE
是独立采样的。
我们没有使用更复杂的控制器结构,如 RNN
,因为不清楚对一个特征做出的决策是否会影响其他特征,以及应该按照何种顺序做出决策。
对于
SE setting
,控制器为每个特征从向量中选择一个元素。
对于 ME setting
,控制器为每个特征分配
对于
ME setting
,控制器为每个特征从个 个向量中,分别在每个向量中选择一个元素。
每个特征构建了 20
个 Embedding Blocks
,其中:total vocabulary size
。在实践中,我们发现这种配置在细粒度和搜索空间大小之间取得了良好的平衡。
如前所述,控制器使用验证集进行训练。对于 MovieLens-1M
数据集,我们使用 Recall@1
(也称作 HitRate@1
)作为质量奖励 Recall, MRR, NDCG
。对于 KKBox
数据集,我们使用 ROC-AUC
作为质量奖励 ,并报告测试集上的 ROC-AUC
。在所有的实验中,我们设定
训练细节:
batch size = 256
,应用梯度裁剪(梯度范数阈值为 1.0
),学习率为 0.1
,使用 Adagrad
优化器。在开始 A3C
算法之前,进行了 100K
步的预热阶段。Adagrad
优化器,学习率为 0.1
,不使用梯度裁剪(因为一个低概率但高回报的行动应该得到一个非常高的梯度,以显著提高其概率)。每个控制器的决策都由验证集的 64
个样本所共享,从中计算出一个奖励值。在预热阶段结束后,控制器和主模型每隔一个 mini-batch step
进行交替训练。在所有的实验中,我们在主模型和控制器都收敛后停止训练(而不是仅有一个收敛)。
我们使用了分布式训练,其中 5
个 worker
独立地进行并行训练。
Table 2
和 Table 3
分别报告了 MovieLens-1M
数据集和 KKBox
数据集的实验结果。注意,NIS
模型的内存预算。可以看到:
NIS
能够持续取得比 baseline
模型更好的性能,很多时候参数明显减少,证明了我们方法的有效性。NIS-ME
模型总是优于 NIS-SE
,而且通常参数比 NIS-SE
更少。baseline
模型大小的一半,NIS
模型也几乎总是优于 baseline
。这不仅证明了我们方法的有效性,而且还表明在重度约束条件下有可能实现卓越的性能。NIS
模型通过超出内存预算获得了卓越的性能。这种模型质量和模型规模之间的 tradeoff
反映在奖励函数的设计中。当内存预算只是一个指导方针而不严格时,这一点特别有用。这里我们描述如何将 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
经过几年的手工优化。
实验配置:对于 Embedding Blocks
,我们设置 vocabulary size
。需要注意的是,对于每个特征,我们没有平均分割 vocabulary
,而是给 top-10%
的 item
分配了一个 Embedding Block
,因为数据集中的高频特征都是最重要的,也就是说,top-10%
的 item
通常出现在大多数训练样本中。这进一步证明了 Multi-size Embedding
在实践中的必要性。
此外,我们设置 production model
的 embedding size
(在不同特征上取值为 8 ~ 32
)。在将 embedding size
增加到三倍从而允许更高的模型容量的同时,我们设置内存预算 production model
的 embedding
参数的总数。显然,这里的目标是提高模型的预测能力,同时减少模型的大小。
我们使用 ROC-AUC
作为质量奖励,并设置 0.001
的 ROC-AUC
增长从而允许
离线实验:离线 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%
。在线 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
。
稳定性:当部署在生产中时,NIS-ME
模型需要每天进行重新训练和刷新。了解模型的性能可以维持多久是很重要的。这是因为每个特征的数据分布可能会随着时间的推移而发生重大变化,所以 MES
可能不再是最优的,在这种情况下,我们需要重新运行 NIS
,找到更适合新数据分布的 MES
。
因为
NIS
的词表构建依赖于ID
频次分布,而在生产环境中,ID
频次分布可能随时间发生变化。
我们进行了为期 2
个月的研究,监测原始 production model
和 NIS-ME
模型的 ROC-AUC
,如下图所示。显然,NIS-ME
模型相对于 production model
的优势在 2
个月的时间里非常稳定,说明没有必要经常重新运行 NIS
。在实践中,我们只在模型结构发生变化或要增加新特征时才运行 NIS
。
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
数据集进行了初步研究。对于每个用户,作者首先选择该用户的固定比例的评分作为测试集,然后选择 embedding
维度为 2/16/128
的 DLRS
的推荐性能在 mean-squared-error: MSE
和准确率方面的变化。更低的 MSE
(或更高的准确率)意味着更好的性能。注意,作者在这项工作中把 user/item
的交互次数称为 popularity
。从图中可以看到:随着 popularity
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
。论文通过现实世界的电商数据中的实验来证明了所提出的框架的有效性。
相关工作:
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
不是预先知道的而是高度动态的。Basic DLRS
架构:我们在下图中阐述了一个 basic
的 DLRS
架构,它包含三个部分:
embedding layer
:将 user ID/item ID
embedding
向量 hidden layer
:是全连接层,将 embedding
向量 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
分配个候选的 embedding size
,然后用强化学习进行择优。难以落地,因为最终得到的模型,参数规模几乎增长到倍。 换一个思路:给定一个
baseline model
,我们可以将baseline model
的embedding size
划分为个子维度(类似于 NIS
),然后由控制器来选择需要横跨几个子维度。这种方法和NIS
的区别在于:
NIS
的控制器是独立的自由变量,每个变量代表对应的概率。虽然控制器没有包含item
的popularity
信息,可以自由变量的update
次数就代表了item
出现的频次,因此隐式地包含了popularity
信息。- 而这个思路里,控制器的输入包含了
item
的popularity
信息,可以给予控制器一定的指导。
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
的转换和选择过程。假设我们有 embedding
空间 embedding
维度(即,embedding size
)分别为 embedding
空间的 embedding
集合为 embedding
向量
其中:bias
向量。
经过线性变换,我们将原始 embedding
向量 embedding
magnitude
变化很大,这使得它们变得 magnitude-incomparable
。为了解决这一难题,我们对转换后的embedding
Batch- Norm
与 Tanh
激活:
其中:mini-batch
的均值,mini-batch
的方差,Tanh
激活函数将 embedding
归一化到 0~1
之间。
给定一个 item
embedding
集合 magnitude-comparable
的转换后的 embedding
根据popularity
,DLRS
将选择一对转换后的 embedding
user
item
representation
:
embedding size
是由一个控制器 controller
选择的,将在后面详细介绍。然后,我们将 user representation
和 item representation
拼接起来,即 output layer
从而生成 user
item
为了获得理想的效果,
不能太小(否则,控制器选择的余地就不大)。 embedding table
占据了模型的绝大部分参数,因此个 embedding table
使得模型的规模几乎翻了倍。这对于模型训练、模型部署都是严重的挑战。因此,该方法不太适用。
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
是具有 Softmax layer
。在这项工作中,我们用 user controller
的 item controller
的 embedding
空间的概率。 controller
自动选择最大概率的空间作为 final embedding
空间,即:
有了控制器,embedding size
搜索的任务就简化为优化控制器的参数,从而根据 user/item
的popularity
自动生成合适的
Soft Selection
:上面的控制器对 embedding
空间进行了 hard selection
,即:每次我们只从控制器中选择一个具有最大概率的embedding
空间。这种 hard selection
使得整个框架不是端到端的可微的。为此,我们选择了一种 soft selection
:
有了 soft selection
,enhanced DLRS
是端到端的可微的。新的结构如下图所示,我们增加了 transformed embedding layer
,它对 embedding
空间进行soft selection
,选择过程由两个控制器(分别用于 user
和 item
)来决定。
优化方法:优化任务是联合优化 DLRS
的参数(如 differentiable architecture search: DARTS
)技术概念的启发,我们为 AutoEmb
框架采用了基于 DARTS
的优化,通过梯度下降分别优化训练损失 DLRS
的参数
embedding dimensionality search
的目标是找到使验证损失 DLRS
的参数 bilevel
优化问题,其中
因为优化内层的 DARTS
的近似方案:
其中 training step
来估计
值得注意的是,与计算机视觉任务上的 DARTS
不同,我们没有推导离散架构的阶段(即,DARTS
根据 softmax
概率选择最可能的操作来生成离散的神经网络架构)。这是因为随着新的 user-item
交互的发生, user/item
的popularity
是高度动态的,这使我们无法为user/item
选择一个特定的 embedding size
。
DARTS based Optimization for AutoEmb
算法:
输入:user-item
交互、以及 ground-truth
标签
输出:训练好的 DLRS
参数
算法步骤:
迭代直到收敛,迭代步骤:
从 previous
的 user-item
交互中随机采样一个 mini-batch
的验证数据。
基于梯度下降来更新
其中 first-order approximation
。
收集一个 mini-batch
的训练数据。
基于当前参数
基于当前参数 DLRS
的 prediction
。
评估 prediction
的效果并记录下来。
通过梯度下降来更新
值得注意的是,在 batch-based streaming recommendation setting
中,优化过程遵循 "evaluate, train, evaluate, train..."
的方式。 换句话说,我们总是不断地收集新的 user-item
交互数据。当我们有一个完整的 mini-batch
的样本时,我们首先根据我们的 AutoEmb
框架的当前参数进行预测,评估预测的性能并记录下来;然后我们通过最小化 prediction
和 ground truth label
之间的损失来更新 AutoEmb
的参数。接下来我们收集另一个 mini-batch
的 user-item
交互,执行同样的过程。因此,不存在预先拆分的验证集和测试集。换句话讲:
为了计算 previous
的 user-item
交互中采样一个 mini-batch
,作为验证集。
没有独立的测试阶段,即没有预先拆分的测试集。
遵循 《Streaming recommender systems》
中的 streaming recommendation setting
,我们也有离线参数估计阶段和在线推理阶段:
user-item
交互来预先训练 AutoEmb
的参数。AutoEmb
,在在线推理阶段持续更新 AutoEmb
参数。数据集:Movielens-20m, Movielens-latest, Netflix Prize data
。统计数据如下表所示。
对于每个数据集,我们使用 70%
的 user-item
交互进行离线参数估计,其他 30%
用于在线学习。为了证明我们的框架在 embedding selection
任务中的有效性,我们消除了其他的上下文特征(如,用户的年龄、item
的 category
)从而排除其他特征的影响。但为了更好地推荐,将这些上下文特征纳入框架是很简单的。
实现细节:
对于 DLRS
:
embedding layer
:选择 embedding size
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
激活函数,并输出 batch-size = 500
,DLRS
和控制器的学习率分别为 0.01
和 0.001
。AutoEmb
框架的所有超参数都通过交叉验证来调优。相应地,我们也对 baseline
进行了超参数调优,以进行公平的比较。
评估指标:
对于回归任务,我们首先将评分二元化为 {0, 1}
,然后通过最小化 mean-squared-error: MSE
损失来训练框架。性能可以通过 MSE
损失和准确率来评估(我们使用 0.5
作为阈值来分配标签)。
如何二元化,作者并未说明。读者猜测是用当前评分除以最大评分(如,
5
分)从而得到0 ~ 1
之间的浮点数。
对于分类任务,评分 1~5
被视为 5
个类,框架通过最小化交叉熵损失( CE loss
)进行训练。性能由交叉熵和准确率来衡量。
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
维度训练 值得注意的是, Neural Input Search model
和 Mixed Dimension Embedding model
不能应用于 streaming recommendation setting
,因为它们假设 user/item
的popularity
是预先知道的和固定的,然后用大的 embedding size
来分配高popularity
的 user/item
。然而,在现实世界的 streaming recommender system
中,popularity
不是预先知道的,而是高度动态的。
在线阶段的比较结果如下表所示。可以看到:
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
分别训练了 user/item
的这些权重可能不会被很好地训练,因为这个 user/item
的交互有限。AutoEmb
的控制器可以纳入大量的 user/item
交互,并从中捕获到重要的特征。
另外,控制器有一个显式的popularity
输入,这可能有助于控制器学习popularity
和 embedding
维度之间的依赖关系,而 DARTS
则不能。这些结果证明了开发一个控制器而不仅仅是实值权重的必要性。
在离线参数估计阶段之后,在线阶段的大多数 user/item
已经变得非常 popular
。换句话说,AutoEmb
对热门 user/item
有稳定的改进。
综上所述,所提出的框架在不同的数据集和不同的指标上都优于 baseline
。这些结果证明了 AutoEmb
框架的有效性。
我们将调查所提出的控制器是否能根据各种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
产生合理的权重。
不同数据规模下的性能:训练基于深度学习的推荐系统通常需要大量的 user-item
交互数据。我们提出的 AutoEmb
框架在 DLRS
中引入了一个额外的控制器网络、以及一些额外的参数,这可能使它难以被很好地训练。我们在下图中展示了优化过程,其中 x
轴是训练样本的数量,y
轴对应的是性能。可以看到:
SAM
的表现最差,因为它的控制器对少量的训练样本过拟合。SAM
的过拟合问题逐渐得到缓解,SAM
的表现优于 FSE
,这验证了在不同 embedding
维度上加权的必要性。AutoML
在整个训练过程中优于 SAM
和 FSE
。尤其是在训练样本不足的早期训练阶段,它能明显提高训练效果。大多数现有的推荐系统为所有的 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
。由于难以置信的巨大搜索空间(feature field
的候选维数,feature field
的数量)带来的昂贵的计算成本,很难为所有 feature field
人为地选择不同的维度。作者试图解决这些挑战,从而得到一个端到端的可微的 AutoML-based
框架(AutoDim
),它可以通过自动化的、数据驱动的方式有效地分配 embedding
维度给不同的 feature field
。
论文主要贡献:
various
的 embedding
维度分配给不同的 feature field
可以提高推荐性能的现象。AutoML-based
的端到端框架 AutoDim
,它可以自动选择各种 embedding
维度到不同的 feature field
。benchmark
数据集上证明了所提框架的有效性。AutoDim
是一个 AutoML-based
框架,它可以为不同 feature field
自动分配不同的 embedding
维度。框架如下图所示,其中包括维度搜索阶段、参数重训练阶段。
AutoDim
的思想和AutoEmb
类似,也是为每个id
分配个候选的 embedding size
,然后用强化学习进行择优。但是,AutoDim
相对容易落地,因为AutoDim
本质上是寻找每个词表的最佳维度,是一个超参数调优工具,找到最佳维度之后应用到目标模型中。二者不同的地方:
AutoEmb
使用popularity
信息作为特征来获得筛选概率,而AutoDim
仅依靠特征本身的embedding
来获得筛选概率。AutoDim
有一个重训练阶段。实际上也可以在AutoEmb
中引入重训练。
Embedding Lookup
:对于每个 user-item
交互样本,我们有 feature field
,如性别、年龄等等。对于第 feature field
,我们分配了 emebdding
空间 embedding
空间的维度分别为 embedding
空间的 cardinality
是该 feature field
中 unique feature value
的数量。
相应地,我们定义 embedding
空间的候选 embedding
的集合,如下图所示。因此,分配给特征 feature field
分配相同的候选维度集合,但引入不同的候选集合是很直接的。
统一各种维度:由于现有的 DLRS
中第一层 MLP
的输入维度通常是固定的,所以它们很难处理各种候选维度。因此,我们需要将 embedding
向量 embedding
向量
其中:bias
向量。对于不同的feature field
,所有具有相同维度的候选 embedding
都共享相同的权重矩阵和 bias
向量,这可以减少模型参数的数量。
过线性变换,我们将原始 embedding
向量 embedding
magnitude
方差很大,这使得它们变得不可比 incomparable
。为了解决这一难题,我们对转换后的嵌入进行 BatchNorm
:
其中:mini-batch
的均值,mini-batch
的方差,
Dimension Selection
:我们通过引入 Gumbel-softmax
操作,对不同维度的 hard selection
进行了近似处理(因为 hard selection
是不可微的)。具体而言,假设权重 Gumbel-max
技巧得到一个 hard selection
其中:0-1
之间的均匀分布,gumbel
噪声(用于扰动 argmax
操作等价于通过
然而,由于 argmax
操作,这个技巧是不可的。为了解决这个问题,我们使用 softmax
函数作为 argmax
操作的连续的、可微的近似,即 gumbel-softmax
:
其中:
gumbel-softmax
操作的输出的平滑度。当 gumbel-softmax
的输出就会变得更接近于 ont-hot
向量。embedding
维度的概率。为什么要用
gumble-softmax
操作?直接用softmax
操作如何?作者并未说明原因。
embedding
然后我们拼接所有特征的 embedding
,即
其中:bias
,
感知机的输出馈入 output layer
,得到最终预测:
其中:output layer
的权重和 bias
,
目标函数为负的对数似然:
其中:ground-truth
。
AutoDim
中需要优化的参数有两个方面:
DLRS
的参数,包括 embedding
部分和 MLP
部分。embedding
维度的权重。DLRS
参数
受可微分架构搜索(differentiable architecture search: DARTS
)技术的启发,
这种优化形成了一个 bilevel
的优化问题,其中权重 DLRS
参数 DARTS
的近似方案:
其中:
在近似方案中,当更新
优化方法与
AutoEmb
完全相同。
AutoDim
中 DARTS based
优化算法:
输入:特征 ground-truth label
输出:训练好的 DLRS
参数
算法步骤:
迭代直到收敛,迭代步骤为:
mini-batch
的数据。mini-batch
的训练数据。由于 dimensionality search
阶段的次优 embedding
维度也会影响模型的训练,所以希望有一个重训练阶段,只用最优维度训练模型,消除这些次优的影响。
Deriving Discrete Dimensions
:在重训练过程中,每个 feature field
的最佳 embedding
空间(维度)被选择为与最大权重相对应的维度:
Figure 2(a)
给出了一个示例,红色箭头表示所选中的 embedding
维度。
Model Re-training
:给定所选的 embedding
空间,我们可以为特征 unique
的 embedding
向量 embedding
拼接起来再馈入隐层。最后,DLRS
的所有参数,包括 embedding
和 MLP
,将通过反向传播使监督损失函数
注意:
feature field
之间的交互。这些交互操作要求所有 field
的embedding
向量具有相同的尺寸。因此,被选中的 embedding
仍然被映射到相同的维度。Batch-Norm
操作,因为每个 field
的候选 embedding
之间没有竞争。DLRS
重训练阶段的优化过程:
输入:特征 ground-truth label
输出:训练好的 DLRS
参数
算法步骤:
迭代直到收敛,迭代步骤为:
mini-batch
的训练数据。数据集:Criteo
。每个样本包含 13
个数值 feature field
、26
个 categorical feature field
。
我们按照 Criteo
竞赛获胜者的建议,将数值特征归一化:
然后将数值特征进行分桶从而转换为 categorical feature
。
我们使用 90%
的数据作为训练集/验证集(8:1
),其余 10%
作为测试集。
实现细节:
DLRS
:
embedding
组件:在我们的 GPU
内存限制下,我们将最大的 embedding
维度设置为 32
。对于每个 feature field
,我们从 embedding
维度 {2, 8, 16, 24, 32}
中选择。MLP
组件:我们有两个隐层,形状分别为 Criteo
数据集的 feature field
数量。我们对两个隐层使用 batch normalization
、dropout
(dropout rate = 0.2
)和 ReLU
激活。输出层为 Sigmoid
激活函数。feature field
的 softmax
激活来产生的。对于 Gumbel-Softmax
,我们使用退火温度 training step
。
更新 DLRS
和 0.001
和 0.001
,batch size = 2000
。我们的模型可以应用于任何具有 embedding layer
的深度推荐系统。在本文中,我们展示了在著名的 FM
、W&D
、以及 DeepFM
上应用 AutoDim
的性能。
评估指标:AUC, Logloss, Params
。
Params
指标是该模型的 embedding
参数数量。我们省略了 MLP
参数的数量,因为 MLP
参数仅占模型总参数的一小部分。
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
。实验结果如下表所示,可以看到:
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
平均有 unique
值。这导致每个 feature field
的搜索空间非常大(即使在分桶之后),这就很难找到最优解。而在 AutoDim
中,每个 feature field
的搜索空间为 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
框架的有效性。
效率分析:本节研究了在 Criteo
数据集上对 DeepFM
应用搜索方法的效率(在一个 Tesla K80 GPU
上),如下图所示。可以看到:
对于训练时间(图 (a)
):
AutoDim
和 AD-s
具有很快的训练速度,原因是它们的搜索空间比其他 baseline
小。FDE
的训练速度最快,因为我们直接把它的 embedding
维度设置为 32
,即没有搜索阶段。然而它的推荐效果是所有方法中最差的。对于推理时间(图 (b)
):AutoDim
实现了最少的推理时间,因为 AutoDim
最终选择的推荐模型的 embedding
参数最少(即 Params
指标)。
超参数研究:除了深度推荐系统常见的超参数(如隐层的数量,由于篇幅有限,我们省略这种常规超参数的分析),我们的模型有一个特殊的超参数,即更新 AutoDim
优化过程中,我们交替地在训练数据上更新 DLRS
的参数、在验证数据上更新 DLRS
的参数,这显然减少了大量的计算,也提高了性能。
为了研究 AutoDim
的 DeepFM
在 Criteo
数据集上的表现如何。结果如下表所示,x
轴上,DLRS
参数。
从图 (a), (b)
可以看到,当 AutoDim
达到了最佳 AUC/Logloss
。换句话说,更新
从图 (d)
可以看到,与设置 50%∼
的训练时间。
从图 (c)
可以看到,较低的 Params
,反之亦然。原因是 AutoDim
通过最小化验证损失来更新
AutoDim
倾向于选择较小的 embedding size
,具有更好的泛化能力,同时可能存在欠拟合问题。AutoDim
倾向于选择较大的 embedding size
,在训练集上表现更好,但可能导致过拟合问题。案例研究:这里我们研究 AutoDim
是否可以为更重要的特征分配更大的 embedding
维度。由于 Criteo
的 feature field
是匿名的,我们在 MovieLens-1m
数据集上应用具有 AutoDim
的 W&D
。MovieLens-1m
数据集有 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
。
基于深度学习的推荐模型利用 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
可以捕获到特征的固有属性,这为未来的研究提供了启示。
相关工作:
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
的候选集时不需要任何人工努力。
一般来说,深度学习推荐模型将各种原始特征(包括用户画像和 item
属性)作为输入,预测用户喜欢某个 item
的概率。具体而言,模型将用户画像和item
属性的组合(用 field
的拼接:
其中:feature field
数量;feature representation
(通常为 one-hot
向量);;
为向量拼接。
对于 embedding-based
推荐模型为它生成对应的 embedding
向量:
其中:feature field
的 embedding
矩阵,feature field
的 unique
取值数量,embedding size
。
模型针对所有 feature field
的 embedding
矩阵为:
模型的预测得分为:
其中:prediction model
(如 FM
),embedding
矩阵以外的参数。
为了学习模型的参数(包括 embedding
矩阵),我们需要优化如下的训练损失:
其中:ground-truth label
,
通常而言,推荐任务中采用 logloss
损失函数:
其中:
通过裁剪实现可学习的 embedding size
:如前所述,针对 memory-efficient embedding learning
的可行方案是为不同的特征 embedding
embedding size
column-wise sparsity
,这等于是缩小了 embedding size
。
如下图所示,embedding
embedding size
。此外,一些不重要的 feature embedding
,如 embedding
参数。请注意,稀疏矩阵存储技术可以帮助我们大大节省内存用量。
如果某一列被裁剪为零,则意味着该维度不重要;如果某一行被裁剪为零,则意味着该
feature value
不重要。
在这种情况下,我们将 embedding size
的选择问题转换为学习 embedding
矩阵 column-wise sparsity
。为了达到这个目的,我们对
其中:L0
范数(即,非零元素的数量);parameter budget
,它是对 embedding
参数总数的约束。
这里其实是
global sparsity
,而不仅仅是column-wise sparsity
。
然而,由于 L0
范数约束的非凸性,上式的直接优化是 NP-hard
的。为了解决这个问题,人们研究了 L0
范数的凸松弛,即 L1
范数。尽管如此,这类凸松弛方法仍然面临着两个主要问题:
为了解决这两个问题,受软阈值重参数化的启发(《Soft threshold weight reparameterization for learnable sparsity》
),我们直接优化
其中:
embedding
矩阵。
element-wise
的,定义为:
裁剪函数的物理意义为:
- 如果
的绝对值较小(意味着接近零),使得 ,那么裁剪之后的结果为零。 - 如果
的绝对值较大,那么裁剪之后的结果近似为 。为什么说是“近似”,因为 的值向零的方向移动了 个单位(被裁剪了)。
其中:
pruning parameter
。
函数 sigmoid
函数。根据《Soft threshold weight reparameterization for learnable sparsity》
,
其中对于 unstructured sparsity
,sigmoid
函数;对于 structured sparsity
,
1
、将负数转换为 -1
、零保持不变。
采用
然后,可训练的裁剪参数
其中:Hadamard
积。
为了解决 sub-gradient
来重新表述更新方程如下:
其中:true
时返回 1
、否则返回 0
。
然后,只要我们选择一个连续的函数 sub-gradient
也可以用于
裁剪阈值 embedding
矩阵中的参数用量。然而,为什么我们的 PEP
可以通过训练数据学习合适的 PEP
试图在优化过程中更新
如下图所示,我们在 MovieLens-1M
和 Criteo
数据集上绘制了 with/without PEP
的 FM
的训练曲线,以证实我们的假设。可以看到:我们的 PEP
可以实现更低的训练损失。
用彩票假说重新训练:在将 embedding
矩阵 embedding
参数应该保留或放弃。然后我们用裁剪后的 embedding table
重新训练模型。
彩票假说 Lottery Ticket Hypothesis
(《The lottery ticket hypothesis: Finding sparse, trainable neural networks》
)说明:随机初始化的稠密网络中的一个子网络可以与原始网络相匹配,当以相同的迭代次数进行隔离训练时。这个子网络被称为中奖票 winning ticket
。因此,我们不是随机地重新初始化权重,而是重新训练基础模型,同时将权重重新初始化为原来(但是被掩码后的)的权重
注意,重训练阶段有三种初始化方式:
- 与第一轮训练独立的随机初始化。
- 把第一轮训练采用的随机初始化共享到重训练阶段。
- 把第一轮训练得到的训练好的权重作为重训练阶段的初始化。
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
矩阵中不太重要的元素被逐渐裁剪,直到训练过程达到收敛。然而,在早期的训练阶段,当这些元素没有被裁剪时,它们可能对那些重要元素的梯度更新产生负面影响。这可能使这些重要元素的学习变得次优。因此,重训练步骤可以消除这种影响并提高性能。
细粒度裁剪:上述方程中的阈值参数 global-wise pruning
。然而, embedding
向量 field
的特征也可能有不同的重要性。因此,embedding
矩阵中的值需要不同的稀疏性预算,用全局阈值的裁剪可能不是最佳的。为了更好地处理
Dimension-Wise
:阈值参数 embedding
中的每个值都将被独立地裁剪,不同field
的 embedding
共享相同的 Feature-Wise
:阈值参数 embedding
中的所有值采用相同的标量阈值,不同field
的 embedding
采用不同的标量阈值。Feature-Dimension-Wise
:阈值参数 注意,这里的阈值参数并不是人工调优的超参数,而是从数据中学习的可训练参数。
如下图所示:
Feature-Dimension
粒度可以比其它粒度的 embedding
参数减少得更多,并且在 retrain
阶段获得了最好的性能。Dimension
粒度的裁剪可以在较少的训练周期内达到可比的 AUC
。PEP
算法:
输入:初始 embedding
base model
target parameter
规模
输出:训练好的稀疏 embedding
算法步骤:
迭代,直到满足
通过
获取二元 pruning mask
将裁剪后的 embedding parameter
设置为初始值
重训练从而最小化
数据集:MovieLens-1M, Criteo, Avazu
。
MovieLens-1M
:遵从 AutoInt
,我们将评分在 1 or 2
的样本作为负样本、评分在 4 or 5
的样本作为正样本。评分为 3
的样本视为中性样本从而被移除。
Criteo
:对于数值特征,我们使用 log
变换从而进行归一化:
Creteo/Avazu
:频次低于 10
的特征被认为是 'unknown'
。
所有样本被随机拆分为训练集、验证集、测试集,比例为 80%/10%/10%
。
评估指标:AUC, Logloss
。
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
。
实现细节:
在 pruning
和 re-training
阶段,遵从 AutoInt
和 DeepFM
,我们采用学习率为 0.001
的 Adam
优化器。
对于 MovieLens-1M, Criteo, Avazu
数据集分别将 -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
算法中不同的超参数而来。然而,它们具体的配置,论文并没有提到。根据论文实验的图表,大概猜测分别代表 0.05, 0.1, 0.2, 0.3, 0.4
这五个稀疏率。
其它数据集上设置为 Feature Dimension-wise
。
在裁剪之前,所有模型的 base embedding dimension
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]
,因为当
对于其他 baseline
,我们首先调优超参数使得模型具有最高的推荐性能、或最高的参数缩减率。然后我们调优这些模型从而达到性能和参数缩减率之间的 tradeoff
。
MDE
的搜索空间:维度 [4, 8, 16, 32]
中搜索,blocks
数量 [8, 16]
中搜索,[0.1, 0.2, 0.3]
中搜索。MGQE
的搜索空间:维度 [8, 16, 32]
中搜索,子空间数量 [4, 8, 16]
中搜索,中心点数量 [64, 128, 256, 512]
中搜索。DartsEmb
搜索空间:三组候选的 embedding
空间:{1, 2, 8}
、{2, 4, 16}
、{4, 8, 32}
。我们在 Figure 2, 3, 4
中展示了推荐性能和参数数量的曲线。由于推荐性能和参数数量之间存在 tradeoff
,曲线是由具有不同稀疏性要求的点组成的。可以看到:
我们的方法大大减少了参数的数量。在所有的实验中,我们的 PEP
实现了最高的参数缩减率 ,特别是在相对较大的数据集(Criteo
和 Avazu
)中。具体而言,在 Criteo
和 Avazu
数据集中,与最佳 baseline
相比,我们的 PEP-0
可以减少99.90%
的参数用量(量级从
embedding
矩阵的参数使用率如此之低,意味着只有数百个 embedding
是非零的。通过将不太重要的特征的 embedding
设置为零,我们的 PEP
可以打破现有方法中最小 embedding size
为 1
的限制(我们的方法可以实现 embedding size = 0
)。我们后续对 MovieLens
数据集进行了更多的分析,以帮助我们理解为什么我们的方法可以实现如此有效的参数缩减。
我们的方法实现了强大的推荐性能。我们的方法一直优于基于 uniform embedding
的模型,并在大多数情况下取得了比其他方法更好的准确性。具体而言,对于 Criteo
数据集上的 FM
模型,在 AUC
方面,PEP
比 UE
相对提高了 0.59%
、比DartsEmb
相对提高了 0.24%
。从其他数据集和其他推荐模型的实验中也可以看到类似的改进。
值得注意的是,我们的方法可以在极端的稀疏范围内保持强大的 AUC
性能。例如,当参数数量只有 PEP
推荐性能仍然明显优于线性回归模型。
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
搜索方面的时间成本可以进一步降低。对裁剪后的 embedding
进行可解释的分析:在这一节中,我们通过可视化的特征交互矩阵进行可解释的分析,该矩阵由 field feature
点积结果的绝对值的归一化平均值,其中越高表示这两个 field
有更强的相关性。可以看到:我们的 PEP
可以减少不重要的特征交互之间的参数数量,同时保持那些有意义的特征交互的重要性。通过对那些不太重要的特征交互进行降噪,PEP
可以减少 embedding
参数,同时保持或提高准确性。
归一化怎么做的?
稀疏性和频次之间的相关性:如下图所示,不同特征之间的特征频次是高度多样化的。因此,使用统一的 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
之间的复杂联系。
我们的方法是基于数据进行裁剪,这可以反映出特征的固有属性,从而可以以一种更优雅和有效的方式缩减参数。
线性回归( 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
获得更稳定的性能。在 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
。
注:这篇论文的核心是如何对
DeepFwFM
进行压缩,而不是提出DeepFwFM
。事实上,DeepFwFM
就是DNN
作为deep
组件、FwFM
作为wide
组件的神经网络,毫无新意 。此外,
DeepLight
的剪枝方法也是工程上的应用(把训练好的模型中的接近于零的权重裁剪掉),而没有多少创新点。实验部分提示了基于剪枝的模型设计方案:首先设计较大容量的模型从而提升模型的表达能力,然后执行剪枝从而降低
latency
、减少过拟合。这种方案的一个潜在缺点是:训练资源消耗更大。
给定数据集 label
,
二阶多项式模型
其中:
FM
模型
其中:embedding
向量的集合;embedding
向量;embedding
向量的维度。
可以看到,FM
模型将参数规模从
Deep & Cross
通过一系列的 cross
操作来建模高阶交互:
其中:
通过进一步组合 DNN
组件,我们可以获得 xDeepFM
,这是 CTR
预测中的 SOTA
模型。尽管 xDeepFM
在建模特征交互方面具有强大的性能,但众所周知,它比DeepFM
的成本要高得多,并增加了速度较慢。因此我们考虑 FwFM
模型,并提出了 Deep Field-weighted Factorization Machine: DeepFwFM
:
其中:
FwFM
模型,用于建模二阶特征交互。
DNN
的参数(包括权重矩阵和 bias
向量)。
field
的 embedding
向量,field
embedding
向量。
这就是
FwFM
原始论文中 的FwFM_FiLV
,用来建模线性项。a
embedding
向量,
field pair
重要性矩阵,它建模 field pair
的交互强度。
field
。
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
)来建模低阶特征交互,然而,这无法适应局部几何结构,并牺牲了鲁棒性。
为了证明我们模型的优势,我们对 DeepFwFM
的计算复杂性进行了定量分析。给定 embedding size
embedding layer
只有 lookup
(即 field
数量 为 DNN
组件的 floating point operations: FLOPs
为 FwFM
组件的 FLOPs
为
类似地,我们可以得到 DeepFM
和 xDeepFM
的计算复杂度,如下表所示。可以看到:
xDeepFM
的 CIN
层需要 DNN
组件的操作数量。FM
组件和 FwFM
组件比 DNN
组件快得多。尽管 DeepFwFM
的计算复杂度较好,但是它仍然未能将延迟降低到一个良好的水平。事实上,由于包含 DNN
组件,DeepFwFM
可能会慢数百倍,这会显著降低在线 CTR
预测的速度。
DNN
组件无疑是导致高延迟问题并且无法满足在线要求的主要原因。因此,需要一种适当的加速方法来加速预测。
为什么采用结构剪枝:深度模型加速三种主要方法组成:结构剪枝 structural pruning
、知识蒸馏knowledge distillation
、量化 quantization
,其中结构剪枝方法因其显著的性能而受到广泛关注。此外,DeepFwFM
的每个组件,如 DNN
组件、field pair interaction matrix
embedding
向量,都具有高度稀疏的结构,如 Figure 2
所示。这促使我们考虑结构剪枝以加速浅层组件和 DNN
组件。
对于其他选择:
量化在推断期间采用了定点精度。然而,它没有充分利用 DeepFwFM
每个组件的稀疏结构,甚至对模型性能有损。
知识蒸馏技术通过训练小网络(即 student model
)以模仿大网络(即 teacher model
),但它存在以下问题:
这就是我们在这项工作中采用结构剪枝的原因。
如何进行结构剪枝:
设计:我们建议裁剪以下三个组件(在 DeepFwFM
模型的背景下),而不是简单地以统一的稀疏率应用剪枝技术。这三个组件专门设计用于广告预测任务:
剪枝 DNN
组件的权重(不包括 bias
)从而移除神经元连接。
剪枝 field pair interaction matrix
field interaction
。
注意:移除冗余的
field interaction
,意味着建模时无需考虑对应field
之间的内积计算。
剪枝 embedding
向量中的元素,从而导致稀疏的 embedding
向量。
结合以上努力,我们获得了所需的 DeepLight
模型,如下图所示。DeepLight
是一种稀疏的 DeepFwFM
,它提供了一种整体方法,通过在推理期间修改训练好的架构来加速推理。
注意,
DeepLight
是用于训练好的模型,是一种剪枝算法,而不是一种训练算法。
优点:通过实验表明:
DNN
组件相比,稀疏的 DNN
组件的计算复杂度要低得多。它导致最大的计算加速。sparse field pair interaction matrix
FwFM
组件的显著加速。此外,裁剪 field pair selection
。一旦裁剪了 field pair
feature pair
都将被丢弃。AutoFIS
也实现了类似类型的 field pair selection
。sparse embedding
大大减少了内存使用,因为 feature embedding
主导了CTR
预测深度学习模型中的参数数量。实现:从过度参数化的模型中选择一个良好的稀疏网络是 NP
难的,并且无法保证最优算法能够解决它。在结构剪枝领域有大量的经验研究,包括权重剪枝、神经元剪枝、以及其他单元剪枝。考虑到我们的模型只包含一个标准的 FwFM
组件和一个普通的DNN
组件,我们进行了权重剪枝,并寻求在不调用专用库的情况下实现高稀疏性和加速。
定义稀疏率 99%
的权重都被裁剪。
结构剪枝算法:
输入:
target model
输出:剪枝后的模型
算法步骤:
剪枝:对于
训练网络一个 iteration
。
这是为了在每次裁剪之后,重新训练模型从而进行微调,以便错误修剪的权重有可能再次变得活跃。
对模型的每个组件
更新组件当前轮次的裁剪比例
这是设置自适应的裁剪比例,使得在早期剪枝的很快(裁剪比例较大)、在后期剪枝很慢(裁剪比例较小)。
注意:这种裁剪方式无法确保最终模型能够得到
的目标稀疏率,只能说尽可能地接近。
根据权重的 magnitude
,裁剪最小的
降低计算复杂度:DNN
组件是导致高推断时间的瓶颈。在 DNN
组件的剪枝之后,FwFM
组件成为限制,这需要对 field matrix
embedding
层的剪枝对计算没有显著的加速。
在对 DNN
组件的权重设置一个中等大小的 bias
)的情况下,相应的加速可以接近理想的 95%
时,我们可能无法达到理想的加速比,因为 bias
的计算和稀疏结构(如 compressed row storage: CRS
)的开销。关于 field matrix
DNN
组件中的目标稀疏率
降低空间复杂度:在 embedding layer
中进行剪枝也显著减少了 DeepFwFM
中的参数数量,因此节省了大量内存。在 embedding layer
中,
至于 DNN
组件,权重参数的数量(不包括 bias
)可以从 field matrix
由于DeepFwFM
中的总参数由 embedding
向量参数所主导 , embedding
向量上的
数据集:Criteo, Avazu
。
对于 Criteo
数据集,我们采用由 Criteo
竞赛获胜者提出的对数转换来归一化数值特征:
此外,我们还将所有频次低于 8
的特征视为 "unknown"
。我们将数据集随机分成两部分:90%
用于训练、剩下的 10%
用于测试。
对于 Avazu
数据集,我们使用 10
天的点击记录,并随机拆分 80%
的样本用于训练、剩下的 20%
用于测试。我们还将所有频次低于 5
的特征视为 "unknown"
。
数据集的统计信息如下表所示。
评估指标:LogLoss, AUC
。
baseline
方法:在 emebdding-based
神经网络模型中,我们选择 DeepFM, NFM, xDeepFM
作为 baseline
,因为它们具有与 DeepFwFM
相似的架构,也是 CTR
预测的SOTA
模型。最终,六个 baseline
模型为:LR, FM, FwFM, DeepFM, NFM, xDeepFM
。
实现细节:我们使用 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
在线性项上的创新(用内积代替线性项)。
DeepFwFM
和其它稠密模型的比较:对没有剪枝的密集模型的评估显示了过度参数化模型所表现出的最大潜力,如下表所示。可以看到:
LR
在所有数据集上的表现都比其他模型都要差,这表明特征交互对于提高 CTR
预测至关重要。embedding-based
神经网络的表现优于低阶方法(如 LR
和 FM
),这意味着建模高阶特征互动的重要性。FwFM
仍然胜过 NFM
和 DeepFM
,显示了 field matrix
NFM
利用黑盒 DNN
隐式地学习低阶特征交互和高阶特征交互,由于缺乏显式识别低阶特征交互的机制,可能会过拟合数据集。embedding-based
神经网络方法中,xDeepFM
和 DeepFwFM
在所有数据集上效果最好。然而,xDeepFM
的推理时间远远超过 DeepFwFM
。稀疏化模型 DeepLight
:我们选择阻尼因子 2
个 epoch
,然后训练 8
个 epoch
用于剪枝。我们每隔 10
个 iteration
剪枝一次从而降低计算代价。
即:前
2
个epoch
训练好模型;后面的8
个epoch
执行剪枝。
DNN
剪枝加速:仅裁剪 DNN
组件的权重,DNN
的 bias
、 field matrix
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
DNN
组件进行高稀疏度化之后,我们已经获得了显著的加速,接近 20
倍。为了进一步提高速度,增加 DNN
组件的稀疏率可能会有降低性能的风险,并且由于矩阵计算的开销,不会产生明显的加速。从 Figure 2
可以看出,field matrix
field matrix
我们根据 field matrix
DNN
组件已经被剪枝的基础上),如下图所示。可以看到:我们可以在不牺牲性能的情况下对 field matrix
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%
左右,非常微小)。
DeepFwFM
的结构剪枝:从上述实验中,我们看到 DNN
组件和 field matrix
对于性能驱动的任务:
Criteo
数据集上,我们可以通过 sparse DeepFwFM
将 SOTA AUC
从 0.8116
提高到 0.8223
,其中 DNN
组件和 field matrix
90%
、embedding
向量中的剪枝率为 40%
。该模型被称为 D-90% & R-90% & F-40%
。Avazu
数据集上,我们可以通过 sparse DeepFwFM
将 SOTA AUC
从 0.7893
提高到 0.7897
,其中 DNN
组件和 field matrix
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
倍的速度提升,而且没有损失准确性。
DeepLight
和其它稀疏模型的比较:对于其他模型,我们也尝试了在不牺牲性能的情况下加速预测的最佳结构。关于 xDeepFM
中的CIN
组件,我们用 C-99%
表示 CIN
组件的 99%
的稀疏率。结果如下表所示。可以看到:
embedding-based
的神经网络都采用高稀疏率来保持性能。DeepLight
在预测时间上与 sparse DeepFM
和 sparse NFM
相当,但在 Criteo
数据集上的 AUC
至少提高了 0.8%
,在 Avazu
数据集上提高了 0.4%
。DeepLight
获得了与 xDeepFM
相似的预测性能,但其速度几乎是 10
倍。